Initial commit
authorGuillaume Zajac <guillaume.zajac@linux.intel.com>
Mon, 17 Sep 2012 08:16:23 +0000 (10:16 +0200)
committerAuke Kok <auke-jan.h.kok@intel.com>
Fri, 8 Feb 2013 20:25:37 +0000 (12:25 -0800)
AUTHORS [new file with mode: 0644]
CMakeLists.txt [new file with mode: 0644]
LICENSE [new file with mode: 0644]
include/legacy/TelUtility.h [new file with mode: 0644]
include/tty_imc.h [new file with mode: 0644]
packaging/tel-plugin-imc-pr3.spec [new file with mode: 0644]
src/desc_imc_pr3.c [new file with mode: 0644]
src/tty_imc.c [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..fb3e757
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,13 @@
+Jongman Park <jman.park@samsung.com>
+Ja-young Gu <jygu@samsung.com>
+Kyeongchul Kim <kyeongchul.kim@samsung.com>
+DongHoo Park <donghoo.park@samsung.>
+Youngman Park <youngman.park@samsung.com>
+Inho Oh <inho48.oh@samsung.com>
+Hayoon Ko <hayoon.ko@samsung.com>
+Junhwan An <jh48.an@samsung.com>
+Kyoungyoup Park <gynaru.park@samsung.com>
+Jinyup Kim <kjy9411@samsung.com>
+Guillaume Zajac <guillaume.zajac@intel.com>
+Nicolas Bertrand <nicolas.bertrand@intel.com>
+Philippe Nunes <philippe.nunes@intel.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644 (file)
index 0000000..78556a2
--- /dev/null
@@ -0,0 +1,45 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(imc-pr3-plugin C)
+
+### Global setting ###
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(EXEC_PREFIX "\${prefix}")
+SET(LIBDIR "\${prefix}/lib")
+SET(INCLUDEDIR "\${prefix}/include")
+SET(PKGCONFIGDIR "${PREFIX}/lib/pkgconfig" CACHE PATH PKGCONFIGDIR)
+SET(CMAKE_INSTALL_PREFIX "${PREFIX}")
+
+# Set required packages
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED glib-2.0 tcore dlog)
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include/)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Werror -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wdeclaration-after-statement -Wmissing-declarations -Wredundant-decls -Wcast-align")
+
+ADD_DEFINITIONS("-DFEATURE_DLOG_DEBUG")
+ADD_DEFINITIONS("-DTCORE_LOG_TAG=\"IMC-PR3\"")
+
+MESSAGE(${CMAKE_C_FLAGS})
+MESSAGE(${CMAKE_EXE_LINKER_FLAGS})
+
+SET(SRCS
+       src/desc_imc_pr3.c
+       src/tty_imc.c
+)
+
+
+
+# library build
+ADD_LIBRARY(imc-pr3-plugin SHARED ${SRCS})
+TARGET_LINK_LIBRARIES(imc-pr3-plugin ${pkgs_LDFLAGS})
+SET_TARGET_PROPERTIES(imc-pr3-plugin PROPERTIES PREFIX "" OUTPUT_NAME imc-pr3-plugin)
+
+
+# install
+INSTALL(TARGETS imc-pr3-plugin
+               LIBRARY DESTINATION lib/telephony/plugins)
diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..d624ba7
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,205 @@
+Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+Copyright (C) 2012  Intel Corporation. All rights reserved.
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
diff --git a/include/legacy/TelUtility.h b/include/legacy/TelUtility.h
new file mode 100644 (file)
index 0000000..eb056e2
--- /dev/null
@@ -0,0 +1,165 @@
+/*
+ * libslp-tapi
+ *
+ * Copyright (c) 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Kyeongchul Kim <kyeongchul.kim@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+* @open
+* @ingroup             TelephonyAPI
+* @addtogroup  COMMON_TAPI     COMMON
+* @{
+*
+* @file TelUtility.h
+
+     @brief This file serves as a "C" header file defines structures for Utility Services. \n
+      It contains a sample set of constants, enums, structs that would be required by applications.
+ */
+
+#ifndef _TEL_UTILITY_H_
+#define _TEL_UTILITY_H_
+/*==================================================================================================
+                                         INCLUDE FILES
+==================================================================================================*/
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/*==================================================================================================
+                                           CONSTANTS
+==================================================================================================*/
+
+
+/*==================================================================================================
+                                            MACROS
+==================================================================================================*/
+#define INVALID_REQUEST_ID     -1    /**< Invalid RequestId Value */
+
+
+/*==================================================================================================
+                                             ENUMS
+==================================================================================================*/
+/**
+* @enum TapiResult_t
+* Below enumerations are the return codes of TAPI API's
+*/
+typedef enum
+{
+       TAPI_API_SUCCESS                                                =  0,   /**<No Error occurred */
+       TAPI_API_INVALID_INPUT                                  = -1,   /**<input values are not correct in TAPI Library */
+       TAPI_API_INVALID_PTR                    = -2,   /**<invalid pointer */
+       TAPI_API_NOT_SUPPORTED                  = -3,   /**<The feature corresponding to requested API is not supported. This may be due to market/network/vendor reasons such as the feature is not available in the network. */
+       TAPI_API_DEPRICATED                                             = -4,   /**<This API is deprecated and will be so in future also */
+       TAPI_API_SYSTEM_OUT_OF_MEM                              = -5,   /**<Out of memory */
+       TAPI_API_SYSTEM_RPC_LINK_DOWN                   = -6,   /**<RPC link down */
+       TAPI_API_SERVICE_NOT_READY                              = -7,   /**<Phone was powered on, but yet to receive the power up completed notification */
+       TAPI_API_SERVER_FAILURE         = -8,   /**<error occurred in Telephony server  */
+       TAPI_API_OEM_PLUGIN_FAILURE     = -9,   /**<Plug-in layer failure */
+       TAPI_API_TRANSPORT_LAYER_FAILURE                = -10,  /**<Transport layer Failure*/
+       TAPI_API_INVALID_DATA_LEN                               = -11,  /**<Invalid data length */
+       TAPI_API_REQUEST_MAX_IN_PROGRESS                = -12,  /**<Maximum number of API Request for the same service are already in progress */
+       TAPI_API_OFFLINE_MODE_ERROR                     = -13,  /**<OEM Telephony Provider is in Offline mode. */
+       TAPI_EVENT_CLASS_UNKNOWN                                = -14,  /**<Event class specified is not present in Event Class list. - 20*/
+       TAPI_EVENT_UNKNOWN                              = -15,  /**<Event specified is not present in TAPI Unsolicited Event list. */
+       TAPI_REGISTRATION_OP_FAILED                             = -16,  /**<Callback Registration/De-registration failed */
+       TAPI_API_OPERATION_FAILED                               = -17,  /**<API operation failed*/
+       TAPI_API_INVALID_OPERATION                              = -18,  /**<API Invalid Operation */
+
+       /*SAMSUNG specif*/
+       TAPI_API_SYSTEM_RPC_LINK_NOT_EST                = -100, /**< RPC link down */
+       TAPI_API_API_NOT_SUPPORTED                              = -101, /**<API not supported */
+       TAPI_API_SERVER_LAYER_FAILURE                   = -102, /**< Server layer failure*/
+
+       /*      CALL */
+       TAPI_API_INVALID_CALL_ID                                = -200, /**< Invalid call ID*/
+       TAPI_API_CALL_CTXT_OVERFLOW                             = -201, /**<Call context overflow */
+       TAPI_API_COULD_NOT_GET_CALL_CTXT                = -202, /**< Could not get call  context*/
+       TAPI_API_CTXT_SEARCH_RET_NON_CALL_CTXT  = -203, /**< Context search returned non-call context*/
+       TAPI_API_COULD_NOT_DESTROY_CTXT                 = -204, /**< could not destroy context*/
+       TAPI_API_INVALID_LINE_ID                                = -205, /**< invalid line ID*/
+       TAPI_API_INVALID_CALL_HANDLE                    = -206, /**<Invalid call handle  - 35*/
+       TAPI_API_INVALID_CALL_STATE                             = -207, /**<Invalid call state- Newly added. Need to raise a CR for this */
+       TAPI_API_CALL_PRE_COND_FAILED                   = -208, /**<Pre condition like MO call can not be established now.*/
+       TAPI_API_CALL_SAME_REQ_PENDING                  = -209, /**<  Can not accept same request multiple times  */
+
+       /*      POWER   */
+       TAPI_API_MODEM_POWERED_OFF                              = -300, /**<The Modem is powered off */
+       TAPI_API_MODEM_ALREADY_ON                               = -301, /**<Modem already on */
+       TAPI_API_MODEM_ALREADY_OFF                              = -302, /**<Modem already off */
+
+       /* NETTEXT */
+       TAPI_API_NETTEXT_DEVICE_NOT_READY               = -400, /**<Nettext device not ready */
+       TAPI_API_NETTEXT_SCADDR_NOT_SET                 = -401, /**<Nettext SCA address not set */
+       TAPI_API_NETTEXT_INVALID_DATA_LEN               = -402, /**<Nettext Invalid data length */
+       TAPI_NETTEXT_SCADDRESS_NOT_SET                  = -403, /**<Nettext SCA address not set*/
+
+       /* SIM  */
+       TAPI_API_SIM_BUSY                                               = -500, /**<SIM is busy  */
+       TAPI_API_SIM_CARD_PERMANENT_ERROR               = -501, /**<SIM error/blocked state */
+       TAPI_API_SIM_NOT_INITIALIZED                    = -502, /**<SIM has not initialized yet (waiting for PIN verification, etc) */
+       TAPI_API_SIM_NOT_FOUND                                  = -503, /**<SIM is not present / removed */
+       TAPI_API_SIM_SIM_SESSION_FULL                   = -504, /**< SIM session full*/
+       TAPI_API_SIM_INVALID_CARD_TYPE                  = -505, /**< SIM Invalid Application ID*/
+       TAPI_API_SIM_INVALID_SESSION                    = -506, /**<SIM Invalid Session */
+       TAPI_API_SIM_FILE_TYPE_WRONG                    = -507, /**<SIM file type wrong */
+       TAPI_API_SIM_FILE_ENCODE_FAIL                   = -508, /**<SIM file encode fail */
+       TAPI_API_SIM_FILE_DECODE_FAIL                   = -509, /**< SIM file decode fail*/
+       TAPI_API_SIM_FILE_INVALID_ENCODE_LEN    = -510, /**< SIM invalid encode length*/
+       TAPI_API_SIM_INVALID_RECORD_NUM         = -511, /**<SIM Invalid record number */
+       TAPI_API_SIM_CASE_NOT_HANDLED                   = -512, /**< SIM case not handled*/
+       TAPI_API_SIM_OEM_UNKNOWN_SIM_CARD               = -513, /**<SIM OEM unknown SIM card */
+       TAPI_API_SIM_SEC_UKNOWN_PIN_TYPE                = -514, /**<SIM unknown pin type */
+       TAPI_API_SIM_SEC_INVALID_PIN_TYPE               = -515, /**<SIM invalid pin type */
+       TAPI_API_SIM_SEC_LOCK_PERS_ENABLED              = -516, /**<SIM Lock Personalization status(PN/PU/PP/PC) */
+       TAPI_API_SIM_PB_INVALID_STORAGE_TYPE    = -517, /**<SIM phonebook invalid storage type */
+
+       /* SAT  */
+       TAPI_API_SAT_INVALID_COMMAND_ID                 = -600, /**<Command Number Invalid      */
+       TAPI_API_SAT_COMMAND_TYPE_MISMATCH              = -601, /**<    Command Type Mismatch   */
+       TAPI_API_SAT_EVENT_NOT_REQUIRED_BY_USIM = -602, /**< Event Not Requested by USIM*/
+
+       /* Network */
+       TAPI_API_NETWORK_INVALID_CTXT                   = -700, /**< Network invalid context*/
+
+       /*Misc */
+       TAPI_API_MISC_RETURN_NULL                               = -800, /**< MISC return NULL*/
+       TAPI_API_MISC_VALIDITY_ERROR                    = -801, /**< MISC validity error*/
+       TAPI_API_MISC_INPUTPARM_ERROR                   = -802, /**< MISC input parameter error*/
+       TAPI_API_MISC_OUTPARAM_NULL                             = -803, /**< MISC output parameter null*/
+
+} TapiResult_t;
+
+/*==================================================================================================
+                                 STRUCTURES AND OTHER TYPEDEFS
+==================================================================================================*/
+
+
+/*==================================================================================================
+                                     FUNCTION PROTOTYPES
+==================================================================================================*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //_TEL_UTILITY_H_
+
+/**
+* @}
+*/
+
diff --git a/include/tty_imc.h b/include/tty_imc.h
new file mode 100644 (file)
index 0000000..623b591
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ *
+ *  tel-plugin-imc-pr3
+ *
+ *  Copyright (C) 2012  Intel Corporation. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#ifndef __TTY_IMC_DUMP_H__
+#define __TTY_IMC_DUMP_H__
+
+int tty_close(int fd);
+int tty_open (void);
+int ttyerr_open(void);
+
+int tty_read(int nFd, void* buf, size_t nbytes);
+int tty_write(int nFd, void* buf, size_t nbytes);
+
+#endif
diff --git a/packaging/tel-plugin-imc-pr3.spec b/packaging/tel-plugin-imc-pr3.spec
new file mode 100644 (file)
index 0000000..a8b7554
--- /dev/null
@@ -0,0 +1,37 @@
+Name:       tel-plugin-imc-pr3
+Summary:    PR3 plateform telephony plugin
+Version: 0.0.1
+Release:    1
+Group:      System/Libraries
+License:    Apache
+Source0:    tel-plugin-imc-pr3-%{version}.tar.gz
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+BuildRequires:  cmake
+BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(dlog)
+BuildRequires:  pkgconfig(tcore)
+
+%description
+PR3 plateform telephony plugin
+
+%prep
+%setup -q
+
+%build
+cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix}
+make %{?jobs:-j%jobs}
+
+%post
+/sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+%files
+%defattr(-,root,root,-)
+#%doc COPYING
+%{_libdir}/telephony/plugins/imc-pr3-plugin*
diff --git a/src/desc_imc_pr3.c b/src/desc_imc_pr3.c
new file mode 100644 (file)
index 0000000..423c064
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+ *
+ *  tel-plugin-imc-pr3
+ *
+ *  Copyright (C) 2012  Intel Corporation. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+#include <glib.h>
+
+#include <tcore.h>
+#include <plugin.h>
+
+#include <tcore.h>
+#include <server.h>
+#include <plugin.h>
+#include <user_request.h>
+#include <hal.h>
+
+#include "tty_imc.h"
+
+struct custom_data {
+       int tty_fd;
+       guint watch_id_tty;
+};
+
+static TReturn hal_power(TcoreHal *hal, gboolean flag)
+{
+       struct custom_data *user_data;
+
+       user_data = tcore_hal_ref_user_data(hal);
+       if (!user_data)
+               return TCORE_RETURN_FAILURE;
+
+       /* power on */
+       if (flag == TRUE) {
+               dbg("Phone Power On success (fd:%d)", user_data->tty_fd);
+
+               tcore_hal_set_power_state(hal, TRUE);
+       /* power off */
+       } else {
+               dbg("Phone Power Off success.");
+
+               tcore_hal_set_power_state(hal, FALSE);
+       }
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+
+static TReturn hal_send(TcoreHal *hal, unsigned int data_len, void *data)
+{
+       int ret;
+       struct custom_data *user_data;
+
+       if (tcore_hal_get_power_state(hal) == FALSE)
+               return TCORE_RETURN_FAILURE;
+
+       user_data = tcore_hal_ref_user_data(hal);
+       if (!user_data)
+               return TCORE_RETURN_FAILURE;
+
+       ret = tty_write(user_data->tty_fd, data, data_len);
+       if(ret < 0) {
+               err("tty_write failed");
+
+               return TCORE_RETURN_FAILURE;
+       }
+
+       dbg("tty_write success ret=%d (fd=%d, len=%d)", ret, user_data->tty_fd, data_len);
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+
+static struct tcore_hal_operations hops =
+{
+       .power = hal_power,
+       .send = hal_send,
+};
+
+static gboolean on_recv_tty_message(GIOChannel *channel, GIOCondition condition, gpointer data)
+{
+       TcoreHal *hal = data;
+       struct custom_data *custom;
+
+       #define BUF_LEN_MAX 512
+       char buf[BUF_LEN_MAX];
+       int n = 0;
+
+       custom = tcore_hal_ref_user_data(hal);
+       memset(buf, 0, BUF_LEN_MAX);
+       n = tty_read(custom->tty_fd, buf, BUF_LEN_MAX);
+       if (n < 0) {
+               err("tty_read error. return_valute = %d", n);
+               return TRUE;
+       }
+
+       dbg("tty recv (ret = %d)", n);
+       tcore_hal_emit_recv_callback(hal, n, buf);
+
+       return TRUE;
+}
+
+static guint register_gio_watch(TcoreHal *h, int fd, void *callback)
+{
+       GIOChannel *channel = NULL;
+       guint source;
+
+       if (fd < 0 || !callback)
+               return 0;
+
+       channel = g_io_channel_unix_new(fd);
+       source = g_io_add_watch(channel, G_IO_IN, (GIOFunc) callback, h);
+       g_io_channel_unref(channel);
+       channel = NULL;
+
+       return source;
+}
+
+static gboolean on_load()
+{
+       dbg("i'm load!");
+
+       return TRUE;
+}
+
+static gboolean on_init(TcorePlugin *plugin)
+{
+       TcoreHal *hal;
+       struct custom_data *data;
+
+       if (!plugin)
+               return FALSE;
+
+       dbg("i'm init!");
+
+       /*
+        * Phonet init
+        */
+       data = calloc(sizeof(struct custom_data), 1);
+       memset(data, 0, sizeof(struct custom_data));
+
+       data->tty_fd = tty_open();
+
+       /*
+        * HAL init
+        */
+       hal = tcore_hal_new(plugin, "imc-pr3", &hops, TCORE_HAL_MODE_AT);
+       tcore_hal_link_user_data(hal, data);
+
+       data->watch_id_tty= register_gio_watch(hal, data->tty_fd, on_recv_tty_message);
+
+       dbg("tty_fd = %d, watch_id_tty=%d ", data->tty_fd, data->watch_id_tty);
+
+       return TRUE;
+}
+
+static void on_unload(TcorePlugin *plugin)
+{
+       if (!plugin)
+               return;
+
+       dbg("i'm unload");
+}
+
+struct tcore_plugin_define_desc plugin_define_desc =
+{
+       .name = "IMC-PR3",
+       .priority = TCORE_PLUGIN_PRIORITY_HIGH,
+       .version = 1,
+       .load = on_load,
+       .init = on_init,
+       .unload = on_unload
+};
diff --git a/src/tty_imc.c b/src/tty_imc.c
new file mode 100644 (file)
index 0000000..1f85f22
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ *
+ *  tel-plugin-imc-pr3
+ *
+ *  Copyright (C) 2012  Intel Corporation. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <errno.h>
+#include <sys/time.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#include <log.h>
+#include "legacy/TelUtility.h"
+#include "tty_imc.h"
+
+#define TTY_OPEN_PATH "/dev/ttyIFX0"
+
+int tty_close(int fd)
+{
+       int ret = TAPI_API_SUCCESS;
+
+       dbg("Function Enter");
+
+       close(fd);
+
+       return ret;
+}
+
+int tty_open (void)
+{
+       int fd = -1;
+
+       dbg("Function Enter");
+
+       fd = open(TTY_OPEN_PATH, O_RDWR);
+
+       if (fd < 0) {
+               err("Failed to open tty port %x", errno);
+
+               return -1;
+       } else
+               dbg("tty port opened successfully. fd:%d, path:%s",
+                       fd, TTY_OPEN_PATH);
+
+       return fd;
+
+}
+
+int tty_read(int nFd, void* buf, size_t nbytes)
+{
+       int     actual = 0;
+
+       dbg("Function Enter");
+
+       actual = read(nFd, buf, nbytes);
+       if (actual < 0) {
+               dbg("tty_read failed.");
+               
+               return actual;
+       }
+
+       return actual;
+}
+
+static void __selectsleep(int sec,int msec)
+{
+       struct timeval tv;
+
+       tv.tv_sec=sec;
+       tv.tv_usec=msec;
+
+       select(0,NULL,NULL,NULL,&tv);
+
+       return;
+}
+
+/* Write data to imc tty port */
+int tty_write(int nFd, void* buf, size_t nbytes)
+{
+       int ret;
+       size_t actual = 0;
+       int     retry = 0;
+
+       do {
+               ret = write(nFd, (unsigned char* )buf, nbytes - actual);
+
+               if ((ret < 0 && errno == EAGAIN) ||
+                               (ret < 0 && errno == EBUSY)) {
+                       err("write failed. retry.. ret[%d] with errno[%d]",
+                               ret, errno);
+
+                       __selectsleep(0,50);
+
+                       if (retry == 10)
+                               return 0;
+
+                       retry = retry + 1;
+
+                       continue;
+               }
+
+               if (ret < 0) {
+                   if (actual != nbytes)
+                               err("write failed.ret[%d]",ret);
+
+                       err("errno [%d]",errno);
+
+                       return actual;
+               }
+
+               actual += ret;
+               buf += ret;
+
+       } while (actual < nbytes);
+
+       return actual;
+}