Code sync from tizen_2.4 34/42734/1
authorJiwan Kim <ji-wan.kim@samsung.com>
Thu, 2 Jul 2015 04:13:29 +0000 (13:13 +0900)
committerJiwan Kim <ji-wan.kim@samsung.com>
Thu, 2 Jul 2015 04:13:29 +0000 (13:13 +0900)
Change-Id: Ie50798383973170c5c1902e95a366090912de03c

65 files changed:
CMakeLists.txt [changed mode: 0755->0644]
include/at.h
include/co_call.h
include/co_context.h
include/co_gps.h
include/co_modem.h
include/co_network.h
include/co_phonebook.h
include/co_ps.h
include/co_sap.h
include/co_sat.h
include/co_sim.h
include/co_sms.h
include/co_ss.h
include/communicator.h
include/core_object.h
include/hal.h
include/internal/tcore_types.h [new file with mode: 0644]
include/log.h
include/manager.h [new file with mode: 0644]
include/mux.h
include/plugin.h
include/server.h
include/storage.h
include/tcore.h
include/type/call.h
include/type/modem.h
include/type/network.h
include/type/notification.h
include/type/phonebook.h
include/type/ps.h
include/type/request.h
include/type/response.h
include/user_request.h
include/util.h
packaging/libtcore.spec [changed mode: 0755->0644]
src/at.c
src/co_call.c
src/co_context.c
src/co_gps.c
src/co_modem.c
src/co_network.c
src/co_phonebook.c
src/co_ps.c
src/co_sap.c
src/co_sat.c
src/co_sim.c
src/co_sms.c
src/co_ss.c
src/communicator.c
src/core_object.c
src/hal.c
src/manager.c [new file with mode: 0644]
src/mux.c
src/plugin.c
src/queue.c
src/server.c
src/storage.c
src/user_request.c
src/util.c
unit-test/test-at.c
unit-test/test-co.c
unit-test/test-dcs.c
unit-test/test-network.c
unit-test/test-util.c

old mode 100755 (executable)
new mode 100644 (file)
index 1da7e47..3807946
@@ -31,30 +31,31 @@ IF (ARCH_EMUL)
 ENDIF (ARCH_EMUL)
 
 SET(SRCS
-               src/server.c
-               src/plugin.c
-               src/hal.c
-               src/at.c
-               src/communicator.c
-               src/storage.c
-               src/queue.c
-               src/user_request.c
-               src/util.c
-               src/core_object.c
-               src/co_modem.c
-               src/co_network.c
-               src/co_ps.c
-               src/co_context.c
-               src/co_sim.c
-               src/co_sat.c
-               src/co_sap.c
-               src/co_call.c
-               src/co_ss.c
-               src/co_sms.c
-               src/co_phonebook.c
-               src/co_gps.c
-               src/co_custom.c
-               src/mux.c
+       src/server.c
+       src/manager.c
+       src/plugin.c
+       src/hal.c
+       src/at.c
+       src/communicator.c
+       src/storage.c
+       src/queue.c
+       src/user_request.c
+       src/util.c
+       src/core_object.c
+       src/co_modem.c
+       src/co_sim.c
+       src/co_network.c
+       src/co_call.c
+       src/co_sms.c
+       src/co_ss.c
+       src/co_phonebook.c
+       src/co_ps.c
+       src/co_context.c
+       src/co_sat.c
+       src/co_sap.c
+       src/co_gps.c
+       src/co_custom.c
+       src/mux.c
 )
 
 
@@ -76,4 +77,4 @@ INSTALL(TARGETS tcore
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/tcore.pc DESTINATION ${LIBDIR}/pkgconfig)
 INSTALL(FILES ${CMAKE_SOURCE_DIR}/LICENSE DESTINATION /usr/share/license RENAME libtcore)
 
-ADD_SUBDIRECTORY(unit-test)
+#ADD_SUBDIRECTORY(unit-test)
index f8e477e..2111a48 100644 (file)
@@ -27,59 +27,59 @@ __BEGIN_DECLS
 #include <queue.h>
 
 enum tcore_at_command_type {
-    TCORE_AT_NO_RESULT,   /* no intermediate response expected */
-    TCORE_AT_NUMERIC,     /* a single intermediate response starting with a 0-9 */
-    TCORE_AT_SINGLELINE,  /* a single intermediate response starting with a prefix */
-    TCORE_AT_MULTILINE,   /* multiple line intermediate response starting with a prefix */
-    TCORE_AT_PDU
+       TCORE_AT_NO_RESULT, /* no intermediate response expected */
+       TCORE_AT_NUMERIC, /* a single intermediate response starting with a 0-9 */
+       TCORE_AT_SINGLELINE, /* a single intermediate response starting with a prefix */
+       TCORE_AT_MULTILINE, /* multiple line intermediate response starting with a prefix */
+       TCORE_AT_PDU
 };
 
-enum ATCMEError{
-       AT_ERROR_MOBILE_FAILRURE                                        =0,
-       AT_ERROR_NOT_CONNECTED_TO_PHONE         =1,
-       AT_ERROR_LINK_RESERVED                                  =2,
-       AT_ERROR_OPER_NOT_ALLOWED                               =3,
-       AT_ERROR_OPER_NOT_SUPPORTED                     =4,
-       AT_ERROR_PH_SIM_PIN_REQUIRED                    =5,
-       AT_ERROR_PH_FSIM_PIN_REQUIRED                   =6,
-       AT_ERROR_PH_FSIM_PUK_REQUIRED                   =7,
-
-       AT_ERROR_SIM_NOT_INSERTED                               =10,
-       AT_ERROR_SIM_PIN_REQUIRED                               =11,
-       AT_ERROR_SIM_PUK_REQUIRED                               =12,
-       AT_ERROR_SIM_FAILURE                                            =13,
-       AT_ERROR_SIM_BUSY                                                       =14,
-       AT_ERROR_SIM_WRONG                                              =15,
-       AT_ERROR_INCORRECT_PWD                                  =16,
-       AT_ERROR_SIM_PIN2_REQUIRED                              =17,
-       AT_ERROR_SIM_PUK2_REQUIRED                              =18,
-
-       AT_ERROR_MEMORY_FULL                                            =20,
-       AT_ERROR_INVALID_INDEX                                  =21,
-       AT_ERROR_NOT_FOUND                                              =22,
-       AT_ERROR_MEMORY_FAILURE                                 =23,
-       AT_ERROR_TEXT_TOO_LONG                                  =24,
-       AT_ERROR_INVALID_CHAR_IN_STR                    =25,
-       AT_ERROR_DIAL_TOO_LONG                                  =26,
-       AT_ERROR_INVALID_CHAR_IN_DIAL                   =27,
-
-       AT_ERROR_NO_NETWORK_SVC                                 =30,
-       AT_ERROR_NETWORK_TIMEOUT                                =31,
-       AT_ERROR_EMERGENCY_CALL_ONLY                    =32,
-
-       AT_ERROR_NET_PERSONAL_PIN_REQ                   =40,
-       AT_ERROR_NET_PERSONAL_PUN_REQ                   =41,
-       AT_ERROR_NET_SUB_PERSONAL_PIN_REQ               =42,
-       AT_ERROR_NET_SUB_PERSONAL_PUK_REQ               =43,
-       AT_ERROR_PROVIDER_PERSONAL_PIN_REQ              =44,
-       AT_ERROR_PROVIDER_PERSONAL_PUK_REQ              =45,
-       AT_ERROR_CORP_PERSONAL_PIN_REQ                  =46,
-       AT_ERROR_CORP_PERSONAL_PUK_REQ                  =47,
-       AT_ERROR_HIDDEN_KEY_REQUIRED                    =48,
-       AT_ERROR_EAP_METHOD_NOT_SUPPORTED               =49,
-       AT_ERROR_INCORRECT_PARAM                                =50,
-
-       AT_ERROR_UNKNOWN                                                        =100
+enum ATCMEError {
+       AT_ERROR_MOBILE_FAILRURE 0,
+       AT_ERROR_NOT_CONNECTED_TO_PHONE 1,
+       AT_ERROR_LINK_RESERVED 2,
+       AT_ERROR_OPER_NOT_ALLOWED 3,
+       AT_ERROR_OPER_NOT_SUPPORTED 4,
+       AT_ERROR_PH_SIM_PIN_REQUIRED 5,
+       AT_ERROR_PH_FSIM_PIN_REQUIRED 6,
+       AT_ERROR_PH_FSIM_PUK_REQUIRED 7,
+
+       AT_ERROR_SIM_NOT_INSERTED 10,
+       AT_ERROR_SIM_PIN_REQUIRED 11,
+       AT_ERROR_SIM_PUK_REQUIRED 12,
+       AT_ERROR_SIM_FAILURE 13,
+       AT_ERROR_SIM_BUSY 14,
+       AT_ERROR_SIM_WRONG 15,
+       AT_ERROR_INCORRECT_PWD 16,
+       AT_ERROR_SIM_PIN2_REQUIRED 17,
+       AT_ERROR_SIM_PUK2_REQUIRED 18,
+
+       AT_ERROR_MEMORY_FULL 20,
+       AT_ERROR_INVALID_INDEX 21,
+       AT_ERROR_NOT_FOUND 22,
+       AT_ERROR_MEMORY_FAILURE 23,
+       AT_ERROR_TEXT_TOO_LONG 24,
+       AT_ERROR_INVALID_CHAR_IN_STR 25,
+       AT_ERROR_DIAL_TOO_LONG 26,
+       AT_ERROR_INVALID_CHAR_IN_DIAL 27,
+
+       AT_ERROR_NO_NETWORK_SVC 30,
+       AT_ERROR_NETWORK_TIMEOUT 31,
+       AT_ERROR_EMERGENCY_CALL_ONLY 32,
+
+       AT_ERROR_NET_PERSONAL_PIN_REQ 40,
+       AT_ERROR_NET_PERSONAL_PUN_REQ 41,
+       AT_ERROR_NET_SUB_PERSONAL_PIN_REQ 42,
+       AT_ERROR_NET_SUB_PERSONAL_PUK_REQ 43,
+       AT_ERROR_PROVIDER_PERSONAL_PIN_REQ 44,
+       AT_ERROR_PROVIDER_PERSONAL_PUK_REQ 45,
+       AT_ERROR_CORP_PERSONAL_PIN_REQ 46,
+       AT_ERROR_CORP_PERSONAL_PUK_REQ 47,
+       AT_ERROR_HIDDEN_KEY_REQUIRED 48,
+       AT_ERROR_EAP_METHOD_NOT_SUPPORTED 49,
+       AT_ERROR_INCORRECT_PARAM 50,
+
+       AT_ERROR_UNKNOWN 100
 };
 
 
@@ -96,65 +96,60 @@ struct tcore_at_response {
        GSList *lines; /* any intermediate responses */
 };
 
-typedef gboolean (*TcoreATNotificationCallback)(TcoreAT *at, const GSList *lines,
-               void *user_data);
+typedef gboolean (* TcoreATNotificationCallback)(TcoreAT *at,
+       const GSList *lines, void *user_data);
 
 typedef struct tcore_at_response TcoreATResponse;
 typedef struct tcore_at_request TcoreATRequest;
 
-TcoreAT*         tcore_at_new(TcoreHal *hal);
-void             tcore_at_free(TcoreAT *at);
+TcoreAT *tcore_at_new(TcoreHal *hal);
+void tcore_at_free(TcoreAT *at);
 
-TReturn          tcore_at_buf_write(TcoreAT *at, unsigned int data_len,
-                     const char *data);
+TReturn tcore_at_buf_write(TcoreAT *at,
+       unsigned int data_len, const char *data);
 
-TReturn          tcore_at_set_request(TcoreAT *at, TcoreATRequest *req, gboolean send);
-TcoreATRequest*  tcore_at_get_request(TcoreAT *at);
-TcoreATResponsetcore_at_get_response(TcoreAT *at);
+TReturn tcore_at_set_request(TcoreAT *at, TcoreATRequest *req, gboolean send);
+TcoreATRequest *tcore_at_get_request(TcoreAT *at);
+TcoreATResponse *tcore_at_get_response(TcoreAT *at);
 
 void tcore_at_process_binary_data(TcoreAT *at, char *position, int data_len);
+
+/* RFS Hook callback function proto-type */
+typedef gboolean (*RfsHookCb)(const gchar *data);
 gboolean tcore_at_add_hook(TcoreHal *hal, void *hook_func);
 
-TReturn          tcore_at_add_notification(TcoreAT *at, const char *prefix,
-                     gboolean pdu, TcoreATNotificationCallback callback,
-                     void *user_data);
-TReturn          tcore_at_remove_notification(TcoreAT *at, const char *prefix,
-                     TcoreATNotificationCallback callback);
-TReturn          tcore_at_remove_notification_full(TcoreAT *at,
-                     const char *prefix,
-                     TcoreATNotificationCallback callback, void *user_data);
-
-TcoreATRequest*  tcore_at_request_new(const char *cmd, const char *prefix,
-                     enum tcore_at_command_type type);
-void                   tcore_at_request_free(TcoreATRequest *req);
-void                   tcore_at_response_free(TcoreATResponse* rsp);
-
-gboolean         tcore_at_process(TcoreAT *at, unsigned int data_len,
-                     const char *data);
-
-TcorePending*    tcore_at_pending_new(CoreObject *co, const char *cmd,
-                     const char *prefix, enum tcore_at_command_type type,
-                     TcorePendingResponseCallback func, void *user_data);
-
-GSList*          tcore_at_tok_new(const char *line);
-void             tcore_at_tok_free(GSList *tokens);
-char*            tcore_at_tok_extract(const char *src);
-char*            tcore_at_tok_nth(GSList *tokens, unsigned int token_index);
+TReturn tcore_at_add_notification(TcoreAT *at, const char *prefix,
+       gboolean pdu, TcoreATNotificationCallback callback, void *user_data);
+TReturn tcore_at_remove_notification(TcoreAT *at, const char *prefix,
+       TcoreATNotificationCallback callback);
+TReturn tcore_at_remove_notification_full(TcoreAT *at, const char *prefix,
+       TcoreATNotificationCallback callback, void *user_data);
+
+TcoreATRequest *tcore_at_request_new(const char *cmd, const char *prefix,
+       enum tcore_at_command_type type);
+void tcore_at_request_free(TcoreATRequest *req);
+void tcore_at_response_free(TcoreATResponse* rsp);
+
+gboolean tcore_at_process(TcoreAT *at,
+       unsigned int data_len, const char *data);
+
+TcorePending *tcore_at_pending_new(CoreObject *co, const char *cmd,
+       const char *prefix, enum tcore_at_command_type type,
+       TcorePendingResponseCallback func, void *user_data);
+
+GSList *tcore_at_tok_new(const char *line);
+void tcore_at_tok_free(GSList *tokens);
+char *tcore_at_tok_extract(const char *src);
+char *tcore_at_tok_nth(GSList *tokens, unsigned int token_index);
 void tcore_free_pending_timeout_at_request(TcoreAT *at);
 
 TReturn tcore_prepare_and_send_at_request(CoreObject *co,
-                                                                                               const char *at_cmd,
-                                                                                               const char *at_cmd_prefix,
-                                                                                               enum tcore_at_command_type at_cmd_type,
-                                                                                               UserRequest *ur,
-                                                                                               TcorePendingResponseCallback resp_cb,
-                                                                                               void *resp_cb_data,
-                                                                                               TcorePendingSendCallback send_cb,
-                                                                                               void *send_cb_data,
-                                                                                               unsigned int timeout,
-                                                                                               TcorePendingTimeoutCallback timeout_cb,
-                                                                                               void *timeout_cb_data);
+       const char *at_cmd, const char *at_cmd_prefix, enum tcore_at_command_type at_cmd_type,
+       UserRequest *ur,
+       TcorePendingResponseCallback resp_cb, void *resp_cb_data,
+       TcorePendingSendCallback send_cb, void *send_cb_data,
+       unsigned int timeout, TcorePendingTimeoutCallback timeout_cb, void *timeout_cb_data);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_AT_H__ */
index 29481b3..17204fb 100644 (file)
@@ -28,6 +28,10 @@ __BEGIN_DECLS
 #define MAX_CALL_NUMBER_LEN                    83
 #define MAX_CALL_NAME_LEN                      83
 
+#define MAX_HANDLE                             0xFF
+#define MIN_HANDLE                             0x01
+#define INVALID_HANDLE                                 0x0
+
 enum tcore_call_type {
        TCORE_CALL_TYPE_VOICE,
        TCORE_CALL_TYPE_VIDEO,
@@ -50,6 +54,11 @@ enum tcore_call_status {
        TCORE_CALL_STATUS_ALERT,
        TCORE_CALL_STATUS_INCOMING,
        TCORE_CALL_STATUS_WAITING,
+
+       TCORE_CALL_STATUS_SETUP_PENDING,   /*call core object created but no operation invoked - when invoked, status transition to TCORE_CALL_STATUS_SETUP*/
+       TCORE_CALL_STATUS_SETUP,                /*call core object created & call_handle assigned, but call_id not assigned by CP*/
+
+       TCORE_CALL_STATUS_MAX
 };
 
 enum tcore_call_no_cli_cause {
@@ -87,6 +96,11 @@ enum tcore_call_end_type {
        TCORE_CALL_END_ALL_HELD,
 };
 
+enum tcore_call_silent_redial_reason{
+       TCORE_CALL_SILENT_REDIAL_REASON_NULL,
+       TCORE_CALL_SILENT_REDIAL_REASONL_MULTIRAT_EMERGENCY,
+};
+
 typedef struct call_object CallObject;
 
 struct tcore_call_operations {
@@ -98,8 +112,8 @@ struct tcore_call_operations {
        TReturn (*swap)(CoreObject *o, UserRequest *ur);
        TReturn (*join)(CoreObject *o, UserRequest *ur);
        TReturn (*split)(CoreObject *o, UserRequest *ur);
-       TReturn (*deflect)(CoreObjecto, UserRequest *ur);
-       TReturn (*transfer)(CoreObjecto, UserRequest *ur);
+       TReturn (*deflect)(CoreObject *o, UserRequest *ur);
+       TReturn (*transfer)(CoreObject *o, UserRequest *ur);
        TReturn (*start_cont_dtmf)(CoreObject *o, UserRequest *ur);
        TReturn (*stop_cont_dtmf)(CoreObject *o, UserRequest *ur);
        TReturn (*send_burst_dtmf)(CoreObject *o, UserRequest *ur);
@@ -119,10 +133,12 @@ struct tcore_call_operations {
        TReturn (*get_preferred_voice_subscription)(CoreObject *o, UserRequest *ur);
        TReturn (*set_privacy_mode)(CoreObject *o, UserRequest *ur);
        TReturn (*get_privacy_mode)(CoreObject *o, UserRequest *ur);
+       TReturn (*modify)(CoreObject *o, UserRequest *ur); /* IMS specific */
+       TReturn (*confirm_modify)(CoreObject *o, UserRequest *ur); /* IMS specific */
 };
 
 struct tcore_call_information_operations {
-       void (*mo_call_col)(CoreObject *o, charnumber);
+       void (*mo_call_col)(CoreObject *o, char *number);
        void (*mo_call_waiting)(CoreObject *o);
        void (*mo_call_cug)(CoreObject *o, int cug_index);
        void (*mo_call_forwarded)(CoreObject *o);
@@ -134,81 +150,84 @@ struct tcore_call_information_operations {
        void (*mo_call_cfc)(CoreObject *o);
        void (*mt_call_cli)(CoreObject *o, enum tcore_call_cli_mode mode, char *number);
        void (*mt_call_cna)(CoreObject *o, enum tcore_call_cna_mode mode, char *name, int dcs);
-       void (*mt_call_forwarded_call)(CoreObject *o, charnumber);
-       void (*mt_call_cug_call)(CoreObject *o, int cug_index, charnumber);
-       void (*mt_call_deflected_call)(CoreObject *o, charnumber);
-       void (*mt_call_transfered)(CoreObject *o, charnumber);
-       void (*call_held)(CoreObject *o, charnumber);
-       void (*call_active)(CoreObject *o, charnumber);
-       void (*call_joined)(CoreObject *o, charnumber);
-       void (*call_released_on_hold)(CoreObject *o, charnumber);
-       void (*call_transfer_alert)(CoreObject *o, charnumber);
-       void (*call_transfered)(CoreObject *o, charnumber);
-       void (*call_cf_check_message)(CoreObject *o, charnumber);
+       void (*mt_call_forwarded_call)(CoreObject *o, char *number);
+       void (*mt_call_cug_call)(CoreObject *o, int cug_index, char *number);
+       void (*mt_call_deflected_call)(CoreObject *o, char *number);
+       void (*mt_call_transfered)(CoreObject *o, char *number);
+       void (*call_held)(CoreObject *o, char *number);
+       void (*call_active)(CoreObject *o, char *number);
+       void (*call_joined)(CoreObject *o, char *number);
+       void (*call_released_on_hold)(CoreObject *o, char *number);
+       void (*call_transfer_alert)(CoreObject *o, char *number);
+       void (*call_transfered)(CoreObject *o, char *number);
+       void (*call_cf_check_message)(CoreObject *o, char *number);
 };
 
 typedef void(*ConfirmCallback)(TcorePending *p, int data_len, const void *data, void *user_data);
 
 struct tcore_call_control_operations {
-       TReturn (*answer_hold_and_accept)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-       TReturn (*answer_replace)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-       TReturn (*answer_reject)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-       TReturn (*end_specific)( CoreObject* o, UserRequest* ur, const int id, ConfirmCallback cb, void* user_data );
-       TReturn (*end_all_active)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-       TReturn (*end_all_held)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-       TReturn (*active)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-       TReturn (*hold)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-       TReturn (*swap)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-       TReturn (*join)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-       TReturn (*split)( CoreObject* o, UserRequest* ur, const int id, ConfirmCallback cb, void* user_data );
-       TReturn (*transfer)( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-       TReturn (*deflect)( CoreObject* o, UserRequest* ur, const char* number, ConfirmCallback cb, void* user_data );
+       TReturn (*answer_hold_and_accept)(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+       TReturn (*answer_replace)(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+       TReturn (*answer_reject)(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+       TReturn (*end_specific)(CoreObject *o, UserRequest *ur, const int id, ConfirmCallback cb, void *user_data);
+       TReturn (*end_all_active)(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+       TReturn (*end_all_held)(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+       TReturn (*active)(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+       TReturn (*hold)(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+       TReturn (*swap)(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+       TReturn (*join)(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+       TReturn (*split)(CoreObject *o, UserRequest *ur, const int id, ConfirmCallback cb, void *user_data);
+       TReturn (*transfer)(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+       TReturn (*deflect)(CoreObject *o, UserRequest *ur, const char *number, ConfirmCallback cb, void *user_data);
 };
 
-// Call Core API
-CoreObject*                            tcore_call_new(TcorePlugin *p, const char *name, struct tcore_call_operations *ops, TcoreHal *hal);
-void                                   tcore_call_free( CoreObject *o);
+/* Call Core API */
+CoreObject *tcore_call_new(TcorePlugin *p, const char *name, struct tcore_call_operations *ops, TcoreHal *hal);
+void tcore_call_free(CoreObject *o);
 
-void tcore_call_set_ops(CoreObject *o, struct tcore_call_operations *ops);
+void tcore_call_set_ops(CoreObject *o, struct tcore_call_operations *ops, enum tcore_ops_type ops_type);
 
-// Call Object API
-CallObject*                            tcore_call_object_new( CoreObject *o, int id );
-gboolean                               tcore_call_object_free( CoreObject *o, CallObject *co );
+/* Call Object APIs */
+CallObject *tcore_call_object_new(CoreObject *o);
+gboolean tcore_call_object_free(CoreObject *o, CallObject *co);
 
-int                                            tcore_call_object_total_length( CoreObject *o );
-CallObject*                            tcore_call_object_current_on_mt_processing( CoreObject *o );
-CallObject*                            tcore_call_object_current_on_mo_processing( CoreObject *o );
-CallObject*                            tcore_call_object_find_by_id( CoreObject *o, int id );
-CallObject*                            tcore_call_object_find_by_number( CoreObject *o, char *num );
-GSList*                                        tcore_call_object_find_by_status( CoreObject *o, enum tcore_call_status cs );
+int tcore_call_object_total_length(CoreObject *o);
+CallObject *tcore_call_object_current_on_mt_processing(CoreObject *o);
+CallObject *tcore_call_object_current_on_mo_processing(CoreObject *o);
+CallObject *tcore_call_object_find_by_id(CoreObject *o, int id);
+CallObject *tcore_call_object_find_by_handle(CoreObject *o, int handle);
+CallObject *tcore_call_object_find_by_number(CoreObject *o, char *num);
+GSList *tcore_call_object_find_by_status(CoreObject *o, enum tcore_call_status cs);
 
-int                                            tcore_call_object_get_id( CallObject *co );
+gboolean tcore_call_object_set_id(CallObject *co , int call_id);
+int tcore_call_object_get_id(CallObject *co);
+int tcore_call_object_get_handle(CallObject *co);
 
-gboolean                               tcore_call_object_set_type( CallObject *co, enum tcore_call_type ct );
-enum tcore_call_type   tcore_call_object_get_type( CallObject *co );
+gboolean tcore_call_object_set_type(CallObject *co, enum tcore_call_type ct);
+enum tcore_call_type tcore_call_object_get_type(CallObject *co);
 
-gboolean                               tcore_call_object_set_direction( CallObject *co, enum tcore_call_direction cd );
-enum tcore_call_direction tcore_call_object_get_direction( CallObject *co );
+gboolean tcore_call_object_set_direction(CallObject *co, enum tcore_call_direction cd);
+enum tcore_call_direction tcore_call_object_get_direction(CallObject *co);
 
-gboolean                               tcore_call_object_set_status( CallObject *co, enum tcore_call_status cs );
-enum tcore_call_status  tcore_call_object_get_status( CallObject *co );
+gboolean tcore_call_object_set_status(CallObject *co, enum tcore_call_status cs);
+enum tcore_call_status  tcore_call_object_get_status(CallObject *co);
 
-gboolean tcore_call_object_set_cli_info(struct call_object *co,
-                                               enum tcore_call_cli_mode mode, enum tcore_call_no_cli_cause cause,
-                                               char *num, int num_len);
-enum tcore_call_cli_mode tcore_call_object_get_cli_mode( CallObject *co );
-enum tcore_call_no_cli_cause tcore_call_object_get_no_cli_cause(struct call_object *co);
-int                                            tcore_call_object_get_number( CallObject *co, char *num );
+gboolean tcore_call_object_set_cli_info(CallObject *co,
+       enum tcore_call_cli_mode mode, enum tcore_call_no_cli_cause cause,
+       char *num, int num_len);
+enum tcore_call_cli_mode tcore_call_object_get_cli_mode(CallObject *co);
+enum tcore_call_no_cli_cause tcore_call_object_get_no_cli_cause(CallObject *co);
+int tcore_call_object_get_number(CallObject *co, char *num);
 
-gboolean                               tcore_call_object_set_cna_info( CallObject *co, enum tcore_call_cna_mode mode, char *name, int dcs );
-enum tcore_call_cna_mode tcore_call_object_get_cna_mode( CallObject *co );
-int                                            tcore_call_object_get_name( CallObject *co, char *name );
+gboolean tcore_call_object_set_cna_info(CallObject *co, enum tcore_call_cna_mode mode, char *name, int dcs);
+enum tcore_call_cna_mode tcore_call_object_get_cna_mode(CallObject *co);
+int tcore_call_object_get_name(CallObject *co, char *name);
 
-gboolean                               tcore_call_object_set_multiparty_state ( CallObject *co,  gboolean is );
-gboolean                               tcore_call_object_get_multiparty_state ( CallObject *co );
+gboolean tcore_call_object_set_multiparty_state (CallObject *co,  gboolean is);
+gboolean tcore_call_object_get_multiparty_state (CallObject *co);
 
-gboolean                               tcore_call_object_set_active_line( CallObject *co, unsigned int line );
-int                                            tcore_call_object_get_active_line( CallObject *co );
+gboolean tcore_call_object_set_active_line(CallObject *co, unsigned int line);
+int tcore_call_object_get_active_line(CallObject *co);
 gboolean tcore_call_object_set_is_volte_call(CallObject *co, gboolean flag);
 gboolean tcore_call_object_get_is_volte_call(CallObject *co);
 gboolean tcore_call_object_set_session_id(CallObject *co, int session_id);
@@ -217,61 +236,68 @@ gboolean tcore_call_object_set_conf_call_session_id(CallObject *co, int session_
 int tcore_call_object_get_conf_call_session_id(CallObject *co);
 gboolean tcore_call_object_set_early_media(CallObject *co, gboolean flag);
 gboolean tcore_call_object_get_early_media(CallObject *co);
-struct call_object *tcore_call_object_find_by_session_id(CoreObject *o, int session_id);
+CallObject *tcore_call_object_find_by_session_id(CoreObject *o, int session_id);
 gboolean tcore_call_object_check_cs_call_existence(CoreObject *o);
 GSList *tcore_call_object_get_all_session_ids(CoreObject *o);
 
-// Call Control API
-gboolean                               tcore_call_control_new( CoreObject *o, struct tcore_call_control_operations *ops );
-void                                   tcore_call_control_free( CoreObject *o );
-
-TReturn                                        tcore_call_control_answer_hold_and_accept( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-TReturn                                        tcore_call_control_answer_replace( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-TReturn                                        tcore_call_control_answer_reject( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-
-TReturn                                        tcore_call_control_end_specific( CoreObject* o, UserRequest* ur, const int id, ConfirmCallback cb, void* user_data );
-TReturn                                        tcore_call_control_end_all_active( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-TReturn                                        tcore_call_control_end_all_held( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-
-TReturn                                        tcore_call_control_active( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-TReturn                                        tcore_call_control_hold( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-TReturn                                        tcore_call_control_swap( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-TReturn                                        tcore_call_control_join( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-TReturn                                        tcore_call_control_split( CoreObject* o, UserRequest* ur, const int id, ConfirmCallback cb, void* user_data );
-TReturn                                        tcore_call_control_transfer( CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data );
-TReturn                                        tcore_call_control_deflect( CoreObject* o, UserRequest* ur, const char* number, ConfirmCallback cb, void* user_data );
-
-void                                   tcore_call_control_set_operations( CoreObject* o, struct tcore_call_control_operations *ops );
-
-
-void                                   tcore_call_information_mo_col( CoreObject *o, char* number );
-void                                   tcore_call_information_mo_waiting( CoreObject *o );
-void                                   tcore_call_information_mo_cug( CoreObject *o, int cug_index );
-void                                   tcore_call_information_mo_forwarded( CoreObject *o );
-void                                   tcore_call_information_mo_barred_incoming( CoreObject *o );
-void                                   tcore_call_information_mo_barred_outgoing( CoreObject *o );
-void                                   tcore_call_information_mo_deflected( CoreObject *o );
-void                                   tcore_call_information_mo_clir_suppression_reject( CoreObject *o );
-void                                   tcore_call_information_mo_cfu( CoreObject *o );
-void                                   tcore_call_information_mo_cfc( CoreObject *o );
-
-void                                   tcore_call_information_mt_cli( CoreObject *o, enum tcore_call_cli_mode mode, char* number );
-void                                   tcore_call_information_mt_cna( CoreObject *o, enum tcore_call_cna_mode mode, char* name, int dcs );
-void                                   tcore_call_information_mt_forwarded_call( CoreObject *o, char* number );
-void                                   tcore_call_information_mt_cug_call( CoreObject *o, int cug_index, char* number );
-void                                   tcore_call_information_mt_deflected_call( CoreObject *o, char* number );
-void                                   tcore_call_information_mt_transfered( CoreObject *o, char* number );
-
-void                                   tcore_call_information_held( CoreObject *o, char* number );
-void                                   tcore_call_information_active( CoreObject *o, char* number );
-void                                   tcore_call_information_joined( CoreObject *o, char* number );
-void                                   tcore_call_information_released_on_hold( CoreObject *o, char* number );
-void                                   tcore_call_information_transfer_alert( CoreObject *o, char* number );
-void                                   tcore_call_information_transfered( CoreObject *o, char* number );
-void                                   tcore_call_information_cf_check_ss_message( CoreObject *o, char* number );
-
-void                                   tcore_call_information_set_operations( CoreObject *o, struct tcore_call_information_operations *ops );
+gboolean tcore_call_object_set_is_release_pending(CallObject *co, gboolean flag);
+gboolean tcore_call_object_get_is_release_pending(CallObject *co);
+
+
+gboolean tcore_call_object_set_silent_redial_reason(CallObject *co, enum tcore_call_silent_redial_reason reason);
+enum tcore_call_silent_redial_reason tcore_call_object_get_silent_redial_reason(CallObject *co);
+
+/* Call Control APIs */
+gboolean tcore_call_control_new(CoreObject *o, struct tcore_call_control_operations *ops);
+void tcore_call_control_free(CoreObject *o);
+
+TReturn tcore_call_control_answer_hold_and_accept(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+TReturn tcore_call_control_answer_replace(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+TReturn tcore_call_control_answer_reject(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+
+TReturn tcore_call_control_end_specific(CoreObject *o, UserRequest *ur, const int id, ConfirmCallback cb, void *user_data);
+TReturn tcore_call_control_end_all_active(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+TReturn tcore_call_control_end_all_held(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+
+TReturn tcore_call_control_active(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+TReturn tcore_call_control_hold(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+TReturn tcore_call_control_swap(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+TReturn tcore_call_control_join(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+TReturn tcore_call_control_split(CoreObject *o, UserRequest *ur, const int id, ConfirmCallback cb, void *user_data);
+TReturn tcore_call_control_transfer(CoreObject *o, UserRequest *ur, ConfirmCallback cb, void *user_data);
+TReturn tcore_call_control_deflect(CoreObject *o, UserRequest *ur, const char *number, ConfirmCallback cb, void *user_data);
+
+void tcore_call_control_set_operations(CoreObject *o, struct tcore_call_control_operations *ops);
+
+
+void tcore_call_information_mo_col(CoreObject *o, char *number);
+void tcore_call_information_mo_waiting(CoreObject *o);
+void tcore_call_information_mo_cug(CoreObject *o, int cug_index);
+void tcore_call_information_mo_forwarded(CoreObject *o);
+void tcore_call_information_mo_barred_incoming(CoreObject *o);
+void tcore_call_information_mo_barred_outgoing(CoreObject *o);
+void tcore_call_information_mo_deflected(CoreObject *o);
+void tcore_call_information_mo_clir_suppression_reject(CoreObject *o);
+void tcore_call_information_mo_cfu(CoreObject *o);
+void tcore_call_information_mo_cfc(CoreObject *o);
+
+void tcore_call_information_mt_cli(CoreObject *o, enum tcore_call_cli_mode mode, char *number);
+void tcore_call_information_mt_cna(CoreObject *o, enum tcore_call_cna_mode mode, char *name, int dcs);
+void tcore_call_information_mt_forwarded_call(CoreObject *o, char *number);
+void tcore_call_information_mt_cug_call(CoreObject *o, int cug_index, char *number);
+void tcore_call_information_mt_deflected_call(CoreObject *o, char *number);
+void tcore_call_information_mt_transfered(CoreObject *o, char *number);
+
+void tcore_call_information_held(CoreObject *o, char *number);
+void tcore_call_information_active(CoreObject *o, char *number);
+void tcore_call_information_joined(CoreObject *o, char *number);
+void tcore_call_information_released_on_hold(CoreObject *o, char *number);
+void tcore_call_information_transfer_alert(CoreObject *o, char *number);
+void tcore_call_information_transfered(CoreObject *o, char *number);
+void tcore_call_information_cf_check_ss_message(CoreObject *o, char *number);
+
+void tcore_call_information_set_operations(CoreObject *o, struct tcore_call_information_operations *ops);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_CO_CALL_H__ */
index c2921f7..103243c 100644 (file)
@@ -86,63 +86,66 @@ enum co_context_tech {
        CONTEXT_TECH_3GPP2
 };
 
-CoreObject*              tcore_context_new(TcorePlugin *p, const char *name, TcoreHal *hal);
-void                     tcore_context_free(CoreObject *o);
-
-TReturn                  tcore_context_set_state(CoreObject *o, enum co_context_state state);
-enum co_context_state    tcore_context_get_state(CoreObject *o);
-TReturn                  tcore_context_set_id(CoreObject *o, unsigned char id);
-unsigned char             tcore_context_get_id(CoreObject *o);
-TReturn                  tcore_context_set_role(CoreObject *o, enum co_context_role type);
-enum co_context_role     tcore_context_get_role(CoreObject *o);
-
-TReturn                  tcore_context_set_apn(CoreObject *o, const char *apn);
-char*                    tcore_context_get_apn(CoreObject *o);
-TReturn                  tcore_context_set_address(CoreObject *o, const char *addr);
-char*                    tcore_context_get_address(CoreObject *o);
-TReturn                  tcore_context_set_type(CoreObject *o, enum co_context_type type);
-enum co_context_type     tcore_context_get_type(CoreObject *o);
-TReturn                  tcore_context_set_data_compression(CoreObject *o, enum co_context_d_comp comp);
-enum co_context_d_comp   tcore_context_get_data_compression(CoreObject *o);
-TReturn                  tcore_context_set_header_compression(CoreObject *o, enum co_context_h_comp comp);
-enum co_context_h_comp   tcore_context_get_header_compression(CoreObject *o);
+CoreObject *tcore_context_new(TcorePlugin *p, const char *name, TcoreHal *hal);
+void tcore_context_free(CoreObject *o);
+
+TReturn tcore_context_set_state(CoreObject *o, enum co_context_state state);
+enum co_context_state tcore_context_get_state(CoreObject *o);
+TReturn tcore_context_set_id(CoreObject *o, unsigned char id);
+unsigned char tcore_context_get_id(CoreObject *o);
+TReturn tcore_context_set_role(CoreObject *o, enum co_context_role type);
+enum co_context_role tcore_context_get_role(CoreObject *o);
+
+TReturn tcore_context_set_apn(CoreObject *o, const char *apn);
+char *tcore_context_get_apn(CoreObject *o);
+TReturn tcore_context_set_address(CoreObject *o, const char *addr);
+char *tcore_context_get_address(CoreObject *o);
+TReturn tcore_context_set_type(CoreObject *o, enum co_context_type type);
+enum co_context_type tcore_context_get_type(CoreObject *o);
+TReturn tcore_context_set_data_compression(CoreObject *o, enum co_context_d_comp comp);
+enum co_context_d_comp tcore_context_get_data_compression(CoreObject *o);
+TReturn tcore_context_set_header_compression(CoreObject *o, enum co_context_h_comp comp);
+enum co_context_h_comp tcore_context_get_header_compression(CoreObject *o);
 TReturn tcore_context_set_tech_preference(CoreObject *o, enum co_context_tech tech);
 enum co_context_tech tcore_context_get_tech_preference(CoreObject *o);
-TReturn                  tcore_context_set_username(CoreObject *o, const char *username);
-char*                    tcore_context_get_username(CoreObject *o);
-TReturn                  tcore_context_set_password(CoreObject *o, const char *password);
-char*                    tcore_context_get_password(CoreObject *o);
-TReturn                  tcore_context_set_dns1(CoreObject *o, const char *dns);
-TReturn                  tcore_context_set_ipv6_dns1(CoreObject *o, const char *dns);
-char*                    tcore_context_get_dns1(CoreObject *o);
-TReturn                  tcore_context_set_dns2(CoreObject *o, const char *dns);
-TReturn                  tcore_context_set_ipv6_dns2(CoreObject *o, const char *dns);
-char*                    tcore_context_get_dns2(CoreObject *o);
-TReturn                  tcore_context_set_auth(CoreObject *o, enum co_context_auth auth);
-enum co_context_auth     tcore_context_get_auth(CoreObject *o);
-TReturn                  tcore_context_set_proxy(CoreObject *o, const char *proxy);
-char*                    tcore_context_get_proxy(CoreObject *o);
-TReturn                  tcore_context_set_mmsurl(CoreObject *o, const char *mmsurl);
-char*                    tcore_context_get_mmsurl(CoreObject *o);
-TReturn                  tcore_context_set_profile_name(CoreObject *o, const char *profile_name);
-char*                    tcore_context_get_profile_name(CoreObject *o);
-TReturn                tcore_context_set_default_profile(CoreObject *o, gboolean default_conn);
-gboolean               tcore_context_get_default_profile(CoreObject *o);
-
-TReturn                  tcore_context_set_devinfo(CoreObject *o, struct tnoti_ps_pdp_ipconfiguration *devinfo);
-TReturn                  tcore_context_reset_devinfo(CoreObject *o);
-void                     tcore_context_cp_service_info(CoreObject *dest, CoreObject *src);
-
-char*                    tcore_context_get_ipv4_addr(CoreObject *o);
-char*                    tcore_context_get_ipv4_dns1(CoreObject *o);
-char*                    tcore_context_get_ipv4_dns2(CoreObject *o);
-char*                    tcore_context_get_ipv4_gw(CoreObject *o);
-char*                    tcore_context_get_ipv4_devname(CoreObject *o);
-
-char*                    tcore_context_get_ipv6_addr(CoreObject *o);
-char*                    tcore_context_get_ipv6_dns1(CoreObject *o);
-char*                    tcore_context_get_ipv6_dns2(CoreObject *o);
-char*                    tcore_context_get_ipv6_gw(CoreObject *o);
+TReturn tcore_context_set_username(CoreObject *o, const char *username);
+char *tcore_context_get_username(CoreObject *o);
+TReturn tcore_context_set_password(CoreObject *o, const char *password);
+char *tcore_context_get_password(CoreObject *o);
+TReturn tcore_context_set_dns1(CoreObject *o, const char *dns);
+TReturn tcore_context_set_ipv6_dns1(CoreObject *o, const char *dns);
+char *tcore_context_get_dns1(CoreObject *o);
+TReturn tcore_context_set_dns2(CoreObject *o, const char *dns);
+TReturn tcore_context_set_ipv6_dns2(CoreObject *o, const char *dns);
+char *tcore_context_get_dns2(CoreObject *o);
+TReturn tcore_context_set_auth(CoreObject *o, enum co_context_auth auth);
+enum co_context_auth tcore_context_get_auth(CoreObject *o);
+TReturn tcore_context_set_proxy(CoreObject *o, const char *proxy);
+char *tcore_context_get_proxy(CoreObject *o);
+TReturn tcore_context_set_mmsurl(CoreObject *o, const char *mmsurl);
+char *tcore_context_get_mmsurl(CoreObject *o);
+TReturn tcore_context_set_profile_name(CoreObject *o, const char *profile_name);
+char *tcore_context_get_profile_name(CoreObject *o);
+TReturn tcore_context_set_default_profile(CoreObject *o, gboolean default_conn);
+gboolean tcore_context_get_default_profile(CoreObject *o);
+
+TReturn tcore_context_set_devinfo(CoreObject *o, struct tnoti_ps_pdp_ipconfiguration *devinfo);
+TReturn tcore_context_reset_devinfo(CoreObject *o);
+TReturn tcore_context_set_bearer_info(CoreObject *o, struct tnoti_ps_dedicated_bearer_info *bearer_info);
+TReturn tcore_context_get_bearer_info(CoreObject *o, struct dedicated_bearer_info *bearer_info);
+TReturn tcore_context_reset_bearer_info(CoreObject *o);
+void tcore_context_cp_service_info(CoreObject *dest, CoreObject *src);
+
+char *tcore_context_get_ipv4_addr(CoreObject *o);
+char *tcore_context_get_ipv4_dns1(CoreObject *o);
+char *tcore_context_get_ipv4_dns2(CoreObject *o);
+char *tcore_context_get_ipv4_gw(CoreObject *o);
+char *tcore_context_get_ipv4_devname(CoreObject *o);
+
+char *tcore_context_get_ipv6_addr(CoreObject *o);
+char *tcore_context_get_ipv6_dns1(CoreObject *o);
+char *tcore_context_get_ipv6_dns2(CoreObject *o);
+char *tcore_context_get_ipv6_gw(CoreObject *o);
 
 pcscf_addr *tcore_context_get_pcscf_ipv4_addr(CoreObject *o);
 pcscf_addr *tcore_context_get_pcscf_ipv6_addr(CoreObject *o);
@@ -151,4 +154,4 @@ gboolean tcore_context_get_attach_apn(CoreObject *o);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_CO_CONTEXT_H__ */
index d97881a..e5254ce 100644 (file)
@@ -37,9 +37,9 @@ struct tcore_gps_operations {
        TReturn (*set_smart_assistant_info)(CoreObject *o, UserRequest *ur);
 };
 
-CoreObject*  tcore_gps_new(TcorePlugin *p, const char *name, struct tcore_gps_operations *ops, TcoreHal *hal);
-void         tcore_gps_free(CoreObject *o);
-void tcore_gps_set_ops(CoreObject *o, struct tcore_gps_operations *ops);
+CoreObject *tcore_gps_new(TcorePlugin *p, const char *name, struct tcore_gps_operations *ops, TcoreHal *hal);
+void tcore_gps_free(CoreObject *o);
+void tcore_gps_set_ops(CoreObject *o, struct tcore_gps_operations *ops, enum tcore_ops_type ops_type);
 
 __END_DECLS
 
index ccc5be2..c089d2d 100644 (file)
@@ -37,19 +37,20 @@ struct tcore_modem_operations {
        TReturn (*get_sn)(CoreObject *o, UserRequest *ur);
        TReturn (*dun_pin_ctrl)(CoreObject *o, UserRequest *ur);
        TReturn (*get_flight_mode)(CoreObject *o, UserRequest *ur);
+       TReturn (*get_device_info)(CoreObject *o, UserRequest *ur);
 };
 
 
-CoreObject*      tcore_modem_new(TcorePlugin *p, const char *name, struct tcore_modem_operations *ops, TcoreHal *hal);
-void             tcore_modem_free(CoreObject *o);
+CoreObject *tcore_modem_new(TcorePlugin *p, const char *name, struct tcore_modem_operations *ops, TcoreHal *hal);
+void tcore_modem_free(CoreObject *o);
 
-void tcore_modem_set_ops(CoreObject *o, struct tcore_modem_operations *ops);
+void tcore_modem_set_ops(CoreObject *o, struct tcore_modem_operations *ops, enum tcore_ops_type ops_type);
 
-TReturn          tcore_modem_set_flight_mode_state(CoreObject *o, gboolean flag);
-gboolean         tcore_modem_get_flight_mode_state(CoreObject *o);
-TReturn          tcore_modem_set_powered(CoreObject *o, gboolean pwr);
-gboolean         tcore_modem_get_powered(CoreObject *o);
+TReturn tcore_modem_set_flight_mode_state(CoreObject *o, gboolean flag);
+gboolean tcore_modem_get_flight_mode_state(CoreObject *o);
+TReturn tcore_modem_set_powered(CoreObject *o, gboolean pwr);
+gboolean tcore_modem_get_powered(CoreObject *o);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_CO_MODEM_H__ */
index 0cd7f19..79347c4 100644 (file)
@@ -60,7 +60,7 @@ __BEGIN_DECLS
  */
 #define PROP_MODEM_READ_ESN_FOR_ACTIVATION  "esn_for_activation"
 
-
+#define NETWORK_MCC_MNC_OPER_LIST_GSMA_DB "/opt/dbspace/.mcc_mnc_oper_list.db"
 
 enum tcore_network_service_domain_type {
        TCORE_NETWORK_SERVICE_DOMAIN_TYPE_CIRCUIT,
@@ -89,10 +89,10 @@ enum tcore_network_operator_info_type {
 
 struct tcore_network_operator_info {
        enum tcore_network_operator_info_type type;
-       char mcc[4];
-       char mnc[4];
-       char name[41];
-       char country[4];
+       char mcc[NETWORK_MAX_MCC_LEN+1];
+       char mnc[NETWORK_MAX_MNC_LEN+1];
+       char name[NETWORK_MAX_NETWORK_NAME_LEN+1];
+       char country[NETWORK_MAX_COUNTRY_CODE_LEN+1];
 };
 
 struct tcore_network_operations {
@@ -123,70 +123,89 @@ struct tcore_network_operations {
        TReturn (*set_roaming_preference)(CoreObject *o, UserRequest *ur); /* 3GPP2 spcefic */
        TReturn (*get_roaming_preference)(CoreObject *o, UserRequest *ur); /* 3GPP2 spcefic */
        TReturn (*get_subscription_info)(CoreObject *o, UserRequest *ur); /* 3GPP2 spcefic */
+       TReturn (*search_ecc_rat)(CoreObject *o, UserRequest *ur);
 };
 
 
-CoreObject* tcore_network_new(TcorePlugin *plugin, const char *name,
-                struct tcore_network_operations *ops, TcoreHal *hal);
-void        tcore_network_free(CoreObject *co);
-
-void tcore_network_set_ops(CoreObject *co, struct tcore_network_operations *ops);
-
-TReturn     tcore_network_set_plmn(CoreObject *co, const char *plmn);
-char*       tcore_network_get_plmn(CoreObject *co);
-
-TReturn     tcore_network_set_network_name(CoreObject *co,
-                enum tcore_network_name_type type, const char *network_name);
-char*       tcore_network_get_network_name(CoreObject *co,
-                enum tcore_network_name_type type);
-
-TReturn     tcore_network_set_network_name_priority(CoreObject *co,
-                enum tcore_network_name_priority priority);
-TReturn     tcore_network_get_network_name_priority(CoreObject *co,
-                enum tcore_network_name_priority *priority);
-
-TReturn     tcore_network_set_roaming_state(CoreObject *co, gboolean state);
-gboolean    tcore_network_get_roaming_state(CoreObject *co);
-
-TReturn     tcore_network_set_restricted_state(CoreObject *co, int state);
-int         tcore_network_get_restricted_state(CoreObject *co);
-
-TReturn     tcore_network_set_service_status(CoreObject *co,
-                enum tcore_network_service_domain_type type,
-                enum telephony_network_service_domain_status status);
-TReturn     tcore_network_get_service_status(CoreObject *co,
-                enum tcore_network_service_domain_type type,
-                enum telephony_network_service_domain_status *result);
-
-TReturn     tcore_network_set_access_technology(CoreObject *co,
-                enum telephony_network_access_technology act);
-TReturn     tcore_network_get_access_technology(CoreObject *co,
-                enum telephony_network_access_technology *result);
-
-TReturn     tcore_network_set_lac(CoreObject *co, unsigned int lac);
-TReturn     tcore_network_get_lac(CoreObject *co, unsigned int *result);
-
-TReturn     tcore_network_set_rac(CoreObject *co, unsigned int rac);
-TReturn     tcore_network_get_rac(CoreObject *co, unsigned int *result);
-
-TReturn     tcore_network_set_cell_id(CoreObject *co, unsigned int cell_id);
-TReturn     tcore_network_get_cell_id(CoreObject *co, unsigned int *result);
-
-TReturn        tcore_network_set_gsm_dtm_support(CoreObject *co, gboolean state);
-gboolean       tcore_network_get_gsm_dtm_support(CoreObject *co);
-
-TReturn     tcore_network_set_service_type(CoreObject *co,
-                enum telephony_network_service_type service_type);
-TReturn     tcore_network_get_service_type(CoreObject *co,
-                enum telephony_network_service_type *result);
-
-TReturn     tcore_network_operator_info_add(CoreObject *co,
-                const struct tcore_network_operator_info *noi);
-
-struct tcore_network_operator_info*
-            tcore_network_operator_info_find(CoreObject *co,
-                const char *mcc, const char *mnc);
+CoreObject *tcore_network_new(TcorePlugin *plugin, const char *name,
+       struct tcore_network_operations *ops, TcoreHal *hal);
+void tcore_network_free(CoreObject *co);
+
+void tcore_network_set_ops(CoreObject *o,
+       struct tcore_network_operations *ops, enum tcore_ops_type ops_type);
+
+TReturn tcore_network_set_plmn(CoreObject *co, const char *plmn);
+char *tcore_network_get_plmn(CoreObject *co);
+
+TReturn tcore_network_set_network_name(CoreObject *co,
+       enum tcore_network_name_type type, const char *network_name);
+char *tcore_network_get_network_name(CoreObject *co,
+       enum tcore_network_name_type type);
+
+TReturn tcore_network_set_network_name_priority(CoreObject *co,
+       enum tcore_network_name_priority priority);
+TReturn tcore_network_get_network_name_priority(CoreObject *co,
+       enum tcore_network_name_priority *priority);
+
+TReturn tcore_network_set_roaming_state(CoreObject *co, gboolean state);
+gboolean tcore_network_get_roaming_state(CoreObject *co);
+
+TReturn tcore_network_set_restricted_state(CoreObject *co, int state);
+int tcore_network_get_restricted_state(CoreObject *co);
+
+TReturn tcore_network_set_service_status(CoreObject *co,
+       enum tcore_network_service_domain_type type,
+       enum telephony_network_service_domain_status status);
+TReturn tcore_network_get_service_status(CoreObject *co,
+       enum tcore_network_service_domain_type type,
+       enum telephony_network_service_domain_status *result);
+
+TReturn tcore_network_set_access_technology(CoreObject *co,
+       enum telephony_network_access_technology act);
+TReturn tcore_network_get_access_technology(CoreObject *co,
+       enum telephony_network_access_technology *result);
+
+TReturn tcore_network_set_lac(CoreObject *co, unsigned int lac);
+TReturn tcore_network_get_lac(CoreObject *co, unsigned int *result);
+
+TReturn tcore_network_set_rac(CoreObject *co, unsigned int rac);
+TReturn tcore_network_get_rac(CoreObject *co, unsigned int *result);
+
+TReturn tcore_network_set_cell_id(CoreObject *co, unsigned int cell_id);
+TReturn tcore_network_get_cell_id(CoreObject *co, unsigned int *result);
+
+TReturn tcore_network_set_gsm_dtm_support(CoreObject *co, gboolean state);
+gboolean tcore_network_get_gsm_dtm_support(CoreObject *co);
+
+TReturn tcore_network_set_service_type(CoreObject *co,
+       enum telephony_network_service_type service_type);
+TReturn tcore_network_get_service_type(CoreObject *co,
+       enum telephony_network_service_type *result);
+TReturn tcore_network_set_ims_reg_info(CoreObject *co,
+        struct tel_network_ims_registration_info ims_reg_info);
+TReturn tcore_network_get_ims_reg_info(CoreObject *co,
+        struct tel_network_ims_registration_info *ims_reg_info);
+TReturn tcore_network_set_ims_voice_status(CoreObject *co, gboolean status);
+TReturn tcore_network_get_ims_voice_status(CoreObject *co, gboolean *status);
+TReturn tcore_network_set_ecc_rat_search_status(CoreObject *co,
+        enum telephony_network_ecc_rat_search_status status);
+TReturn tcore_network_get_ecc_rat_search_status(CoreObject *co,
+        enum telephony_network_ecc_rat_search_status *status);
+TReturn tcore_network_set_ecc_rat(CoreObject *co,
+        enum telephony_network_access_technology ecc_rat);
+TReturn tcore_network_get_ecc_rat(CoreObject *co,
+        enum telephony_network_access_technology *ecc_rat);
+TReturn tcore_network_operator_info_add(CoreObject *co,
+       const struct tcore_network_operator_info *noi);
+
+struct tcore_network_operator_info *tcore_network_operator_info_find(CoreObject *co,
+       const char *mcc, const char *mnc);
+void tcore_network_update_mcc_mnc_oper_list(CoreObject *co,
+       const char *plmn, const char *name, enum tcore_network_operator_info_type type);
+gboolean tcore_network_load_mcc_mnc_oper_list_from_db(TcorePlugin *p,
+       CoreObject *co, const char *mcc, const char *mnc, const char *db_path);
+void tcore_network_update_mcc_mnc_oper_list_db(TcorePlugin *p, const char *mcc, const char *mnc, const char *oper_name);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_CO_NETWORK_H__ */
index 0ddea4f..2f25d44 100644 (file)
@@ -34,23 +34,23 @@ struct tcore_phonebook_operations {
        TReturn (*delete_record)(CoreObject *o, UserRequest *ur);
 };
 
-CoreObjecttcore_phonebook_new(TcorePlugin *p, const char *name, struct tcore_phonebook_operations *ops, TcoreHal *hal);
-void        tcore_phonebook_free(CoreObject *n);
+CoreObject *tcore_phonebook_new(TcorePlugin *p, const char *name, struct tcore_phonebook_operations *ops, TcoreHal *hal);
+void tcore_phonebook_free(CoreObject *n);
 
-void tcore_phonebook_set_ops(CoreObject *o, struct tcore_phonebook_operations *ops);
+void tcore_phonebook_set_ops(CoreObject *o, struct tcore_phonebook_operations *ops, enum tcore_ops_type ops_type);
 
-gboolean    tcore_phonebook_get_status(CoreObject *o);
-gboolean    tcore_phonebook_set_status(CoreObject *o, gboolean b_init);
+gboolean tcore_phonebook_get_status(CoreObject *o);
+gboolean tcore_phonebook_set_status(CoreObject *o, gboolean b_init);
 
 struct tel_phonebook_support_list* tcore_phonebook_get_support_list(CoreObject *o);
-gboolean    tcore_phonebook_set_support_list(CoreObject *o, struct tel_phonebook_support_list *list);
+gboolean tcore_phonebook_set_support_list(CoreObject *o, struct tel_phonebook_support_list *list);
 
 struct tel_phonebook_field_support_list* tcore_phonebook_get_field_support_list(CoreObject *o);
-gboolean    tcore_phonebook_set_field_support_list(CoreObject *o, struct tel_phonebook_field_support_list *list);
+gboolean tcore_phonebook_set_field_support_list(CoreObject *o, struct tel_phonebook_field_support_list *list);
 
 enum tel_phonebook_type tcore_phonebook_get_selected_type(CoreObject *o);
 gboolean tcore_phonebook_set_selected_type(CoreObject *o, enum tel_phonebook_type t);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_CO_PHONEBOOK_H__ */
index aacb250..abc514d 100644 (file)
@@ -36,37 +36,37 @@ struct tcore_ps_operations {
        TReturn (*send_dormant_request)(CoreObject *co_ps, void *user_data);
 };
 
-CoreObject*  tcore_ps_new(TcorePlugin *p, const char *name, struct tcore_ps_operations *ops, TcoreHal *hal);
-void         tcore_ps_free(CoreObject *o);
+CoreObject *tcore_ps_new(TcorePlugin *p, const char *name, struct tcore_ps_operations *ops, TcoreHal *hal);
+void tcore_ps_free(CoreObject *o);
 
-void tcore_ps_set_ops(CoreObject *o, struct tcore_ps_operations *ops);
+void tcore_ps_set_ops(CoreObject *o, struct tcore_ps_operations *ops, enum tcore_ops_type ops_type);
 
-TReturn      tcore_ps_add_context(CoreObject *o, CoreObject *ctx_o);
-TReturn      tcore_ps_remove_context(CoreObject *o, CoreObject *ctx_o);
-CoreObject*  tcore_ps_ref_context_by_role(CoreObject *o, enum co_context_role role);
-GSList*      tcore_ps_ref_context_by_id(CoreObject *o, unsigned int id);
-gboolean tcore_ps_any_context_activating_activated(CoreObject *o, int * state);
+TReturn tcore_ps_add_context(CoreObject *o, CoreObject *ctx_o);
+TReturn tcore_ps_remove_context(CoreObject *o, CoreObject *ctx_o);
+CoreObject *tcore_ps_ref_context_by_role(CoreObject *o, enum co_context_role role);
+GSList *tcore_ps_ref_context_by_id(CoreObject *o, unsigned int id);
+gboolean tcore_ps_any_context_activating_activated(CoreObject *o, int *state);
 
-TReturn      tcore_ps_set_online(CoreObject *o, gboolean state);
-TReturn      tcore_ps_set_num_of_pdn(CoreObject *o, gint numbers);
+TReturn tcore_ps_set_online(CoreObject *o, gboolean state);
+TReturn tcore_ps_set_num_of_pdn(CoreObject *o, gint numbers);
 unsigned int tcore_ps_get_num_of_pdn(CoreObject *o);
 unsigned int tcore_ps_set_cid_active(CoreObject *o, unsigned int cid, unsigned int enable);
 unsigned int tcore_ps_get_cid_active(CoreObject *o, unsigned int cid);
-GSList*      tcore_ps_get_active_cids(CoreObject *o);
+GSList *tcore_ps_get_active_cids(CoreObject *o);
 unsigned int tcore_ps_set_cid_connected(CoreObject *o, unsigned int cid, unsigned int connected);
 unsigned int tcore_ps_get_cid_connected(CoreObject *o, unsigned int cid);
-GSList*      tcore_ps_get_connected_cids(CoreObject *o);
+GSList *tcore_ps_get_connected_cids(CoreObject *o);
 unsigned int tcore_ps_is_active_apn(CoreObject *o, const char* apn);
-TReturn      tcore_ps_assign_context_id(CoreObject *o, CoreObject *context, unsigned char cid);
-TReturn      tcore_ps_clear_context_id(CoreObject *o, CoreObject *context);
+TReturn tcore_ps_assign_context_id(CoreObject *o, CoreObject *context, unsigned char cid);
+TReturn tcore_ps_clear_context_id(CoreObject *o, CoreObject *context);
 
 TReturn         tcore_ps_send_dormant_request(CoreObject *o, void *user_data);
-TReturn      tcore_ps_define_context(CoreObject *o, CoreObject *context, void *user_data);
-TReturn      tcore_ps_activate_context(CoreObject *o, CoreObject *context, void *user_data);
-TReturn      tcore_ps_deactivate_context(CoreObject *o, CoreObject *context, void *user_data);
-TReturn      tcore_ps_deactivate_contexts(CoreObject *o);
-TReturn      tcore_ps_deactivate_cid(CoreObject *o, unsigned int cid);
+TReturn tcore_ps_define_context(CoreObject *o, CoreObject *context, void *user_data);
+TReturn tcore_ps_activate_context(CoreObject *o, CoreObject *context, void *user_data);
+TReturn tcore_ps_deactivate_context(CoreObject *o, CoreObject *context, void *user_data);
+TReturn tcore_ps_deactivate_contexts(CoreObject *o);
+TReturn tcore_ps_deactivate_cid(CoreObject *o, unsigned int cid);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_CO_PS_H__ */
index 451051a..5313969 100644 (file)
@@ -36,10 +36,10 @@ struct tcore_sap_operations {
        TReturn (*get_cardreader_status)(CoreObject *o, UserRequest *ur);
 };
 
-CoreObjecttcore_sap_new(TcorePlugin *p, const char *name, struct tcore_sap_operations *ops, TcoreHal *hal);
-void        tcore_sap_free(CoreObject *o);
-void tcore_sap_set_ops(CoreObject *o, struct tcore_sap_operations *ops);
+CoreObject *tcore_sap_new(TcorePlugin *p, const char *name, struct tcore_sap_operations *ops, TcoreHal *hal);
+void tcore_sap_free(CoreObject *o);
+void tcore_sap_set_ops(CoreObject *o, struct tcore_sap_operations *ops, enum tcore_ops_type ops_type);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_CO_SAP_H__ */
index ceecd03..e47ba55 100644 (file)
@@ -71,14 +71,14 @@ struct tcore_sat_operations {
        TReturn (*user_confirmation)(CoreObject *o, UserRequest *ur);
 };
 
-int tcore_sat_decode_proactive_command(unsigned char* tlv_origin, unsigned int tlv_length, struct tcore_sat_proactive_command* decoded_tlv);
-int tcore_sat_decode_call_control_result(unsigned char* tlv_origin, unsigned int tlv_length, struct tnoti_sat_call_control_result_ind* call_ctrl_result_tlv);
+int tcore_sat_decode_proactive_command(unsigned char *tlv_origin, unsigned int tlv_length, struct tcore_sat_proactive_command *decoded_tlv);
+int tcore_sat_decode_call_control_result(unsigned char *tlv_origin, unsigned int tlv_length, struct tnoti_sat_call_control_result_ind *call_ctrl_result_tlv);
 int tcore_sat_encode_envelop_cmd(const struct treq_sat_envelop_cmd_data *src_envelop, char *dst_envelop);
 int tcore_sat_encode_terminal_response(const struct treq_sat_terminal_rsp_data *src_tr, char *dst_tr);
 
-CoreObjecttcore_sat_new(TcorePlugin *p, const char *name, struct tcore_sat_operations *ops, TcoreHal *hal);
-void        tcore_sat_free(CoreObject *n);
+CoreObject *tcore_sat_new(TcorePlugin *p, const char *name, struct tcore_sat_operations *ops, TcoreHal *hal);
+void tcore_sat_free(CoreObject *n);
 
-void tcore_sat_set_ops(CoreObject *o, struct tcore_sat_operations *ops);
+void tcore_sat_set_ops(CoreObject *o, struct tcore_sat_operations *ops, enum tcore_ops_type ops_type);
 
-#endif
+#endif /* __TCORE_CO_SAT_H__ */
index be27956..4615c7e 100644 (file)
@@ -41,117 +41,134 @@ struct tcore_sim_operations {
        TReturn (*set_powerstate)(CoreObject *o, UserRequest *ur);
 };
 
-CoreObject*    tcore_sim_new(TcorePlugin *p, const char *name, struct tcore_sim_operations *ops, TcoreHal *hal);
-void           tcore_sim_free(CoreObject *n);
+enum tcore_sim_file_type_e {
+       SIM_FTYPE_DEDICATED = 0x00, /**< Dedicated */
+       SIM_FTYPE_TRANSPARENT = 0x01, /**< Transparent -binary type*/
+       SIM_FTYPE_LINEAR_FIXED = 0x02, /**< Linear fixed - record type*/
+       SIM_FTYPE_CYCLIC = 0x04, /**< Cyclic - record type*/
+       SIM_FTYPE_INVALID_TYPE = 0xFF /**< Invalid type */
+};
+
+struct tcore_sim_ef_info {
+       enum tcore_sim_file_type_e file_type;
+       unsigned short file_id;
+       unsigned int file_size;
+       int record_length;
+       int number_of_records;
+};
+
+CoreObject *tcore_sim_new(TcorePlugin *p, const char *name, struct tcore_sim_operations *ops, TcoreHal *hal);
+void tcore_sim_free(CoreObject *n);
 
-void   tcore_sim_set_ops(CoreObject *o, struct tcore_sim_operations *ops);
+void tcore_sim_set_ops(CoreObject *o, struct tcore_sim_operations *ops, enum tcore_ops_type ops_type);
 
-enum tel_sim_type      tcore_sim_get_type(CoreObject *o);
-gboolean               tcore_sim_set_type(CoreObject *o, enum tel_sim_type type);
+enum tel_sim_type tcore_sim_get_type(CoreObject *o);
+gboolean tcore_sim_set_type(CoreObject *o, enum tel_sim_type type);
 
-struct tel_sim_imsi*   tcore_sim_get_imsi(CoreObject *o);
-gboolean               tcore_sim_set_imsi(CoreObject *o, const struct tel_sim_imsi *imsi);
+struct tel_sim_imsi *tcore_sim_get_imsi(CoreObject *o);
+gboolean tcore_sim_set_imsi(CoreObject *o, const struct tel_sim_imsi *imsi);
 
-enum tel_sim_status    tcore_sim_get_status(CoreObject *o);
-gboolean               tcore_sim_set_status(CoreObject *o, enum tel_sim_status status);
+enum tel_sim_status tcore_sim_get_status(CoreObject *o);
+gboolean tcore_sim_set_status(CoreObject *o, enum tel_sim_status status);
 
-gboolean               tcore_sim_get_identification(CoreObject *o);
-gboolean               tcore_sim_set_identification(CoreObject *o, gboolean b_changed);
+gboolean tcore_sim_get_identification(CoreObject *o);
+gboolean tcore_sim_set_identification(CoreObject *o, gboolean b_changed);
 
-struct tel_sim_service_table*  tcore_sim_get_service_table(CoreObject *o);
-gboolean                       tcore_sim_set_service_table(CoreObject *o, const struct tel_sim_service_table *svct);
-enum tcore_return              tcore_sim_delete_service_table(CoreObject *o);
+struct tel_sim_service_table *tcore_sim_get_service_table(CoreObject *o);
+gboolean tcore_sim_set_service_table(CoreObject *o, const struct tel_sim_service_table *svct);
+enum tcore_return tcore_sim_delete_service_table(CoreObject *o);
 
-struct tel_sim_cphs_csp*       tcore_sim_get_csp(CoreObject *o);
-gboolean               tcore_sim_set_csp(CoreObject *o, const struct tel_sim_cphs_csp *csp);
-gboolean               tcore_sim_delete_csp(CoreObject *o);
+struct tel_sim_cphs_csp *tcore_sim_get_csp(CoreObject *o);
+gboolean tcore_sim_set_csp(CoreObject *o, const struct tel_sim_cphs_csp *csp);
+gboolean tcore_sim_delete_csp(CoreObject *o);
 
 
-struct tel_sim_ecc_list*       tcore_sim_get_ecc_list(CoreObject *o);
-gboolean                       tcore_sim_set_ecc_list(CoreObject *o, const struct tel_sim_ecc_list *ecc_list);
-enum tcore_return              tcore_sim_delete_ecc_list(CoreObject *o);
+struct tel_sim_ecc_list *tcore_sim_get_ecc_list(CoreObject *o);
+gboolean tcore_sim_set_ecc_list(CoreObject *o, const struct tel_sim_ecc_list *ecc_list);
+enum tcore_return tcore_sim_delete_ecc_list(CoreObject *o);
 
-struct tel_sim_msisdn_list*    tcore_sim_get_msisdn_list(CoreObject *o);
-gboolean                       tcore_sim_set_msisdn_list(CoreObject *o, const struct tel_sim_msisdn_list *msisdn_list);
-enum tcore_return              tcore_sim_delete_msisdn_list(CoreObject *o);
+struct tel_sim_msisdn_list *tcore_sim_get_msisdn_list(CoreObject *o);
+gboolean tcore_sim_set_msisdn_list(CoreObject *o, const struct tel_sim_msisdn_list *msisdn_list);
+enum tcore_return tcore_sim_delete_msisdn_list(CoreObject *o);
 
-struct tel_sim_spn*            tcore_sim_get_spn(CoreObject *o);
-gboolean                       tcore_sim_set_spn(CoreObject *o, const struct tel_sim_spn *spn);
-enum tcore_return              tcore_sim_delete_spn(CoreObject *o);
+struct tel_sim_spn *tcore_sim_get_spn(CoreObject *o);
+gboolean tcore_sim_set_spn(CoreObject *o, const struct tel_sim_spn *spn);
+enum tcore_return tcore_sim_delete_spn(CoreObject *o);
 
-struct tel_sim_cphs_netname*   tcore_sim_get_cphs_netname(CoreObject *o);
-gboolean                       tcore_sim_set_cphs_netname(CoreObject *o, const struct tel_sim_cphs_netname *cphs_netname);
-enum tcore_return              tcore_sim_delete_cphs_netname(CoreObject *o);
+struct tel_sim_cphs_netname *tcore_sim_get_cphs_netname(CoreObject *o);
+gboolean tcore_sim_set_cphs_netname(CoreObject *o, const struct tel_sim_cphs_netname *cphs_netname);
+enum tcore_return tcore_sim_delete_cphs_netname(CoreObject *o);
 
-struct tel_sim_iccid*          tcore_sim_get_iccid(CoreObject *o);
-gboolean                       tcore_sim_set_iccid(CoreObject *o, const struct tel_sim_iccid *iccid);
-enum tcore_return              tcore_sim_delete_iccid(CoreObject *o);
+struct tel_sim_iccid *tcore_sim_get_iccid(CoreObject *o);
+gboolean tcore_sim_set_iccid(CoreObject *o, const struct tel_sim_iccid *iccid);
+enum tcore_return tcore_sim_delete_iccid(CoreObject *o);
 
-gboolean       tcore_sim_get_cphs_status(CoreObject *o);
-gboolean       tcore_sim_set_cphs_status(CoreObject *o, gboolean b_support);
+gboolean tcore_sim_get_cphs_status(CoreObject *o);
+gboolean tcore_sim_set_cphs_status(CoreObject *o, gboolean b_support);
 unsigned char tcore_sim_get_app_list(CoreObject *o);
 gboolean tcore_sim_set_app_list(CoreObject *o, unsigned char app_list);
 struct tel_sim_ist *tcore_sim_get_isim_service_table(CoreObject *o);
 gboolean tcore_sim_set_isim_service_table(CoreObject *o, struct tel_sim_ist *ist);
 enum tcore_return tcore_sim_delete_isim_service_table(CoreObject *o);
 
-gboolean       tcore_sim_link_userdata(CoreObject *o, void *userdata);
-void*          tcore_sim_ref_userdata(CoreObject *o);
-
-gboolean       tcore_sim_decode_iccid(struct tel_sim_iccid *p_out, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_lp(struct tel_sim_language *p_out, unsigned char *p_in, int in_length);
-char*          tcore_sim_encode_lp(int *out_length, struct tel_sim_language *p_in);
-gboolean       tcore_sim_decode_li(enum tel_sim_file_id file_id, struct tel_sim_language *p_out, unsigned char *p_in, int in_length);
-char*          tcore_sim_encode_li(int *out_length, struct tel_sim_language *p_in);
-gboolean       tcore_sim_decode_imsi(struct tel_sim_imsi *p_out, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_cdma_imsi(struct tel_sim_imsi *p_out, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_sst(struct tel_sim_sst *p_sst, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_cdma_st(struct tel_sim_cst *p_cdma_st, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_csim_st(struct tel_sim_cst *p_csim_st, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_spn(struct tel_sim_spn *p_spn, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_cdma_spn(struct tel_sim_spn *p_spn, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_spdi(struct tel_sim_spdi *p_spdi, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_msisdn(struct tel_sim_msisdn *p_msisdn, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_mdn(struct tel_sim_msisdn *p_msisdn, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_xdn(struct tel_sim_dialing_number *p_xdn, unsigned char *p_in, int in_length);
-char*          tcore_sim_encode_xdn(int in_length, struct tel_sim_dialing_number *p_xdn);
-gboolean       tcore_sim_decode_ecc(struct tel_sim_ecc_list *p_ecc, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_ust(struct tel_sim_ust *p_ust, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_ist(struct tel_sim_ist *p_ist, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_est(struct tel_sim_est *p_est, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_uecc(struct tel_sim_ecc *p_ecc, unsigned char* p_in, int in_length);
-gboolean       tcore_sim_decode_gid( struct tel_sim_gid *p_gid, unsigned char* p_in, int in_length);
-gboolean       tcore_sim_decode_mbi(struct tel_sim_mbi *p_mbi, unsigned char *p_in, int in_length);
-char*          tcore_sim_encode_mbi(const struct tel_sim_mbi *p_mbi, int in_length);
-gboolean       tcore_sim_decode_mwis(struct tel_sim_mw *pMwis, unsigned char *p_in, int in_length);
-char*          tcore_sim_encode_mwis(int *out_length, const struct tel_sim_mw *pMwis, int in_length);
-gboolean       tcore_sim_decode_vmwf(struct tel_sim_cphs_mw *p_vmwf,   unsigned char* p_in, unsigned long in_length);
-char*          tcore_sim_encode_vmwf(int *out_length, const struct tel_sim_cphs_mw *p_vmwf, int in_length);
-gboolean       tcore_sim_decode_cfis(struct tel_sim_cfis *cfis, unsigned char *p_in, int in_length);
-char*          tcore_sim_encode_cfis(int *out_length, const struct tel_sim_cfis *p_cfis);
-gboolean       tcore_sim_decode_cff(struct tel_sim_cphs_cf *cfis, unsigned char *p_in, int in_length);
-char*          tcore_sim_encode_cff(const struct tel_sim_cphs_cf *cff, int in_length);
-gboolean       tcore_sim_decode_csp(struct tel_sim_cphs_csp *p_csp, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_encode_csp(unsigned char *p_out, int out_length, struct tel_sim_cphs_csp *p_csp);
-gboolean       tcore_sim_decode_dynamic_flag(struct tel_sim_cphs_dflag *p_df, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_encode_dynamic_flag(char *p_out, int out_length, struct tel_sim_cphs_dflag *p_df);
-gboolean       tcore_sim_decode_dynamic2_flag(struct tel_sim_cphs_dflag2 *p_d2f, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_encode_dynamic2_flag(char *p_out, int out_length, struct tel_sim_cphs_dflag2 *p_d2f);
-gboolean       tcore_sim_decode_cphs_info(struct tel_sim_cphs_info *pCphsInfo, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_short_ons(unsigned char *p_out, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_ons(unsigned char *p_out, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_information_number(struct tel_sim_cphs_info_number *p_info, unsigned char* p_in, int in_length);
-gboolean       tcore_sim_decode_opl(struct tel_sim_opl *p_opl, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_pnn(struct tel_sim_pnn *p_pnn, unsigned char* p_in, int in_length);
-gboolean       tcore_sim_decode_oplmnwact(struct tel_sim_oplmnwact_list *p_list, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_ext(struct tel_sim_ext *p_ext, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_decode_img(struct tel_sim_img *p_out, unsigned char *p_in, int in_length);
-gboolean       tcore_sim_check_plmn_having_3digits_mnc(char* plmn);
-gboolean               tcore_sim_decode_isim_impi(struct tel_sim_impi *p_out, unsigned char *p_in, int in_length);
-gboolean               tcore_sim_decode_isim_domain(struct tel_sim_domain *p_out, unsigned char *p_in, int in_length);
-gboolean               tcore_sim_decode_isim_impu(struct tel_sim_impu *p_out, unsigned char *p_in, int in_length);
-gboolean               tcore_sim_decode_isim_pcscf(struct tel_sim_pcscf *p_out, unsigned char *p_in, int in_length);
+gboolean tcore_sim_link_userdata(CoreObject *o, void *userdata);
+void *tcore_sim_ref_userdata(CoreObject *o);
+
+gboolean tcore_sim_decode_iccid(struct tel_sim_iccid *p_out, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_lp(struct tel_sim_language *p_out, unsigned char *p_in, int in_length);
+char *tcore_sim_encode_lp(int *out_length, struct tel_sim_language *p_in);
+gboolean tcore_sim_decode_li(enum tel_sim_file_id file_id, struct tel_sim_language *p_out, unsigned char *p_in, int in_length);
+char *tcore_sim_encode_li(int *out_length, struct tel_sim_language *p_in);
+gboolean tcore_sim_decode_imsi(struct tel_sim_imsi *p_out, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_cdma_imsi(struct tel_sim_imsi *p_out, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_sst(struct tel_sim_sst *p_sst, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_cdma_st(struct tel_sim_cst *p_cdma_st, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_csim_st(struct tel_sim_cst *p_csim_st, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_spn(struct tel_sim_spn *p_spn, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_cdma_spn(struct tel_sim_spn *p_spn, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_spdi(struct tel_sim_spdi *p_spdi, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_msisdn(struct tel_sim_msisdn *p_msisdn, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_mdn(struct tel_sim_msisdn *p_msisdn, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_xdn(struct tel_sim_dialing_number *p_xdn, unsigned char *p_in, int in_length);
+char *tcore_sim_encode_xdn(int in_length, struct tel_sim_dialing_number *p_xdn);
+gboolean tcore_sim_decode_ecc(struct tel_sim_ecc_list *p_ecc, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_ust(struct tel_sim_ust *p_ust, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_ist(struct tel_sim_ist *p_ist, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_est(struct tel_sim_est *p_est, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_uecc(struct tel_sim_ecc *p_ecc, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_gid( struct tel_sim_gid *p_gid, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_mbi(struct tel_sim_mbi *p_mbi, unsigned char *p_in, int in_length);
+char *tcore_sim_encode_mbi(const struct tel_sim_mbi *p_mbi, int in_length);
+gboolean tcore_sim_decode_mwis(struct tel_sim_mw *pMwis, unsigned char *p_in, int in_length);
+char *tcore_sim_encode_mwis(int *out_length, const struct tel_sim_mw *pMwis, int in_length);
+gboolean tcore_sim_decode_vmwf(struct tel_sim_cphs_mw *p_vmwf, unsigned char *p_in, unsigned long in_length);
+char *tcore_sim_encode_vmwf(int *out_length, const struct tel_sim_cphs_mw *p_vmwf, int in_length);
+gboolean tcore_sim_decode_cfis(struct tel_sim_cfis *cfis, unsigned char *p_in, int in_length);
+char *tcore_sim_encode_cfis(int *out_length, const struct tel_sim_cfis *p_cfis);
+gboolean tcore_sim_decode_cff(struct tel_sim_cphs_cf *cfis, unsigned char *p_in, int in_length);
+char *tcore_sim_encode_cff(const struct tel_sim_cphs_cf *cff, int in_length);
+gboolean tcore_sim_decode_csp(struct tel_sim_cphs_csp *p_csp, unsigned char *p_in, int in_length);
+gboolean tcore_sim_encode_csp(unsigned char *p_out, int out_length, struct tel_sim_cphs_csp *p_csp);
+gboolean tcore_sim_decode_dynamic_flag(struct tel_sim_cphs_dflag *p_df, unsigned char *p_in, int in_length);
+gboolean tcore_sim_encode_dynamic_flag(char *p_out, int out_length, struct tel_sim_cphs_dflag *p_df);
+gboolean tcore_sim_decode_dynamic2_flag(struct tel_sim_cphs_dflag2 *p_d2f, unsigned char *p_in, int in_length);
+gboolean tcore_sim_encode_dynamic2_flag(char *p_out, int out_length, struct tel_sim_cphs_dflag2 *p_d2f);
+gboolean tcore_sim_decode_cphs_info(struct tel_sim_cphs_info *pCphsInfo, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_short_ons(unsigned char *p_out, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_ons(unsigned char *p_out, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_information_number(struct tel_sim_cphs_info_number *p_info, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_opl(struct tel_sim_opl *p_opl, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_pnn(struct tel_sim_pnn *p_pnn, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_oplmnwact(struct tel_sim_oplmnwact_list *p_list, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_ext(struct tel_sim_ext *p_ext, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_img(struct tel_sim_img *p_out, unsigned char *p_in, int in_length);
+gboolean tcore_sim_check_plmn_having_3digits_mnc(char *plmn);
+gboolean tcore_sim_decode_isim_impi(struct tel_sim_impi *p_out, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_isim_domain(struct tel_sim_domain *p_out, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_isim_impu(struct tel_sim_impu *p_out, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_isim_pcscf(struct tel_sim_pcscf *p_out, unsigned char *p_in, int in_length);
+gboolean tcore_sim_decode_ef_info(struct tcore_sim_ef_info *p_ef_info, CoreObject *o, char *p_in, int in_length);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_CO_SIM_H__ */
index 6f95470..0d71f72 100644 (file)
 __BEGIN_DECLS
 
 
-#define nDefaultSMSPWithoutAlphaId     28
+#define nDefaultSMSPWithoutAlphaId             28
 
 #define SMSPValidDestAddr                      0x01
 #define SMSPValidSvcAddr                       0x02
 #define SMSPValidPID                           0x04
 #define SMSPValidDCS                           0x08
-#define SMSPValidVP                                    0x10
+#define SMSPValidVP                            0x10
 
 #define nDestAddrOffset                                1
 #define nSCAAddrOffset                         13
-#define nPIDOffset                                     25
-#define nDCSOffset                                     26
+#define nPIDOffset                             25
+#define nDCSOffset                             26
 #define nVPOffset                                      27
 
 struct property_sms_info {
-       int     g_trans_id;
-       int     SMSPRecordLen;
+       int g_trans_id;
+       int SMSPRecordLen;
 };
 
 struct tcore_sms_operations {
@@ -76,19 +76,19 @@ struct tcore_sms_operations {
  * @remark
  * @Refer
  */
-int  _tcore_util_sms_encode_smsParameters(const struct telephony_sms_Params *incoming, unsigned char *data, int SMSPRecordLen);
-int  tcore_util_sms_decode_smsParameters(uint8_t *incoming, uint32_t length, struct telephony_sms_Params *params);
-
+int  _tcore_util_sms_encode_smsParameters(const struct telephony_sms_Params *incoming,
+       unsigned char *data, int SMSPRecordLen);
+int  tcore_util_sms_decode_smsParameters(uint8_t *incoming, uint32_t length,
+       struct telephony_sms_Params *params);
 
 void tcore_util_sms_semioctet_to_octect(int* nScLength);
 enum telephony_sms_ready_status  tcore_sms_get_ready_status(CoreObject *o);
 gboolean  tcore_sms_set_ready_status(CoreObject *o, enum telephony_sms_ready_status status);
-CoreObjecttcore_sms_new(TcorePlugin *p, const char *name, struct tcore_sms_operations *ops, TcoreHal *hal);
+CoreObject *tcore_sms_new(TcorePlugin *p, const char *name, struct tcore_sms_operations *ops, TcoreHal *hal);
 void  tcore_sms_free(CoreObject * n);
 
-void tcore_sms_set_ops(CoreObject *o, struct tcore_sms_operations *ops);
+void tcore_sms_set_ops(CoreObject *o, struct tcore_sms_operations *ops, enum tcore_ops_type ops_type);
 
 __END_DECLS
 
-#endif
-
+#endif /* __TCORE_CO_SMS_H__ */
index 75db702..807936d 100644 (file)
@@ -95,7 +95,7 @@ enum tcore_ss_class {
 
 enum tcore_ss_status {
        TCORE_SS_STATUS_REG = 0x01, /* 0x01 : Registration */
-       TCORE_SS_STATUS_DEREG,      /* 0x02 : De-registration( erase ) */
+       TCORE_SS_STATUS_DEREG,      /* 0x02 : De-registration(erase) */
        TCORE_SS_STATUS_ACTIVATE,   /* 0x03 : Activation */
        TCORE_SS_STATUS_DEACTIVATE, /* 0x04 : De-activation */
        TCORE_SS_STATUS_MAX
@@ -152,6 +152,18 @@ enum tcore_ss_aoc_type {
        TCORE_SS_AOC_TYPE_MAX    = 0x10
 };
 
+enum tcore_ss_routing_policy {
+       TCORE_SS_ROUTING_POLICY_CS_ALWAYS,
+       TCORE_SS_ROUTING_POLICY_IMS_ALWAYS,
+       TCORE_SS_ROUTING_POLICY_IMS_CS
+};
+
+enum tcore_ussd_routing_policy {
+       TCORE_SS_USSD_ROUTING_POLICY_CS_ALWAYS,
+       TCORE_SS_USSD_ROUTING_POLICY_IMS_ALWAYS,
+       TCORE_SS_USSD_ROUTING_POLICY_IMS_CS
+};
+
 typedef struct ussd_session UssdSession;
 
 struct tcore_ss_operations {
@@ -177,19 +189,25 @@ struct tcore_ss_operations {
 };
 
 
-CoreObject* tcore_ss_new(TcorePlugin *p, const char *name, struct tcore_ss_operations *ops, TcoreHal *hal);
-void        tcore_ss_free(CoreObject *o);
+CoreObject *tcore_ss_new(TcorePlugin *p, const char *name, struct tcore_ss_operations *ops, TcoreHal *hal);
+void tcore_ss_free(CoreObject *o);
+
+void tcore_ss_set_ops(CoreObject *o, struct tcore_ss_operations *ops, enum tcore_ops_type ops_type);
+
+struct ussd_session *tcore_ss_ussd_create_session(CoreObject *o, enum tcore_ss_ussd_type type, void *data, int data_len);
+void tcore_ss_ussd_destroy_session(struct ussd_session *ussd_s);
+struct ussd_session *tcore_ss_ussd_get_session(CoreObject *o);
+enum tcore_ss_ussd_type tcore_ss_ussd_get_session_type(struct ussd_session *ussd_s);
+void tcore_ss_ussd_set_session_type(struct ussd_session *ussd_s, enum tcore_ss_ussd_type type);
+int tcore_ss_ussd_get_session_data(struct ussd_session *ussd_s, void **data);
+void tcore_ss_ussd_set_session_data(struct ussd_session *ussd_s, void *data, int data_len);
 
-void tcore_ss_set_ops(CoreObject *o, struct tcore_ss_operations *ops);
+void tcore_ss_set_ussd_routing(CoreObject *o, enum tcore_ussd_routing_policy ussd_routing_policy);
+enum tcore_ussd_routing_policy tcore_ss_get_ussd_routing(CoreObject *o);
 
-struct ussd_session*   tcore_ss_ussd_create_session( CoreObject *o, enum tcore_ss_ussd_type type, void *data, int data_len );
-void                                   tcore_ss_ussd_destroy_session( struct ussd_session *ussd_s );
-struct ussd_session*   tcore_ss_ussd_get_session( CoreObject *o );
-enum tcore_ss_ussd_type tcore_ss_ussd_get_session_type( struct ussd_session* ussd_s );
-void                                   tcore_ss_ussd_set_session_type( struct ussd_session* ussd_s, enum tcore_ss_ussd_type type );
-int                                            tcore_ss_ussd_get_session_data( struct ussd_session* ussd_s, void** data );
-void                                   tcore_ss_ussd_set_session_data( struct ussd_session* ussd_s, void* data, int data_len );
+void tcore_ss_set_ss_routing(CoreObject *o, enum tcore_ss_routing_policy ss_routing_policy);
+enum tcore_ss_routing_policy tcore_ss_get_ss_routing(CoreObject *o);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_CO_SS_H__ */
index 867cb66..4a29ee6 100644 (file)
@@ -25,34 +25,34 @@ __BEGIN_DECLS
 
 struct tcore_communitor_operations {
        TReturn (*send_response)(Communicator *comm, UserRequest *ur,
-        enum tcore_response_command command,
-        unsigned int data_len, const void *data);
+               enum tcore_response_command command,
+               unsigned int data_len, const void *data);
 
        TReturn (*send_notification)(Communicator *comm, CoreObject *source,
-        enum tcore_notification_command command,
-        unsigned int data_len, const void *data);
+               enum tcore_notification_command command,
+               unsigned int data_len, const void *data);
 };
 
-Communicator* tcore_communicator_new(TcorePlugin *plugin, const char *name,
-                  struct tcore_communitor_operations *ops);
-void          tcore_communicator_free();
+Communicator *tcore_communicator_new(TcorePlugin *plugin,
+       const char *name, struct tcore_communitor_operations *ops);
+void tcore_communicator_free();
 
-TcorePlugin*  tcore_communicator_ref_plugin(Communicator *comm);
-const char*   tcore_communicator_ref_name(Communicator *comm);
+TcorePlugin *tcore_communicator_ref_plugin(Communicator *comm);
+const char *tcore_communicator_ref_name(Communicator *comm);
 
-TReturn       tcore_communicator_link_user_data(Communicator *comm, void *data);
-void*         tcore_communicator_ref_user_data(Communicator *comm);
+TReturn tcore_communicator_link_user_data(Communicator *comm, void *data);
+void *tcore_communicator_ref_user_data(Communicator *comm);
 
-TReturn       tcore_communicator_send_response(Communicator *comm,
-                  UserRequest *ur,  enum tcore_response_command command,
-                  unsigned int data_len, const void *data);
+TReturn tcore_communicator_send_response(Communicator *comm,
+       UserRequest *ur,  enum tcore_response_command command,
+       unsigned int data_len, const void *data);
 
-TReturn       tcore_communicator_send_notification(Communicator *comm,
-                  CoreObject *source, enum tcore_notification_command command,
-                  unsigned int data_len, const void *data);
+TReturn tcore_communicator_send_notification(Communicator *comm,
+       CoreObject *source, enum tcore_notification_command command,
+       unsigned int data_len, const void *data);
 
-TReturn       tcore_communicator_dispatch_request(Communicator *comm, UserRequest *ur);
+TReturn tcore_communicator_dispatch_request(Communicator *comm, UserRequest *ur);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_COMMUNICATOR_H__ */
index 49f323e..ec03728 100644 (file)
 
 __BEGIN_DECLS
 
-#define CORE_OBJECT_TYPE_DEFAULT       0xB0000000
-#define CORE_OBJECT_TYPE_MODEM         (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_MODEM)
-#define CORE_OBJECT_TYPE_CALL          (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_CALL)
-#define CORE_OBJECT_TYPE_SS            (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_SS)
-#define CORE_OBJECT_TYPE_NETWORK       (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_NETWORK)
-#define CORE_OBJECT_TYPE_PS            (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_PS)
-#define CORE_OBJECT_TYPE_PS_CONTEXT    (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_PDP)
-#define CORE_OBJECT_TYPE_SIM           (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_SIM)
-#define CORE_OBJECT_TYPE_SAT           (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_SAT)
-#define CORE_OBJECT_TYPE_SAP           (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_SAP)
-#define CORE_OBJECT_TYPE_SMS           (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_SMS)
-#define CORE_OBJECT_TYPE_PHONEBOOK     (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_PHONEBOOK)
-#define CORE_OBJECT_TYPE_SOUND         (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_SOUND)
-#define CORE_OBJECT_TYPE_CUSTOM        (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_CUSTOM)
-#define CORE_OBJECT_TYPE_GPS           (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_GPS)
+#define CORE_OBJECT_TYPE_DEFAULT       0xB0000000
+#define CORE_OBJECT_TYPE_MODEM (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_MODEM)
+#define CORE_OBJECT_TYPE_CALL          (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_CALL)
+#define CORE_OBJECT_TYPE_SS            (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_SS)
+#define CORE_OBJECT_TYPE_NETWORK       (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_NETWORK)
+#define CORE_OBJECT_TYPE_PS            (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_PS)
+#define CORE_OBJECT_TYPE_PS_CONTEXT    (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_PDP)
+#define CORE_OBJECT_TYPE_SIM           (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_SIM)
+#define CORE_OBJECT_TYPE_SAT           (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_SAT)
+#define CORE_OBJECT_TYPE_SAP           (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_SAP)
+#define CORE_OBJECT_TYPE_SMS           (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_SMS)
+#define CORE_OBJECT_TYPE_PHONEBOOK     (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_PHONEBOOK)
+#define CORE_OBJECT_TYPE_SOUND (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_SOUND)
+#define CORE_OBJECT_TYPE_CUSTOM        (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_CUSTOM)
+#define CORE_OBJECT_TYPE_GPS           (CORE_OBJECT_TYPE_DEFAULT | TCORE_TYPE_GPS)
 
 #define CORE_OBJECT_CHECK(o,t) \
        if (!o) { warn("core_object is NULL"); return; } \
@@ -45,17 +45,49 @@ __BEGIN_DECLS
 #define CORE_OBJECT_CHECK_RETURN(o,t,r) \
        if (!o) { warn("core_object is NULL"); return r; } \
        if (tcore_object_get_type(o) != t) { warn("type(0x%x != 0x%x) mismatch", tcore_object_get_type(o), t); return r; }
+
+enum tcore_ops_type {
+       TCORE_OPS_TYPE_CP = 0,
+       TCORE_OPS_TYPE_IMS,
+       TCORE_OPS_TYPE_MAX
+};
+
+#define CORE_OBJECT_VALIDATE_OPS_RETURN(ops_type)  \
+do { \
+       switch (ops_type) { \
+       case TCORE_OPS_TYPE_CP: \
+       case TCORE_OPS_TYPE_IMS: \
+       break; \
+       case TCORE_OPS_TYPE_MAX: \
+       default: \
+               err("Invalid/Unsupported ops_type:[%d]", ops_type); \
+               return; \
+       } \
+} while (FALSE)
+
+#define CORE_OBJECT_VALIDATE_OPS_RETURN_VAL(ops_type,ret_val)  \
+do { \
+       switch (ops_type) { \
+       case TCORE_OPS_TYPE_CP: \
+       case TCORE_OPS_TYPE_IMS: \
+       break; \
+       case TCORE_OPS_TYPE_MAX: \
+       default: \
+               err("Invalid/Unsupported ops_type:[%d]", ops_type); \
+               return ret_val; \
+       } \
+} while (FALSE)
+
 typedef struct tcore_object_mapping_tbl object_mapping_table_t;
 
 #define CORE_OBJECT_EVENT_PROPERTY_CHANGED "core_object_property_changed"
 #define CORE_OBJECT_KEY_FIND(keys, k) g_slist_find_custom((keys), (k), (GCompareFunc)g_strcmp0)
 
 typedef void (*CoreObjectFreeHook)(CoreObject *co);
-typedef void (*CoreObjectCloneHook)(CoreObject *src, CoreObject *dest);
 typedef gboolean (*CoreObjectCallback)(CoreObject *co, const void *event_info, void *user_data);
 typedef gboolean (*tcore_object_callback)(CoreObject *co,
                                const void *event_info, void *user_data);
-typedef TReturn (*CoreObjectDispatcher)(CoreObject *co, UserRequest *ur);
+typedef TReturn (*CoreObjectDispatcher)(CoreObject *co, UserRequest *ur, enum tcore_ops_type ops_type);
 
 typedef gboolean (*tcore_object_init)(TcorePlugin *plugin, CoreObject *co);
 typedef void (*tcore_object_deinit)(TcorePlugin *plugin, CoreObject *co);
@@ -93,64 +125,56 @@ struct object_deinitializer {
 };
 
 
-CoreObject*      tcore_object_new(TcorePlugin *plugin, const char *name, TcoreHal *hal);
-void             tcore_object_free(CoreObject *co);
-
-TReturn          tcore_object_set_free_hook(CoreObject *co, CoreObjectFreeHook free_hook);
-TReturn          tcore_object_set_clone_hook(CoreObject *co, CoreObjectCloneHook clone_hook);
+CoreObject *tcore_object_new(TcorePlugin *plugin, const char *name, TcoreHal *hal);
+void tcore_object_free(CoreObject *co);
 
-CoreObject*      tcore_object_clone(CoreObject *src, TcorePlugin *new_parent);
+TReturn tcore_object_set_free_hook(CoreObject *co, CoreObjectFreeHook free_hook);
 
-TReturn          tcore_object_set_name(CoreObject *co, const char *name);
-const char*      tcore_object_ref_name(CoreObject *co);
+TReturn tcore_object_set_name(CoreObject *co, const char *name);
+const char *tcore_object_ref_name(CoreObject *co);
 
-CoreObject *tcore_object_clone_template_object(TcorePlugin *p,
-                                       unsigned int co_type);
+TReturn tcore_object_set_plugin(CoreObject *co, TcorePlugin *plugin);
+TcorePlugin *tcore_object_ref_plugin(CoreObject *co);
 
+TReturn tcore_object_link_object(CoreObject *co, void *object);
+void *tcore_object_ref_object(CoreObject *co);
 
-TReturn          tcore_object_set_plugin(CoreObject *co, TcorePlugin *plugin);
-TcorePlugin*     tcore_object_ref_plugin(CoreObject *co);
+TReturn tcore_object_set_type(CoreObject *co, unsigned int type);
+unsigned int tcore_object_get_type(CoreObject *co);
 
-TReturn          tcore_object_link_object(CoreObject *co, void *object);
-void*            tcore_object_ref_object(CoreObject *co);
+TReturn tcore_object_set_hal(CoreObject *co, TcoreHal *hal);
+TcoreHal* tcore_object_get_hal(CoreObject *co);
 
-TReturn          tcore_object_set_type(CoreObject *co, unsigned int type);
-unsigned int     tcore_object_get_type(CoreObject *co);
+TReturn tcore_object_link_user_data(CoreObject *co, void *user_data);
+void *tcore_object_ref_user_data(CoreObject *co);
 
-TReturn          tcore_object_set_hal(CoreObject *co, TcoreHal *hal);
-TcoreHal*        tcore_object_get_hal(CoreObject *co);
+TReturn tcore_object_set_dispatcher(CoreObject *co, CoreObjectDispatcher func);
+TReturn tcore_object_dispatch_request(CoreObject *co, UserRequest *ur);
+TReturn tcore_object_dispatch_request_with_type(CoreObject *co, UserRequest *ur, enum tcore_ops_type ops_type);
 
-TReturn          tcore_object_link_user_data(CoreObject *co, void *user_data);
-void*            tcore_object_ref_user_data(CoreObject *co);
-
-TReturn          tcore_object_set_dispatcher(CoreObject *co, CoreObjectDispatcher func);
-TReturn          tcore_object_dispatch_request(CoreObject *co, UserRequest *ur);
-
-TReturn          tcore_object_add_callback(CoreObject *co, const char *event, CoreObjectCallback callback, void *user_data);
-TReturn          tcore_object_del_callback(CoreObject *co, const char *event, CoreObjectCallback callback);
+TReturn tcore_object_add_callback(CoreObject *co, const char *event, CoreObjectCallback callback, void *user_data);
+TReturn tcore_object_del_callback(CoreObject *co, const char *event, CoreObjectCallback callback);
 TReturn tcore_object_override_callback(CoreObject *co, const char *event, CoreObjectCallback callback, void *user_data);
-TReturn          tcore_object_emit_callback(CoreObject *co, const char *event, const void *event_info);
+TReturn tcore_object_emit_callback(CoreObject *co, const char *event, const void *event_info);
 
-#define          tcore_object_set_property(co, ...) tcore_object_set_property_full(co, __VA_ARGS__, NULL, NULL)
-TReturn          tcore_object_set_property_full(CoreObject *co, const char *first_property, ...);
-const char*      tcore_object_ref_property(CoreObject *co, const char *key);
-GHashTable*      tcore_object_ref_property_hash(CoreObject *co);
+#define tcore_object_set_property(co, ...) tcore_object_set_property_full(co, __VA_ARGS__, NULL, NULL)
+TReturn tcore_object_set_property_full(CoreObject *co, const char *first_property, ...);
+const char *tcore_object_ref_property(CoreObject *co, const char *key);
+GHashTable* tcore_object_ref_property_hash(CoreObject *co);
 void *tcore_object_add_mapping_tbl_entry(void *mapping_tbl,
-                                               unsigned int object_type, TcoreHal *hal);
+       unsigned int object_type, TcoreHal *hal);
 void tcore_object_remove_mapping_tbl(void *mapping_tbl);
 void *tcore_object_remove_mapping_tbl_entry(void *mapping_tbl, TcoreHal *hal);
 void tcore_object_remove_mapping_tbl_entry_by_type(void *mapping_tbl,
-                                                       unsigned int co_type);
+       unsigned int co_type);
 
 void tcore_object_print_mapping_tbl(void *mapping_tbl);
 
 TReturn tcore_object_init_objects(TcorePlugin *plugin,
-                                               struct object_initializer *initializer_list);
+       struct object_initializer *initializer_list);
 void tcore_object_deinit_objects(TcorePlugin *plugin,
-                                               struct object_deinitializer *deinitializer_list);
-
-
+       struct object_deinitializer *deinitializer_list);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_CORE_OBJECT_H__ */
index 024bcb1..323c7c4 100644 (file)
@@ -45,59 +45,56 @@ struct tcore_hal_operations {
        TReturn (*power)(TcoreHal *hal, gboolean flag);
        TReturn (*send)(TcoreHal *hal, unsigned int data_len, void *data);
        TReturn (*setup_netif)(CoreObject *co,
-                               TcoreHalSetupNetifCallback func,
-                               void *user_data, unsigned int cid,
-                               gboolean enable);
+               TcoreHalSetupNetifCallback func, void *user_data,
+               unsigned int cid, gboolean enable);
 };
 
-TcoreHal*    tcore_hal_new(TcorePlugin *plugin, const char *name,
-                 struct tcore_hal_operations *hops,
-                 enum tcore_hal_mode mode);
-void         tcore_hal_free(TcoreHal *hal);
+TcoreHal *tcore_hal_new(TcorePlugin *plugin, const char *name,
+       struct tcore_hal_operations *hops, enum tcore_hal_mode mode);
+void tcore_hal_free(TcoreHal *hal);
 
-TReturn      tcore_hal_set_name(TcoreHal *hal, const char *name);
-char*        tcore_hal_get_name(TcoreHal *hal);
+TReturn tcore_hal_set_name(TcoreHal *hal, const char *name);
+char *tcore_hal_get_name(TcoreHal *hal);
 
-TcoreAT*     tcore_hal_get_at(TcoreHal *hal);
+TcoreAT *tcore_hal_get_at(TcoreHal *hal);
 enum tcore_hal_mode tcore_hal_get_mode(TcoreHal *hal);
-TReturn      tcore_hal_set_mode(TcoreHal *hal, enum tcore_hal_mode mode);
+TReturn tcore_hal_set_mode(TcoreHal *hal, enum tcore_hal_mode mode);
 
-TReturn      tcore_hal_set_power(TcoreHal *hal, gboolean flag);
+TReturn tcore_hal_set_power(TcoreHal *hal, gboolean flag);
 
-TReturn      tcore_hal_link_user_data(TcoreHal *hal, void *user_data);
-void*        tcore_hal_ref_user_data(TcoreHal *hal);
+TReturn tcore_hal_link_user_data(TcoreHal *hal, void *user_data);
+void *tcore_hal_ref_user_data(TcoreHal *hal);
 
-TReturn      tcore_hal_send_data(TcoreHal *hal, unsigned int data_len, void *data);
-TReturn      tcore_hal_send_request(TcoreHal *hal, TcorePending *pending);
-TReturn      tcore_hal_send_force(TcoreHal *hal);
+TReturn tcore_hal_send_data(TcoreHal *hal, unsigned int data_len, void *data);
+TReturn tcore_hal_send_request(TcoreHal *hal, TcorePending *pending);
+TReturn tcore_hal_send_force(TcoreHal *hal);
 
-TReturn      tcore_hal_free_timeout_pending_request(TcoreHal *hal, TcorePending *p,
-                 unsigned int data_len, const void *data);
-TReturn      tcore_hal_dispatch_response_data(TcoreHal *hal, int id,
-                 unsigned int data_len, const void *data);
+TReturn tcore_hal_free_timeout_pending_request(TcoreHal *hal, TcorePending *p,
+       unsigned int data_len, const void *data);
+TReturn tcore_hal_dispatch_response_data(TcoreHal *hal, int id,
+       unsigned int data_len, const void *data);
 
-TReturn      tcore_hal_add_recv_callback(TcoreHal *hal,
-                 TcoreHalReceiveCallback func, void *user_data);
-TReturn      tcore_hal_remove_recv_callback(TcoreHal *hal,
-                 TcoreHalReceiveCallback func);
-TReturn      tcore_hal_emit_recv_callback(TcoreHal *hal,
-                 unsigned int data_len, const void *data);
+TReturn tcore_hal_add_recv_callback(TcoreHal *hal,
+       TcoreHalReceiveCallback func, void *user_data);
+TReturn tcore_hal_remove_recv_callback(TcoreHal *hal,
+       TcoreHalReceiveCallback func);
+TReturn tcore_hal_emit_recv_callback(TcoreHal *hal,
+       unsigned int data_len, const void *data);
 
-TReturn      tcore_hal_add_send_hook(TcoreHal *hal, TcoreHalSendHook func,
-                 void *user_data);
-TReturn      tcore_hal_remove_send_hook(TcoreHal *hal, TcoreHalSendHook func);
+TReturn tcore_hal_add_send_hook(TcoreHal *hal,
+       TcoreHalSendHook func, void *user_data);
+TReturn tcore_hal_remove_send_hook(TcoreHal *hal, TcoreHalSendHook func);
 
-TReturn      tcore_hal_set_power_state(TcoreHal *hal, gboolean flag);
-gboolean     tcore_hal_get_power_state(TcoreHal *hal);
+TReturn tcore_hal_set_power_state(TcoreHal *hal, gboolean flag);
+gboolean tcore_hal_get_power_state(TcoreHal *hal);
 
-TcoreQueue*  tcore_hal_ref_queue(TcoreHal *hal);
-TcorePlugintcore_hal_ref_plugin(TcoreHal *hal);
+TcoreQueue *tcore_hal_ref_queue(TcoreHal *hal);
+TcorePlugin *tcore_hal_ref_plugin(TcoreHal *hal);
 
 TReturn tcore_hal_setup_netif(TcoreHal *hal, CoreObject *co,
-                                       TcoreHalSetupNetifCallback func,
-                                       void *user_data, unsigned int cid,
-                                       gboolean enable);
+       TcoreHalSetupNetifCallback func, void *user_data,
+       unsigned int cid, gboolean enable);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_HAL_H__ */
diff --git a/include/internal/tcore_types.h b/include/internal/tcore_types.h
new file mode 100644 (file)
index 0000000..153dc5e
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * libtcore
+ *
+ * Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Ja-young Gu <jygu@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.
+ */
+
+#ifndef __TCORE_TYPES_H__
+#define __TCORE_TYPES_H__
+
+#define tcore_check_null_ret_err(name, value, err) do { \
+       if ( !value ) { \
+               dbg("[error] %s : NULL", name ); \
+               return err; \
+       } \
+} while (FALSE)
+
+#define tcore_check_null_ret(name, value) do { \
+       if ( !value ) { \
+               dbg("[error] %s : NULL", name ); \
+               return; \
+       } \
+} while (FALSE)
+
+#endif /* __TCORE_TYPES_H__ */
index fb251c3..edbce0a 100644 (file)
@@ -34,12 +34,12 @@ extern gboolean tcore_debug;
 #define TCORE_LOG_TAG "UNKNOWN"
 #endif
 
-#define info(fmt,args...)  { if(tcore_debug) RLOG(LOG_INFO, TCORE_LOG_TAG, fmt "\n", ##args); }
-#define msg(fmt,args...)  { if(tcore_debug) RLOG(LOG_DEBUG, TCORE_LOG_TAG, fmt "\n", ##args); }
-#define dbg(fmt,args...)  { if(tcore_debug) RLOG(LOG_DEBUG, TCORE_LOG_TAG, fmt "\n", ##args); }
-#define warn(fmt,args...)  { RLOG(LOG_WARN, TCORE_LOG_TAG, fmt "\n", ##args); }
-#define err(fmt,args...)  { RLOG(LOG_ERROR, TCORE_LOG_TAG, fmt "\n", ##args); }
-#define fatal(fmt,args...)  { RLOG(LOG_FATAL, TCORE_LOG_TAG, fmt "\n", ##args); }
+#define info(fmt,args...)  do { if(tcore_debug) RLOG(LOG_INFO, TCORE_LOG_TAG, fmt "\n", ##args); } while (0)
+#define msg(fmt,args...)  do { if(tcore_debug) RLOG(LOG_DEBUG, TCORE_LOG_TAG, fmt "\n", ##args); } while (0)
+#define dbg(fmt,args...)  do { if(tcore_debug) RLOG(LOG_DEBUG, TCORE_LOG_TAG, fmt "\n", ##args); } while (0)
+#define warn(fmt,args...)  do { RLOG(LOG_WARN, TCORE_LOG_TAG, fmt "\n", ##args); } while (0)
+#define err(fmt,args...)  do { RLOG(LOG_ERROR, TCORE_LOG_TAG, fmt "\n", ##args); } while (0)
+#define fatal(fmt,args...)  do { RLOG(LOG_FATAL, TCORE_LOG_TAG, fmt "\n", ##args); } while (0)
 
 #elif defined(FEATURE_TLOG_DEBUG)
 
@@ -72,21 +72,21 @@ enum tcore_log_priority {
  */
 void tcore_log(enum tcore_log_type type, enum tcore_log_priority priority, const char *tag, const char *fmt, ...);
 
-#define info(fmt,args...)  { if(tcore_debug) tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_INFO, TCORE_LOG_TAG, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
-#define msg(fmt,args...)  { if(tcore_debug) tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_INFO, TCORE_LOG_TAG, fmt "\n", ##args); }
-#define dbg(fmt,args...)  { if(tcore_debug) tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_DEBUG, TCORE_LOG_TAG, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
-#define warn(fmt,args...)  { tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_WARN, TCORE_LOG_TAG, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
-#define err(fmt,args...)  { tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_ERROR, TCORE_LOG_TAG, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
-#define fatal(fmt,args...)  { tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_FATAL, TCORE_LOG_TAG, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
+#define info(fmt,args...)  do { if(tcore_debug) tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_INFO, TCORE_LOG_TAG, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); } while (0)
+#define msg(fmt,args...)  do { if(tcore_debug) tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_INFO, TCORE_LOG_TAG, fmt "\n", ##args); } while (0)
+#define dbg(fmt,args...)  do { if(tcore_debug) tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_DEBUG, TCORE_LOG_TAG, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); } while (0)
+#define warn(fmt,args...)  do { tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_WARN, TCORE_LOG_TAG, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); } while (0)
+#define err(fmt,args...)  do { tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_ERROR, TCORE_LOG_TAG, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); } while (0)
+#define fatal(fmt,args...)  do { tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_FATAL, TCORE_LOG_TAG, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); } while (0)
 
-#define info_ex(tag,fmt,args...)  { if(tcore_debug) tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_INFO, tag, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
-#define msg_ex(tag,fmt,args...)  { if(tcore_debug) tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_INFO, tag, fmt "\n", ##args); }
-#define dbg_ex(tag,fmt,args...)  { if(tcore_debug) tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_DEBUG, tag, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
-#define warn_ex(tag,fmt,args...)  { tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_WARN, tag, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
-#define err_ex(tag,fmt,args...)  { tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_ERROR, tag, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
-#define fatal_ex(tag,fmt,args...)  { tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_FATAL, tag, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); }
+#define info_ex(tag,fmt,args...)  do { if(tcore_debug) tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_INFO, tag, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); } while (0)
+#define msg_ex(tag,fmt,args...)  do { if(tcore_debug) tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_INFO, tag, fmt "\n", ##args); } while (0)
+#define dbg_ex(tag,fmt,args...)  do { if(tcore_debug) tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_DEBUG, tag, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); } while (0)
+#define warn_ex(tag,fmt,args...)  do { tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_WARN, tag, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); } while (0)
+#define err_ex(tag,fmt,args...)  do { tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_ERROR, tag, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); } while (0)
+#define fatal_ex(tag,fmt,args...)  do { tcore_log(TCORE_LOG_TYPE_RADIO, TCORE_LOG_FATAL, tag, "<%s:%d> " fmt "\n", __func__, __LINE__, ##args); } while (0)
 
-#define TIME_CHECK(fmt,args...) { tcore_log(TCORE_LOG_TYPE_TIME_CHECK, TCORE_LOG_INFO, "TIME_CHECK", fmt "\n", ##args); }
+#define TIME_CHECK(fmt,args...) do { tcore_log(TCORE_LOG_TYPE_TIME_CHECK, TCORE_LOG_INFO, "TIME_CHECK", fmt "\n", ##args); } while (0)
 
 #else
 
@@ -118,12 +118,12 @@ void tcore_log(enum tcore_log_type type, enum tcore_log_priority priority, const
 #define TCORE_LOG_FUNC fprintf
 #endif
 
-#define info(fmt,args...) { if(tcore_debug) TCORE_LOG_FUNC(TCORE_LOG_FILE, fmt "\n", ##args); fflush(TCORE_LOG_FILE);}
-#define msg(fmt,args...) { if(tcore_debug) TCORE_LOG_FUNC(TCORE_LOG_FILE, fmt "\n", ##args); fflush(TCORE_LOG_FILE);}
-#define dbg(fmt,args...) { if(tcore_debug) TCORE_LOG_FUNC(TCORE_LOG_FILE, ANSI_COLOR_LIGHTGRAY "<%s:%s> " ANSI_COLOR_NORMAL fmt "\n", __FILE__, __FUNCTION__, ##args); fflush(TCORE_LOG_FILE);}
-#define warn(fmt,args...) TCORE_LOG_FUNC(TCORE_LOG_FILE, ANSI_COLOR_YELLOW "<%s:%s> " ANSI_COLOR_NORMAL fmt "\n", __FILE__, __FUNCTION__, ##args); fflush(TCORE_LOG_FILE);
-#define err(fmt,args...)  TCORE_LOG_FUNC(TCORE_LOG_FILE, ANSI_COLOR_LIGHTRED "<%s:%s> " ANSI_COLOR_NORMAL fmt "\n", __FILE__, __FUNCTION__, ##args); fflush(TCORE_LOG_FILE);
-#define fatal(fmt,args...)  TCORE_LOG_FUNC(TCORE_LOG_FILE, ANSI_COLOR_LIGHTRED "<%s:%s> " ANSI_COLOR_NORMAL fmt "\n", __FILE__, __FUNCTION__, ##args); fflush(TCORE_LOG_FILE);
+#define info(fmt,args...) do { if(tcore_debug) TCORE_LOG_FUNC(TCORE_LOG_FILE, fmt "\n", ##args); fflush(TCORE_LOG_FILE);} while (0)
+#define msg(fmt,args...) do { if(tcore_debug) TCORE_LOG_FUNC(TCORE_LOG_FILE, fmt "\n", ##args); fflush(TCORE_LOG_FILE);} while (0)
+#define dbg(fmt,args...) do { if(tcore_debug) TCORE_LOG_FUNC(TCORE_LOG_FILE, ANSI_COLOR_LIGHTGRAY "<%s:%s> " ANSI_COLOR_NORMAL fmt "\n", __FILE__, __FUNCTION__, ##args); fflush(TCORE_LOG_FILE);} while (0)
+#define warn(fmt,args...) do {TCORE_LOG_FUNC(TCORE_LOG_FILE, ANSI_COLOR_YELLOW "<%s:%s> " ANSI_COLOR_NORMAL fmt "\n", __FILE__, __FUNCTION__, ##args); fflush(TCORE_LOG_FILE);} while (0)
+#define err(fmt,args...)  do {TCORE_LOG_FUNC(TCORE_LOG_FILE, ANSI_COLOR_LIGHTRED "<%s:%s> " ANSI_COLOR_NORMAL fmt "\n", __FILE__, __FUNCTION__, ##args); fflush(TCORE_LOG_FILE);} while (0)
+#define fatal(fmt,args...)  do {TCORE_LOG_FUNC(TCORE_LOG_FILE, ANSI_COLOR_LIGHTRED "<%s:%s> " ANSI_COLOR_NORMAL fmt "\n", __FILE__, __FUNCTION__, ##args); fflush(TCORE_LOG_FILE);} while (0)
 
 #endif
 
diff --git a/include/manager.h b/include/manager.h
new file mode 100644 (file)
index 0000000..64a90c3
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * libtcore
+ *
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Ja-young Gu <jygu@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.
+ */
+
+#ifndef __MANAGER_H__
+#define __MANAGER_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum tcore_manager_return (*ManagerRequestDispatcher)(Manager *manager, UserRequest *ur);
+typedef enum tcore_manager_return (*ManagerNotificationHandler)(Manager *manager, CoreObject *source,
+       enum tcore_notification_command command,
+       unsigned int data_len, void *data);
+
+
+/* APIs */
+Manager *tcore_manager_new(TcorePlugin *manager_plugin);
+void tcore_manager_free(TcorePlugin *manager_plugin, Manager *manager);
+
+TReturn tcore_manager_set_request_dispatcher(Manager *manager,
+       ManagerRequestDispatcher request_dispatcher);
+TReturn tcore_manager_set_notification_handler(Manager *manager,
+       ManagerNotificationHandler notification_handler);
+
+enum tcore_manager_return tcore_manager_dispatch_request(Manager *manager, UserRequest *ur);
+enum tcore_manager_return tcore_manager_send_notification(Manager *manager, CoreObject *source,
+       enum tcore_notification_command command,
+       unsigned int data_len, void *data);
+
+TcorePlugin *tcore_manager_get_plugin(Manager *manager);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MANAGER_H__ */
index a17f127..6a036f6 100644 (file)
@@ -36,18 +36,18 @@ typedef struct cmux_channel tcore_cmux_channel;
 typedef struct cmux_obj tcore_cmux_object;
 
 /* CMUX setup complete callback prototype */
-typedef void (*cmux_setup_complete_cb_func) (gpointer user_data);
+typedef void (*cmux_setup_complete_cb_func)(gpointer user_data);
 
 /* CMUX setup callback prototype */
-typedef void (*cmux_setup_cb_func) (int channel_id, TcoreHal *hal,
-                                                                       gpointer user_data);
+typedef void (*cmux_setup_cb_func)(int channel_id, TcoreHal *hal,
+       gpointer user_data);
 
 /* CMUX Channel close callback prototype */
-typedef void (*cmux_channel_close_cb_func) (TcoreHal *hal, gpointer user_data);
+typedef void (*cmux_channel_close_cb_func)(TcoreHal *hal, gpointer user_data);
 
 /* CMUX initialization - Internal and Kernel */
 TReturn tcore_cmux_init(TcoreHal *phy_hal, unsigned int frame_size,
-                                       TcorePendingResponseCallback resp_cb, void *resp_cb_data);
+       TcorePendingResponseCallback resp_cb, void *resp_cb_data);
 
 /* Setup Internal CMUX */
 TReturn tcore_cmux_setup_internal_mux(tcore_cmux_mode mode,
index 081d0f8..4129bf6 100644 (file)
@@ -39,36 +39,33 @@ struct tcore_plugin_define_desc {
 };
 
 
-TcorePlugintcore_plugin_new(Server *server,
-                 const struct tcore_plugin_define_desc *desc,
-                 const char *filename, void *handle);
-void         tcore_plugin_free(TcorePlugin *plugin);
+TcorePlugin *tcore_plugin_new(Server *server,
+       const struct tcore_plugin_define_desc *desc,
+       const char *filename, void *handle);
+void tcore_plugin_free(TcorePlugin *plugin);
 
-const struct tcore_plugin_define_desc*
-             tcore_plugin_get_description(TcorePlugin *plugin);
+const struct tcore_plugin_define_desc * tcore_plugin_get_description(TcorePlugin *plugin);
 
-char*        tcore_plugin_get_filename(TcorePlugin *plugin);
-const char*        tcore_plugin_ref_plugin_name(TcorePlugin *plugin);
-Server*      tcore_plugin_ref_server(TcorePlugin *plugin);
+char *tcore_plugin_get_filename(TcorePlugin *plugin);
+const char *tcore_plugin_ref_plugin_name(TcorePlugin *plugin);
+Server *tcore_plugin_ref_server(TcorePlugin *plugin);
 
-TReturn      tcore_plugin_link_user_data(TcorePlugin *plugin, void *user_data);
-void*        tcore_plugin_ref_user_data(TcorePlugin *plugin);
+TReturn tcore_plugin_link_user_data(TcorePlugin *plugin, void *user_data);
+void *tcore_plugin_ref_user_data(TcorePlugin *plugin);
 
-TReturn      tcore_plugin_add_core_object(TcorePlugin *plugin, CoreObject *co);
-TReturn      tcore_plugin_remove_core_object(TcorePlugin *plugin, CoreObject *co);
+TReturn tcore_plugin_add_core_object(TcorePlugin *plugin, CoreObject *co);
+TReturn tcore_plugin_remove_core_object(TcorePlugin *plugin, CoreObject *co);
 
 CoreObject *tcore_plugin_ref_core_object(TcorePlugin *plugin, unsigned int type);
-GSList*      tcore_plugin_get_core_objects(TcorePlugin *plugin);
-GSList*      tcore_plugin_get_core_objects_bytype(TcorePlugin *plugin,
-                 unsigned int type);
+GSList *tcore_plugin_get_core_objects(TcorePlugin *plugin);
+GSList *tcore_plugin_get_core_objects_bytype(TcorePlugin *plugin, unsigned int type);
 
-TReturn      tcore_plugin_core_object_event_emit(TcorePlugin *plugin,
-                 const char *event, const void *event_info);
+TReturn tcore_plugin_core_object_event_emit(TcorePlugin *plugin,
+       const char *event, const void *event_info);
 
-TReturn      tcore_plugin_link_property(TcorePlugin *plugin, const char *key,
-                 void *data);
-void*        tcore_plugin_ref_property(TcorePlugin *plugin, const char *key);
+TReturn tcore_plugin_link_property(TcorePlugin *plugin, const char *key, void *data);
+void *tcore_plugin_ref_property(TcorePlugin *plugin, const char *key);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_PLUGIN_H__ */
index 63e629f..084fa2f 100644 (file)
 __BEGIN_DECLS
 
 typedef enum tcore_hook_return (*TcoreServerRequestHook)(Server *s,
-    UserRequest *ur, void *user_data);
+       UserRequest *ur, void *user_data);
 typedef enum tcore_hook_return (*TcoreServerNotificationHook)(Server *s,
-    CoreObject *source, enum tcore_notification_command command,
-    unsigned int data_len, void *data, void *user_data);
-
-Server*       tcore_server_new();
-void          tcore_server_free(Server *s);
-
-TReturn       tcore_server_run(Server *s);
-TReturn       tcore_server_exit(Server *s);
-
-TReturn       tcore_server_add_plugin(Server *s, TcorePlugin *plugin);
-GSList*       tcore_server_ref_plugins(Server *s);
-TcorePlugin*  tcore_server_find_plugin(Server *s, const char *name);
-
-TReturn       tcore_server_add_communicator(Server *s, Communicator *comm);
-TReturn       tcore_server_remove_communicator(Server *s, Communicator *comm);
-GSList*       tcore_server_ref_communicators(Server *s);
-Communicator* tcore_server_find_communicator(Server *s, const char *name);
-
-TReturn       tcore_server_add_storage(Server *s, Storage *strg);
-GSList*       tcore_server_ref_storages(Server *s);
-Storage*      tcore_server_find_storage(Server *s, const char *name);
-
-TReturn       tcore_server_add_hal(Server *s, TcoreHal *hal);
-TReturn       tcore_server_remove_hal(Server *s, TcoreHal *hal);
-GSList*       tcore_server_ref_hals(Server *s);
-TcoreHal*     tcore_server_find_hal(Server *s, const char *name);
-
-CoreObject *tcore_server_find_template_object(Server *s, unsigned int type);
-
-TReturn       tcore_server_link_udev(Server *s, TcoreUdev *udev);
-TcoreUdev*    tcore_server_ref_udev(Server *s);
-
-TReturn       tcore_server_dispatch_request(Server *s, UserRequest *ur);
-TReturn       tcore_server_send_notification(Server *s, CoreObject *source,
-                  enum tcore_notification_command command,
-                  unsigned int data_len, void *data);
-
-TReturn       tcore_server_add_request_hook(Server *s,
-                  enum tcore_request_command command,
-                  TcoreServerRequestHook func, void *user_data);
-TReturn       tcore_server_remove_request_hook(Server *s,
-                  TcoreServerRequestHook func);
-TReturn       tcore_server_add_notification_hook(Server *s,
-                  enum tcore_notification_command command,
-                  TcoreServerNotificationHook func, void *user_data);
-TReturn       tcore_server_remove_notification_hook(Server *s,
-                  TcoreServerNotificationHook func);
+       CoreObject *source, enum tcore_notification_command command,
+       unsigned int data_len, void *data, void *user_data);
+
+Server *tcore_server_new();
+void tcore_server_free(Server *s);
+
+TReturn tcore_server_run(Server *s);
+TReturn tcore_server_exit(Server *s);
+
+TReturn tcore_server_set_manager(Server *s, Manager *manager);
+Manager *tcore_server_ref_manager(Server *s);
+
+TReturn tcore_server_add_plugin(Server *s, TcorePlugin *plugin);
+GSList *tcore_server_ref_plugins(Server *s);
+TcorePlugin *tcore_server_find_plugin(Server *s, const char *name);
+
+TReturn tcore_server_add_communicator(Server *s, Communicator *comm);
+TReturn tcore_server_remove_communicator(Server *s, Communicator *comm);
+GSList *tcore_server_ref_communicators(Server *s);
+Communicator *tcore_server_find_communicator(Server *s, const char *name);
+
+TReturn tcore_server_add_storage(Server *s, Storage *strg);
+GSList *tcore_server_ref_storages(Server *s);
+Storage *tcore_server_find_storage(Server *s, const char *name);
+
+TReturn tcore_server_add_hal(Server *s, TcoreHal *hal);
+TReturn tcore_server_remove_hal(Server *s, TcoreHal *hal);
+GSList *tcore_server_ref_hals(Server *s);
+TcoreHal *tcore_server_find_hal(Server *s, const char *name);
+
+TReturn tcore_server_dispatch_request(Server *s, UserRequest *ur);
+TReturn tcore_server_send_notification(Server *s,
+       CoreObject *source, enum tcore_notification_command command,
+       unsigned int data_len, void *data);
+
+TReturn tcore_server_add_request_hook(Server *s,
+       enum tcore_request_command command,
+       TcoreServerRequestHook func, void *user_data);
+TReturn tcore_server_remove_request_hook(Server *s,
+       TcoreServerRequestHook func);
+TReturn tcore_server_add_notification_hook(Server *s,
+       enum tcore_notification_command command,
+       TcoreServerNotificationHook func, void *user_data);
+TReturn tcore_server_remove_notification_hook(Server *s,
+       TcoreServerNotificationHook func);
 
 TcoreModem *tcore_server_register_modem(Server *s, TcorePlugin *modem_iface_plugin);
 void tcore_server_unregister_modem(Server *s, TcoreModem *modem);
 gboolean tcore_server_update_modem_plugin(TcorePlugin *modem_iface_plugin,
-                                                       TcorePlugin *modem_plugin);
+       TcorePlugin *modem_plugin);
 GSList *tcore_server_get_cp_name_list(Server *s);
 const char *tcore_server_get_cp_name_by_plugin(TcorePlugin *modem_plugin);
 
 gboolean tcore_server_add_cp_mapping_tbl_entry(TcoreModem *modem,
-                                       unsigned int co_type, TcoreHal *hal);
+       unsigned int co_type, TcoreHal *hal);
 void tcore_server_remove_cp_mapping_tbl(TcoreModem *modem);
 void tcore_server_remove_cp_mapping_tbl_entry(TcoreModem *modem,
-                                       TcoreHal *hal);
+       TcoreHal *hal);
 void *tcore_server_get_cp_mapping_tbl(TcorePlugin *modem_plugin);
 void tcore_server_print_modems(Server *s);
 
 TReturn tcore_server_load_modem_plugin(Server *s,
-                                       TcoreModem *modem,
-                                       const char *name)
-;
+       TcoreModem *modem, const char *name);
 void tcore_server_unload_modem_plugin(Server *s, TcoreModem *modem);
+
 GSList *tcore_server_get_modem_plugin_list(Server *s);
 gint tcore_server_get_modems_count(Server *s);
+
 __END_DECLS
 
-#endif
+#endif /* __TCORE_SERVER_H__ */
index f62bac1..ec54894 100644 (file)
@@ -34,7 +34,7 @@ enum tcore_storage_key {
        STORAGE_KEY_TELEPHONY_LAC,
        STORAGE_KEY_TELEPHONY_CELLID,
        STORAGE_KEY_TELEPHONY_SVCTYPE,
-       STORAGE_KEY_TELEPHONY_SVC_CS,//5
+       STORAGE_KEY_TELEPHONY_SVC_CS, /* 5 */
 
        STORAGE_KEY_TELEPHONY_SVC_PS,
        STORAGE_KEY_TELEPHONY_SVC_ROAM,
@@ -44,7 +44,7 @@ enum tcore_storage_key {
        STORAGE_KEY_TELEPHONY_CALL_STATE,
        STORAGE_KEY_TELEPHONY_CALL_FORWARD_STATE,
        STORAGE_KEY_TELEPHONY_TAPI_STATE,
-       STORAGE_KEY_TELEPHONY_SPN_DISP_CONDITION,//15
+       STORAGE_KEY_TELEPHONY_SPN_DISP_CONDITION, /* 15 */
 
        STORAGE_KEY_TELEPHONY_RSSI,
        STORAGE_KEY_TELEPHONY_LOW_BATTERY,
@@ -52,7 +52,7 @@ enum tcore_storage_key {
        STORAGE_KEY_TELEPHONY_SIM_SLOT,
        STORAGE_KEY_TELEPHONY_SIM_SLOT2,
        STORAGE_KEY_TELEPHONY_SIM_SLOT_COUNT,
-       STORAGE_KEY_PM_STATE,//20
+       STORAGE_KEY_PM_STATE, /* 20 */
 
        STORAGE_KEY_PACKET_INDICATOR_STATE,
        STORAGE_KEY_PACKET_SERVICE_STATE,
@@ -64,7 +64,7 @@ enum tcore_storage_key {
        STORAGE_KEY_CELLULAR_PKT_TOTAL_RCV2,
        STORAGE_KEY_CELLULAR_PKT_TOTAL_SNT,
        STORAGE_KEY_CELLULAR_PKT_TOTAL_SNT2,
-       STORAGE_KEY_CELLULAR_PKT_LAST_RCV,//30
+       STORAGE_KEY_CELLULAR_PKT_LAST_RCV, /* 30 */
 
        STORAGE_KEY_CELLULAR_PKT_LAST_RCV2,
        STORAGE_KEY_CELLULAR_PKT_LAST_SNT,
@@ -77,19 +77,19 @@ enum tcore_storage_key {
        STORAGE_KEY_POWER_SAVING_MODE,
        STORAGE_KEY_WECONN_ALL_CONNECTED,
        STORAGE_KEY_SAP_CONNECTION_TYPE,
-       STORAGE_KEY_IDLE_SCREEN_LAUNCHED,
+       STORAGE_KEY_PDP_LAST_CONNECTED_CONTEXT_PROFILE_ID, /* For prepaid sim APN support */
 
        STORAGE_KEY_TELEPHONY_BOOL = STORAGE_KEY_BOOL,
        STORAGE_KEY_3G_ENABLE,
        STORAGE_KEY_TELEPHONY_READY,
        STORAGE_KEY_SETAPPL_STATE_DATA_ROAMING_BOOL,
-       STORAGE_KEY_SETAPPL_STATE_DATA_ROAMING_APP_STATUS,
        STORAGE_KEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL,
        STORAGE_KEY_SETAPPL_NETWORK_RESTRICT_MODE,
        STORAGE_KEY_SETAPPL_MOBILE_DATA_POPUP_DONE_BOOL,
        STORAGE_KEY_MSG_SERVER_READY_BOOL,
        STORAGE_KEY_FLIGHT_MODE_BOOL,
        STORAGE_KEY_TESTMODE_FAST_DORMANCY_BOOL,
+       STORAGE_KEY_PDP_LAST_CONNECTED_CONTEXT_BOOL, /* For prepaid sim APN support */
 
        STORAGE_KEY_TELEPHONY_STRING = STORAGE_KEY_STRING,
        STORAGE_KEY_TELEPHONY_NWNAME,
@@ -104,7 +104,8 @@ enum tcore_storage_key {
        STORAGE_KEY_LANGUAGE_SET,
        STORAGE_KEY_TESTMODE_FAST_DORMANCY,
        STORAGE_KEY_TESTMODE_FAST_DORMANCY2,
-       STORAGE_KEY_IDLE_SCREEN_LAUNCHED_BOOL
+       STORAGE_KEY_IDLE_SCREEN_LAUNCHED_BOOL,
+       STORAGE_KEY_TELEPHONY_LAST_CONNECTED_CONTEXT_PLMN /* For prepaid sim APN support */
 };
 
 enum storage_value {
@@ -123,74 +124,73 @@ enum storage_value {
        STORAGE_VALUE_STATE_9 = 9,
 };
 
-typedef void (*TcoreStorageKeyCallback) (enum tcore_storage_key key,
-    void *value, void *user_data);
-typedef void (*TcoreStorageDispatchCallback) (Storage *strg,
-    enum tcore_storage_key key, void *value);
+typedef void (*TcoreStorageKeyCallback)(enum tcore_storage_key key,
+       void *value, void *user_data);
+typedef void (*TcoreStorageDispatchCallback)(Storage *strg,
+       enum tcore_storage_key key, void *value);
 
 struct storage_operations {
-       void(*create_handle)(Storage *strg, const char *path);
+       void *(*create_handle)(Storage *strg, const char *path);
        gboolean (*remove_handle)(Storage *strg, void *handle);
 
        gboolean (*set_int)(Storage *strg, enum tcore_storage_key key, int value);
        gboolean (*set_string)(Storage *strg, enum tcore_storage_key key, const char *value);
        gboolean (*set_bool)(Storage *strg, enum tcore_storage_key key, gboolean value);
        int (*get_int)(Storage *strg, enum tcore_storage_key key);
-       char(*get_string)(Storage *strg, enum tcore_storage_key key);
+       char *(*get_string)(Storage *strg, enum tcore_storage_key key);
        gboolean (*get_bool)(Storage *strg, enum tcore_storage_key key);
        gboolean (*set_key_callback)(Storage *strg, enum tcore_storage_key key,
-                       TcoreStorageDispatchCallback cb);
+               TcoreStorageDispatchCallback cb);
        gboolean (*remove_key_callback)(Storage *strg, enum tcore_storage_key key);
 
        gboolean (*update_query_database)(Storage *strg, void *handle,
-                       const char *query, GHashTable *in_param);
+               const char *query, GHashTable *in_param);
        gboolean (*read_query_database)(Storage *strg, void *handle,
-                       const char *query, GHashTable *in_param,
-                       GHashTable *out_param, int out_param_cnt);
+               const char *query, GHashTable *in_param,
+               GHashTable *out_param, int out_param_cnt);
        gboolean (*insert_query_database)(Storage *strg, void *handle,
-                       const char *query, GHashTable *in_param);
+               const char *query, GHashTable *in_param);
        gboolean (*remove_query_database)(Storage *strg, void *handle,
-                       const char *query, GHashTable *in_param);
+               const char *query, GHashTable *in_param);
 };
 
-Storage*     tcore_storage_new(TcorePlugin *plugin, const char *name,
+Storage *tcore_storage_new(TcorePlugin *plugin, const char *name,
                  struct storage_operations *ops);
-void         tcore_storage_free(Storage *strg);
-const char*  tcore_storage_ref_name(Storage *strg);
-
-void*        tcore_storage_create_handle(Storage *strg, const char *path);
-gboolean     tcore_storage_remove_handle(Storage *strg, void *handle);
-
-//storage vconf
-gboolean     tcore_storage_set_int(Storage *strg, enum tcore_storage_key key,
-                 int value);
-int          tcore_storage_get_int(Storage *strg, enum tcore_storage_key key);
-
-gboolean     tcore_storage_set_string(Storage *strg, enum tcore_storage_key key,
-                 const char *value);
-char*        tcore_storage_get_string(Storage *strg, enum tcore_storage_key key);
-
-gboolean     tcore_storage_set_bool(Storage *strg, enum tcore_storage_key key,
-                 gboolean value);
-gboolean     tcore_storage_get_bool(Storage *strg, enum tcore_storage_key key);
-
-gboolean     tcore_storage_set_key_callback(Storage *strg,
-                 enum tcore_storage_key key, TcoreStorageKeyCallback cb,
-                 void *user_data);
-gboolean     tcore_storage_remove_key_callback(Storage *strg,
-                 enum tcore_storage_key key, TcoreStorageKeyCallback cb);
-
-//storage database
-gboolean     tcore_storage_update_query_database(Storage *strg, void *handle,
-                 const char *query, GHashTable *in_param);
-gboolean     tcore_storage_read_query_database(Storage *strg, void *handle,
-                 const char *query, GHashTable *in_param, GHashTable *out_param,
-                 int out_param_cnt);
-gboolean     tcore_storage_insert_query_database(Storage *strg, void *handle,
-                 const char *query, GHashTable *in_param);
-gboolean     tcore_storage_remove_query_database(Storage *strg, void *handle,
-                 const char *query, GHashTable *in_param);
+void tcore_storage_free(Storage *strg);
+const char *tcore_storage_ref_name(Storage *strg);
+
+void *tcore_storage_create_handle(Storage *strg, const char *path);
+gboolean tcore_storage_remove_handle(Storage *strg, void *handle);
+
+/* Storage - vconf */
+gboolean tcore_storage_set_int(Storage *strg, enum tcore_storage_key key,
+       int value);
+int tcore_storage_get_int(Storage *strg, enum tcore_storage_key key);
+
+gboolean tcore_storage_set_string(Storage *strg, enum tcore_storage_key key,
+       const char *value);
+char *tcore_storage_get_string(Storage *strg, enum tcore_storage_key key);
+
+gboolean tcore_storage_set_bool(Storage *strg, enum tcore_storage_key key,
+       gboolean value);
+gboolean tcore_storage_get_bool(Storage *strg, enum tcore_storage_key key);
+
+gboolean tcore_storage_set_key_callback(Storage *strg,
+       enum tcore_storage_key key, TcoreStorageKeyCallback cb, void *user_data);
+gboolean tcore_storage_remove_key_callback(Storage *strg,
+       enum tcore_storage_key key, TcoreStorageKeyCallback cb);
+
+/* Storage - database */
+gboolean tcore_storage_update_query_database(Storage *strg, void *handle,
+       const char *query, GHashTable *in_param);
+gboolean tcore_storage_read_query_database(Storage *strg, void *handle,
+       const char *query, GHashTable *in_param,
+       GHashTable *out_param, int out_param_cnt);
+gboolean tcore_storage_insert_query_database(Storage *strg, void *handle,
+       const char *query, GHashTable *in_param);
+gboolean tcore_storage_remove_query_database(Storage *strg, void *handle,
+       const char *query, GHashTable *in_param);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_STORAGE_H__ */
index 02ffb22..efeb7f5 100644 (file)
 #include <type/gps.h>
 #include <util.h>
 
-typedef struct tcore_object_type CoreObject;
-typedef struct tcore_hal_type TcoreHal;
+typedef struct tcore_server_type Server;
+typedef struct tcore_manager_type Manager;
+typedef struct tcore_communicator_type Communicator;
 typedef struct tcore_plugin_type TcorePlugin;
 typedef struct tcore_modem_type TcoreModem;
+typedef struct tcore_object_type CoreObject;
+typedef struct tcore_storage_type Storage;
+
+typedef struct tcore_hal_type TcoreHal;
+
 typedef struct tcore_queue_type TcoreQueue;
 typedef struct tcore_pending_type TcorePending;
-typedef struct tcore_communicator_type Communicator;
 typedef struct tcore_user_request_type UserRequest;
-typedef struct tcore_server_type Server;
-typedef struct tcore_storage_type Storage;
 typedef struct tcore_at_type TcoreAT;
-typedef struct tcore_udev_type TcoreUdev;
 
 enum tcore_hook_return {
        TCORE_HOOK_RETURN_STOP_PROPAGATION = 0,
-       TCORE_HOOK_RETURN_STOP_PROPAGATION_FAIL,
        TCORE_HOOK_RETURN_CONTINUE
 };
 
-#endif
+enum tcore_manager_return {
+       TCORE_MANAGER_RETURN_FAILURE = 0,
+       TCORE_MANAGER_RETURN_STOP,
+       TCORE_MANAGER_RETURN_CONTINUE,          /* default continue */
+       TCORE_MANAGER_RETURN_CONTINUE_IMS
+};
+
+#endif /* __TCORE_H__ */
index e4d96b8..fcfad78 100644 (file)
@@ -525,6 +525,11 @@ enum telephony_call_confirm_type {
        CALL_CONFIRM_TYPE_REJECT,
 };
 
+enum telephony_call_fallback_type{
+       CALL_FALLBACK_TO_IMS,
+       CALL_FALLBACK_TO_CS
+};
+
 /**********
   Struct
   **********/
@@ -554,7 +559,7 @@ struct telephony_call_cna_info {
 };
 
 struct telephony_call_rec_info {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_rec_type type;
        union {
                char name[ MAX_ALPHA_INFO_LEN ];
@@ -566,15 +571,16 @@ struct treq_call_dial {
        enum telephony_call_type type;
        enum telephony_call_emergency_category ecc;
        char number[ MAX_CALL_DIAL_NUM_LEN ];
+       int handle; /*used only for silent redial & setup pending call*/
 };
 
 struct treq_call_answer {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_answer_type type;
 };
 
 struct treq_call_end {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_end_type type;
 };
 
@@ -589,31 +595,31 @@ struct treq_call_send_burst_dtmf {
 };
 
 struct treq_call_active {
-       unsigned int id;
+       unsigned int handle;
 };
 
 struct treq_call_hold {
-       unsigned int id;
+       unsigned int handle;
 };
 
 struct treq_call_swap {
-       unsigned int id;
+       unsigned int handle;
 };
 
 struct treq_call_join {
-       unsigned int id;
+       unsigned int handle;
 };
 
 struct treq_call_split {
-       unsigned int id;
+       unsigned int handle;
 };
 
 struct treq_call_transfer {
-       unsigned int id;
+       unsigned int handle;
 };
 
 struct treq_call_deflect {
-       unsigned int id;
+       unsigned int handle;
        char number[MAX_CALL_NUMBER_LEN];
 };
 
@@ -668,13 +674,15 @@ struct treq_call_set_preferred_voice_subscription {
 struct treq_call_get_preferred_voice_subscription {
 };
 
+/* IMS specific */
 struct treq_call_modify {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_type call_type;
 };
 
+/* IMS specific */
 struct treq_call_confirm_modify {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_confirm_type confirm_type;
 };
 
@@ -685,48 +693,48 @@ struct tresp_call_dial {
 };
 
 struct tresp_call_answer {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_error err;
 };
 
 struct tresp_call_end {
        enum telephony_call_end_type type;
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_error err;
 };
 
 struct tresp_call_hold {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_error err;
 };
 
 struct tresp_call_active {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_error err;
 };
 
 struct tresp_call_swap {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_error err;
 };
 
 struct tresp_call_join {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_error err;
 };
 
 struct tresp_call_split {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_error err;
 };
 
 struct tresp_call_deflect {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_error err;
 };
 
 struct tresp_call_transfer {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_error err;
 };
 
@@ -795,10 +803,12 @@ struct tresp_call_get_voice_privacy_mode {
        enum telephony_call_voice_privacy_mode privacy_mode;
 };
 
+/* IMS specific */
 struct tresp_call_modify {
        enum telephony_call_error err;
 };
 
+/* IMS specific */
 struct tresp_call_confirm_modify {
        enum telephony_call_error err;
 };
@@ -807,33 +817,33 @@ struct tresp_call_confirm_modify {
 
 struct tnoti_call_status_idle {
        enum telephony_call_type type;
-       unsigned int    id;
+       unsigned int    handle;
        enum telephony_call_end_cause cause;
 };
 
 struct tnoti_call_status_active {
        enum telephony_call_type type;
-       unsigned int    id;
+       unsigned int    handle;
 };
 
 struct tnoti_call_status_held {
        enum telephony_call_type type;
-       unsigned int    id;
+       unsigned int    handle;
 };
 
 struct tnoti_call_status_dialing {
        enum telephony_call_type type;
-       unsigned int    id;
+       unsigned int    handle;
 };
 
 struct tnoti_call_status_alert {
        enum telephony_call_type type;
-       unsigned int    id;
+       unsigned int    handle;
 };
 
 struct tnoti_call_status_incoming {
        enum telephony_call_type type;
-       unsigned int    id;
+       unsigned int    handle;
        struct telephony_call_cli_info cli;
        struct telephony_call_cna_info cna;
        gboolean                forward;
@@ -842,7 +852,7 @@ struct tnoti_call_status_incoming {
 
 struct tnoti_call_status_waiting {
        enum telephony_call_type type;
-       unsigned int    id;
+       unsigned int    handle;
 };
 
 struct tnoti_call_sound_path {
@@ -918,10 +928,17 @@ struct tnoti_call_info_rec {
        struct telephony_call_rec_info rec_info;
 };
 
+/* IMS specific */
 struct tnoti_call_modify_request {
-       unsigned int id;
+       unsigned int handle;
        enum telephony_call_type call_type;
 };
+
+struct tnoti_call_fallback{
+       unsigned int handle;
+       enum telephony_call_fallback_type fallback_to;
+};
+
 __END_DECLS
 
 #endif
index c7584a5..3bbbd7b 100644 (file)
@@ -27,6 +27,8 @@ __BEGIN_DECLS
 #define MODEM_DEVICE_MEID_LEN_MAX 17
 #define MODEM_DEVICE_IMEI_LEN_MAX 17
 #define MODEM_DEVICE_IMEISV_LEN_MAX 17
+#define DONGLE_VENDOR_LEN_MAX 32
+#define DONGLE_DEVICE_LEN_MAX 32
 
 enum modem_state {
        MODEM_STATE_UNKNOWN = -1,
@@ -119,6 +121,12 @@ struct tresp_modem_get_imei {
        char imei[MODEM_DEVICE_IMEI_LEN_MAX];
 };
 
+struct tresp_modem_get_device_info {
+       TReturn result;
+       char vendor_name[DONGLE_VENDOR_LEN_MAX];
+       char device_name[DONGLE_DEVICE_LEN_MAX];
+};
+
 struct tresp_modem_get_version {
        TReturn result;
        char software[33];
index a1aff1a..47982be 100644 (file)
 
 __BEGIN_DECLS
 
+#define NETWORK_MAX_MCC_LEN            3
+#define NETWORK_MAX_MNC_LEN            3
+#define NETWORK_MAX_PLMN_LEN           6
+
+#define NETWORK_MAX_COUNTRY_CODE_LEN           3
+#define NETWORK_MAX_NETWORK_NAME_LEN           40
+#define NETWORK_MAX_SHORT_NAME_LEN             16
+#define NETWORK_MAX_FULL_NAME_LEN              32
+
 #define NETWORK_GERAN_NEIGHBORING_CELL_LIST_MAX 6              /**<    max count of GERAN neighboring cell list        */
 #define NETWORK_UMTS_NEIGHBORING_CELL_LIST_MAX 24              /**<    max count of UMTS neighboring cell list         */
 
-#define NETWORK_CDMA_SUBSCRIPTION_MCC_MAX 4
-#define NETWORK_CDMA_SUBSCRIPTION_MNC_MAX 4
 #define NETWORK_CDMA_SUBSCRIPTION_MIN_MAX 11
 #define NETWORK_CDMA_SUBSCRIPTION_MDN_MAX 16
 
@@ -209,6 +216,35 @@ enum telephony_network_ims_voice_status {
        NETWORK_IMS_VOICE_SUPPORT
 };
 
+/* IMS specific */
+enum telephony_network_ims_reg_feature_type {
+       NETWORK_IMS_REG_FEATURE_TYPE_VOLTE = 0x01, /**< VoLTE Feature type */
+       NETWORK_IMS_REG_FEATURE_TYPE_SMS = 0x02, /**< SMSoverIP Feature type */
+       NETWORK_IMS_REG_FEATURE_TYPE_RCS = 0x04, /**< RCS Feature type */
+       NETWORK_IMS_REG_FEATURE_TYPE_VT = 0x08, /**< VT Feature type */
+};
+
+/* IMS specific */
+enum telephony_network_ims_reg_network_type {
+       NETWORK_IMS_REG_NETWORK_TYPE_INTERNET = 1, /**< VoLTE Feature type */
+       NETWORK_IMS_REG_NETWORK_TYPE_WIFI, /**< SMSoverIP Feature type */
+       NETWORK_IMS_REG_NETWORK_TYPE_IMS, /**< RCS Feature type */
+       NETWORK_IMS_REG_NETWORK_TYPE_EMERGENCY /**< VT Feature type */
+};
+
+/* IMS specific */
+enum telephony_network_ims_reg_ecmp_mode {
+       NETWORK_IMS_REG_ECMP_MODE_NOT_SUPPORT = -1, /**< Not supported */
+       NETWORK_IMS_REG_ECMP_MODE_CS_PREFERRED = 0, /**< CS preferred */
+       NETWORK_IMS_REG_ECMP_MODE_PS_PREFERRED = 1, /**< PS preferred */
+};
+
+enum telephony_network_ecc_rat_search_status {
+       NETWORK_ECC_RAT_SEARCH_STATUS_IDLE,
+       NETWORK_ECC_RAT_SEARCH_STATUS_WAITING,
+       NETWORK_ECC_RAT_SEARCH_STATUS_READY,
+};
+
 struct tel_network_geran_cell_info {
        int cell_id;    /* Cell ID (-1 indicates cell ID information not present)*/
        int lac;                /* Location area code (this field is ignored when cell_id not present)*/
@@ -262,12 +298,19 @@ struct tel_network_neighboring_cell_info {
        struct tel_network_umts_cell_info umts_list[NETWORK_UMTS_NEIGHBORING_CELL_LIST_MAX];
 };
 
+/* IMS specific */
+struct tel_network_ims_registration_info {
+       gboolean is_registered; /**< IMS registration status */
+       unsigned int feature_mask; /**< Registration info of each service (see telephony_network_ims_reg_feature_type enum) */
+       enum telephony_network_ims_reg_network_type network_type; /**< Network type (NETWORK_TYPE_INTERNET, NETWORK_TYPE_IMS, etc) */
+       enum telephony_network_ims_reg_ecmp_mode ecmp_mode; /**< Enumeration for emergency call mode preference */
+};
 
 struct treq_network_search { /* no data */
 };
 struct treq_network_set_plmn_selection_mode {
        enum telephony_network_select_mode mode;
-       char plmn[7];
+       char plmn[NETWORK_MAX_PLMN_LEN+1];
        enum telephony_network_access_technology act;
 };
 struct treq_network_get_plmn_selection_mode { /* no data */
@@ -285,7 +328,7 @@ struct treq_network_get_band { /* no data */
 };
 struct treq_network_set_preferred_plmn {
        enum telephony_network_preferred_plmn_operation operation;
-       char plmn[7];
+       char plmn[NETWORK_MAX_PLMN_LEN+1];
        enum telephony_network_access_technology act;
        int ef_index;
 };
@@ -344,8 +387,8 @@ struct tresp_network_search {
        int list_count;
        struct {
                enum telephony_network_plmn_status  status;
-               char name[41];
-               char plmn[7];
+               char name[NETWORK_MAX_NETWORK_NAME_LEN+1];
+               char plmn[NETWORK_MAX_PLMN_LEN+1];
                enum telephony_network_access_technology act;
                unsigned int lac;
                unsigned int rac;
@@ -391,8 +434,8 @@ struct tresp_network_get_preferred_plmn {
        int list_count;
        struct {
                int ef_index;
-               char name[41];
-               char plmn[7];
+               char name[NETWORK_MAX_NETWORK_NAME_LEN+1];
+               char plmn[NETWORK_MAX_PLMN_LEN+1];
                enum telephony_network_access_technology act;
                unsigned int lac;
        } list[150];
@@ -422,7 +465,7 @@ struct tresp_network_set_cancel_manual_search {
 
 struct tresp_network_get_serving_network {
        TReturn result;
-       char plmn[7];
+       char plmn[NETWORK_MAX_PLMN_LEN+1];
        enum telephony_network_access_technology act;
        struct {
                unsigned int lac;
@@ -473,8 +516,8 @@ struct tresp_network_get_roaming_preference {
 
 struct tresp_network_get_subscription_info {
        TReturn result;
-       char mcc[NETWORK_CDMA_SUBSCRIPTION_MCC_MAX];
-       char mnc[NETWORK_CDMA_SUBSCRIPTION_MNC_MAX];
+       char mcc[NETWORK_MAX_MCC_LEN + 1];
+       char mnc[NETWORK_MAX_MCC_LEN + 1];
        char min[NETWORK_CDMA_SUBSCRIPTION_MIN_MAX];
        char mdn[NETWORK_CDMA_SUBSCRIPTION_MDN_MAX];
 };
@@ -497,6 +540,10 @@ struct tresp_network_get_default_subs {
        enum telephony_network_default_subs default_subs; /* 'default' Subscription */
 };
 
+struct tresp_network_search_ecc_rat {
+       TReturn result;
+};
+
 struct tnoti_network_registration_status {
        enum telephony_network_service_domain_status cs_domain_status;
        enum telephony_network_service_domain_status ps_domain_status;
@@ -522,7 +569,7 @@ struct tnoti_network_signal_strength {
 };
 
 struct tnoti_network_change {
-       char plmn[7];
+       char plmn[NETWORK_MAX_PLMN_LEN+1];
        enum telephony_network_access_technology act;
        struct {
                unsigned int lac;
@@ -550,14 +597,14 @@ struct tnoti_network_timeinfo {
        int gmtoff;
        int dstoff;
        unsigned int isdst;
-       char plmn[7];
+       char plmn[NETWORK_MAX_PLMN_LEN+1];
        enum telephony_network_mm_info_type mm_type;
 };
 
 struct tnoti_network_identity {
-       char short_name[17];
-       char full_name[33];
-       char plmn[7];
+       char short_name[NETWORK_MAX_SHORT_NAME_LEN+1];
+       char full_name[NETWORK_MAX_FULL_NAME_LEN+1];
+       char plmn[NETWORK_MAX_PLMN_LEN+1];
 };
 
 struct tnoti_network_neighboring_cell_info {
@@ -576,15 +623,27 @@ struct tnoti_network_default_subs {
        enum telephony_network_default_subs default_subs; /* 'default' Subscription */
 };
 
-/* 3GPP2 spcefic */
+/* 3GPP2 specific */
 struct tnoti_network_emergency_callback_mode {
        enum telephony_network_emergency_callback_mode mode;
 };
 
+/* IMS specific */
 struct tnoti_network_ims_voice_status {
        enum telephony_network_ims_voice_status status;
 };
 
+struct tnoti_network_ecc_rat {
+       enum telephony_network_access_technology ecc_rat;
+};
+
+struct tnoti_network_ims_registration_info {
+       gboolean is_registered; /**< IMS registration status */
+       unsigned int feature_mask; /**< Registration info of each service (see telephony_network_ims_reg_feature_type enum) */
+       enum telephony_network_ims_reg_network_type network_type; /**< Network type (NETWORK_TYPE_INTERNET, NETWORK_TYPE_IMS, etc) */
+       enum telephony_network_ims_reg_ecmp_mode ecmp_mode; /**< Enumeration for emergency call mode preference */
+};
+
 
 __END_DECLS
 
index 941d8e2..c436701 100644 (file)
@@ -77,6 +77,7 @@ enum tcore_notification_command {
        TNOTI_CALL_INFO_EXTRA_INFORMATION,
        TNOTI_CALL_INFO_PRIVACY_MODE,
        TNOTI_CALL_INFO_REC,
+       TNOTI_CALL_INFO_FALLBACK,                       /*notification of call fallback to other bearer - CSFB(IMS to CS) or Reverse-CSFB(CS to IMS)*/
        TNOTI_CALL_OTASP_STATUS,
        TNOTI_CALL_OTAPA_STATUS,
        TNOTI_CALL_SIGNAL_INFO,
@@ -107,6 +108,8 @@ enum tcore_notification_command {
        TNOTI_MODEM_DUN_EXTERNAL_CALL,
        TNOTI_MODEM_ADDED,
        TNOTI_MODEM_BOOTUP,
+       TNOTI_MODEM_DONGLE_STATUS,
+       TNOTI_MODEM_DONGLE_LOGIN,
 
        TNOTI_SIM = TCORE_NOTIFICATION | TCORE_TYPE_SIM,
        TNOTI_SIM_STATUS,
@@ -137,6 +140,8 @@ enum tcore_notification_command {
        TNOTI_NETWORK_DEFAULT_SUBSCRIPTION,
        TNOTI_NETWORK_EMERGENCY_CALLBACK_MODE,
        TNOTI_NETWORK_IMS_VOICE_SUPPORT_STATUS,
+       TNOTI_NETWORK_ECC_RAT,
+       TNOTI_NETWORK_IMS_REGISTRATION_STATUS,
 
        TNOTI_PS = TCORE_NOTIFICATION | TCORE_TYPE_PS,
        TNOTI_PS_CALL_STATUS,
@@ -159,6 +164,7 @@ enum tcore_notification_command {
 
        TNOTI_PHONEBOOK = TCORE_NOTIFICATION | TCORE_TYPE_PHONEBOOK,
        TNOTI_PHONEBOOK_STATUS,
+       TNOTI_PHONEBOOK_CONTACT_CHANGE,
 
        TNOTI_GPS = TCORE_NOTIFICATION | TCORE_TYPE_GPS,
        TNOTI_GPS_ASSIST_DATA,
index 16a8f3b..ea1f2e6 100644 (file)
@@ -80,6 +80,12 @@ enum tel_phonebook_dcs {
        PB_TEXT_HEX, /**< HEX Encoding */
 };
 
+enum tel_phonebook_op {
+       PB_CONTACT_UPDATE, /**< New contact added or updated */
+       PB_CONTACT_DELETE, /**< Existing contact deleted */
+       PB_CONTACT_MAX, /**< MAX value */
+};
+
 struct tel_phonebook_support_list {
        gboolean b_fdn; /**< Fixed Dialing Number */
        gboolean b_adn; /**< SIM - ADN(2G phonebook, Under DF phonebook */
@@ -234,6 +240,11 @@ struct tnoti_phonebook_status {
        struct tel_phonebook_support_list support_list;
 };
 
+struct tnoti_phonebook_contact_change {
+       enum tel_phonebook_type phonebook_type;
+       unsigned short index;
+       enum tel_phonebook_op operation;
+};
 __END_DECLS
 
 
index 4ab45a1..c7caa46 100644 (file)
@@ -74,13 +74,19 @@ enum telephony_ps_state {
        TELEPHONY_PS_RESTRICTED_SERVICE
 };
 
-struct dedicated_bearer_info {
-       char profile_id;
+struct qos_parameter {
+       char profile_type;
        char qci;
-       char gbr_dl;
-       char gbr_ul;
-       char max_br_dl;
-       char max_br_ul;
+       unsigned int gbr_dl;
+       unsigned int gbr_ul;
+       unsigned int max_br_dl;
+       unsigned int max_br_ul;
+};
+
+struct dedicated_bearer_info {
+       int secondary_context_id;
+       unsigned char num_dedicated_bearer;
+       struct qos_parameter qos[MAX_NUM_DEDICATED_BEARER];
 };
 
 struct treq_ps_pdp_activate {
@@ -124,7 +130,7 @@ struct tresp_ps_set_pdp_deactivate {
 struct tnoti_ps_call_status {
        int context_id;
        int state;
-       int result;
+       int result; /* specified in 3GPP TS 24.008 10.5.6.6. */
 };
 
 struct tnoti_ps_pdp_ipconfiguration {
@@ -135,6 +141,7 @@ struct tnoti_ps_pdp_ipconfiguration {
        unsigned short field_flag;
 
        char devname[16];
+       unsigned long mtu; 
 
        unsigned char ip_address[IPV4_ADDR_LEN];
        unsigned char primary_dns[IPV4_ADDR_LEN];
@@ -166,8 +173,8 @@ struct tnoti_MIP_status {
 };
 
 struct tnoti_ps_dedicated_bearer_info {
-       unsigned char num_dedicated_bearer;
-       struct dedicated_bearer_info dedicated_bearer [MAX_NUM_DEDICATED_BEARER];
+       int primary_context_id;
+       struct dedicated_bearer_info dedicated_bearer;
 };
 __END_DECLS
 
index 46371fd..250ebc5 100644 (file)
@@ -46,6 +46,7 @@ enum tcore_request_command {
        TREQ_MODEM_GET_VERSION,
        TREQ_MODEM_GET_SN,
        TREQ_MODEM_SET_DUN_PIN_CONTROL,
+       TREQ_MODEM_GET_DEVICE_INFO,
 
        TREQ_CALL = TCORE_REQUEST | TCORE_TYPE_CALL,
        TREQ_CALL_DIAL,
@@ -189,6 +190,7 @@ enum tcore_request_command {
        TREQ_NETWORK_SET_ROAMING_PREFERENCE,
        TREQ_NETWORK_GET_ROAMING_PREFERENCE,
        TREQ_NETWORK_GET_SUBSCRIPTION_INFO,
+       TREQ_NETWORK_SEARCH_ECC_RAT,
 
        TREQ_PS = TCORE_REQUEST | TCORE_TYPE_PS,
        TREQ_PS_SET_PDP_ACTIVATE,
index 88180e9..e42892d 100644 (file)
@@ -41,6 +41,7 @@ enum tcore_response_command {
        TRESP_MODEM_GET_VERSION,
        TRESP_MODEM_GET_SN,
        TRESP_MODEM_SET_DUN_PIN_CONTROL,
+       TRESP_MODEM_GET_DEVICE_INFO,
 
        TRESP_CALL = TCORE_RESPONSE | TCORE_TYPE_CALL,
        TRESP_CALL_DIAL,
@@ -180,6 +181,7 @@ enum tcore_response_command {
        TRESP_NETWORK_SET_ROAMING_PREFERENCE,
        TRESP_NETWORK_GET_ROAMING_PREFERENCE,
        TRESP_NETWORK_GET_SUBSCRIPTION_INFO,
+       TRESP_NETWORK_SEARCH_ECC_RAT,
 
        TRESP_PS = TCORE_RESPONSE | TCORE_TYPE_PS,
        TRESP_PS_SET_PDP_ACTIVATE,
index 8d5e75b..6a65e41 100644 (file)
@@ -28,43 +28,42 @@ typedef void (*UserRequestResponseHook)(UserRequest *ur,
                enum tcore_response_command command,
                unsigned int data_len, const void *data, void *user_data);
 
-UserRequest*  tcore_user_request_new(Communicator *comm, const char *modem_name);
-void          tcore_user_request_free(UserRequest *ur);
+UserRequest *tcore_user_request_new(Communicator *comm, const char *modem_name);
+void tcore_user_request_free(UserRequest *ur);
 
-UserRequest*  tcore_user_request_ref(UserRequest *ur);
-void          tcore_user_request_unref(UserRequest *ur);
+UserRequest *tcore_user_request_ref(UserRequest *ur);
+void tcore_user_request_unref(UserRequest *ur);
 
-TReturn       tcore_user_request_set_free_hook(UserRequest *ur,
+TReturn tcore_user_request_set_free_hook(UserRequest *ur,
                   UserRequestFreeHook free_hook);
-TReturn       tcore_user_request_set_response_hook(UserRequest *ur,
+TReturn tcore_user_request_set_response_hook(UserRequest *ur,
                   UserRequestResponseHook resp_hook, void *user_data);
 
-Communicatortcore_user_request_ref_communicator(UserRequest *ur);
-char*         tcore_user_request_get_modem_name(UserRequest *ur);
+Communicator *tcore_user_request_ref_communicator(UserRequest *ur);
+char *tcore_user_request_get_modem_name(UserRequest *ur);
 
 TReturn tcore_user_request_set_user_info(UserRequest *ur, void *user_info);
 void *tcore_user_request_ref_user_info(UserRequest *ur);
 
-TReturn       tcore_user_request_send_response(UserRequest *ur,
-                  enum tcore_response_command command,
-                  unsigned int data_len, const void *data);
+TReturn tcore_user_request_send_response(UserRequest *ur,
+       enum tcore_response_command command,
+       unsigned int data_len, const void *data);
 
-TReturn       tcore_user_request_set_command(UserRequest *ur,
-                  enum tcore_request_command command);
+TReturn tcore_user_request_set_command(UserRequest *ur,
+       enum tcore_request_command command);
 
-enum tcore_request_command
-              tcore_user_request_get_command(UserRequest *ur);
+enum tcore_request_command tcore_user_request_get_command(UserRequest *ur);
 
-TReturn       tcore_user_request_set_data(UserRequest *ur,
-                  unsigned int data_len, const void *data);
-const void*   tcore_user_request_ref_data(UserRequest *ur,
-                  unsigned int *data_len);
+TReturn tcore_user_request_set_data(UserRequest *ur,
+       unsigned int data_len, const void *data);
+const void *tcore_user_request_ref_data(UserRequest *ur,
+       unsigned int *data_len);
 
-TReturn       tcore_user_request_set_metainfo(UserRequest *ur,
-                  unsigned int metainfo_len, const void *metainfo);
-const void*   tcore_user_request_ref_metainfo(UserRequest *ur,
-                  unsigned int *metainfo_len);
+TReturn tcore_user_request_set_metainfo(UserRequest *ur,
+       unsigned int metainfo_len, const void *metainfo);
+const void *tcore_user_request_ref_metainfo(UserRequest *ur,
+       unsigned int *metainfo_len);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_USER_REQUEST_H__ */
index 0c298da..553e76d 100644 (file)
 
 __BEGIN_DECLS
 
-#define CONVERT_HEXCHAR_TO_INT(h, i) if ((h) >= '0' && (h) <= '9') (i) = (h) - '0'; \
-       else if ((h) >= 'A' && (h) <= 'F') (i) = (h) - 'A' + 10; \
-       else if ((h) >= 'a' && (h) <= 'f') (i) = (h) - 'a' + 10; \
-       else (i) = 0;
+#define CONVERT_HEXCHAR_TO_INT(h, i) do { \
+       if ((h) >= '0' && (h) <= '9') \
+               (i) = (h) - '0'; \
+       else if ((h) >= 'A' && (h) <= 'F') \
+               (i) = (h) - 'A' + 10; \
+       else if ((h) >= 'a' && (h) <= 'f') \
+               (i) = (h) - 'a' + 10; \
+       else \
+               (i) = 0; \
+} while (0)
 
 enum tcore_util_marshal_data_type {
        TCORE_UTIL_MARSHAL_DATA_CHAR_TYPE = G_TYPE_CHAR,
@@ -54,54 +60,56 @@ enum tcore_dcs_type {
        TCORE_DCS_TYPE_UNSPECIFIED = 0x0F,
 };
 
-TReturn     tcore_util_netif_up(const char *name);
-TReturn     tcore_util_netif_down(const char *name);
-TReturn     tcore_util_netif_set(const char *name, const char *ipaddr,
-                const char *gateway, const char *netmask);
-TReturn     tcore_util_reset_ipv4_socket(const char *name, const char *ipaddr);
+TReturn tcore_util_netif_up(const char *name);
+TReturn tcore_util_netif_down(const char *name);
+TReturn tcore_util_netif_set(const char *name,
+       const char *ipaddr, const char *gateway, const char *netmask);
+TReturn tcore_util_netif_set_arp(const char *name, gboolean disable);
+TReturn tcore_util_reset_ipv4_socket(const char *name, const char *ipaddr);
 TReturn tcore_util_netif_set_mtu(const char *name, unsigned int mtu);
 
-char*       tcore_util_get_string_by_ip4type(union tcore_ip4_type ip);
-char*       tcore_util_get_string_by_ip6type(unsigned char ipv6_addr_type[IPV6_ADDR_LEN]);
+char *tcore_util_get_string_by_ip4type(union tcore_ip4_type ip);
+char *tcore_util_get_string_by_ip6type(unsigned char ipv6_addr_type[IPV6_ADDR_LEN]);
 
-GHashTabletcore_util_marshal_create();
-void        tcore_util_marshal_destory(GHashTable *ht);
+GHashTable *tcore_util_marshal_create();
+void tcore_util_marshal_destory(GHashTable *ht);
 
-GHashTabletcore_util_marshal_deserialize_string(const gchar *serialized_string);
-gchar*      tcore_util_marshal_serialize(GHashTable *ht);
+GHashTable *tcore_util_marshal_deserialize_string(const gchar *serialized_string);
+gchar *tcore_util_marshal_serialize(GHashTable *ht);
 
-gboolean    tcore_util_marshal_add_data(GHashTable *ht, const gchar *key,
-                const void *data, enum tcore_util_marshal_data_type type);
-gboolean    tcore_util_marshal_get_data(GHashTable *ht, const gchar *key,
-                void **data, enum tcore_util_marshal_data_type type);
+gboolean tcore_util_marshal_add_data(GHashTable *ht, const gchar *key,
+       const void *data, enum tcore_util_marshal_data_type type);
+gboolean tcore_util_marshal_get_data(GHashTable *ht, const gchar *key,
+       void **data, enum tcore_util_marshal_data_type type);
 
-gint        tcore_util_marshal_get_int(GHashTable *ht, const gchar *key);
-gchar*      tcore_util_marshal_get_string(GHashTable *ht, const gchar *key);
-GHashTabletcore_util_marshal_get_object(GHashTable *ht, const gchar *key);
+gint tcore_util_marshal_get_int(GHashTable *ht, const gchar *key);
+gchar *tcore_util_marshal_get_string(GHashTable *ht, const gchar *key);
+GHashTable *tcore_util_marshal_get_object(GHashTable *ht, const gchar *key);
 
-enum tcore_dcs_type
-            tcore_util_get_cbs_coding_scheme(unsigned char encode);
+enum tcore_dcs_type tcore_util_get_cbs_coding_scheme(unsigned char encode);
 
-unsigned char*      tcore_util_decode_hex(const char *src, int len);
-void                tcore_util_hex_dump(const char *pad, int size, const void *data);
+unsigned char *tcore_util_decode_hex(const char *src, int len);
+void tcore_util_hex_dump(const char *pad, int size, const void *data);
 
-unsigned char*         tcore_util_unpack_gsm7bit(const unsigned char *src, unsigned int src_len);
-unsigned char*         tcore_util_pack_gsm7bit(const unsigned char *src, unsigned int src_len);
-char*                          tcore_util_convert_bcd_str_2_ascii_str(const char* src, int src_len);
-char*                          tcore_util_convert_bcd2ascii(const char *src, int src_len, int max_len);
-char*                          tcore_util_convert_digit2ascii(const char* src, int src_len);
-gboolean                       tcore_util_convert_utf8_to_gsm(unsigned char *dest, int *dest_len, unsigned char* src, int src_len);
-gboolean                       tcore_util_convert_utf8_to_ucs2(char **dest, int *dest_len, unsigned char *src, int src_len);
-gboolean                       tcore_util_convert_string_to_utf8(unsigned char *dest, unsigned short *dest_len,
-                                               enum alphabet_format dcs, const unsigned char *src, unsigned short src_len);
-gboolean                       tcore_util_convert_ascii_to_utf8(unsigned char **dest, int *dest_len, unsigned char *src, int src_len);
-int                                    tcore_util_convert_ucs2_to_utf8(char *out, unsigned short *out_len, char *in, unsigned short in_len);
+unsigned char *tcore_util_unpack_gsm7bit(const unsigned char *src, unsigned int src_len);
+unsigned char *tcore_util_pack_gsm7bit(const unsigned char *src, unsigned int src_len);
+char *tcore_util_convert_bcd_str_2_ascii_str(const char* src, int src_len);
+char *tcore_util_convert_bcd2ascii(const char *src, int src_len, int max_len);
+char *tcore_util_convert_digit2ascii(const char* src, int src_len);
+gboolean tcore_util_convert_utf8_to_gsm(unsigned char *dest, int *dest_len, unsigned char* src, int src_len);
+gboolean tcore_util_convert_utf8_to_ucs2(char **dest, int *dest_len, unsigned char *src, int src_len);
+gboolean tcore_util_convert_string_to_utf8(unsigned char *dest, unsigned short *dest_len,
+       enum alphabet_format dcs, const unsigned char *src, unsigned short src_len);
+gboolean tcore_util_convert_ascii_to_utf8(unsigned char **dest, int *dest_len, unsigned char *src, int src_len);
+int tcore_util_convert_ucs2_to_utf8(char *out, unsigned short *out_len, char *in, unsigned short in_len);
+char *tcore_util_convert_hexstring_to_bytes(char *s);
 
-void                           tcore_util_swap_byte_order(unsigned char* dest, const unsigned char* src, int src_len);
+void tcore_util_swap_byte_order(unsigned char* dest, const unsigned char* src, int src_len);
 
-char*          tcore_util_get_version(void);
-void           tcore_util_set_log(gboolean enable);
+char *tcore_util_get_version(void);
+void tcore_util_set_log(gboolean enable);
+gboolean tcore_util_is_country_NA(char *plmn);
 
 __END_DECLS
 
-#endif
+#endif /* __TCORE_UTIL_H__ */
old mode 100755 (executable)
new mode 100644 (file)
index 8b7ec53..85146e3
@@ -1,11 +1,11 @@
 %define major 0
 %define minor 2
-%define patchlevel 63
+%define patchlevel 89
 
 Name:           libtcore
 Version:        %{major}.%{minor}.%{patchlevel}
 Release:        1
-License:        Apache
+License:        Apache-2.0
 Summary:        Telephony-core library
 Group:          System/Libraries
 Source0:        libtcore-%{version}.tar.gz
@@ -50,14 +50,14 @@ mkdir -p %{buildroot}%{_datadir}/license
 
 %files
 %manifest libtcore.manifest
-%defattr(-,root,root,-)
+%defattr(644,system,system,-)
 #%doc COPYING
 %{_libdir}/libtcore*
 #%{_bindir}/*
 %{_datadir}/license/libtcore
 
 %files devel
-%defattr(-,root,root,-)
+%defattr(644,system,system,-)
 %{_includedir}/*
 %{_libdir}/pkgconfig/tcore.pc
 
index f91d5c5..c21c305 100644 (file)
--- a/src/at.c
+++ b/src/at.c
 #include "at.h"
 #include "core_object.h"
 
-#define NUM_ELEMS(x) (sizeof(x)/sizeof(x[0]))
-#define MODE_HEX       0
-#define MODE_BIN       1
+#define NUM_ELEMS(x)           (sizeof(x)/sizeof(x[0]))
+#define MODE_HEX               0
+#define MODE_BIN               1
 
-#define CR '\r'
-#define LF '\n'
+#define CR                     '\r'
+#define LF                     '\n'
 
-#define MAX_AT_RESPONSE    255  // for testing
-//#define MAX_AT_RESPONSE    8191
-
-typedef gboolean (*rfs_hook_cb) (const gchar *data);
+/* Response buffer would grow on requirement */
+#define MAX_AT_RESPONSE        255
 
 struct tcore_at_type {
        TcoreHal *hal;
@@ -63,7 +61,7 @@ struct tcore_at_type {
        struct _notification *pdu_noti;
        GSList *pdu_lines;
 
-       rfs_hook_cb rfs_hook;
+       RfsHookCb rfs_hook;
        gboolean data_mode;
 };
 
@@ -82,7 +80,7 @@ struct _notification {
  * See 27.007 annex B
  */
 static const char *list_final_responses_success[] = {
-    "OK",
+       "OK",
        "CONNECT",
 };
 
@@ -91,31 +89,37 @@ static const char *list_final_responses_success[] = {
  * See 27.007 annex B
  */
 static const char *list_final_responses_error[] = {
-    "ERROR",
-    "+CMS ERROR:",
-    "+CME ERROR:",
-    "NO ANSWER",
-    "NO DIALTONE",
-    "NO CARRIER",
+       "ERROR",
+       "+CMS ERROR:",
+       "+CME ERROR:",
+       "NO ANSWER",
+       "NO DIALTONE",
+       "NO CARRIER",
+       "COMMAND NOT SUPPORT",  /* For Huawei Cellular dongle */
 };
 
-static int _check_final_response(const char *line)
+/**
+ * 'typedef' to define final response received
+ */
+typedef enum {
+       TCORE_AT_FINAL_RESPONSE_UNKNOWN = 0,
+       TCORE_AT_FINAL_RESPONSE_SUCCESS,
+       TCORE_AT_FINAL_RESPONSE_FAILURE,
+} tcore_at_final_response;
+
+static tcore_at_final_response _check_final_response(const char *line)
 {
        unsigned int i;
 
-       for (i = 0; i < NUM_ELEMS(list_final_responses_success); i++) {
-               if (g_str_has_prefix(line, list_final_responses_success[i])) {
-                       return 1;
-               }
-       }
+       for (i = 0; i < NUM_ELEMS(list_final_responses_success); i++)
+               if (g_str_has_prefix(line, list_final_responses_success[i]))
+                       return TCORE_AT_FINAL_RESPONSE_SUCCESS;
 
-       for (i = 0; i < NUM_ELEMS(list_final_responses_error); i++) {
-               if (g_str_has_prefix(line, list_final_responses_error[i])) {
-                       return 2;
-               }
-       }
+       for (i = 0; i < NUM_ELEMS(list_final_responses_error); i++)
+               if (g_str_has_prefix(line, list_final_responses_error[i]))
+                       return TCORE_AT_FINAL_RESPONSE_FAILURE;
 
-       return 0;
+       return TCORE_AT_FINAL_RESPONSE_UNKNOWN;
 }
 
 
@@ -142,11 +146,11 @@ static char *_find_next_EOL(char *cur)
        return *cur == '\0' ? NULL : cur;
 }
 
-static struct tcore_at_response_response_new()
+static struct tcore_at_response *_response_new()
 {
        struct tcore_at_response *resp;
 
-       resp = calloc(1, sizeof(struct tcore_at_response));
+       resp = g_try_malloc0(sizeof(struct tcore_at_response));
        if (!resp)
                return NULL;
 
@@ -158,14 +162,13 @@ static void _response_free(struct tcore_at_response *resp)
        if (!resp)
                return;
 
-       if (resp->lines) {
+       if (resp->lines)
                g_slist_free_full(resp->lines, g_free);
-       }
 
        if (resp->final_response)
-               free(resp->final_response);
+               g_free(resp->final_response);
 
-       free(resp);
+       g_free(resp);
 }
 
 
@@ -177,7 +180,7 @@ static void _response_add(struct tcore_at_response *resp,
 
        dbg("current lines = %d", g_slist_length(resp->lines));
 
-       resp->lines = g_slist_append(resp->lines, strdup(line));
+       resp->lines = g_slist_append(resp->lines, g_strdup(line));
 }
 
 static void _emit_pending_response(TcoreAT *at)
@@ -188,9 +191,8 @@ static void _emit_pending_response(TcoreAT *at)
                return;
 
        p = tcore_queue_pop(tcore_hal_ref_queue(at->hal));
-       if (!p) {
-               dbg("no pending");
-       }
+       if (!p)
+               info("NO pending request!");
 
        tcore_pending_emit_response_callback(p, sizeof(TcoreATResponse), at->resp);
        tcore_user_request_unref(tcore_pending_ref_user_request(p));
@@ -216,7 +218,9 @@ static void _emit_unsolicited_message(TcoreAT *at, const char *line)
        if (!at || !line)
                return;
 
-       dbg("at->pdu_status  %d line 0x%x at->data_mode %d", at->pdu_status, line, at->data_mode);
+       dbg("pdu_status:  [%s] data_mode: [%s]",
+               (at->pdu_status ? "TRUE" : "FALSE"),
+               (at->data_mode == MODE_BIN ? "Binary" : "Hex"));
        if (at->pdu_status == FALSE) {
                g_hash_table_iter_init(&iter, at->unsolicited_table);
 
@@ -235,6 +239,7 @@ static void _emit_unsolicited_message(TcoreAT *at, const char *line)
                        at->pdu_status = TRUE;
                        at->pdu_noti = noti;
                        at->pdu_lines = g_slist_append(NULL, g_strdup(line));
+
                        dbg("PDU mode");
                        return;
                }
@@ -242,22 +247,20 @@ static void _emit_unsolicited_message(TcoreAT *at, const char *line)
                if (at->data_mode == MODE_BIN) {
                        at->pdu_lines = g_slist_append(at->pdu_lines, (gpointer)line);
                        data = at->pdu_lines;
-               } else {
+               } else
                        data = g_slist_append(NULL, g_strdup(line));
-               }
-       }
-       else {
+       } else {
                noti = at->pdu_noti;
                at->pdu_status = FALSE;
                at->pdu_noti = NULL;
 
                if (at->data_mode == MODE_BIN) {
                        dbg("Binary mode");
+
                        at->pdu_lines = g_slist_append(at->pdu_lines, (gpointer)line);
                        dbg("at->pdu_lines: 0x%x", at->pdu_lines);
-               } else {
+               } else
                        at->pdu_lines = g_slist_append(at->pdu_lines, g_strdup(line));
-               }
 
                data = at->pdu_lines;
        }
@@ -280,16 +283,13 @@ static void _emit_unsolicited_message(TcoreAT *at, const char *line)
                p = p->next;
        }
 
-       dbg(" Free the list");
-       if (at->data_mode != MODE_BIN) {
+       if (at->data_mode != MODE_BIN)
                g_slist_free_full(data, g_free);
-       }
+
        at->pdu_lines = NULL;
 
-       if (g_slist_length(noti->callbacks) == 0) {
+       if (g_slist_length(noti->callbacks) == 0)
                g_hash_table_remove(at->unsolicited_table, key);
-       }
-       dbg("exit");
 }
 
 static void _free_noti_list(void *data)
@@ -302,60 +302,27 @@ static void _free_noti_list(void *data)
        g_slist_free_full(noti->callbacks, g_free);
 }
 
-#if 0
-static void _msgat(const char *prefix, const char *str)
-{
-       unsigned int i;
-       char buf[8192] = {0,};
-       char *pos;
-
-       if (!str) {
-               msg("str is NULL");
-               return;
-       }
-
-       if (strlen(str) > 4096) {
-               msg("%s[%s]", prefix, str);
-               return;
-       }
-
-       pos = buf;
-       for (i = 0; i < strlen(str); i++) {
-               if (str[i] == '\r') {
-                       strncpy(pos, "<CR>", 4);
-                       pos += 4;
-               }
-               else if (str[i] == '\n') {
-                       strncpy(pos, "<LF>", 4);
-                       pos += 4;
-               }
-               else {
-                       *pos = str[i];
-                       pos++;
-               }
-
-       }
-
-       msg("%s[%s]", prefix, buf);
-}
-#endif
-
 TcoreAT *tcore_at_new(TcoreHal *hal)
 {
        TcoreAT *at;
 
-       at = calloc(1, sizeof(struct tcore_at_type));
+       at = g_try_malloc0(sizeof(struct tcore_at_type));
        if (!at)
                return NULL;
 
        at->hal = hal;
        at->buf_size = MAX_AT_RESPONSE;
-       at->buf = calloc(1, at->buf_size + 1);
+       at->buf = g_try_malloc0(at->buf_size + 1);
+       if (at->buf == NULL) {
+               g_free(at);
+               return NULL;
+       }
+
        at->buf_read_pos = at->buf;
        at->buf_write_pos = at->buf;
        at->data_mode = MODE_HEX;
        at->unsolicited_table = g_hash_table_new_full(g_str_hash, g_str_equal,
-                       g_free, _free_noti_list );
+                       g_free, _free_noti_list);
 
        return at;
 }
@@ -366,12 +333,12 @@ void tcore_at_free(TcoreAT *at)
                return;
 
        if (at->buf)
-               free(at->buf);
+               g_free(at->buf);
 
        if (at->unsolicited_table)
                g_hash_table_destroy(at->unsolicited_table);
 
-       free(at);
+       g_free(at);
 }
 
 TReturn tcore_at_remove_notification_full(TcoreAT *at, const char *prefix,
@@ -395,7 +362,7 @@ TReturn tcore_at_remove_notification_full(TcoreAT *at, const char *prefix,
                return TCORE_RETURN_SUCCESS;
 
        p = noti->callbacks;
-       for(; p; p = p->next) {
+       for (; p; p = p->next) {
                item = p->data;
                if (!item)
                        continue;
@@ -467,12 +434,12 @@ TReturn tcore_at_set_request(TcoreAT *at, TcoreATRequest *req, gboolean send)
        char next;
 
        if (!at || !req) {
-               dbg("Invalid data");
+               err("Invalid data");
                return TCORE_RETURN_EINVAL;
        }
 
        if (!req->cmd) {
-               dbg("Invalid cmd");
+               err("Invalid cmd");
                return TCORE_RETURN_EINVAL;
        }
 
@@ -489,19 +456,22 @@ TReturn tcore_at_set_request(TcoreAT *at, TcoreATRequest *req, gboolean send)
 #endif
 
        end = strchr(at->req->cmd, CR);
-       next = *(end + 1);
-       if (next == '\0') {
-               return tcore_hal_send_data(at->hal, strlen(req->cmd), req->cmd);
-       }
+       if (end) {
+               next = *(end + 1);
+               if (next == '\0')
+                       return tcore_hal_send_data(at->hal, strlen(req->cmd), req->cmd);
 
-       at->req->next_send_pos = end + 1;
-       dbg("backup data = [%c] next data = [%s]", next, at->req->next_send_pos);
+               at->req->next_send_pos = end + 1;
+               dbg("backup data = [%c] next data = [%s]", next, at->req->next_send_pos);
 
-       *(end+1) = '\0';
-       ret = tcore_hal_send_data(at->hal, strlen(req->cmd), req->cmd);
-       *(end+1) = next;
+               *(end+1) = '\0';
+               ret = tcore_hal_send_data(at->hal, strlen(req->cmd), req->cmd);
+               *(end+1) = next;
 
-       return ret;
+               return ret;
+       }
+
+       return TCORE_RETURN_EINVAL;
 }
 
 TcoreATRequest *tcore_at_get_request(TcoreAT *at)
@@ -536,14 +506,17 @@ TReturn tcore_at_buf_write(TcoreAT *at, unsigned int data_len, const char *data)
 
        if (write_pos + data_len >= at->buf_size) {
                /* shift left (trim completed data) */
-               dbg("shift left buffer (request data_len = %d)", data_len);
-               dbg("before read_pos=buf+%d, write_pos=buf+%d", read_pos, write_pos);
                memmove(at->buf, at->buf_read_pos, at->buf_size - read_pos);
                at->buf_read_pos = at->buf;
                at->buf_write_pos = at->buf + write_pos - read_pos;
-               dbg("after  read_pos=buf+%d, write_pos=buf+%d",
-                               at->buf_read_pos - at->buf,
-                               at->buf_write_pos - at->buf);
+
+               dbg("Shift [Left] - Requested len: %d bytes - " \
+                       "before (read_pos: %d write_pos: %d) " \
+                       "after (read_pos: %d write_pos: %d)",
+                       data_len, read_pos, write_pos,
+                       (at->buf_read_pos - at->buf),
+                       (at->buf_write_pos - at->buf));
+
                memset(at->buf_write_pos, 0, at->buf_size - (at->buf_write_pos - at->buf));
        }
 
@@ -559,16 +532,20 @@ TReturn tcore_at_buf_write(TcoreAT *at, unsigned int data_len, const char *data)
                at->buf_write_pos = at->buf + write_pos;
                memset(at->buf_write_pos, 0, at->buf_size - (at->buf_write_pos - at->buf));
 
-               dbg("resize buffer to %d", at->buf_size);
+               dbg("Resize buffer to '%d' bytes", at->buf_size);
        }
 
+       /*
+        * Copy Data to write buffer and adjust write buffer pointer
+        */
        memcpy(at->buf_write_pos, data, data_len);
-
        at->buf_write_pos += data_len;
+
        return TCORE_RETURN_SUCCESS;
 }
 
-TcoreATRequest* tcore_at_request_new(const char *cmd, const char *prefix, enum tcore_at_command_type type)
+TcoreATRequest *tcore_at_request_new(const char *cmd,
+       const char *prefix, enum tcore_at_command_type type)
 {
        TcoreATRequest *req;
 
@@ -578,7 +555,7 @@ TcoreATRequest* tcore_at_request_new(const char *cmd, const char *prefix, enum t
        if (strlen(cmd) < 1)
                return NULL;
 
-       req = calloc(1, sizeof(struct tcore_at_request));
+       req = g_try_malloc0(sizeof(struct tcore_at_request));
        if (!req)
                return NULL;
 
@@ -588,7 +565,7 @@ TcoreATRequest* tcore_at_request_new(const char *cmd, const char *prefix, enum t
                req->cmd = g_strdup_printf("%s%c", cmd, 26);
 
        if (prefix)
-               req->prefix = strdup(prefix);
+               req->prefix = g_strdup(prefix);
 
        req->type = type;
 
@@ -601,15 +578,16 @@ void tcore_at_request_free(TcoreATRequest *req)
                return;
 
        if (req->cmd)
-               free(req->cmd);
+               g_free(req->cmd);
 
        if (req->prefix)
-               free(req->prefix);
+               g_free(req->prefix);
 
-       free(req);
+       g_free(req);
 }
 
-void tcore_at_response_free(TcoreATResponse *rsp){
+void tcore_at_response_free(TcoreATResponse *rsp)
+{
        _response_free(rsp);
 }
 
@@ -617,15 +595,20 @@ void tcore_at_response_free(TcoreATResponse *rsp){
 static int __sum_4_bytes(const char *posn)
 {
        int sum = 0;
+
        sum = sum | (*(posn+3)) << 24;
        sum = sum | (*(posn+2)) << 16;
        sum = sum | (*(posn+1)) << 8;
-       sum = sum | *posn ;
+       sum = sum | *posn;
+
        return sum;
 }
 
-/* Function to process binary data received as part of XDRV Indication */
-void tcore_at_process_binary_data(TcoreAT *at, char *position, int data_len)
+/*
+ * Function to process binary data received as part of XDRV Indication
+ */
+void tcore_at_process_binary_data(TcoreAT *at,
+       char *position, int data_len)
 {
 
        #define NVM_PAYLOAD_LENGTH_0                    52
@@ -639,7 +622,9 @@ void tcore_at_process_binary_data(TcoreAT *at, char *position, int data_len)
        m_length_1 = __sum_4_bytes(&position[NVM_PAYLOAD_LENGTH_1]);
        data_len_final = data_len_final + data_len;
 
-       dbg("m_length_0 = %d , m_length_1 = %d, data_len_final = %d actual_buffer_size: %d", m_length_0, m_length_1, data_len_final, actual_buffer_size);
+       dbg("m_length_0 = %d , m_length_1 = %d, " \
+               "data_len_final = %d actual_buffer_size: %d",
+               m_length_0, m_length_1, data_len_final, actual_buffer_size);
        if (actual_buffer_size == 0) {
                actual_buffer_size = data_len + m_length_0 + m_length_1;
                dbg("Actual buffer size is %d", actual_buffer_size);
@@ -659,7 +644,7 @@ gboolean tcore_at_process(TcoreAT *at, unsigned int data_len, const char *data)
 {
        char *pos;
        char *next_pos;
-       int ret;
+       gboolean is_resp_processed = FALSE;
 
        if (!at || !data)
                return FALSE;
@@ -667,7 +652,6 @@ gboolean tcore_at_process(TcoreAT *at, unsigned int data_len, const char *data)
        tcore_at_buf_write(at, data_len, data);
 
        pos = at->buf_read_pos;
-       dbg("On entry at->buf_read_pos: 0x%x", at->buf_read_pos);
 
        while (1) {
 
@@ -676,48 +660,61 @@ gboolean tcore_at_process(TcoreAT *at, unsigned int data_len, const char *data)
 
                next_pos = _find_next_EOL(pos);
                if (!next_pos) {
-                       dbg("Data could be in Binary mode !!");
                        if (at->rfs_hook) {
-                               if (TRUE == at->rfs_hook(pos)){
+                               dbg("RFS hook set - Not Binary data!");
+                               if (TRUE == at->rfs_hook(pos)) {
                                        at->data_mode = MODE_BIN;
                                        tcore_at_process_binary_data(at, pos, data_len);
                                }
-                               dbg("Not Binary data");
-                       }else
-                               dbg("Rfs hook is not set !!");
+
+                       }
+
                        break;
                }
 
                if (pos != next_pos)
                        *next_pos = '\0';
 
-               //dbg("complete line found.");
-               dbg("line = [%s]", pos);
+               dbg("Received 'AT' data: [%s]", pos);
 
-               // check request
+               /* Validate Request */
                if (!at->req) {
+                       err("at->req is NULL");
                        _emit_unsolicited_message(at, pos);
-               }
-               else {
+               } else {
+                       tcore_at_final_response ret;
                        if (g_strcmp0(pos, "> ") == 0) {
                                if (at->req->next_send_pos) {
-                                       dbg("send next: [%s]", at->req->next_send_pos);
-                                       tcore_hal_send_data(at->hal, strlen(at->req->next_send_pos), at->req->next_send_pos);
-                                       pos += 3;       /* Including NULL character */
+                                       dbg("Send next: [%s]", at->req->next_send_pos);
+                                       tcore_hal_send_data(at->hal,
+                                               strlen(at->req->next_send_pos), at->req->next_send_pos);
+
+                                       /* Including NULL character */
+                                       pos += 3;
                                        at->buf_read_pos = pos;
+
                                        break;
                                }
                        }
 
                        if (!at->resp) {
                                at->resp = _response_new();
+                               if (!at->resp) {
+                                       err("Failed to create response!");
+                                       return FALSE;
+                               }
                        }
 
                        ret = _check_final_response(pos);
-                       if (ret) {
-                               if (ret == 1)
+                       if (ret != TCORE_AT_FINAL_RESPONSE_UNKNOWN) {
+                               /*
+                                * Valid Response
+                                *
+                                * Success OR Failure
+                                */
+                               if (ret == TCORE_AT_FINAL_RESPONSE_SUCCESS) {
                                        at->resp->success = TRUE;
-                               else {
+                               else {
                                        gchar *str_escape = NULL;
                                        gchar str_secure[12] = {'\0'};
 
@@ -739,97 +736,90 @@ gboolean tcore_at_process(TcoreAT *at, unsigned int data_len, const char *data)
                                        at->resp->success = FALSE;
                                }
 
-                               at->resp->final_response = strdup(pos);
+                               at->resp->final_response = g_strdup(pos);
 
                                _emit_pending_response(at);
-                               at->buf_read_pos = next_pos + 1;
-                               return TRUE;
-                       }
-                       else {
-                               switch (at->req->type) {
-                                       case TCORE_AT_NO_RESULT:
-                                               _emit_unsolicited_message(at, pos);
-                                               break;
 
-                                       case TCORE_AT_NUMERIC:
-                                               if (at->resp->lines == NULL && isdigit(pos[0])) {
-                                                       _response_add(at->resp, pos);
-                                               }
-                                               else {
-                                                       _emit_unsolicited_message(at, pos);
-                                               }
+                               is_resp_processed = TRUE;
+                       } else {
+                               /*
+                                * Specific Response type OR Possible notification
+                                */
+                               switch (at->req->type) {
+                               case TCORE_AT_NO_RESULT:
+                                       _emit_unsolicited_message(at, pos);
+                               break;
 
-                                               break;
-
-                                       case TCORE_AT_SINGLELINE:
-                                               if (at->resp->lines == NULL) {
-                                                       if (at->req->prefix) {
-                                                               if (g_str_has_prefix(pos, at->req->prefix)) {
-                                                                       _response_add(at->resp, pos);
-                                                               }
-                                                               else {
-                                                                       _emit_unsolicited_message(at, pos);
-                                                               }
-                                                       }
-                                                       else {
-                                                               _response_add(at->resp, pos);
-                                                       }
-                                               }
-                                               else {
-                                                       _emit_unsolicited_message(at, pos);
-                                               }
-                                               break;
+                               case TCORE_AT_NUMERIC:
+                                       if (at->resp->lines == NULL && isdigit(pos[0]))
+                                               _response_add(at->resp, pos);
+                                       else
+                                               _emit_unsolicited_message(at, pos);
+                               break;
 
-                                       case TCORE_AT_MULTILINE:
+                               case TCORE_AT_SINGLELINE:
+                                       if (at->resp->lines == NULL) {
                                                if (at->req->prefix) {
-                                                       if (g_str_has_prefix(pos, at->req->prefix)) {
+                                                       if (g_str_has_prefix(pos, at->req->prefix))
                                                                _response_add(at->resp, pos);
-                                                       }
-                                                       else {
+                                                       else
                                                                _emit_unsolicited_message(at, pos);
-                                                       }
-                                               }
-                                               else {
+                                               } else {
                                                        _response_add(at->resp, pos);
                                                }
-                                               break;
+                                       } else {
+                                               _emit_unsolicited_message(at, pos);
+                                       }
+                               break;
 
-                                       case TCORE_AT_PDU:
-                                               if (at->req->prefix) {
-                                                       if (g_str_has_prefix(pos, at->req->prefix)) {
-                                                               _response_add(at->resp, pos);
-                                                       }
-                                                       else {
-                                                               if (at->resp->lines != NULL) {
-                                                                       _response_add(at->resp, pos);
-                                                               }
-                                                               else {
-                                                                       _emit_unsolicited_message(at, pos);
-                                                               }
-                                                       }
-                                               }
-                                               else {
+                               case TCORE_AT_MULTILINE:
+                                       if (at->req->prefix) {
+                                               if (g_str_has_prefix(pos, at->req->prefix))
                                                        _response_add(at->resp, pos);
+                                               else
+                                                       _emit_unsolicited_message(at, pos);
+                                       } else {
+                                               _response_add(at->resp, pos);
+                                       }
+                               break;
+
+                               case TCORE_AT_PDU:
+                                       if (at->req->prefix) {
+                                               if (g_str_has_prefix(pos, at->req->prefix)) {
+                                                       _response_add(at->resp, pos);
+                                               } else {
+                                                       if (at->resp->lines != NULL)
+                                                               _response_add(at->resp, pos);
+                                                       else
+                                                               _emit_unsolicited_message(at, pos);
                                                }
-                                               break;
+                                       } else {
+                                               _response_add(at->resp, pos);
+                                       }
+                               break;
 
-                                       default:
-                                               dbg("unknown");
-                                               _emit_unsolicited_message(at, pos);
-                                               break;
+                               default:
+                                       warn("Unknown Request type: %d", (at->req->type));
+                                       _emit_unsolicited_message(at, pos);
+                               break;
                                }
                        }
                }
 
-               //
+               /* Progress 'Read' buffer */
                pos = next_pos + 1;
                at->buf_read_pos = pos;
        }
 
-       return FALSE;
+       if (is_resp_processed == FALSE)
+               return FALSE;
+
+       return TRUE;
 }
 
-TcorePending *tcore_at_pending_new(CoreObject *co, const char *cmd, const char *prefix, enum tcore_at_command_type type, TcorePendingResponseCallback func, void *user_data)
+TcorePending *tcore_at_pending_new(CoreObject *co, const char *cmd,
+       const char *prefix, enum tcore_at_command_type type,
+       TcorePendingResponseCallback func, void *user_data)
 {
        TcorePending *p;
        TcoreATRequest *req;
@@ -880,8 +870,7 @@ GSList *tcore_at_tok_new(const char *line)
                pos = (char *)line;
                if (line[strlen(line)-1] == ')')
                        mark_end = (char *)line + strlen(line) - 1;
-       }
-       else {
+       } else {
                /* normal at message */
                pos = strchr(line, ':');
                if (!pos) {
@@ -893,69 +882,80 @@ GSList *tcore_at_tok_new(const char *line)
        pos++;
 
        /* skip whitespace */
-       while (*pos != '\0' && isspace(*pos)) {
+       while (*pos != '\0' && isspace(*pos))
                pos++;
-       }
 
        begin = pos;
 
        do {
                switch (type) {
                case TYPE_NONE:
-                       if (*pos == '"') {
+                       if (*pos == '"')
                                type = TYPE_STR;
-                       }
-                       else if (*pos == ',') {
+                       else if (*pos == ',')
                                tokens = g_slist_append(tokens, strdup(""));
-                       }
                        else if (*pos == ' ') {
-                               // skip
-                       }
-                       else if (*pos == '(') {
+                               /*
+                                * Skip, no processing for blank space
+                                */
+                       } else if (*pos == '(')
                                type = TYPE_PAREN;
-                       }
-                       else {
+                       else
                                type = TYPE_RAW;
-                       }
+
                        begin = pos;
-                       break;
+               break;
 
                case TYPE_STR:
                        if (*pos == '"') {
                                type = TYPE_STR_FIN;
-                               buf = calloc(1, (pos - begin) + 2);
+                               buf = g_try_malloc0((pos - begin) + 2);
+                               if (!buf) {
+                                       g_slist_free_full(tokens, g_free);
+                                       return NULL;
+                               }
+
                                memcpy(buf, begin, pos - begin + 1);
                                tokens = g_slist_append(tokens, buf);
                        }
-                       break;
+               break;
 
                case TYPE_PAREN:
                        if (*pos == ')') {
                                type = TYPE_PAREN_FIN;
-                               buf = calloc(1, (pos - begin) + 2);
+                               buf = g_try_malloc0((pos - begin) + 2);
+                               if (!buf) {
+                                       g_slist_free_full(tokens, g_free);
+                                       return NULL;
+                               }
                                memcpy(buf, begin, pos - begin + 1);
                                tokens = g_slist_append(tokens, buf);
                        }
-                       break;
+               break;
 
                case TYPE_RAW:
                        if (*pos == ',' || *pos == '\0') {
                                type = TYPE_NONE;
-                               buf = calloc(1, (pos - begin) + 1);
+                               buf = g_try_malloc0((pos - begin) + 1);
+                               if (!buf) {
+                                       g_slist_free_full(tokens, g_free);
+                                       return NULL;
+                               }
+
                                memcpy(buf, begin, pos - begin);
                                tokens = g_slist_append(tokens, buf);
                        }
-                       break;
+               break;
 
                case TYPE_STR_FIN:
                case TYPE_PAREN_FIN:
-                       if (*pos == ',') {
+                       if (*pos == ',')
                                type = TYPE_NONE;
-                       }
-                       break;
+               break;
+
                default:
                        err("invalid string type");
-                       break;
+               break;
                }
 
                if (*pos == '\0' || pos == mark_end)
@@ -965,7 +965,12 @@ GSList *tcore_at_tok_new(const char *line)
        } while (1);
 
        if (type == TYPE_RAW) {
-               buf = calloc(1, (pos - begin) + 1);
+               buf = g_try_malloc0((pos - begin) + 1);
+               if (!buf) {
+                       g_slist_free_full(tokens, g_free);
+                       return NULL;
+               }
+
                memcpy(buf, begin, pos - begin);
                tokens = g_slist_append(tokens, buf);
        }
@@ -995,23 +1000,22 @@ char *tcore_at_tok_extract(const char *src)
        last = (char *)src + strlen(src) - 1;
 
        switch (*src) {
-               case '(':
-                       if (*last == ')') {
-                               dest = g_strdup(src + 1);
-                               dest[strlen(dest) - 1] = '\0';
-                       }
-                       break;
+       case '(':
+               if (*last == ')') {
+                       dest = g_strdup(src + 1);
+                       dest[strlen(dest) - 1] = '\0';
+               }
+       break;
 
-               case '"':
-                       if (*last == '"') {
-                               dest = g_strdup(src + 1);
-                               dest[strlen(dest) - 1] = '\0';
-                       }
-                       break;
+       case '"':
+               if (*last == '"') {
+                       dest = g_strdup(src + 1);
+                       dest[strlen(dest) - 1] = '\0';
+               }
+       break;
 
-               default:
-                       return g_strdup(src);
-                       break;
+       default:
+               return g_strdup(src);
        }
 
        return dest;
@@ -1035,9 +1039,10 @@ gboolean tcore_at_add_hook(TcoreHal *hal, void *hook_func)
 
        if (at != NULL) {
                dbg("Setting the rfs hook callback function");
-               at->rfs_hook = (rfs_hook_cb) hook_func;
+               at->rfs_hook = (RfsHookCb)hook_func;
                return TRUE;
        }
+
        dbg("AT is NULL !!!");
        return FALSE;
 }
@@ -1048,23 +1053,19 @@ void tcore_free_pending_timeout_at_request(TcoreAT *at)
                return;
 
        tcore_at_request_free(at->req);
-       tcore_at_response_free(at->resp);
        at->req = NULL;
+
+       tcore_at_response_free(at->resp);
        at->resp = NULL;
 }
 
 TReturn tcore_prepare_and_send_at_request(CoreObject *co,
-                                                                                               const char *at_cmd,
-                                                                                               const char *at_cmd_prefix,
-                                                                                               enum tcore_at_command_type at_cmd_type,
-                                                                                               UserRequest *ur,
-                                                                                               TcorePendingResponseCallback resp_cb,
-                                                                                               void *resp_cb_data,
-                                                                                               TcorePendingSendCallback send_cb,
-                                                                                               void *send_cb_data,
-                                                                                               unsigned int timeout,
-                                                                                               TcorePendingTimeoutCallback timeout_cb,
-                                                                                               void *timeout_cb_data)
+       const char *at_cmd, const char *at_cmd_prefix,
+       enum tcore_at_command_type at_cmd_type,
+       UserRequest *ur,
+       TcorePendingResponseCallback resp_cb, void *resp_cb_data,
+       TcorePendingSendCallback send_cb, void *send_cb_data,
+       unsigned int timeout, TcorePendingTimeoutCallback timeout_cb, void *timeout_cb_data)
 {
        TcorePending *pending = NULL;
        TcoreATRequest *req = NULL;
@@ -1073,7 +1074,7 @@ TReturn tcore_prepare_and_send_at_request(CoreObject *co,
 
        hal = tcore_object_get_hal(co);
        if (!hal) {
-               dbg("HAL is NULL");
+               err("HAL is NULL");
                return ret;
        }
        dbg("hal: [0x%x]", hal);
@@ -1081,19 +1082,21 @@ TReturn tcore_prepare_and_send_at_request(CoreObject *co,
        /* Create Pending Request */
        pending = tcore_pending_new(co, 0);
        if (!pending) {
-               dbg("Pending is NULL");
+               err("Pending is NULL");
                return ret;
        }
 
        /* Create AT-Command Request */
        req = tcore_at_request_new(at_cmd, at_cmd_prefix, at_cmd_type);
        if (req == NULL) {
-               dbg("Request is NULL");
+               err("Request is NULL");
+
                tcore_pending_free(pending);
                return ret;
        }
+
        dbg("AT Command: [%s], Prefix(if any): [%s], AT-Command length: [%d]",
-                                                               req->cmd, req->prefix, strlen(req->cmd));
+               req->cmd, req->prefix, strlen(req->cmd));
 
        tcore_pending_set_request_data(pending, 0, req);
        tcore_pending_set_response_callback(pending, resp_cb, resp_cb_data);
@@ -1103,7 +1106,12 @@ TReturn tcore_prepare_and_send_at_request(CoreObject *co,
        tcore_pending_link_user_request(pending, ur);
 
        ret = tcore_hal_send_request(hal, pending);
-       dbg("ret: [0x%x]", ret);
+       if (ret != TCORE_RETURN_SUCCESS) {
+               err("Failed to send AT-Request!");
+
+               tcore_at_request_free(req);
+               tcore_pending_free(pending);
+       }
+
        return ret;
 }
-
index 7151ad5..f554ea7 100644 (file)
@@ -25,6 +25,7 @@
 #include <glib.h>
 
 #include "tcore.h"
+#include "internal/tcore_types.h"
 #include "plugin.h"
 #include "queue.h"
 #include "user_request.h"
 
 #define MAX_CALL_OBJECTS               6
 
-#define _check_null( name, value, err ) { \
-       if ( !value ) { \
-               dbg("[error] %s : NULL", name ); \
-               return err; \
-       } \
-}
-
 struct call_cli_info {
        enum tcore_call_cli_mode mode;
        enum tcore_call_no_cli_cause no_cli_cause;
@@ -56,7 +50,10 @@ struct call_cna_info {
 
 struct call_object {
        enum tcore_call_type type;
+
+       unsigned int handle;
        unsigned int id;
+
        enum tcore_call_direction direction;
        enum tcore_call_status status;
        gboolean mpty;
@@ -64,141 +61,237 @@ struct call_object {
        struct call_cna_info cna;
        unsigned int cug_id;
        unsigned int active_line;
-       struct call_time { // second
-               long start;
-               long end;
+       struct call_time {
+               long start; /* In seconds */
+               long end; /* In seconds */
        } time;
+
        gboolean is_volte_call;
-       int session_id; // VoLTE only
-       int conf_call_session_id; // Conference call session-id (VoLTE only)
-       gboolean early_media; // VoLTE only
+       int session_id; /* VoLTE only */
+       int conf_call_session_id; /* Conference call session-id (VoLTE only) */
+       gboolean early_media; /* VoLTE only */
+
+       gboolean is_release_pending;
+       enum tcore_call_silent_redial_reason redial_reason;
 };
 
 struct private_object_data {
-       GSListcobjs;
-       struct tcore_call_operations *ops;
+       GSList *cobjs;
+       struct tcore_call_operations *ops[TCORE_OPS_TYPE_MAX];
        struct tcore_call_control_operations *cops;
        struct tcore_call_information_operations *iops;
 };
 
-static TReturn _dispatcher(CoreObject *o, UserRequest *ur)
+static unsigned int __assign_handle(CoreObject *o)
+{
+       unsigned int handle_candidate = MIN_HANDLE;
+       CallObject *co = NULL;
+
+       /* Find unused 'handle' - starting from 1 */
+       while (handle_candidate < MAX_HANDLE) {
+               co = tcore_call_object_find_by_handle(o, handle_candidate);
+               if (NULL == co) {
+                       /* Unused handle found */
+                       return handle_candidate;
+               } else {
+                       /* 'handle' already used, try next value */
+                       handle_candidate++;
+                       co = NULL;
+               }
+       }
+
+       err("available handle not found, serious");
+       return INVALID_HANDLE;
+}
+
+static TReturn _dispatcher(CoreObject *o, UserRequest *ur, enum tcore_ops_type ops_type)
 {
        enum tcore_request_command command;
-       struct private_object_data *po = NULL;
-       po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->ops", po->ops, TCORE_RETURN_FAILURE);
-       _check_null( "ur", ur, TCORE_RETURN_FAILURE);
+       struct private_object_data *po = tcore_object_ref_object(o);
+       struct tcore_call_operations *ops = NULL;
+
+       CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_CALL, TCORE_RETURN_EINVAL);
+       CORE_OBJECT_VALIDATE_OPS_RETURN_VAL(ops_type, TCORE_RETURN_EINVAL);
+
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_EINVAL);
+       tcore_check_null_ret_err("ur", ur, TCORE_RETURN_EINVAL);
+
+       ops = po->ops[ops_type];
+       tcore_check_null_ret_err("ops", ops, TCORE_RETURN_FAILURE);
 
        command = tcore_user_request_get_command(ur);
        switch (command) {
-               case TREQ_CALL_DIAL:
-                       _check_null( "po->ops->dial", po->ops->dial, TCORE_RETURN_FAILURE);
-                       return po->ops->dial(o, ur);
+       case TREQ_CALL_DIAL:
+               tcore_check_null_ret_err("ops->dial",
+                       ops->dial, TCORE_RETURN_ENOSYS);
+
+               return ops->dial(o, ur);
+
+       case TREQ_CALL_ANSWER:
+               tcore_check_null_ret_err("ops->answer",
+                       ops->answer, TCORE_RETURN_ENOSYS);
+
+               return ops->answer(o, ur);
+
+       case TREQ_CALL_END:
+               tcore_check_null_ret_err("ops->end",
+                       ops->end, TCORE_RETURN_ENOSYS);
+
+               return ops->end(o, ur);
+
+       case TREQ_CALL_HOLD:
+               tcore_check_null_ret_err("ops->hold",
+                       ops->hold, TCORE_RETURN_ENOSYS);
+
+               return ops->hold(o, ur);
+
+       case TREQ_CALL_ACTIVE:
+               tcore_check_null_ret_err("ops->active",
+                       ops->active, TCORE_RETURN_ENOSYS);
+
+               return ops->active(o, ur);
+
+       case TREQ_CALL_SWAP:
+               tcore_check_null_ret_err("ops->swap",
+                       ops->swap, TCORE_RETURN_ENOSYS);
+
+               return ops->swap(o, ur);
+
+       case TREQ_CALL_JOIN:
+               tcore_check_null_ret_err("ops->join",
+                       ops->join, TCORE_RETURN_ENOSYS);
+
+               return ops->join(o, ur);
+
+       case TREQ_CALL_SPLIT:
+               tcore_check_null_ret_err("ops->split",
+                       ops->split, TCORE_RETURN_ENOSYS);
+
+               return ops->split(o, ur);
+
+       case TREQ_CALL_DEFLECT:
+               tcore_check_null_ret_err("ops->deflect",
+                       ops->deflect, TCORE_RETURN_ENOSYS);
 
-               case TREQ_CALL_ANSWER:
-                       _check_null( "po->ops->answer", po->ops->answer, TCORE_RETURN_FAILURE);
-                       return po->ops->answer(o, ur);
+               return ops->deflect(o, ur);
 
-               case TREQ_CALL_END:
-                       _check_null( "po->ops->end", po->ops->end, TCORE_RETURN_FAILURE);
-                       return po->ops->end(o, ur);
+       case TREQ_CALL_TRANSFER:
+               tcore_check_null_ret_err("ops->transfer",
+                       ops->transfer, TCORE_RETURN_ENOSYS);
 
-               case TREQ_CALL_HOLD:
-                       _check_null( "po->ops->hold", po->ops->hold, TCORE_RETURN_FAILURE);
-                       return po->ops->hold(o, ur);
+               return ops->transfer(o, ur);
 
-               case TREQ_CALL_ACTIVE:
-                       _check_null( "po->ops->active", po->ops->active, TCORE_RETURN_FAILURE);
-                       return po->ops->active(o, ur);
+       case TREQ_CALL_START_CONT_DTMF:
+               tcore_check_null_ret_err("ops->start_cont_dtmf",
+                       ops->start_cont_dtmf, TCORE_RETURN_ENOSYS);
 
-               case TREQ_CALL_SWAP:
-                       _check_null( "po->ops->swap", po->ops->swap, TCORE_RETURN_FAILURE);
-                       return po->ops->swap(o, ur);
+               return ops->start_cont_dtmf(o, ur);
 
-               case TREQ_CALL_JOIN:
-                       _check_null( "po->ops->join", po->ops->join, TCORE_RETURN_FAILURE);
-                       return po->ops->join(o, ur);
+       case TREQ_CALL_STOP_CONT_DTMF:
+               tcore_check_null_ret_err("ops->stop_cont_dtmf",
+                       ops->stop_cont_dtmf, TCORE_RETURN_ENOSYS);
 
-               case TREQ_CALL_SPLIT:
-                       _check_null( "po->ops->split", po->ops->split, TCORE_RETURN_FAILURE);
-                       return po->ops->split(o, ur);
+               return ops->stop_cont_dtmf(o, ur);
 
-               case TREQ_CALL_DEFLECT:
-                       _check_null( "po->ops->deflect", po->ops->deflect, TCORE_RETURN_FAILURE);
-                       return po->ops->deflect(o, ur);
+       case TREQ_CALL_SEND_BURST_DTMF:
+               tcore_check_null_ret_err("ops->send_burst_dtmf",
+                       ops->send_burst_dtmf, TCORE_RETURN_ENOSYS);
 
-               case TREQ_CALL_TRANSFER:
-                       _check_null( "po->ops->transfer", po->ops->transfer, TCORE_RETURN_FAILURE);
-                       return po->ops->transfer(o, ur);
+               return ops->send_burst_dtmf(o, ur);
 
-               case TREQ_CALL_START_CONT_DTMF:
-                       _check_null( "po->ops->start_cont_dtmf", po->ops->start_cont_dtmf, TCORE_RETURN_FAILURE);
-                       return po->ops->start_cont_dtmf(o, ur);
+       case TREQ_CALL_GET_PRIVACY_MODE:
+               tcore_check_null_ret_err("ops->get_privacy_mode",
+                       ops->get_privacy_mode, TCORE_RETURN_ENOSYS);
 
-               case TREQ_CALL_STOP_CONT_DTMF:
-                       _check_null( "po->ops->stop_cont_dtmf", po->ops->stop_cont_dtmf, TCORE_RETURN_FAILURE);
-                       return po->ops->stop_cont_dtmf(o, ur);
+               return ops->get_privacy_mode(o, ur);
 
-               case TREQ_CALL_SEND_BURST_DTMF:
-                       _check_null( "po->ops->send_burst_dtmf", po->ops->send_burst_dtmf, TCORE_RETURN_FAILURE);
-                       return po->ops->send_burst_dtmf(o, ur);
+       case TREQ_CALL_SET_PRIVACY_MODE:
+               tcore_check_null_ret_err("ops->set_privacy_mode",
+                       ops->set_privacy_mode, TCORE_RETURN_ENOSYS);
 
-               case TREQ_CALL_GET_PRIVACY_MODE:
-                       _check_null( "po->ops->get_privacy_mode", po->ops->get_privacy_mode, TCORE_RETURN_FAILURE);
-                       return po->ops->get_privacy_mode(o, ur);
+               return ops->set_privacy_mode(o, ur);
 
-               case TREQ_CALL_SET_PRIVACY_MODE:
-                       _check_null( "po->ops->set_privacy_mode", po->ops->set_privacy_mode, TCORE_RETURN_FAILURE);
-                       return po->ops->set_privacy_mode(o, ur);
+       case TREQ_CALL_SET_SOUND_PATH:
+               tcore_check_null_ret_err("ops->set_sound_path",
+                       ops->set_sound_path, TCORE_RETURN_ENOSYS);
 
-               case TREQ_CALL_SET_SOUND_PATH:
-                       _check_null( "po->ops->set_sound_path", po->ops->set_sound_path, TCORE_RETURN_FAILURE);
-                       return po->ops->set_sound_path(o, ur);
+               return ops->set_sound_path(o, ur);
 
-               case TREQ_CALL_GET_SOUND_VOLUME_LEVEL:
-                       _check_null( "po->ops->get_sound_volume_level", po->ops->get_sound_volume_level, TCORE_RETURN_FAILURE);
-                       return po->ops->get_sound_volume_level(o, ur);
+       case TREQ_CALL_GET_SOUND_VOLUME_LEVEL:
+               tcore_check_null_ret_err("ops->get_sound_volume_level",
+                       ops->get_sound_volume_level, TCORE_RETURN_ENOSYS);
 
-               case TREQ_CALL_SET_SOUND_VOLUME_LEVEL:
-                       _check_null( "po->ops->set_sound_volume_level", po->ops->set_sound_volume_level, TCORE_RETURN_FAILURE);
-                       return po->ops->set_sound_volume_level(o, ur);
+               return ops->get_sound_volume_level(o, ur);
 
-               case TREQ_CALL_SET_SOUND_MUTE_STATUS:
-                       _check_null( "po->ops->set_sound_mute_status", po->ops->set_sound_mute_status, TCORE_RETURN_FAILURE);
-                       return po->ops->set_sound_mute_status(o, ur);
+       case TREQ_CALL_SET_SOUND_VOLUME_LEVEL:
+               tcore_check_null_ret_err("ops->set_sound_volume_level",
+                       ops->set_sound_volume_level, TCORE_RETURN_ENOSYS);
 
-               case TREQ_CALL_GET_SOUND_MUTE_STATUS:
-                       _check_null( "po->ops->get_sound_mute_status", po->ops->get_sound_mute_status, TCORE_RETURN_FAILURE);
-                       return po->ops->get_sound_mute_status(o, ur);
+               return ops->set_sound_volume_level(o, ur);
 
-               case TREQ_CALL_SET_SOUND_RECORDING:
-                       _check_null( "po->ops->set_sound_recording", po->ops->set_sound_recording, TCORE_RETURN_FAILURE);
-                       return po->ops->set_sound_recording(o, ur);
+       case TREQ_CALL_SET_SOUND_MUTE_STATUS:
+               tcore_check_null_ret_err("ops->set_sound_mute_status",
+                       ops->set_sound_mute_status, TCORE_RETURN_ENOSYS);
 
-               case TREQ_CALL_SET_SOUND_EQUALIZATION:
-                       _check_null( "po->ops->set_sound_equalization", po->ops->set_sound_equalization, TCORE_RETURN_FAILURE);
-                       return po->ops->set_sound_equalization(o, ur);
+               return ops->set_sound_mute_status(o, ur);
 
-               case TREQ_CALL_SET_SOUND_NOISE_REDUCTION:
-                       _check_null( "po->ops->set_sound_noise_reduction", po->ops->set_sound_noise_reduction, TCORE_RETURN_FAILURE);
-                       return po->ops->set_sound_noise_reduction(o, ur);
+       case TREQ_CALL_GET_SOUND_MUTE_STATUS:
+               tcore_check_null_ret_err("ops->get_sound_mute_status",
+                       ops->get_sound_mute_status, TCORE_RETURN_ENOSYS);
 
-               case TREQ_CALL_SET_SOUND_CLOCK_STATUS:
-                       _check_null( "po->ops->set_sound_clock_status", po->ops->set_sound_clock_status, TCORE_RETURN_FAILURE);
-                       return po->ops->set_sound_clock_status(o, ur);
+               return ops->get_sound_mute_status(o, ur);
 
-               case TREQ_CALL_SET_PREFERRED_VOICE_SUBSCRIPTION:
-                       _check_null( "po->ops->set_preferred_voice_subscription", po->ops->set_preferred_voice_subscription, TCORE_RETURN_FAILURE);
-                       return po->ops->set_preferred_voice_subscription(o, ur);
+       case TREQ_CALL_SET_SOUND_RECORDING:
+               tcore_check_null_ret_err("ops->set_sound_recording",
+                       ops->set_sound_recording, TCORE_RETURN_ENOSYS);
 
-               case TREQ_CALL_GET_PREFERRED_VOICE_SUBSCRIPTION:
-                       _check_null( "po->ops->get_preferred_voice_subscription", po->ops->get_preferred_voice_subscription, TCORE_RETURN_FAILURE);
-                       return po->ops->get_preferred_voice_subscription(o, ur);
+               return ops->set_sound_recording(o, ur);
 
-               default:
-                       break;
+       case TREQ_CALL_SET_SOUND_EQUALIZATION:
+               tcore_check_null_ret_err("ops->set_sound_equalization",
+                       ops->set_sound_equalization, TCORE_RETURN_ENOSYS);
+
+               return ops->set_sound_equalization(o, ur);
+
+       case TREQ_CALL_SET_SOUND_NOISE_REDUCTION:
+               tcore_check_null_ret_err("ops->set_sound_noise_reduction",
+                       ops->set_sound_noise_reduction, TCORE_RETURN_ENOSYS);
+
+               return ops->set_sound_noise_reduction(o, ur);
+
+       case TREQ_CALL_SET_SOUND_CLOCK_STATUS:
+               tcore_check_null_ret_err("ops->set_sound_clock_status",
+                       ops->set_sound_clock_status, TCORE_RETURN_ENOSYS);
+
+               return ops->set_sound_clock_status(o, ur);
+
+       case TREQ_CALL_SET_PREFERRED_VOICE_SUBSCRIPTION:
+               tcore_check_null_ret_err("ops->set_preferred_voice_subscription",
+                       ops->set_preferred_voice_subscription, TCORE_RETURN_ENOSYS);
+
+               return ops->set_preferred_voice_subscription(o, ur);
+
+       case TREQ_CALL_GET_PREFERRED_VOICE_SUBSCRIPTION:
+               tcore_check_null_ret_err("ops->get_preferred_voice_subscription",
+                       ops->get_preferred_voice_subscription, TCORE_RETURN_ENOSYS);
+
+               return ops->get_preferred_voice_subscription(o, ur);
+
+       case TREQ_CALL_MODIFY:
+               tcore_check_null_ret_err("ops->modify",
+                       ops->modify, TCORE_RETURN_ENOSYS);
+
+               return ops->modify(o, ur);
+
+       case TREQ_CALL_CONFIRM_MODIFY:
+               tcore_check_null_ret_err("ops->confirm_modify",
+                       ops->confirm_modify, TCORE_RETURN_ENOSYS);
+
+               return ops->confirm_modify(o, ur);
+
+       default:
+               break;
        }
 
        return TCORE_RETURN_SUCCESS;
@@ -218,56 +311,56 @@ static void _free_hook(CoreObject *o)
        tcore_object_link_object(o, NULL);
 }
 
-typedef gboolean(*func)(struct call_object* co, void *data);
-static struct call_object *_find_object(GSList *objs, void* data, func compare)
+typedef gboolean(*func)(CallObject *co, void *data);
+static CallObject *_find_object(GSList *objs, void *data, func compare)
 {
-       struct call_object *co = 0;
-       GSList *l = 0;
+       CallObject *co = NULL;
+       GSList *l = NULL;
 
-       _check_null( "objs", objs, 0);
-       _check_null( "compare", compare, 0);
+       tcore_check_null_ret_err("objs", objs, NULL);
+       tcore_check_null_ret_err("compare", compare, NULL);
 
        l = objs;
        while (l) {
-               co = (struct call_object*) l->data;
+               co = (CallObject *) l->data;
 
                if (compare(co, data))
                        return co;
 
-               l = g_slist_next( l );
+               l = g_slist_next(l);
        }
 
        return NULL;
 }
 
-static GSList* _find_object_all(GSList *objs, void* data, func compare)
+static GSList *_find_object_all(GSList *objs, void *data, func compare)
 {
-       struct call_object *co = 0;
-       GSList *l = 0;
-       GSList *ret = 0;
+       CallObject *co = NULL;
+       GSList *l = NULL;
+       GSList *ret = NULL;
 
-       _check_null( "objs", objs, 0);
-       _check_null( "compare", compare, 0);
+       tcore_check_null_ret_err("objs", objs, NULL);
+       tcore_check_null_ret_err("compare", compare, NULL);
 
        l = objs;
        while (l) {
-               co = (struct call_object*) l->data;
+               co = (CallObject *) l->data;
 
                if (compare(co, data))
                        ret = g_slist_append(ret, co);
 
-               l = g_slist_next( l );
+               l = g_slist_next(l);
        }
 
        return ret;
 }
 
-static gboolean _compare_by_id(struct call_object* co, void *data)
+static gboolean _compare_by_id(CallObject *co, void *data)
 {
-       unsigned int *id = (unsigned int*) data;
+       unsigned int *id = (unsigned int *) data;
 
-       _check_null( "co", co, FALSE);
-       _check_null( "data", data, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
+       tcore_check_null_ret_err("data", data, FALSE);
 
        if (co->id == *id)
                return TRUE;
@@ -275,12 +368,26 @@ static gboolean _compare_by_id(struct call_object* co, void *data)
        return FALSE;
 }
 
-static gboolean _compare_by_session_id(struct call_object *co, void *data)
+static gboolean _compare_by_handle(CallObject *co, void *data)
+{
+       unsigned int *handle = (unsigned int *) data;
+
+       tcore_check_null_ret_err("co", co, FALSE);
+       tcore_check_null_ret_err("data", data, FALSE);
+
+       if (co->handle == *handle)
+               return TRUE;
+
+       return FALSE;
+}
+
+
+static gboolean _compare_by_session_id(CallObject *co, void *data)
 {
        int *session_id = data;
 
-       _check_null("co", co, FALSE);
-       _check_null("data", data, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
+       tcore_check_null_ret_err("data", data, FALSE);
 
        if (co->session_id == *session_id)
                return TRUE;
@@ -288,12 +395,12 @@ static gboolean _compare_by_session_id(struct call_object *co, void *data)
        return FALSE;
 }
 
-static gboolean _compare_by_status(struct call_object* co, void *data)
+static gboolean _compare_by_status(CallObject *co, void *data)
 {
-       enum tcore_call_status *ct = (enum tcore_call_status*) data;
+       enum tcore_call_status *ct = (enum tcore_call_status *) data;
 
-       _check_null( "co", co, FALSE);
-       _check_null( "data", data, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
+       tcore_check_null_ret_err("data", data, FALSE);
 
        if (co->status == *ct)
                return TRUE;
@@ -301,12 +408,12 @@ static gboolean _compare_by_status(struct call_object* co, void *data)
        return FALSE;
 }
 
-static gboolean _compare_by_number(struct call_object* co, void *data)
+static gboolean _compare_by_number(CallObject *co, void *data)
 {
-       char *number = (char*) data;
+       char *number = (char *) data;
 
-       _check_null( "co", co, FALSE);
-       _check_null( "data", data, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
+       tcore_check_null_ret_err("data", data, FALSE);
 
        if (!strcmp(co->cli.number, number))
                return TRUE;
@@ -316,7 +423,7 @@ static gboolean _compare_by_number(struct call_object* co, void *data)
 
 static enum tcore_call_cli_mode _check_cli_mode_by_number(char *num)
 {
-       _check_null( "num", num, TCORE_CALL_CLI_MODE_DEFAULT);
+       tcore_check_null_ret_err("num", num, TCORE_CALL_CLI_MODE_DEFAULT);
 
        if (!strncmp(num, "*31#", 4))
                return TCORE_CALL_CLI_MODE_PRESENT;
@@ -328,61 +435,44 @@ static enum tcore_call_cli_mode _check_cli_mode_by_number(char *num)
 }
 
 
-// Call Object API
-
-struct call_object *tcore_call_object_new(CoreObject *o, int id)
+/* Call Object APIs */
+CallObject *tcore_call_object_new(CoreObject *o)
 {
-       struct private_object_data *po = 0;
-       struct call_object *co = 0;
+       struct private_object_data *po = NULL;
+       CallObject *co = NULL;
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, 0);
-
-       co = g_new0( struct call_object, 1 );
+       tcore_check_null_ret_err("po", po, NULL);
 
-       if (id > 0) {
-               if (!_find_object(po->cobjs, (void*) &id, (void*) _compare_by_id))
-                       co->id = id;
-               else {
-                       dbg("[ error ] call object exist already. [ %d ]", id);
-                       g_free(co);
-                       return NULL;
-               }
-       }
-       else {
-               int i = 0;
+       co = g_try_malloc0(sizeof(struct call_object));
+       if (co == NULL)
+               return NULL;
 
-               for (i = 1; i <= MAX_CALL_OBJECTS; i++) {       /* 6 is MAX call count */
-                       if (!_find_object(po->cobjs, (void*) &i, (void*) _compare_by_id)) {
-                               co->id = i;
-                               break;
-                       }
-               }
+       co->handle  = __assign_handle(o);
 
-                /* Free the allocated Core Object if ID is not allocated */
-               if (i > MAX_CALL_OBJECTS) {
-                       err("[ error ] failed to assign call id");
-                       g_free(co);
-                       return NULL;
-               }
+       if (INVALID_HANDLE == co->handle) {
+               err("valid handle not available. call object creation failed");
+               g_free(co);
+               return NULL;
        }
+       co->id = -1;
 
        po->cobjs = g_slist_append(po->cobjs, co);
 
-       dbg("new call object id : [%d]", co->id);
+       dbg("new call object handle : [%d]", co->handle);
 
        return co;
 }
 
-gboolean tcore_call_object_free(CoreObject *o, struct call_object *co)
+gboolean tcore_call_object_free(CoreObject *o, CallObject *co)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, FALSE);
-       _check_null( "po->cobjs", po->cobjs, FALSE);
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("po", po, FALSE);
+       tcore_check_null_ret_err("po->cobjs", po->cobjs, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        po->cobjs = g_slist_remove(po->cobjs, co);
        g_free(co);
@@ -390,163 +480,199 @@ gboolean tcore_call_object_free(CoreObject *o, struct call_object *co)
        return TRUE;
 }
 
-int tcore_call_object_total_length( CoreObject *o )
+int tcore_call_object_total_length(CoreObject *o)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, FALSE);
-       _check_null( "po->cobjs", po->cobjs, FALSE);
+       tcore_check_null_ret_err("po", po, 0);
+       tcore_check_null_ret_err("po->cobjs", po->cobjs, 0);
 
        return (int)g_slist_length(po->cobjs);
 }
 
-struct call_object *tcore_call_object_current_on_mt_processing(CoreObject *o)
+CallObject *tcore_call_object_current_on_mt_processing(CoreObject *o)
 {
        struct private_object_data *po = NULL;
-       struct call_object *call_obj = NULL;
-       GSList *l = 0;
+       CallObject *call_obj = NULL;
+       GSList *l = NULL;
 
-       enum tcore_call_status cs = CALL_STATUS_INCOMING;
+       enum tcore_call_status cs = TCORE_CALL_STATUS_INCOMING;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, 0);
-       _check_null( "po->cobjs", po->cobjs, 0);
+       tcore_check_null_ret_err("po", po, NULL);
+       tcore_check_null_ret_err("po->cobjs", po->cobjs, NULL);
 
-       l = _find_object_all(po->cobjs, (void*) &cs, (void*) _compare_by_status);
+       l = _find_object_all(po->cobjs, (void *)&cs, (void *)_compare_by_status);
        if (!l) {
-               cs = CALL_STATUS_WAITING;
-               l = _find_object_all(po->cobjs, (void*) &cs, (void*) _compare_by_status);
+               cs = TCORE_CALL_STATUS_WAITING;
+               l = _find_object_all(po->cobjs, (void *)&cs, (void *)_compare_by_status);
                if (!l)
                        return 0;
        }
 
-       call_obj = (struct call_object*) l ->data;
+       call_obj = (CallObject *)(l->data);
        g_slist_free(l);
+
        return call_obj;
 }
 
-struct call_object *tcore_call_object_current_on_mo_processing(CoreObject *o)
+CallObject *tcore_call_object_current_on_mo_processing(CoreObject *o)
 {
        struct private_object_data *po = NULL;
-       struct call_object *call_obj = NULL;
-       GSList *l = 0;
+       CallObject *call_obj = NULL;
+       GSList *l = NULL;
 
-       enum tcore_call_status cs = CALL_STATUS_DIALING;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, 0);
-       _check_null( "po->cobjs", po->cobjs, 0);
+       tcore_check_null_ret_err("po", po, NULL);
+       tcore_check_null_ret_err("po->cobjs", po->cobjs, NULL);
 
-       l = _find_object_all(po->cobjs, (void*) &cs, (void*) _compare_by_status);
+       l = tcore_call_object_find_by_status(o, TCORE_CALL_STATUS_DIALING);
        if (!l) {
-               cs = CALL_STATUS_ALERT;
-               l = _find_object_all(po->cobjs, (void*) &cs, (void*) _compare_by_status);
-               if (!l)
-                       return 0;
+               l = tcore_call_object_find_by_status(o, TCORE_CALL_STATUS_ALERT);
+               if (!l) {
+                       l = tcore_call_object_find_by_status(o, TCORE_CALL_STATUS_SETUP);
+                       if (!l) {
+                               l = tcore_call_object_find_by_status(o, TCORE_CALL_STATUS_SETUP_PENDING);
+                               if (!l)
+                                       return NULL;
+                       }
+               }
        }
 
-       call_obj = (struct call_object*) l ->data;
+       call_obj = (CallObject *)(l->data);
        g_slist_free(l);
+
        return call_obj;
 }
 
-struct call_object *tcore_call_object_find_by_id(CoreObject *o, int id)
+CallObject *tcore_call_object_find_by_id(CoreObject *o, int id)
+{
+       struct private_object_data *po = NULL;
+
+       po = tcore_object_ref_object(o);
+
+       tcore_check_null_ret_err("po", po, NULL);
+       tcore_check_null_ret_err("po->cobjs", po->cobjs, NULL);
+
+       return _find_object(po->cobjs, (void *) &id, (void *) _compare_by_id);
+}
+
+CallObject *tcore_call_object_find_by_handle(CoreObject *o, int handle)
 {
        struct private_object_data *po = NULL;
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, 0);
-       _check_null( "po->cobjs", po->cobjs, 0);
+       tcore_check_null_ret_err("po", po, NULL);
+       tcore_check_null_ret_err("po->cobjs", po->cobjs, NULL);
+
+       return _find_object(po->cobjs, (void *) &handle, (void *) _compare_by_handle);
 
-       return _find_object(po->cobjs, (void*) &id, (void*) _compare_by_id);
 }
 
-struct call_object *tcore_call_object_find_by_number(CoreObject *o, char *num)
+
+CallObject *tcore_call_object_find_by_number(CoreObject *o, char *num)
 {
        struct private_object_data *po = NULL;
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, 0);
-       _check_null( "po->cobjs", po->cobjs, 0);
-       _check_null( "num", num, 0);
+       tcore_check_null_ret_err("po", po, NULL);
+       tcore_check_null_ret_err("po->cobjs", po->cobjs, NULL);
+       tcore_check_null_ret_err("num", num, NULL);
 
-       return _find_object(po->cobjs, (void*) num, (void*) _compare_by_number);
+       return _find_object(po->cobjs, (void *) num, (void *) _compare_by_number);
 }
 
-GSListtcore_call_object_find_by_status(CoreObject *o, enum tcore_call_status cs)
+GSList *tcore_call_object_find_by_status(CoreObject *o, enum tcore_call_status cs)
 {
        struct private_object_data *po = NULL;
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, 0);
-       _check_null( "po->cobjs", po->cobjs, 0);
+       tcore_check_null_ret_err("po", po, NULL);
+       tcore_check_null_ret_err("po->cobjs", po->cobjs, NULL);
 
-       return _find_object_all(po->cobjs, (void*) &cs, (void*) _compare_by_status);
+       return _find_object_all(po->cobjs, (void *) &cs, (void *) _compare_by_status);
 }
 
-int tcore_call_object_get_id(struct call_object *co)
+int tcore_call_object_get_id(CallObject *co)
 {
-       _check_null( "co", co, -1);
+       tcore_check_null_ret_err("co", co, -1);
 
        return co->id;
 }
 
-gboolean tcore_call_object_set_type(struct call_object *co, enum tcore_call_type ct)
+gboolean tcore_call_object_set_id(CallObject *co , int call_id)
+{
+       tcore_check_null_ret_err("co", co, FALSE);
+       co->id = call_id;
+
+       return TRUE;
+}
+
+int tcore_call_object_get_handle(CallObject *co)
+{
+       tcore_check_null_ret_err("co", co, -1);
+
+       return co->handle;
+}
+
+
+gboolean tcore_call_object_set_type(CallObject *co, enum tcore_call_type ct)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        co->type = ct;
        return TRUE;
 }
 
-enum tcore_call_type tcore_call_object_get_type(struct call_object *co)
+enum tcore_call_type tcore_call_object_get_type(CallObject *co)
 {
-       _check_null( "co", co, -1);
+       tcore_check_null_ret_err("co", co, -1);
 
        return co->type;
 }
 
-gboolean tcore_call_object_set_direction(struct call_object *co, enum tcore_call_direction cd)
+gboolean tcore_call_object_set_direction(CallObject *co, enum tcore_call_direction cd)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        co->direction = cd;
        return TRUE;
 }
 
-enum tcore_call_direction tcore_call_object_get_direction(struct call_object *co)
+enum tcore_call_direction tcore_call_object_get_direction(CallObject *co)
 {
-       _check_null( "co", co, -1);
+       tcore_check_null_ret_err("co", co, -1);
 
        return co->direction;
 }
 
-gboolean tcore_call_object_set_status(struct call_object *co, enum tcore_call_status cs)
+gboolean tcore_call_object_set_status(CallObject *co, enum tcore_call_status cs)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        co->status = cs;
        return TRUE;
 }
 
-enum tcore_call_status tcore_call_object_get_status(struct call_object *co)
+enum tcore_call_status tcore_call_object_get_status(CallObject *co)
 {
-       _check_null( "co", co, -1);
+       tcore_check_null_ret_err("co", co, -1);
 
        return co->status;
 }
 
-gboolean tcore_call_object_set_cli_info(struct call_object *co,
-                                               enum tcore_call_cli_mode mode, enum tcore_call_no_cli_cause cause,
-                                               char *num, int num_len)
+gboolean tcore_call_object_set_cli_info(CallObject *co,
+       enum tcore_call_cli_mode mode, enum tcore_call_no_cli_cause cause,
+       char *num, int num_len)
 {
-       char *pos = 0;
+       char *pos = NULL;
 
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        dbg("num  : %s", num);
        dbg("mode : 0x%x", mode);
@@ -559,7 +685,7 @@ gboolean tcore_call_object_set_cli_info(struct call_object *co,
                        co->cli.no_cli_cause = TCORE_CALL_NO_CLI_CAUSE_NONE;
 
                co->cli.number_len = num_len ;
-               co->cli.number [0] = '\0';
+               co->cli.number[0] = '\0';
 
                return TRUE;
        }
@@ -571,8 +697,7 @@ gboolean tcore_call_object_set_cli_info(struct call_object *co,
 
                if (co->cli.mode != TCORE_CALL_CLI_MODE_DEFAULT)
                        pos = (num + 4);
-       }
-       else {
+       } else {
                co->cli.mode = mode;
                if (mode == TCORE_CALL_CLI_MODE_RESTRICT)
                        co->cli.no_cli_cause = cause;
@@ -591,33 +716,35 @@ gboolean tcore_call_object_set_cli_info(struct call_object *co,
        return TRUE;
 }
 
-int tcore_call_object_get_number(struct call_object *co, char *num)
+int tcore_call_object_get_number(CallObject *co, char *num)
 {
-       _check_null( "co", co, -1);
-       _check_null( "num", num, -1);
+       tcore_check_null_ret_err("co", co, 0);
+       tcore_check_null_ret_err("num", num, 0);
 
        strncpy(num, co->cli.number, MAX_CALL_NUMBER_LEN);
        return co->cli.number_len;
 }
 
-enum tcore_call_cli_mode tcore_call_object_get_cli_mode(struct call_object *co)
+enum tcore_call_cli_mode tcore_call_object_get_cli_mode(CallObject *co)
 {
-       _check_null( "co", co, -1);
+       tcore_check_null_ret_err("co", co, -1);
+
        return co->cli.mode;
 }
 
-enum tcore_call_no_cli_cause tcore_call_object_get_no_cli_cause(struct call_object *co)
+enum tcore_call_no_cli_cause tcore_call_object_get_no_cli_cause(CallObject *co)
 {
-       _check_null( "co", co, -1);
+       tcore_check_null_ret_err("co", co, -1);
+
        return co->cli.no_cli_cause;
 }
 
 
-gboolean tcore_call_object_set_cna_info(struct call_object *co, enum tcore_call_cna_mode mode, char *name, int dcs)
+gboolean tcore_call_object_set_cna_info(CallObject *co, enum tcore_call_cna_mode mode, char *name, int dcs)
 {
        int len;
-       _check_null( "co", co, FALSE);
-       _check_null( "name", name, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
+       tcore_check_null_ret_err("name", name, FALSE);
 
        len = strlen(name);
        if (len >= MAX_CALL_NAME_LEN)
@@ -631,119 +758,125 @@ gboolean tcore_call_object_set_cna_info(struct call_object *co, enum tcore_call_
        return TRUE;
 }
 
-int tcore_call_object_get_name(struct call_object *co, char *name)
+int tcore_call_object_get_name(CallObject *co, char *name)
 {
-       _check_null( "co", co, -1);
-       _check_null( "name", name, -1);
+       tcore_check_null_ret_err("co", co, 0);
+       tcore_check_null_ret_err("name", name, 0);
 
        strncpy(name, co->cna.name, MAX_CALL_NAME_LEN);
        return co->cna.name_len;
 }
 
-enum tcore_call_cna_mode tcore_call_object_get_cna_mode(struct call_object *co)
+enum tcore_call_cna_mode tcore_call_object_get_cna_mode(CallObject *co)
 {
-       _check_null( "co", co, -1);
+       tcore_check_null_ret_err("co", co, -1);
 
        return co->cna.mode;
 }
 
-gboolean tcore_call_object_set_multiparty_state(struct call_object *co, gboolean is)
+gboolean tcore_call_object_set_multiparty_state(CallObject *co, gboolean is)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        co->mpty = is;
+
        return TRUE;
 }
 
-gboolean tcore_call_object_get_multiparty_state(struct call_object *co)
+gboolean tcore_call_object_get_multiparty_state(CallObject *co)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        return co->mpty;
 }
 
-gboolean tcore_call_object_set_active_line(struct call_object *co, unsigned int line)
+gboolean tcore_call_object_set_active_line(CallObject *co, unsigned int line)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        co->active_line = line;
+
        return TRUE;
 }
 
-int tcore_call_object_get_active_line(struct call_object *co)
+int tcore_call_object_get_active_line(CallObject *co)
 {
-       _check_null( "co", co, -1);
+       tcore_check_null_ret_err("co", co, -1);
 
        return co->active_line;
 }
 
-gboolean tcore_call_object_set_is_volte_call(struct call_object *co, gboolean flag)
+gboolean tcore_call_object_set_is_volte_call(CallObject *co, gboolean flag)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        co->is_volte_call = flag;
+
        return TRUE;
 }
 
-gboolean tcore_call_object_get_is_volte_call(struct call_object *co)
+gboolean tcore_call_object_get_is_volte_call(CallObject *co)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        return co->is_volte_call;
 }
 
-gboolean tcore_call_object_set_session_id(struct call_object *co, int session_id)
+gboolean tcore_call_object_set_session_id(CallObject *co, int session_id)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        co->session_id = session_id;
+
        return TRUE;
 }
 
-int tcore_call_object_get_session_id(struct call_object *co)
+int tcore_call_object_get_session_id(CallObject *co)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        return co->session_id;
 }
 
-gboolean tcore_call_object_set_conf_call_session_id(struct call_object *co, int session_id)
+gboolean tcore_call_object_set_conf_call_session_id(CallObject *co, int session_id)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        co->conf_call_session_id = session_id;
+
        return TRUE;
 }
 
-gboolean tcore_call_object_get_conf_call_session_id(struct call_object *co)
+gboolean tcore_call_object_get_conf_call_session_id(CallObject *co)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        return co->conf_call_session_id;
 }
 
-gboolean tcore_call_object_set_early_media(struct call_object *co, gboolean flag)
+gboolean tcore_call_object_set_early_media(CallObject *co, gboolean flag)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        co->early_media = flag;
+
        return TRUE;
 }
 
-gboolean tcore_call_object_get_early_media(struct call_object *co)
+gboolean tcore_call_object_get_early_media(CallObject *co)
 {
-       _check_null( "co", co, FALSE);
+       tcore_check_null_ret_err("co", co, FALSE);
 
        return co->early_media;
 }
 
-struct call_object *tcore_call_object_find_by_session_id(CoreObject *o, int session_id)
+CallObject *tcore_call_object_find_by_session_id(CoreObject *o, int session_id)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, 0);
-       _check_null( "po->cobjs", po->cobjs, 0);
+       tcore_check_null_ret_err("po", po, NULL);
+       tcore_check_null_ret_err("po->cobjs", po->cobjs, NULL);
 
        return _find_object(po->cobjs, &session_id, _compare_by_session_id);
 }
@@ -751,31 +884,33 @@ struct call_object *tcore_call_object_find_by_session_id(CoreObject *o, int sess
 gboolean tcore_call_object_check_cs_call_existence(CoreObject *o)
 {
        struct private_object_data *po = NULL;
-       struct call_object *call_obj = NULL;
+       CallObject *call_obj = NULL;
        GSList *call_list = NULL;
 
        po = tcore_object_ref_object(o);
-       _check_null("po", po, FALSE);
+       tcore_check_null_ret_err("po", po, FALSE);
 
        call_list = po->cobjs;
        while (call_list) {
                call_obj = call_list->data;
                if (call_obj->is_volte_call == FALSE)
                        return TRUE;
+
                call_list = g_slist_next(call_list);
        }
+
        return FALSE;
 }
 
 GSList *tcore_call_object_get_all_session_ids(CoreObject *o)
 {
        struct private_object_data *po = NULL;
-       struct call_object *call_obj = NULL;
+       CallObject *call_obj = NULL;
        GSList *call_list = NULL;
        GSList *session_ids = NULL;
 
        po = tcore_object_ref_object(o);
-       _check_null("po", po, FALSE);
+       tcore_check_null_ret_err("po", po, NULL);
 
        call_list = po->cobjs;
        while (call_list) {
@@ -789,165 +924,213 @@ GSList *tcore_call_object_get_all_session_ids(CoreObject *o)
        return session_ids;
 }
 
-TReturn tcore_call_control_answer_hold_and_accept(CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data)
+gboolean tcore_call_object_set_is_release_pending(CallObject *co, gboolean flag)
+{
+       tcore_check_null_ret_err("co", co, FALSE);
+
+       co->is_release_pending = flag;
+
+       return TRUE;
+
+}
+
+gboolean tcore_call_object_get_is_release_pending(CallObject *co)
+{
+       tcore_check_null_ret_err("co", co, FALSE);
+
+       return co->is_release_pending;
+}
+
+gboolean tcore_call_object_set_silent_redial_reason(CallObject *co, enum tcore_call_silent_redial_reason reason)
+{
+       tcore_check_null_ret_err("co", co, FALSE);
+
+       co->redial_reason = reason;
+
+       return TRUE;
+
+}
+enum tcore_call_silent_redial_reason tcore_call_object_get_silent_redial_reason(CallObject *co)
+{
+       tcore_check_null_ret_err("co", co, -1);
+
+       return co->redial_reason;
+}
+
+TReturn tcore_call_control_answer_hold_and_accept(CoreObject *o, UserRequest* ur, ConfirmCallback cb, void *user_data)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops->answer_hold_and_accept", po->cops->answer_hold_and_accept, TCORE_RETURN_ENOSYS);
 
        return po->cops->answer_hold_and_accept(o, ur, cb, user_data);
 }
 
-TReturn tcore_call_control_answer_replace(CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data)
+TReturn tcore_call_control_answer_replace(CoreObject *o, UserRequest* ur, ConfirmCallback cb, void *user_data)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops->answer_replace", po->cops->answer_replace, TCORE_RETURN_ENOSYS);
 
        return po->cops->answer_replace(o, ur, cb, user_data);
 }
 
-TReturn tcore_call_control_answer_reject(CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data)
+TReturn tcore_call_control_answer_reject(CoreObject *o, UserRequest* ur, ConfirmCallback cb, void *user_data)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops->answer_reject", po->cops->answer_reject, TCORE_RETURN_ENOSYS);
 
        return po->cops->answer_reject(o, ur, cb, user_data);
 }
 
-TReturn tcore_call_control_end_specific(CoreObjecto, UserRequest* ur, const int id, ConfirmCallback cb,
-               voiduser_data)
+TReturn tcore_call_control_end_specific(CoreObject *o, UserRequest* ur, const int id, ConfirmCallback cb,
+               void *user_data)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops->end_specific", po->cops->end_specific, TCORE_RETURN_ENOSYS);
 
        return po->cops->end_specific(o, ur, id, cb, user_data);
 }
 
-TReturn tcore_call_control_end_all_active(CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data)
+TReturn tcore_call_control_end_all_active(CoreObject *o, UserRequest* ur, ConfirmCallback cb, void *user_data)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops->end_all_active", po->cops->end_all_active, TCORE_RETURN_ENOSYS);
 
        return po->cops->end_all_active(o, ur, cb, user_data);
 }
 
-TReturn tcore_call_control_end_all_held(CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data)
+TReturn tcore_call_control_end_all_held(CoreObject *o, UserRequest* ur, ConfirmCallback cb, void *user_data)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops->end_all_held", po->cops->end_all_held, TCORE_RETURN_ENOSYS);
 
        return po->cops->end_all_held(o, ur, cb, user_data);
 }
 
-TReturn tcore_call_control_active(CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data)
+TReturn tcore_call_control_active(CoreObject *o, UserRequest* ur, ConfirmCallback cb, void *user_data)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops->active", po->cops->active, TCORE_RETURN_ENOSYS);
 
        return po->cops->active(o, ur, cb, user_data);
 }
 
-TReturn tcore_call_control_hold(CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data)
+TReturn tcore_call_control_hold(CoreObject *o, UserRequest* ur, ConfirmCallback cb, void *user_data)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops->hold", po->cops->hold, TCORE_RETURN_ENOSYS);
 
        return po->cops->hold(o, ur, cb, user_data);
 }
 
-TReturn tcore_call_control_swap(CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data)
+TReturn tcore_call_control_swap(CoreObject *o, UserRequest* ur, ConfirmCallback cb, void *user_data)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops->swap", po->cops->swap, TCORE_RETURN_ENOSYS);
 
        return po->cops->swap(o, ur, cb, user_data);
 }
 
-TReturn tcore_call_control_join(CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data)
+TReturn tcore_call_control_join(CoreObject *o, UserRequest* ur, ConfirmCallback cb, void *user_data)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops->join", po->cops->join, TCORE_RETURN_ENOSYS);
 
        return po->cops->join(o, ur, cb, user_data);
 }
 
-TReturn tcore_call_control_split(CoreObject* o, UserRequest* ur, const int id, ConfirmCallback cb, void* user_data)
+TReturn tcore_call_control_split(CoreObject *o, UserRequest* ur, const int id, ConfirmCallback cb, void *user_data)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops->split", po->cops->split, TCORE_RETURN_ENOSYS);
 
        return po->cops->split(o, ur, id, cb, user_data);
 }
 
-TReturn tcore_call_control_transfer(CoreObject* o, UserRequest* ur, ConfirmCallback cb, void* user_data)
+TReturn tcore_call_control_transfer(CoreObject *o, UserRequest* ur, ConfirmCallback cb, void *user_data)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops->transfer", po->cops->transfer, TCORE_RETURN_ENOSYS);
 
        return po->cops->transfer(o, ur, cb, user_data);
 }
 
-TReturn tcore_call_control_deflect(CoreObject* o, UserRequest* ur, const char* number, ConfirmCallback cb,
-               voiduser_data)
+TReturn tcore_call_control_deflect(CoreObject *o, UserRequest* ur, const char *number, ConfirmCallback cb,
+               void *user_data)
 {
        struct private_object_data *po = NULL;
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops", po->cops, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po->cops->deflect", po->cops->deflect, TCORE_RETURN_ENOSYS);
 
        return po->cops->deflect(o, ur, number, cb, user_data);
 }
 
-void tcore_call_control_set_operations(CoreObject *o, struct tcore_call_control_operations *ops)
+void tcore_call_control_set_operations(CoreObject *o, struct tcore_call_control_operations *cops)
 {
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK(o, CORE_OBJECT_TYPE_CALL);
 
        po = tcore_object_ref_object(o);
-       if (!po)
+       if (!po) {
+               err("po is NULL");
                return;
+       }
 
-       po->cops = ops;
+       po->cops = cops;
 }
 
-void tcore_call_information_mo_col(CoreObject *o, charnumber)
+void tcore_call_information_mo_col(CoreObject *o, char *number)
 {
        struct private_object_data *po = NULL;
 
@@ -955,8 +1138,9 @@ void tcore_call_information_mo_col(CoreObject *o, char* number)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, );
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mo_call_col", po->iops->mo_call_col);
 
        po->iops->mo_call_col(o, number);
 }
@@ -969,8 +1153,9 @@ void tcore_call_information_mo_waiting(CoreObject *o)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, );
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mo_call_waiting", po->iops->mo_call_waiting);
 
        po->iops->mo_call_waiting(o);
 }
@@ -983,8 +1168,9 @@ void tcore_call_information_mo_cug(CoreObject *o, int cug_index)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, );
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mo_call_cug", po->iops->mo_call_cug);
 
        po->iops->mo_call_cug(o, cug_index);
 }
@@ -997,8 +1183,9 @@ void tcore_call_information_mo_forwarded(CoreObject *o)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mo_call_forwarded", po->iops->mo_call_forwarded);
 
        po->iops->mo_call_forwarded(o);
 }
@@ -1011,8 +1198,9 @@ void tcore_call_information_mo_barred_incoming(CoreObject *o)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mo_call_barred_incoming", po->iops->mo_call_barred_incoming);
 
        po->iops->mo_call_barred_incoming(o);
 }
@@ -1025,8 +1213,9 @@ void tcore_call_information_mo_barred_outgoing(CoreObject *o)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mo_call_barred_outgoing", po->iops->mo_call_barred_outgoing);
 
        po->iops->mo_call_barred_outgoing(o);
 }
@@ -1039,8 +1228,9 @@ void tcore_call_information_mo_deflected(CoreObject *o)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mo_call_deflected", po->iops->mo_call_deflected);
 
        po->iops->mo_call_deflected(o);
 }
@@ -1053,8 +1243,9 @@ void tcore_call_information_mo_clir_suppression_reject(CoreObject *o)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mo_call_clir_suppression_reject", po->iops->mo_call_clir_suppression_reject);
 
        po->iops->mo_call_clir_suppression_reject(o);
 }
@@ -1067,8 +1258,9 @@ void tcore_call_information_mo_cfu(CoreObject *o)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mo_call_cfu", po->iops->mo_call_cfu);
 
        po->iops->mo_call_cfu(o);
 }
@@ -1081,13 +1273,14 @@ void tcore_call_information_mo_cfc(CoreObject *o)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mo_call_cfc", po->iops->mo_call_cfc);
 
        po->iops->mo_call_cfc(o);
 }
 
-void tcore_call_information_mt_cli(CoreObject *o, enum tcore_call_cli_mode mode, charnumber)
+void tcore_call_information_mt_cli(CoreObject *o, enum tcore_call_cli_mode mode, char *number)
 {
        struct private_object_data *po = NULL;
 
@@ -1095,13 +1288,14 @@ void tcore_call_information_mt_cli(CoreObject *o, enum tcore_call_cli_mode mode,
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po, );
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mt_call_cli", po->iops->mt_call_cli);
 
        po->iops->mt_call_cli(o, mode, number);
 }
 
-void tcore_call_information_mt_cna(CoreObject *o, enum tcore_call_cna_mode mode, charname, int dcs)
+void tcore_call_information_mt_cna(CoreObject *o, enum tcore_call_cna_mode mode, char *name, int dcs)
 {
        struct private_object_data *po = NULL;
 
@@ -1109,13 +1303,14 @@ void tcore_call_information_mt_cna(CoreObject *o, enum tcore_call_cna_mode mode,
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mt_call_cna", po->iops->mt_call_cna);
 
        po->iops->mt_call_cna(o, mode, name, dcs);
 }
 
-void tcore_call_information_mt_forwarded_call(CoreObject *o, charnumber)
+void tcore_call_information_mt_forwarded_call(CoreObject *o, char *number)
 {
        struct private_object_data *po = NULL;
 
@@ -1123,13 +1318,14 @@ void tcore_call_information_mt_forwarded_call(CoreObject *o, char* number)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mt_call_forwarded_call", po->iops->mt_call_forwarded_call);
 
        po->iops->mt_call_forwarded_call(o, number);
 }
 
-void tcore_call_information_mt_cug_call(CoreObject *o, int cug_index, charnumber)
+void tcore_call_information_mt_cug_call(CoreObject *o, int cug_index, char *number)
 {
        struct private_object_data *po = NULL;
 
@@ -1137,13 +1333,14 @@ void tcore_call_information_mt_cug_call(CoreObject *o, int cug_index, char* numb
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mt_call_cug_call", po->iops->mt_call_cug_call);
 
        po->iops->mt_call_cug_call(o, cug_index, number);
 }
 
-void tcore_call_information_mt_deflected_call(CoreObject *o, charnumber)
+void tcore_call_information_mt_deflected_call(CoreObject *o, char *number)
 {
        struct private_object_data *po = NULL;
 
@@ -1151,13 +1348,14 @@ void tcore_call_information_mt_deflected_call(CoreObject *o, char* number)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mt_call_deflected_call", po->iops->mt_call_deflected_call);
 
        po->iops->mt_call_deflected_call(o, number);
 }
 
-void tcore_call_information_mt_transfered(CoreObject *o, charnumber)
+void tcore_call_information_mt_transfered(CoreObject *o, char *number)
 {
        struct private_object_data *po = NULL;
 
@@ -1165,13 +1363,14 @@ void tcore_call_information_mt_transfered(CoreObject *o, char* number)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->mt_call_transfered", po->iops->mt_call_transfered);
 
        po->iops->mt_call_transfered(o, number);
 }
 
-void tcore_call_information_held(CoreObject *o, charnumber)
+void tcore_call_information_held(CoreObject *o, char *number)
 {
        struct private_object_data *po = NULL;
 
@@ -1179,13 +1378,14 @@ void tcore_call_information_held(CoreObject *o, char* number)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->call_held", po->iops->call_held);
 
        po->iops->call_held(o, number);
 }
 
-void tcore_call_information_active(CoreObject *o, charnumber)
+void tcore_call_information_active(CoreObject *o, char *number)
 {
        struct private_object_data *po = NULL;
 
@@ -1193,13 +1393,14 @@ void tcore_call_information_active(CoreObject *o, char* number)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->call_active", po->iops->call_active);
 
        po->iops->call_active(o, number);
 }
 
-void tcore_call_information_joined(CoreObject *o, charnumber)
+void tcore_call_information_joined(CoreObject *o, char *number)
 {
        struct private_object_data *po = NULL;
 
@@ -1207,13 +1408,14 @@ void tcore_call_information_joined(CoreObject *o, char* number)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->call_joined", po->iops->call_joined);
 
        po->iops->call_joined(o, number);
 }
 
-void tcore_call_information_released_on_hold(CoreObject *o, charnumber)
+void tcore_call_information_released_on_hold(CoreObject *o, char *number)
 {
        struct private_object_data *po = NULL;
 
@@ -1221,13 +1423,14 @@ void tcore_call_information_released_on_hold(CoreObject *o, char* number)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->call_released_on_hold", po->iops->call_released_on_hold);
 
        po->iops->call_released_on_hold(o, number);
 }
 
-void tcore_call_information_transfer_alert(CoreObject *o, charnumber)
+void tcore_call_information_transfer_alert(CoreObject *o, char *number)
 {
        struct private_object_data *po = NULL;
 
@@ -1235,13 +1438,14 @@ void tcore_call_information_transfer_alert(CoreObject *o, char* number)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->call_transfer_alert", po->iops->call_transfer_alert);
 
        po->iops->call_transfer_alert(o, number);
 }
 
-void tcore_call_information_transfered(CoreObject *o, charnumber)
+void tcore_call_information_transfered(CoreObject *o, char *number)
 {
        struct private_object_data *po = NULL;
 
@@ -1249,13 +1453,14 @@ void tcore_call_information_transfered(CoreObject *o, char* number)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->call_transfered", po->iops->call_transfered);
 
        po->iops->call_transfered(o, number);
 }
 
-void tcore_call_information_cf_check_ss_message(CoreObject *o, charnumber)
+void tcore_call_information_cf_check_ss_message(CoreObject *o, char *number)
 {
        struct private_object_data *po = NULL;
 
@@ -1263,13 +1468,14 @@ void tcore_call_information_cf_check_ss_message(CoreObject *o, char* number)
 
        po = tcore_object_ref_object(o);
 
-       _check_null( "po", po,);
-       _check_null( "po->iops", po->iops,);
+       tcore_check_null_ret("po", po);
+       tcore_check_null_ret("po->iops", po->iops);
+       tcore_check_null_ret("po->iops->call_cf_check_message", po->iops->call_cf_check_message);
 
        po->iops->call_cf_check_message(o, number);
 }
 
-void tcore_call_information_set_operations(CoreObject *o, struct tcore_call_information_operations *ops)
+void tcore_call_information_set_operations(CoreObject *o, struct tcore_call_information_operations *iops)
 {
        struct private_object_data *po = NULL;
 
@@ -1279,7 +1485,7 @@ void tcore_call_information_set_operations(CoreObject *o, struct tcore_call_info
        if (!po)
                return;
 
-       po->iops = ops;
+       po->iops = iops;
 }
 
 CoreObject *tcore_call_new(TcorePlugin *p, const char *name, struct tcore_call_operations *ops, TcoreHal *hal)
@@ -1294,13 +1500,14 @@ CoreObject *tcore_call_new(TcorePlugin *p, const char *name, struct tcore_call_o
        if (!o)
                return NULL;
 
-       po = g_try_new0(struct private_object_data, 1);
+       po = g_try_malloc0(sizeof(struct private_object_data));
        if (po == NULL) {
                tcore_object_free(o);
                return NULL;
        }
 
-       po->ops = ops;
+       /* set ops to default type when core object is created. */
+       po->ops[TCORE_OPS_TYPE_CP] = ops;
 
        tcore_object_set_type(o, CORE_OBJECT_TYPE_CALL);
        tcore_object_link_object(o, po);
@@ -1316,16 +1523,19 @@ void tcore_call_free(CoreObject *o)
        tcore_object_free(o);
 }
 
-void tcore_call_set_ops(CoreObject *o, struct tcore_call_operations *ops)
+void tcore_call_set_ops(CoreObject *o, struct tcore_call_operations *ops, enum tcore_ops_type ops_type)
 {
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK(o, CORE_OBJECT_TYPE_CALL);
+       CORE_OBJECT_VALIDATE_OPS_RETURN(ops_type);
 
        po = (struct private_object_data *)tcore_object_ref_object(o);
        if (!po) {
+               err("po is NULL");
                return;
        }
 
-       po->ops = ops;
+       /* set ops according to ops_type */
+       po->ops[ops_type] = ops;
 }
index 80b8f84..e6d460a 100644 (file)
@@ -54,11 +54,11 @@ struct private_object_data {
        union tcore_ip4_type dns_primary_v4;
        union tcore_ip4_type dns_secondary_v4;
 
-       /*IPv6 will be supported*/
-       charip_v6;
-       chargateway_v6;
-       chardns_primary_v6;
-       chardns_secondary_v6;
+       /* IPv6 will be supported */
+       char *ip_v6;
+       char *gateway_v6;
+       char *dns_primary_v6;
+       char *dns_secondary_v6;
 
        pcscf_addr *pcscf_ipv4;
        pcscf_addr *pcscf_ipv6;
@@ -69,8 +69,7 @@ struct private_object_data {
        char devname[16];
 
        /* Dedicated bearer information */
-       unsigned char dedicated_bearer_cnt;
-       struct dedicated_bearer_info dedicated_bearer[MAX_NUM_DEDICATED_BEARER];
+       struct dedicated_bearer_info dedicated_bearer;
 };
 
 static void _free_hook(CoreObject *o)
@@ -193,9 +192,8 @@ TReturn tcore_context_set_apn(CoreObject *o, const char *apn)
                po->apn = NULL;
        }
 
-       if (apn) {
+       if (apn)
                po->apn = g_strdup(apn);
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -231,9 +229,8 @@ TReturn tcore_context_set_address(CoreObject *o, const char *addr)
                po->addr = NULL;
        }
 
-       if (addr) {
+       if (addr)
                po->addr = g_strdup(addr);
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -409,9 +406,8 @@ TReturn tcore_context_set_username(CoreObject *o, const char *username)
                po->username = NULL;
        }
 
-       if (username) {
+       if (username)
                po->username = g_strdup(username);
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -447,9 +443,8 @@ TReturn tcore_context_set_password(CoreObject *o, const char *password)
                po->password = NULL;
        }
 
-       if (password) {
+       if (password)
                po->password = g_strdup(password);
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -485,9 +480,8 @@ TReturn tcore_context_set_dns1(CoreObject *o, const char *dns)
                po->dns1 = NULL;
        }
 
-       if (dns) {
+       if (dns)
                po->dns1 = g_strdup(dns);
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -507,9 +501,8 @@ TReturn tcore_context_set_ipv6_dns1(CoreObject *o, const char *dns)
                po->dns_primary_v6 = NULL;
        }
 
-       if (dns) {
+       if (dns)
                po->dns_primary_v6 = g_strdup(dns);
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -545,9 +538,8 @@ TReturn tcore_context_set_dns2(CoreObject *o, const char *dns)
                po->dns2 = NULL;
        }
 
-       if (dns) {
+       if (dns)
                po->dns2 = g_strdup(dns);
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -567,9 +559,8 @@ TReturn tcore_context_set_ipv6_dns2(CoreObject *o, const char *dns)
                po->dns_secondary_v6 = NULL;
        }
 
-       if (dns) {
+       if (dns)
                po->dns_secondary_v6 = g_strdup(dns);
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -633,9 +624,8 @@ TReturn tcore_context_set_proxy(CoreObject *o, const char *proxy)
                po->apn = NULL;
        }
 
-       if (proxy) {
+       if (proxy)
                po->proxy = g_strdup(proxy);
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -671,9 +661,8 @@ TReturn tcore_context_set_mmsurl(CoreObject *o, const char *mmsurl)
                po->mmsurl = NULL;
        }
 
-       if (mmsurl) {
+       if (mmsurl)
                po->mmsurl = g_strdup(mmsurl);
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -709,9 +698,8 @@ TReturn tcore_context_set_profile_name(CoreObject *o, const char *profile_name)
                po->profile_name = NULL;
        }
 
-       if (profile_name) {
+       if (profile_name)
                po->profile_name = g_strdup(profile_name);
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -767,9 +755,8 @@ TReturn tcore_context_set_devinfo(CoreObject *o, struct tnoti_ps_pdp_ipconfigura
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS_CONTEXT, TCORE_RETURN_EINVAL);
 
        po = tcore_object_ref_object(o);
-       if (!po)
-               return TCORE_RETURN_EINVAL;
-       if (!devinfo)
+
+       if (!po || !devinfo)
                return TCORE_RETURN_EINVAL;
 
        /* Free context resource if it was already allocated */
@@ -785,23 +772,27 @@ TReturn tcore_context_set_devinfo(CoreObject *o, struct tnoti_ps_pdp_ipconfigura
        memcpy(&(po->gateway_v4), devinfo->gateway, sizeof(union tcore_ip4_type));
        memcpy(po->devname, devinfo->devname, sizeof(char) * 16);
 
-       po->pcscf_ipv4 = g_malloc0(sizeof(pcscf_addr));
-       po->pcscf_ipv4->count = devinfo->pcscf_ipv4_count;
-       if (po->pcscf_ipv4->count > 0) {
-               unsigned int i;
-               po->pcscf_ipv4->addr = g_malloc0(sizeof(char *) * po->pcscf_ipv4->count);
-               for (i = 0; i < po->pcscf_ipv4->count; i++) {
-                       po->pcscf_ipv4->addr[i] = g_strdup(devinfo->pcscf_ipv4[i]);
+       po->pcscf_ipv4 = g_try_malloc0(sizeof(pcscf_addr));
+       if (po->pcscf_ipv4) {
+               po->pcscf_ipv4->count = devinfo->pcscf_ipv4_count;
+               if (po->pcscf_ipv4->count > 0) {
+                       unsigned int i;
+                       po->pcscf_ipv4->addr = g_try_malloc0(sizeof(char *) * po->pcscf_ipv4->count);
+                       if ((po->pcscf_ipv4->addr) && (devinfo->pcscf_ipv4))
+                               for (i = 0; i < po->pcscf_ipv4->count; i++)
+                                       po->pcscf_ipv4->addr[i] = g_strdup(devinfo->pcscf_ipv4[i]);
                }
        }
 
-       po->pcscf_ipv6 = g_malloc0(sizeof(pcscf_addr));
-       po->pcscf_ipv6->count = devinfo->pcscf_ipv6_count;
-       if (po->pcscf_ipv6->count > 0) {
-               unsigned int i;
-               po->pcscf_ipv6->addr = g_malloc0(sizeof(char *) * po->pcscf_ipv6->count);
-               for (i = 0; i < po->pcscf_ipv6->count; i++) {
-                       po->pcscf_ipv6->addr[i] = g_strdup(devinfo->pcscf_ipv6[i]);
+       po->pcscf_ipv6 = g_try_malloc0(sizeof(pcscf_addr));
+       if (po->pcscf_ipv6) {
+               po->pcscf_ipv6->count = devinfo->pcscf_ipv6_count;
+               if (po->pcscf_ipv6->count > 0) {
+                       unsigned int i;
+                       po->pcscf_ipv6->addr = g_try_malloc0(sizeof(char *) * po->pcscf_ipv6->count);
+                       if ((po->pcscf_ipv6->addr) && (devinfo->pcscf_ipv6))
+                               for (i = 0; i < po->pcscf_ipv6->count; i++)
+                                       po->pcscf_ipv6->addr[i] = g_strdup(devinfo->pcscf_ipv6[i]);
                }
        }
 
@@ -819,17 +810,25 @@ TReturn tcore_context_reset_devinfo(CoreObject *o)
        if (!po)
                return TCORE_RETURN_EINVAL;
 
-       if(po->ip_v6) g_free(po->ip_v6);
-       po->ip_v6 = NULL;
+       if (po->ip_v6) {
+               g_free(po->ip_v6);
+               po->ip_v6 = NULL;
+       }
 
-       if(po->dns_primary_v6) g_free(po->dns_primary_v6);
-       po->dns_primary_v6 = NULL;
+       if (po->dns_primary_v6) {
+               g_free(po->dns_primary_v6);
+               po->dns_primary_v6 = NULL;
+       }
 
-       if(po->dns_secondary_v6) g_free(po->dns_secondary_v6);
-       po->dns_secondary_v6 = NULL;
+       if (po->dns_secondary_v6) {
+               g_free(po->dns_secondary_v6);
+               po->dns_secondary_v6 = NULL;
+       }
 
-       if(po->gateway_v6) g_free(po->gateway_v6);
-       po->gateway_v6 = NULL;
+       if (po->gateway_v6) {
+               g_free(po->gateway_v6);
+               po->gateway_v6 = NULL;
+       }
 
        if (po->pcscf_ipv4) {
                for (i = 0; i < po->pcscf_ipv4->count; i++)
@@ -854,6 +853,68 @@ TReturn tcore_context_reset_devinfo(CoreObject *o)
        return TCORE_RETURN_SUCCESS;
 }
 
+TReturn tcore_context_set_bearer_info(CoreObject *o, struct tnoti_ps_dedicated_bearer_info *bearer_info)
+{
+       struct private_object_data *po = NULL;
+
+       CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS_CONTEXT, TCORE_RETURN_EINVAL);
+
+       po = tcore_object_ref_object(o);
+       if (!po)
+               return TCORE_RETURN_EINVAL;
+
+       if (!bearer_info)
+               return TCORE_RETURN_EINVAL;
+
+       if (bearer_info->dedicated_bearer.num_dedicated_bearer > 0)
+               memcpy(&(po->dedicated_bearer), &(bearer_info->dedicated_bearer), sizeof(struct dedicated_bearer_info));
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+TReturn tcore_context_get_bearer_info(CoreObject *o, struct dedicated_bearer_info *bearer_info)
+{
+       struct private_object_data *po = NULL;
+       guchar count = 0;
+
+       CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS_CONTEXT, TCORE_RETURN_EINVAL);
+
+       po = tcore_object_ref_object(o);
+       if (!po)
+               return TCORE_RETURN_EINVAL;
+
+       if (!bearer_info)
+               return TCORE_RETURN_EINVAL;
+
+       count = po->dedicated_bearer.num_dedicated_bearer;
+       if (count > MAX_NUM_DEDICATED_BEARER)
+               return TCORE_RETURN_EINVAL;
+
+       if (count > 0) {
+               bearer_info->num_dedicated_bearer = count;
+               bearer_info->secondary_context_id = po->dedicated_bearer.secondary_context_id;
+               memcpy(bearer_info->qos, po->dedicated_bearer.qos, count*sizeof(struct qos_parameter));
+       }
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+TReturn tcore_context_reset_bearer_info(CoreObject *o)
+{
+       struct private_object_data *po = NULL;
+
+       CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS_CONTEXT, TCORE_RETURN_EINVAL);
+
+       po = tcore_object_ref_object(o);
+       if (!po)
+               return TCORE_RETURN_EINVAL;
+
+       if (po->dedicated_bearer.num_dedicated_bearer > 0)
+               memset(&(po->dedicated_bearer), 0, sizeof(struct dedicated_bearer_info));
+
+       return TCORE_RETURN_SUCCESS;
+}
+
 void tcore_context_cp_service_info(CoreObject *dest, CoreObject *src)
 {
        struct private_object_data *d_po = NULL;
@@ -880,7 +941,7 @@ void tcore_context_cp_service_info(CoreObject *dest, CoreObject *src)
        memcpy(d_po->devname, s_po->devname, sizeof(char) * 16);
 }
 
-chartcore_context_get_ipv4_addr(CoreObject *o)
+char *tcore_context_get_ipv4_addr(CoreObject *o)
 {
        struct private_object_data *po = NULL;
 
@@ -893,7 +954,7 @@ char* tcore_context_get_ipv4_addr(CoreObject *o)
        return tcore_util_get_string_by_ip4type(po->ip_v4);
 }
 
-chartcore_context_get_ipv4_dns1(CoreObject *o)
+char *tcore_context_get_ipv4_dns1(CoreObject *o)
 {
        struct private_object_data *po = NULL;
 
@@ -906,7 +967,7 @@ char* tcore_context_get_ipv4_dns1(CoreObject *o)
        return tcore_util_get_string_by_ip4type(po->dns_primary_v4);
 }
 
-chartcore_context_get_ipv4_dns2(CoreObject *o)
+char *tcore_context_get_ipv4_dns2(CoreObject *o)
 {
        struct private_object_data *po = NULL;
 
@@ -919,7 +980,7 @@ char* tcore_context_get_ipv4_dns2(CoreObject *o)
        return tcore_util_get_string_by_ip4type(po->dns_secondary_v4);
 }
 
-chartcore_context_get_ipv4_gw(CoreObject *o)
+char *tcore_context_get_ipv4_gw(CoreObject *o)
 {
        struct private_object_data *po = NULL;
 
@@ -932,7 +993,7 @@ char* tcore_context_get_ipv4_gw(CoreObject *o)
        return tcore_util_get_string_by_ip4type(po->gateway_v4);
 }
 
-chartcore_context_get_ipv4_devname(CoreObject *o)
+char *tcore_context_get_ipv4_devname(CoreObject *o)
 {
        struct private_object_data *po = NULL;
 
@@ -948,7 +1009,7 @@ char* tcore_context_get_ipv4_devname(CoreObject *o)
        return g_strdup(po->devname);
 }
 
-chartcore_context_get_ipv6_addr(CoreObject *o)
+char *tcore_context_get_ipv6_addr(CoreObject *o)
 {
        struct private_object_data *po = NULL;
 
@@ -961,7 +1022,7 @@ char* tcore_context_get_ipv6_addr(CoreObject *o)
        return g_strdup(po->ip_v6);
 }
 
-chartcore_context_get_ipv6_dns1(CoreObject *o)
+char *tcore_context_get_ipv6_dns1(CoreObject *o)
 {
        struct private_object_data *po = NULL;
 
@@ -974,7 +1035,7 @@ char* tcore_context_get_ipv6_dns1(CoreObject *o)
        return g_strdup(po->dns_primary_v6);
 }
 
-chartcore_context_get_ipv6_dns2(CoreObject *o)
+char *tcore_context_get_ipv6_dns2(CoreObject *o)
 {
        struct private_object_data *po = NULL;
 
@@ -987,7 +1048,7 @@ char* tcore_context_get_ipv6_dns2(CoreObject *o)
        return g_strdup(po->dns_secondary_v6);
 }
 
-chartcore_context_get_ipv6_gw(CoreObject *o)
+char *tcore_context_get_ipv6_gw(CoreObject *o)
 {
        struct private_object_data *po = NULL;
 
@@ -1014,14 +1075,21 @@ pcscf_addr *tcore_context_get_pcscf_ipv4_addr(CoreObject *o)
        if (!po->pcscf_ipv4)
                return NULL;
 
-       pcscf_tmp = g_malloc0(sizeof(pcscf_addr));
+       pcscf_tmp = g_try_malloc0(sizeof(pcscf_addr));
+       if (!pcscf_tmp)
+               return NULL;
+
        pcscf_tmp->count = po->pcscf_ipv4->count;
        if (pcscf_tmp->count > 0) {
                unsigned int i;
-               pcscf_tmp->addr = g_malloc0(sizeof(char *) * po->pcscf_ipv4->count);
-               for (i = 0; i < po->pcscf_ipv4->count; i++) {
-                       pcscf_tmp->addr[i] = g_strdup(po->pcscf_ipv4->addr[i]);
+               pcscf_tmp->addr = g_try_malloc0(sizeof(char *) * po->pcscf_ipv4->count);
+               if (!pcscf_tmp->addr) {
+                       g_free(pcscf_tmp);
+                       return NULL;
                }
+
+               for (i = 0; i < po->pcscf_ipv4->count; i++)
+                       pcscf_tmp->addr[i] = g_strdup(po->pcscf_ipv4->addr[i]);
        }
 
        return pcscf_tmp;
@@ -1041,14 +1109,21 @@ pcscf_addr *tcore_context_get_pcscf_ipv6_addr(CoreObject *o)
        if (!po->pcscf_ipv6)
                return NULL;
 
-       pcscf_tmp = g_malloc0(sizeof(pcscf_addr));
+       pcscf_tmp = g_try_malloc0(sizeof(pcscf_addr));
+       if (!pcscf_tmp)
+               return NULL;
+
        pcscf_tmp->count = po->pcscf_ipv6->count;
        if (pcscf_tmp->count > 0) {
                unsigned int i;
-               pcscf_tmp->addr = g_malloc0(sizeof(char *) * po->pcscf_ipv6->count);
-               for (i = 0; i < po->pcscf_ipv6->count; i++) {
-                       pcscf_tmp->addr[i] = g_strdup(po->pcscf_ipv6->addr[i]);
+               pcscf_tmp->addr = g_try_malloc0(sizeof(char *) * po->pcscf_ipv6->count);
+               if (!pcscf_tmp->addr) {
+                       g_free(pcscf_tmp);
+                       return NULL;
                }
+
+               for (i = 0; i < po->pcscf_ipv6->count; i++)
+                       pcscf_tmp->addr[i] = g_strdup(po->pcscf_ipv6->addr[i]);
        }
 
        return pcscf_tmp;
index 5bf7838..c096c7a 100644 (file)
 #include <glib.h>
 
 #include "tcore.h"
+#include "internal/tcore_types.h"
 #include "plugin.h"
 #include "user_request.h"
 #include "co_gps.h"
 
 struct private_object_data {
-       struct tcore_gps_operations *ops;
+       struct tcore_gps_operations *ops[TCORE_OPS_TYPE_MAX];
 };
 
 static void _free_hook(CoreObject *o)
@@ -39,92 +40,96 @@ static void _free_hook(CoreObject *o)
 
        po = tcore_object_ref_object(o);
        if (po) {
-               free(po);
+               g_free(po);
                tcore_object_link_object(o, NULL);
        }
 }
 
-static TReturn _dispatcher(CoreObject *o, UserRequest *ur)
+static TReturn _dispatcher(CoreObject *o, UserRequest *ur, enum tcore_ops_type ops_type)
 {
        enum tcore_request_command command;
-       struct private_object_data *po = NULL;
+       struct private_object_data *po = tcore_object_ref_object(o);
+       struct tcore_gps_operations *ops = NULL;
 
-       if (!o || !ur)
-               return TCORE_RETURN_EINVAL;
+       CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_GPS, TCORE_RETURN_EINVAL);
+       CORE_OBJECT_VALIDATE_OPS_RETURN_VAL(ops_type, TCORE_RETURN_EINVAL);
 
-       po = tcore_object_ref_object(o);
-       if (!po || !po->ops)
-               return TCORE_RETURN_ENOSYS;
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_EINVAL);
+       tcore_check_null_ret_err("ur", ur, TCORE_RETURN_EINVAL);
+
+       ops = po->ops[ops_type];
+       tcore_check_null_ret_err("ops", ops, TCORE_RETURN_FAILURE);
 
        command = tcore_user_request_get_command(ur);
        switch (command) {
-               case TREQ_GPS_CONFIRM_MEASURE_POS:
-                       dbg("TREQ_GPS_CONFIRM_MEASURE_POS");
-                       if (!po->ops->confirm_measure_pos)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_GPS_CONFIRM_MEASURE_POS:
+               dbg("TREQ_GPS_CONFIRM_MEASURE_POS");
+               tcore_check_null_ret_err("ops->confirm_measure_pos",
+                       ops->confirm_measure_pos, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->confirm_measure_pos(o, ur);
+               return ops->confirm_measure_pos(o, ur);
 
-               case TREQ_GPS_SET_FREQUENCY_AIDING:
-                       dbg("TREQ_GPS_SET_FREQUENCY_AIDING");
-                       if (!po->ops->set_frequency_aiding)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_GPS_SET_FREQUENCY_AIDING:
+               dbg("TREQ_GPS_SET_FREQUENCY_AIDING");
+               tcore_check_null_ret_err("ops->set_frequency_aiding",
+                       ops->set_frequency_aiding, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->set_frequency_aiding(o, ur);
+               return ops->set_frequency_aiding(o, ur);
 
-               case TREQ_ENABLE_SMART_ASSISTANT:
-                       dbg("TREQ_ENABLE_SMART_ASSISTANT");
-                       if (!po->ops->enable_smart_assistant)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_ENABLE_SMART_ASSISTANT:
+               dbg("TREQ_ENABLE_SMART_ASSISTANT");
+               tcore_check_null_ret_err("ops->enable_smart_assistant",
+                       ops->enable_smart_assistant, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->enable_smart_assistant(o, ur);
+               return ops->enable_smart_assistant(o, ur);
 
-               case TREQ_DISABLE_SMART_ASSISTANT:
-                       dbg("TREQ_DISABLE_SMART_ASSISTANT");
-                       if (!po->ops->disable_smart_assistant)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_DISABLE_SMART_ASSISTANT:
+               dbg("TREQ_DISABLE_SMART_ASSISTANT");
+               tcore_check_null_ret_err("ops->disable_smart_assistant",
+                       ops->disable_smart_assistant, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->disable_smart_assistant(o, ur);
+               return ops->disable_smart_assistant(o, ur);
 
-               case TREQ_SYNC_SMART_ASSISTANT_AREA_LIST:
-                       dbg("TREQ_SYNC_SMART_ASSISTANT_AREA_LIST");
-                       if (!po->ops->sync_smart_assistant_area_list)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SYNC_SMART_ASSISTANT_AREA_LIST:
+               dbg("TREQ_SYNC_SMART_ASSISTANT_AREA_LIST");
+               tcore_check_null_ret_err("ops->sync_smart_assistant_area_list",
+                       ops->sync_smart_assistant_area_list, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->sync_smart_assistant_area_list(o, ur);
+               return ops->sync_smart_assistant_area_list(o, ur);
 
-               case TREQ_DEL_SMART_ASSISTANT_AREA_LIST:
-                       dbg("TREQ_DEL_SMART_ASSISTANT_AREA_LIST");
-                       if (!po->ops->del_smart_assistant_area_list)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_DEL_SMART_ASSISTANT_AREA_LIST:
+               dbg("TREQ_DEL_SMART_ASSISTANT_AREA_LIST");
+               tcore_check_null_ret_err("ops->del_smart_assistant_area_list",
+                       ops->del_smart_assistant_area_list, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->del_smart_assistant_area_list(o, ur);
+               return ops->del_smart_assistant_area_list(o, ur);
 
-               case TREQ_ADD_SMART_ASSISTANT_AREA:
-                       dbg("TREQ_ADD_SMART_ASSISTANT_AREA");
-                       if (!po->ops->add_smart_assistant_area)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_ADD_SMART_ASSISTANT_AREA:
+               dbg("TREQ_ADD_SMART_ASSISTANT_AREA");
+               tcore_check_null_ret_err("ops->add_smart_assistant_area",
+                       ops->add_smart_assistant_area, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->add_smart_assistant_area(o, ur);
+               return ops->add_smart_assistant_area(o, ur);
 
-               case TREQ_MODIFY_SMART_ASSISTANT_AREA:
-                       dbg("TREQ_MODIFY_SMART_ASSISTANT_AREA");
-                       if (!po->ops->modify_smart_assistant_area)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_MODIFY_SMART_ASSISTANT_AREA:
+               dbg("TREQ_MODIFY_SMART_ASSISTANT_AREA");
+               tcore_check_null_ret_err("ops->modify_smart_assistant_area",
+                       ops->modify_smart_assistant_area, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->modify_smart_assistant_area(o, ur);
+               return ops->modify_smart_assistant_area(o, ur);
 
-               case TREQ_SET_SMART_ASSISTANT_INFO:
-                       dbg("TREQ_SET_SMART_ASSISTANT_INFO");
-                       if (!po->ops->set_smart_assistant_info)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SET_SMART_ASSISTANT_INFO:
+               dbg("TREQ_SET_SMART_ASSISTANT_INFO");
+               tcore_check_null_ret_err("ops->set_smart_assistant_info",
+                       ops->set_smart_assistant_info, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->set_smart_assistant_info(o, ur);
+               return ops->set_smart_assistant_info(o, ur);
 
-               default:
-                       dbg("not supported cmd");
-                       break;
+       default:
+               dbg("not supported cmd");
+               break;
        }
+
        return TCORE_RETURN_SUCCESS;
 }
 
@@ -141,13 +146,14 @@ CoreObject *tcore_gps_new(TcorePlugin *p, const char *name,
        if (!o)
                return NULL;
 
-       po = calloc(1, sizeof(struct private_object_data));
+       po = g_try_malloc0(sizeof(struct private_object_data));
        if (!po) {
                tcore_object_free(o);
                return NULL;
        }
 
-       po->ops = ops;
+       /* set ops to default type when core object is created. */
+       po->ops[TCORE_OPS_TYPE_CP] = ops;
 
        tcore_object_set_type(o, CORE_OBJECT_TYPE_GPS);
        tcore_object_link_object(o, po);
@@ -164,16 +170,20 @@ void tcore_gps_free(CoreObject *o)
        tcore_object_free(o);
 }
 
-void tcore_gps_set_ops(CoreObject *o, struct tcore_gps_operations *ops)
+void tcore_gps_set_ops(CoreObject *o,
+       struct tcore_gps_operations *ops, enum tcore_ops_type ops_type)
 {
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK(o, CORE_OBJECT_TYPE_GPS);
+       CORE_OBJECT_VALIDATE_OPS_RETURN(ops_type);
 
        po = (struct private_object_data *)tcore_object_ref_object(o);
        if (!po) {
+               err("po is NULL");
                return;
        }
 
-       po->ops = ops;
+       /* set ops according to ops_type */
+       po->ops[ops_type] = ops;
 }
index ffbd27c..db4aa2e 100644 (file)
 #include <glib.h>
 
 #include "tcore.h"
+#include "internal/tcore_types.h"
 #include "plugin.h"
 #include "user_request.h"
 #include "co_modem.h"
 #include "hal.h"
 
 struct private_object_data {
-       struct tcore_modem_operations *ops;
+       struct tcore_modem_operations *ops[TCORE_OPS_TYPE_MAX];
 
        gboolean flight_mode;
        gboolean powered;
@@ -48,91 +49,91 @@ static void _free_hook(CoreObject *o)
        }
 }
 
-static TReturn _dispatcher(CoreObject *o, UserRequest *ur)
+static TReturn _dispatcher(CoreObject *o, UserRequest *ur, enum tcore_ops_type ops_type)
 {
        enum tcore_request_command command;
-       struct private_object_data *po = NULL;
+       struct private_object_data *po = tcore_object_ref_object(o);
+       struct tcore_modem_operations *ops = NULL;
 
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_MODEM, TCORE_RETURN_EINVAL);
+       CORE_OBJECT_VALIDATE_OPS_RETURN_VAL(ops_type, TCORE_RETURN_EINVAL);
 
-       po = tcore_object_ref_object(o);
-       if (!po || !po->ops)
-               return TCORE_RETURN_ENOSYS;
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_EINVAL);
+       tcore_check_null_ret_err("ur", ur, TCORE_RETURN_EINVAL);
+
+       ops = po->ops[ops_type];
+       tcore_check_null_ret_err("ops", ops, TCORE_RETURN_FAILURE);
 
        command = tcore_user_request_get_command(ur);
        switch (command) {
-               case TREQ_MODEM_POWER_ON:
-                       if (!po->ops->power_on)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_MODEM_POWER_ON:
+               tcore_check_null_ret_err("ops->power_on",
+                       ops->power_on, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->power_on(o, ur);
-                       break;
+               return ops->power_on(o, ur);
 
-               case TREQ_MODEM_POWER_OFF:
-                       if (!po->ops->power_off)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_MODEM_POWER_OFF:
+               tcore_check_null_ret_err("ops->power_off",
+                       ops->power_off, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->power_off(o, ur);
-                       break;
+               return ops->power_off(o, ur);
 
-               case TREQ_MODEM_POWER_RESET:
-                       if (!po->ops->power_reset)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_MODEM_POWER_RESET:
+               tcore_check_null_ret_err("ops->power_reset",
+                       ops->power_reset, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->power_reset(o, ur);
-                       break;
+               return ops->power_reset(o, ur);
 
-               case TREQ_MODEM_POWER_LOW:
-                       if (!po->ops->power_low)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_MODEM_POWER_LOW:
+               tcore_check_null_ret_err("ops->power_low",
+                       ops->power_low, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->power_low(o, ur);
-                       break;
+               return ops->power_low(o, ur);
 
-               case TREQ_MODEM_SET_FLIGHTMODE:
-                       if (!po->ops->set_flight_mode)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_MODEM_SET_FLIGHTMODE:
+               tcore_check_null_ret_err("ops->set_flight_mode",
+                       ops->set_flight_mode, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->set_flight_mode(o, ur);
-                       break;
+               return ops->set_flight_mode(o, ur);
 
-               case TREQ_MODEM_GET_IMEI:
-                       if (!po->ops->get_imei)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_MODEM_GET_IMEI:
+               tcore_check_null_ret_err("ops->get_imei",
+                       ops->get_imei, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->get_imei(o, ur);
-                       break;
+               return ops->get_imei(o, ur);
 
-               case TREQ_MODEM_GET_VERSION:
-                       if (!po->ops->get_version)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_MODEM_GET_VERSION:
+               tcore_check_null_ret_err("ops->get_version",
+                       ops->get_version, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->get_version(o, ur);
-                       break;
+               return ops->get_version(o, ur);
 
-               case TREQ_MODEM_GET_SN:
-                       if (!po->ops->get_sn)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_MODEM_GET_SN:
+               tcore_check_null_ret_err("ops->get_sn",
+                       ops->get_sn, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->get_sn(o, ur);
-                       break;
+               return ops->get_sn(o, ur);
 
-               case TREQ_MODEM_SET_DUN_PIN_CONTROL:
-                       if (!po->ops->dun_pin_ctrl)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_MODEM_SET_DUN_PIN_CONTROL:
+               tcore_check_null_ret_err("ops->dun_pin_ctrl",
+                       ops->dun_pin_ctrl, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->dun_pin_ctrl(o, ur);
-                       break;
+               return ops->dun_pin_ctrl(o, ur);
 
-               case TREQ_MODEM_GET_FLIGHTMODE:
-                       if (!po->ops->get_flight_mode)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_MODEM_GET_FLIGHTMODE:
+               tcore_check_null_ret_err("ops->get_flight_mode",
+                       ops->get_flight_mode, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->get_flight_mode(o, ur);
-                       break;
+               return ops->get_flight_mode(o, ur);
 
-               default:
-                       return TCORE_RETURN_EINVAL;
+       case TREQ_MODEM_GET_DEVICE_INFO:
+               tcore_check_null_ret_err("ops->get_device_info",
+                       ops->get_device_info, TCORE_RETURN_ENOSYS);
+
+               return ops->get_device_info(o, ur);
+
+       default:
+               return TCORE_RETURN_EINVAL;
        }
 
        return TCORE_RETURN_SUCCESS;
@@ -157,7 +158,8 @@ CoreObject *tcore_modem_new(TcorePlugin *p, const char *name,
                return NULL;
        }
 
-       po->ops = ops;
+       /* set ops to default type when core object is created. */
+       po->ops[TCORE_OPS_TYPE_CP] = ops;
 
        tcore_object_set_type(o, CORE_OBJECT_TYPE_MODEM);
        tcore_object_link_object(o, po);
@@ -173,18 +175,20 @@ void tcore_modem_free(CoreObject *o)
        tcore_object_free(o);
 }
 
-void tcore_modem_set_ops(CoreObject *o, struct tcore_modem_operations *ops)
+void tcore_modem_set_ops(CoreObject *o, struct tcore_modem_operations *ops, enum tcore_ops_type ops_type)
 {
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK(o, CORE_OBJECT_TYPE_MODEM);
+       CORE_OBJECT_VALIDATE_OPS_RETURN(ops_type);
 
        po = (struct private_object_data *)tcore_object_ref_object(o);
        if (!po) {
+               err("po is NULL");
                return;
        }
 
-       po->ops = ops;
+       po->ops[ops_type] = ops;
 }
 
 TReturn tcore_modem_set_flight_mode_state(CoreObject *o, gboolean flag)
index a26400f..da2451f 100644 (file)
 #include <glib.h>
 
 #include "tcore.h"
+#include "internal/tcore_types.h"
 #include "plugin.h"
 #include "queue.h"
+#include "server.h"
 #include "user_request.h"
 #include "co_network.h"
+#include "storage.h"
 
 struct private_object_data {
-       struct tcore_network_operations *ops;
+       struct tcore_network_operations *ops[TCORE_OPS_TYPE_MAX];
 
        enum telephony_network_service_type service_type;
        enum telephony_network_access_technology act;
@@ -43,192 +46,206 @@ struct private_object_data {
        unsigned int lac;
        unsigned int rac;
        unsigned int cell_id;
-       gboolean gsm_dtm_support; // DTM (Dual Transfer Mode)
+       gboolean gsm_dtm_support; /* DTM (Dual Transfer Mode) */
 
        char *network_name_short;
        char *network_name_full;
        char *network_name_spn;
        enum tcore_network_name_priority network_name_priority;
        GHashTable *operator_info_hash;
+       struct tel_network_ims_registration_info ims_reg_info; /* IMS specific */
+       gboolean ims_voice_status;
+       enum telephony_network_ecc_rat_search_status rat_search_status;
+       enum telephony_network_access_technology ecc_rat;
 };
 
-static TReturn _dispatcher(CoreObject *co, UserRequest *ur)
+static TReturn _dispatcher(CoreObject *co, UserRequest *ur, enum tcore_ops_type ops_type)
 {
        enum tcore_request_command command;
-       struct private_object_data *po = NULL;
+       struct private_object_data *po = tcore_object_ref_object(co);
+       struct tcore_network_operations *ops = NULL;
 
        CORE_OBJECT_CHECK_RETURN(co, CORE_OBJECT_TYPE_NETWORK, TCORE_RETURN_EINVAL);
+       CORE_OBJECT_VALIDATE_OPS_RETURN_VAL(ops_type, TCORE_RETURN_EINVAL);
 
-       po = tcore_object_ref_object(co);
-       if (!po || !po->ops)
-               return TCORE_RETURN_ENOSYS;
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_EINVAL);
+       tcore_check_null_ret_err("ur", ur, TCORE_RETURN_EINVAL);
+
+       ops = po->ops[ops_type];
+       tcore_check_null_ret_err("ops", ops, TCORE_RETURN_FAILURE);
 
        command = tcore_user_request_get_command(ur);
        switch (command) {
-               case TREQ_NETWORK_SEARCH:
-                       if (!po->ops->search)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_NETWORK_SEARCH:
+               tcore_check_null_ret_err("ops->search",
+                       ops->search, TCORE_RETURN_ENOSYS);
+
+               return ops->search(co, ur);
 
-                       return po->ops->search(co, ur);
+       case TREQ_NETWORK_SET_PLMN_SELECTION_MODE:
+               tcore_check_null_ret_err("ops->set_plmn_selection_mode",
+                       ops->set_plmn_selection_mode, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_SET_PLMN_SELECTION_MODE:
-                       if (!po->ops->set_plmn_selection_mode)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->set_plmn_selection_mode(co, ur);
 
-                       return po->ops->set_plmn_selection_mode(co, ur);
+       case TREQ_NETWORK_GET_PLMN_SELECTION_MODE:
+               tcore_check_null_ret_err("ops->get_plmn_selection_mode",
+                       ops->get_plmn_selection_mode, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_GET_PLMN_SELECTION_MODE:
-                       if (!po->ops->get_plmn_selection_mode)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->get_plmn_selection_mode(co, ur);
 
-                       return po->ops->get_plmn_selection_mode(co, ur);
+       case TREQ_NETWORK_SET_SERVICE_DOMAIN:
+               tcore_check_null_ret_err("ops->set_service_domain",
+                       ops->set_service_domain, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_SET_SERVICE_DOMAIN:
-                       if (!po->ops->set_service_domain)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->set_service_domain(co, ur);
 
-                       return po->ops->set_service_domain(co, ur);
+       case TREQ_NETWORK_GET_SERVICE_DOMAIN:
+               tcore_check_null_ret_err("ops->get_service_domain",
+                       ops->get_service_domain, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_GET_SERVICE_DOMAIN:
-                       if (!po->ops->get_service_domain)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->get_service_domain(co, ur);
 
-                       return po->ops->get_service_domain(co, ur);
+       case TREQ_NETWORK_SET_BAND:
+               tcore_check_null_ret_err("ops->set_band",
+                       ops->set_band, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_SET_BAND:
-                       if (!po->ops->set_band)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->set_band(co, ur);
 
-                       return po->ops->set_band(co, ur);
+       case TREQ_NETWORK_GET_BAND:
+               tcore_check_null_ret_err("ops->get_band",
+                       ops->get_band, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_GET_BAND:
-                       if (!po->ops->get_band)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->get_band(co, ur);
 
-                       return po->ops->get_band(co, ur);
+       case TREQ_NETWORK_SET_PREFERRED_PLMN:
+               tcore_check_null_ret_err("ops->set_preferred_plmn",
+                       ops->set_preferred_plmn, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_SET_PREFERRED_PLMN:
-                       if (!po->ops->set_preferred_plmn)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->set_preferred_plmn(co, ur);
 
-                       return po->ops->set_preferred_plmn(co, ur);
+       case TREQ_NETWORK_GET_PREFERRED_PLMN:
+               tcore_check_null_ret_err("ops->get_preferred_plmn",
+                       ops->get_preferred_plmn, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_GET_PREFERRED_PLMN:
-                       if (!po->ops->get_preferred_plmn)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->get_preferred_plmn(co, ur);
 
-                       return po->ops->get_preferred_plmn(co, ur);
+       case TREQ_NETWORK_SET_ORDER:
+               tcore_check_null_ret_err("ops->set_order",
+                       ops->set_order, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_SET_ORDER:
-                       if (!po->ops->set_order)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->set_order(co, ur);
 
-                       return po->ops->set_order(co, ur);
+       case TREQ_NETWORK_GET_ORDER:
+               tcore_check_null_ret_err("ops->get_order",
+                       ops->get_order, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_GET_ORDER:
-                       if (!po->ops->get_order)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->get_order(co, ur);
 
-                       return po->ops->get_order(co, ur);
+       case TREQ_NETWORK_SET_POWER_ON_ATTACH:
+               tcore_check_null_ret_err("ops->set_power_on_attach",
+                       ops->set_power_on_attach, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_SET_POWER_ON_ATTACH:
-                       if (!po->ops->set_power_on_attach)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->set_power_on_attach(co, ur);
 
-                       return po->ops->set_power_on_attach(co, ur);
+       case TREQ_NETWORK_GET_POWER_ON_ATTACH:
+               tcore_check_null_ret_err("ops->get_power_on_attach",
+                       ops->get_power_on_attach, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_GET_POWER_ON_ATTACH:
-                       if (!po->ops->get_power_on_attach)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->get_power_on_attach(co, ur);
 
-                       return po->ops->get_power_on_attach(co, ur);
+       case TREQ_NETWORK_SET_CANCEL_MANUAL_SEARCH:
+               tcore_check_null_ret_err("ops->set_cancel_manual_search",
+                       ops->set_cancel_manual_search, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_SET_CANCEL_MANUAL_SEARCH:
-                       if (!po->ops->set_cancel_manual_search)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->set_cancel_manual_search(co, ur);
 
-                       return po->ops->set_cancel_manual_search(co, ur);
+       case TREQ_NETWORK_GET_SERVING_NETWORK:
+               tcore_check_null_ret_err("ops->get_serving_network",
+                       ops->get_serving_network, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_GET_SERVING_NETWORK:
-                       if (!po->ops->get_serving_network)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->get_serving_network(co, ur);
 
-                       return po->ops->get_serving_network(co, ur);
+       case TREQ_NETWORK_SET_MODE:
+               tcore_check_null_ret_err("ops->set_mode",
+                       ops->set_mode, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_SET_MODE:
-                       if (!po->ops->set_mode)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->set_mode(co, ur);
 
-                       return po->ops->set_mode(co, ur);
+       case TREQ_NETWORK_GET_MODE:
+               tcore_check_null_ret_err("ops->get_mode",
+                       ops->get_mode, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_GET_MODE:
-                       if (!po->ops->get_mode)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->get_mode(co, ur);
 
-                       return po->ops->get_mode(co, ur);
+       case TREQ_NETWORK_SET_NEIGHBORING_CELL_INFO:
+               tcore_check_null_ret_err("ops->set_neighboring_cell_info",
+                       ops->set_neighboring_cell_info, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_SET_NEIGHBORING_CELL_INFO:
-                       if (!po->ops->set_neighboring_cell_info)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->set_neighboring_cell_info(co, ur);
 
-                       return po->ops->set_neighboring_cell_info(co, ur);
+       case TREQ_NETWORK_GET_NEIGHBORING_CELL_INFO:
+               tcore_check_null_ret_err("ops->get_neighboring_cell_info",
+                       ops->get_neighboring_cell_info, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_GET_NEIGHBORING_CELL_INFO:
-                       if (!po->ops->get_neighboring_cell_info)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->get_neighboring_cell_info(co, ur);
 
-                       return po->ops->get_neighboring_cell_info(co, ur);
+       case TREQ_NETWORK_SET_DEFAULT_DATA_SUBSCRIPTION:
+               tcore_check_null_ret_err("ops->set_default_data_subscription",
+                       ops->set_default_data_subscription, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_SET_DEFAULT_DATA_SUBSCRIPTION:
-                       if (!po->ops->set_default_data_subscription)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->set_default_data_subscription(co, ur);
 
-                       return po->ops->set_default_data_subscription(co, ur);
+       case TREQ_NETWORK_GET_DEFAULT_DATA_SUBSCRIPTION:
+               tcore_check_null_ret_err("ops->get_default_data_subscription",
+                       ops->get_default_data_subscription, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_GET_DEFAULT_DATA_SUBSCRIPTION:
-                       if (!po->ops->get_default_data_subscription)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->get_default_data_subscription(co, ur);
 
-                       return po->ops->get_default_data_subscription(co, ur);
+       case TREQ_NETWORK_SET_DEFAULT_SUBSCRIPTION:
+               tcore_check_null_ret_err("ops->set_default_subscription",
+                       ops->set_default_subscription, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_SET_DEFAULT_SUBSCRIPTION:
-                       if (!po->ops->set_default_subscription)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->set_default_subscription(co, ur);
 
-                       return po->ops->set_default_subscription(co, ur);
+       case TREQ_NETWORK_GET_DEFAULT_SUBSCRIPTION:
+               tcore_check_null_ret_err("ops->get_default_subscription",
+                       ops->get_default_subscription, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_GET_DEFAULT_SUBSCRIPTION:
-                       if (!po->ops->get_default_subscription)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->get_default_subscription(co, ur);
 
-                       return po->ops->get_default_subscription(co, ur);
+       case TREQ_NETWORK_SET_EMERGENCY_CALLBACK_MODE:
+               tcore_check_null_ret_err("ops->set_emergency_callback_mode",
+                       ops->set_emergency_callback_mode, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_SET_EMERGENCY_CALLBACK_MODE:
-                       if (!po->ops->set_emergency_callback_mode)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->set_emergency_callback_mode(co, ur);
 
-                       return po->ops->set_emergency_callback_mode(co, ur);
+       case TREQ_NETWORK_SET_ROAMING_PREFERENCE:
+               tcore_check_null_ret_err("ops->set_roaming_preference",
+                       ops->set_roaming_preference, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_SET_ROAMING_PREFERENCE:
-                       if (!po->ops->set_roaming_preference)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->set_roaming_preference(co, ur);
 
-                       return po->ops->set_roaming_preference(co, ur);
+       case TREQ_NETWORK_GET_ROAMING_PREFERENCE:
+               tcore_check_null_ret_err("ops->get_roaming_preference",
+                       ops->get_roaming_preference, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_GET_ROAMING_PREFERENCE:
-                       if (!po->ops->get_roaming_preference)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->get_roaming_preference(co, ur);
 
-                       return po->ops->get_roaming_preference(co, ur);
+       case TREQ_NETWORK_GET_SUBSCRIPTION_INFO:
+               tcore_check_null_ret_err("ops->get_subscription_info",
+                       ops->get_subscription_info, TCORE_RETURN_ENOSYS);
 
-               case TREQ_NETWORK_GET_SUBSCRIPTION_INFO:
-                       if (!po->ops->get_subscription_info)
-                               return TCORE_RETURN_ENOSYS;
+               return ops->get_subscription_info(co, ur);
 
-                       return po->ops->get_subscription_info(co, ur);
+       case TREQ_NETWORK_SEARCH_ECC_RAT:
+               tcore_check_null_ret_err("ops->search_ecc_rat",
+                       ops->search_ecc_rat, TCORE_RETURN_ENOSYS);
 
-               default:
-                       break;
+               return ops->search_ecc_rat(co, ur);
+
+       default:
+       break;
        }
 
        return TCORE_RETURN_SUCCESS;
@@ -242,7 +259,7 @@ static void _free_hook(CoreObject *co)
 
        po = tcore_object_ref_object(co);
        if (po) {
-               free(po);
+               g_free(po);
                tcore_object_link_object(co, NULL);
        }
 }
@@ -260,13 +277,15 @@ CoreObject *tcore_network_new(TcorePlugin *plugin, const char *name,
        if (!o)
                return NULL;
 
-       po = calloc(1, sizeof(struct private_object_data));
+       po = g_try_malloc0(sizeof(struct private_object_data));
        if (!po) {
                tcore_object_free(o);
                return NULL;
        }
 
-       po->ops = ops;
+       /* set ops to default type when core object is created. */
+       po->ops[TCORE_OPS_TYPE_CP] = ops;
+
        po->operator_info_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
 
        tcore_object_set_type(o, CORE_OBJECT_TYPE_NETWORK);
@@ -289,10 +308,13 @@ void tcore_network_free(CoreObject *co)
 
        if (po->network_name_short)
                free(po->network_name_short);
+
        if (po->network_name_full)
                free(po->network_name_full);
+
        if (po->network_name_spn)
                free(po->network_name_spn);
+
        if (po->plmn)
                free(po->plmn);
 
@@ -302,21 +324,24 @@ void tcore_network_free(CoreObject *co)
        tcore_object_free(co);
 }
 
-void tcore_network_set_ops(CoreObject *o, struct tcore_network_operations *ops)
+void tcore_network_set_ops(CoreObject *o,
+       struct tcore_network_operations *ops, enum tcore_ops_type ops_type)
 {
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK(o, CORE_OBJECT_TYPE_NETWORK);
+       CORE_OBJECT_VALIDATE_OPS_RETURN(ops_type);
 
        po = (struct private_object_data *)tcore_object_ref_object(o);
        if (!po) {
+               err("po is NULL");
                return;
        }
 
-       po->ops = ops;
+       po->ops[ops_type] = ops;
 }
 
-chartcore_network_get_plmn(CoreObject *co)
+char *tcore_network_get_plmn(CoreObject *co)
 {
        struct private_object_data *po = NULL;
 
@@ -348,7 +373,7 @@ TReturn tcore_network_set_plmn(CoreObject *co, const char *plmn)
 }
 
 
-chartcore_network_get_network_name(CoreObject *co,
+char *tcore_network_get_network_name(CoreObject *co,
                enum tcore_network_name_type type)
 {
        struct private_object_data *po = NULL;
@@ -381,48 +406,48 @@ TReturn tcore_network_set_network_name(CoreObject *co,
                return TCORE_RETURN_EINVAL;
 
        switch (type) {
-               case TCORE_NETWORK_NAME_TYPE_SHORT:
-                       if (po->network_name_short) {
-                               free (po->network_name_short);
-                               po->network_name_short = NULL;
-                       }
+       case TCORE_NETWORK_NAME_TYPE_SHORT:
+               if (po->network_name_short) {
+                       free(po->network_name_short);
+                       po->network_name_short = NULL;
+               }
 
-                       if (network_name)
-                               po->network_name_short = g_strdup (network_name);
+               if (network_name)
+                       po->network_name_short = g_strdup(network_name);
 
-                       break;
+       break;
 
-               case TCORE_NETWORK_NAME_TYPE_FULL:
-                       if (po->network_name_full) {
-                               free (po->network_name_full);
-                               po->network_name_full = NULL;
-                       }
+       case TCORE_NETWORK_NAME_TYPE_FULL:
+               if (po->network_name_full) {
+                       free(po->network_name_full);
+                       po->network_name_full = NULL;
+               }
 
-                       if (network_name)
-                               po->network_name_full = g_strdup (network_name);
+               if (network_name)
+                       po->network_name_full = g_strdup(network_name);
 
-                       break;
+       break;
 
-               case TCORE_NETWORK_NAME_TYPE_SPN:
-                       if (po->network_name_spn) {
-                               free (po->network_name_spn);
-                               po->network_name_spn = NULL;
-                       }
+       case TCORE_NETWORK_NAME_TYPE_SPN:
+               if (po->network_name_spn) {
+                       free(po->network_name_spn);
+                       po->network_name_spn = NULL;
+               }
 
-                       if (network_name)
-                               po->network_name_spn = g_strdup (network_name);
+               if (network_name)
+                       po->network_name_spn = g_strdup(network_name);
 
-                       break;
+       break;
 
-               default:
-                       return TCORE_RETURN_EINVAL;
+       default:
+               return TCORE_RETURN_EINVAL;
        }
 
        return TCORE_RETURN_SUCCESS;
 }
 
 TReturn tcore_network_get_network_name_priority(CoreObject *co,
-               enum tcore_network_name_priority *priority)
+       enum tcore_network_name_priority *priority)
 {
        struct private_object_data *po = NULL;
 
@@ -530,16 +555,17 @@ TReturn tcore_network_get_service_status(CoreObject *co,
                return TCORE_RETURN_EINVAL;
 
        switch (type) {
-               case TCORE_NETWORK_SERVICE_DOMAIN_TYPE_CIRCUIT:
-                       *result = po->cs_domain_status;
-                       break;
-
-               case TCORE_NETWORK_SERVICE_DOMAIN_TYPE_PACKET:
-                       *result = po->ps_domain_status;
-                       break;
-               default:
-                       err("invalid network type");
-                       break;
+       case TCORE_NETWORK_SERVICE_DOMAIN_TYPE_CIRCUIT:
+               *result = po->cs_domain_status;
+       break;
+
+       case TCORE_NETWORK_SERVICE_DOMAIN_TYPE_PACKET:
+               *result = po->ps_domain_status;
+       break;
+
+       default:
+               err("invalid network type");
+       break;
        }
 
        return TCORE_RETURN_SUCCESS;
@@ -558,26 +584,26 @@ TReturn tcore_network_set_service_status(CoreObject *co,
                return TCORE_RETURN_EINVAL;
 
        switch (type) {
-               case TCORE_NETWORK_SERVICE_DOMAIN_TYPE_CIRCUIT:
-                       po->cs_domain_status = status;
-                       dbg("cs.status = 0x%x", status);
-                       break;
-
-               case TCORE_NETWORK_SERVICE_DOMAIN_TYPE_PACKET:
-                       po->ps_domain_status = status;
-                       dbg("ps.status = 0x%x", status);
-                       break;
-               default:
-                       err("invalid network type");
-                       break;
-
+       case TCORE_NETWORK_SERVICE_DOMAIN_TYPE_CIRCUIT:
+               po->cs_domain_status = status;
+               dbg("cs.status = 0x%x", status);
+       break;
+
+       case TCORE_NETWORK_SERVICE_DOMAIN_TYPE_PACKET:
+               po->ps_domain_status = status;
+               dbg("ps.status = 0x%x", status);
+       break;
+
+       default:
+               err("invalid network type");
+       break;
        }
 
        return TCORE_RETURN_SUCCESS;
 }
 
 TReturn tcore_network_set_access_technology(CoreObject *co,
-               enum telephony_network_access_technology act)
+       enum telephony_network_access_technology act)
 {
        struct private_object_data *po = NULL;
 
@@ -593,7 +619,7 @@ TReturn tcore_network_set_access_technology(CoreObject *co,
 }
 
 TReturn tcore_network_get_access_technology(CoreObject *co,
-               enum telephony_network_access_technology *result)
+       enum telephony_network_access_technology *result)
 {
        struct private_object_data *po = NULL;
 
@@ -774,6 +800,150 @@ TReturn tcore_network_get_service_type(CoreObject *co,
        return TCORE_RETURN_SUCCESS;
 }
 
+TReturn tcore_network_set_ims_reg_info(CoreObject *co,
+       struct tel_network_ims_registration_info ims_reg_info)
+{
+       struct private_object_data *po = NULL;
+
+       CORE_OBJECT_CHECK_RETURN(co, CORE_OBJECT_TYPE_NETWORK, TCORE_RETURN_EINVAL);
+
+       po = tcore_object_ref_object(co);
+       if (!po)
+               return TCORE_RETURN_EINVAL;
+
+       po->ims_reg_info.is_registered = ims_reg_info.is_registered;
+       po->ims_reg_info.feature_mask = ims_reg_info.feature_mask;
+       po->ims_reg_info.network_type = ims_reg_info.network_type;
+       po->ims_reg_info.ecmp_mode = ims_reg_info.ecmp_mode;
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+TReturn tcore_network_get_ims_reg_info(CoreObject *co,
+       struct tel_network_ims_registration_info *ims_reg_info)
+{
+       struct private_object_data *po = NULL;
+
+       CORE_OBJECT_CHECK_RETURN(co, CORE_OBJECT_TYPE_NETWORK, TCORE_RETURN_EINVAL);
+
+       if (!ims_reg_info)
+               return TCORE_RETURN_EINVAL;
+
+       po = tcore_object_ref_object(co);
+       if (!po)
+               return TCORE_RETURN_EINVAL;
+
+       ims_reg_info->is_registered = po->ims_reg_info.is_registered;
+       ims_reg_info->feature_mask = po->ims_reg_info.feature_mask;
+       ims_reg_info->network_type = po->ims_reg_info.network_type;
+       ims_reg_info->ecmp_mode = po->ims_reg_info.ecmp_mode;
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+TReturn tcore_network_set_ims_voice_status(CoreObject *co, gboolean status)
+{
+       struct private_object_data *po = NULL;
+
+       CORE_OBJECT_CHECK_RETURN(co, CORE_OBJECT_TYPE_NETWORK, TCORE_RETURN_EINVAL);
+
+       po = tcore_object_ref_object(co);
+       if (!po)
+               return TCORE_RETURN_EINVAL;
+
+       po->ims_voice_status = status;
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+TReturn tcore_network_get_ims_voice_status(CoreObject *co, gboolean *status)
+{
+       struct private_object_data *po = NULL;
+
+       CORE_OBJECT_CHECK_RETURN(co, CORE_OBJECT_TYPE_NETWORK, TCORE_RETURN_EINVAL);
+
+       if (!status)
+               return TCORE_RETURN_EINVAL;
+
+       po = tcore_object_ref_object(co);
+       if (!po)
+               return TCORE_RETURN_EINVAL;
+
+       *status = po->ims_voice_status;
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+TReturn tcore_network_set_ecc_rat_search_status(CoreObject *co,
+       enum telephony_network_ecc_rat_search_status status)
+{
+       struct private_object_data *po = NULL;
+
+       CORE_OBJECT_CHECK_RETURN(co, CORE_OBJECT_TYPE_NETWORK, TCORE_RETURN_EINVAL);
+
+       po = tcore_object_ref_object(co);
+       if (!po)
+               return TCORE_RETURN_EINVAL;
+
+       po->rat_search_status = status;
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+TReturn tcore_network_get_ecc_rat_search_status(CoreObject *co,
+       enum telephony_network_ecc_rat_search_status *status)
+{
+       struct private_object_data *po = NULL;
+
+       CORE_OBJECT_CHECK_RETURN(co, CORE_OBJECT_TYPE_NETWORK, TCORE_RETURN_EINVAL);
+
+       if (!status)
+               return TCORE_RETURN_EINVAL;
+
+       po = tcore_object_ref_object(co);
+       if (!po)
+               return TCORE_RETURN_EINVAL;
+
+       *status = po->rat_search_status;
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+TReturn tcore_network_set_ecc_rat(CoreObject *co,
+       enum telephony_network_access_technology ecc_rat)
+{
+       struct private_object_data *po = NULL;
+
+       CORE_OBJECT_CHECK_RETURN(co, CORE_OBJECT_TYPE_NETWORK, TCORE_RETURN_EINVAL);
+
+       po = tcore_object_ref_object(co);
+       if (!po)
+               return TCORE_RETURN_EINVAL;
+
+       po->ecc_rat = ecc_rat;
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+TReturn tcore_network_get_ecc_rat(CoreObject *co,
+       enum telephony_network_access_technology *ecc_rat)
+{
+       struct private_object_data *po = NULL;
+
+       CORE_OBJECT_CHECK_RETURN(co, CORE_OBJECT_TYPE_NETWORK, TCORE_RETURN_EINVAL);
+
+       if (!ecc_rat)
+               return TCORE_RETURN_EINVAL;
+
+       po = tcore_object_ref_object(co);
+       if (!po)
+               return TCORE_RETURN_EINVAL;
+
+       *ecc_rat = po->ecc_rat;
+
+       return TCORE_RETURN_SUCCESS;
+}
+
 TReturn tcore_network_operator_info_add(CoreObject *co,
                const struct tcore_network_operator_info *noi)
 {
@@ -798,16 +968,15 @@ TReturn tcore_network_operator_info_add(CoreObject *co,
        if (!po)
                return TCORE_RETURN_EINVAL;
 
-       g_strlcpy(plmn, noi->mcc, 4);
-       g_strlcpy(plmn+3, noi->mnc, 3);
+       g_strlcpy(plmn, noi->mcc, NETWORK_MAX_MCC_LEN + 1);
+       g_strlcpy(plmn + NETWORK_MAX_MCC_LEN, noi->mnc, NETWORK_MAX_MNC_LEN + 1);
 
-       if (g_hash_table_lookup(po->operator_info_hash, plmn)) {
-               //dbg("Remove existed (key:%s)", plmn);
+       if (g_hash_table_lookup(po->operator_info_hash, plmn))
                g_hash_table_remove(po->operator_info_hash, plmn);
-       }
 
-       //dbg("Adding mcc[%s] mnc[%s] name[%s] type[%d] in operator info table", noi->mcc, noi->mnc, noi->name, noi->type);
-       g_hash_table_insert(po->operator_info_hash, g_strdup(plmn), g_memdup(noi, sizeof(struct tcore_network_operator_info)));
+       g_hash_table_insert(po->operator_info_hash,
+               g_strdup(plmn),
+               g_memdup(noi, sizeof(struct tcore_network_operator_info)));
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -817,7 +986,7 @@ tcore_network_operator_info_find(CoreObject *co, const char *mcc, const char *mn
 {
        struct private_object_data *po = NULL;
        struct tcore_network_operator_info *data;
-       char plmn[7];
+       char plmn[NETWORK_MAX_PLMN_LEN+1];
        int mcc_index, mnc_index;
 
        CORE_OBJECT_CHECK_RETURN(co, CORE_OBJECT_TYPE_NETWORK, NULL);
@@ -837,8 +1006,8 @@ tcore_network_operator_info_find(CoreObject *co, const char *mcc, const char *mn
        if (!po)
                return NULL;
 
-       g_strlcpy(plmn, mcc, 4);
-       g_strlcpy(plmn+3, mnc, 3);
+       g_strlcpy(plmn, mcc, NETWORK_MAX_MCC_LEN + 1);
+       g_strlcpy(plmn + NETWORK_MAX_MCC_LEN, mnc, NETWORK_MAX_MNC_LEN + 1);
 
        data =  g_hash_table_lookup(po->operator_info_hash, plmn);
 
@@ -852,3 +1021,247 @@ tcore_network_operator_info_find(CoreObject *co, const char *mcc, const char *mn
 
        return data;
 }
+
+void tcore_network_update_mcc_mnc_oper_list(CoreObject *co,
+       const char *plmn, const char *name, enum tcore_network_operator_info_type type)
+{
+       char mcc[NETWORK_MAX_MCC_LEN+1] = { 0, };
+       const char *mnc;
+       struct tcore_network_operator_info *noi = NULL;
+
+       CORE_OBJECT_CHECK(co, CORE_OBJECT_TYPE_NETWORK);
+
+       if (!plmn) {
+               err("plmn is NULL");
+               return;
+       }
+
+       if (strlen(plmn) < NETWORK_MAX_MCC_LEN+1) {
+               err("strlen of plmn is %d", strlen(plmn));
+               return;
+       }
+
+       memcpy(mcc, plmn, NETWORK_MAX_MCC_LEN);
+       mnc = plmn + NETWORK_MAX_MCC_LEN;
+
+       if (atoi(mcc) == 0) {
+               err("atoi(mcc) is Zero. mcc[%s]", mcc);
+               return;
+       }
+
+       noi = g_try_malloc0(sizeof(struct tcore_network_operator_info));
+       if (noi == NULL) {
+               err("Memory alloc failed");
+               return;
+       }
+
+       g_snprintf(noi->mcc, NETWORK_MAX_MCC_LEN+1, "%s", mcc);
+       g_snprintf(noi->mnc, NETWORK_MAX_MNC_LEN+1, "%s", mnc);
+       g_snprintf(noi->name, NETWORK_MAX_NETWORK_NAME_LEN+1, "%s", name);
+       noi->type = type;
+
+       info("[NETINFO] Update mcc[%s] mnc[%s] name[%s] type[%d] oper_list", noi->mcc, noi->mnc, noi->name, noi->type);
+       tcore_network_operator_info_add(co, noi);
+
+       g_free(noi);
+}
+
+/* Loads operator info from database */
+gboolean tcore_network_load_mcc_mnc_oper_list_from_db(TcorePlugin *p,
+       CoreObject *co, const char *mcc, const char *mnc, const char *db_path)
+{
+       Server *s;
+       Storage *strg;
+       void *handle;
+       char query[256] = {0, };
+       char mcc_str[NETWORK_MAX_MCC_LEN+1] = { 0, };
+       GHashTableIter iter;
+       gpointer key, value;
+       GHashTable *result = NULL, *row = NULL;
+       struct tcore_network_operator_info *noi = NULL;
+       int count = 0;
+
+       s = tcore_plugin_ref_server(p);
+       strg = tcore_server_find_storage(s, "database");
+
+       handle = tcore_storage_create_handle(strg, db_path);
+       if (!handle) {
+               err("fail to create database handle");
+               return FALSE;
+       }
+
+       g_snprintf(query, 255,
+               "select country, mcc, mnc, oper from mcc_mnc_oper_list where mcc='%s' and mnc='%s'",
+               mcc, mnc);
+       dbg("query = [%s]", query);
+
+       result = g_hash_table_new_full(g_str_hash, g_str_equal, NULL,
+               (GDestroyNotify) g_hash_table_destroy);
+       if (!result) {
+               err("fail to create new hash table");
+               tcore_storage_remove_handle(strg, handle);
+               return FALSE;
+       }
+
+       if (tcore_storage_read_query_database(strg, handle, query, NULL, result, 4) == FALSE) {
+               tcore_storage_remove_handle(strg, handle);
+               g_hash_table_destroy(result);
+               return FALSE;
+       }
+
+       g_hash_table_iter_init(&iter, result);
+       noi = g_try_malloc0(sizeof(struct tcore_network_operator_info));
+       if (noi == NULL) {
+               err("Memory alloc failed");
+               tcore_storage_remove_handle(strg, handle);
+               g_hash_table_destroy(result);
+               return FALSE;
+       }
+
+       while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) {
+               row = value;
+
+               memset(noi, 0x0, sizeof(struct tcore_network_operator_info));
+               memset(mcc_str, 0, sizeof(mcc_str));
+
+               g_snprintf(mcc_str, NETWORK_MAX_MCC_LEN+1, "%s", (char *)g_hash_table_lookup(row, "1"));
+               if (strlen(mcc_str) == 1)
+                       g_snprintf(noi->mcc, NETWORK_MAX_MCC_LEN+1, "00%s", mcc_str);
+               else if (strlen(mcc_str) == 2)
+                       g_snprintf(noi->mcc, NETWORK_MAX_MCC_LEN+1, "0%s", mcc_str);
+               else
+                       g_snprintf(noi->mcc, NETWORK_MAX_MCC_LEN+1, "%s", mcc_str);
+               g_snprintf(noi->mnc, NETWORK_MAX_MNC_LEN+1, "%s", (char *)g_hash_table_lookup(row, "2"));
+               g_snprintf(noi->name, NETWORK_MAX_NETWORK_NAME_LEN+1, "%s", (char *)g_hash_table_lookup(row, "3"));
+               g_snprintf(noi->country, NETWORK_MAX_COUNTRY_CODE_LEN+1, "%s", (char *)g_hash_table_lookup(row, "0"));
+               if (g_strcmp0(NETWORK_MCC_MNC_OPER_LIST_GSMA_DB, db_path) == 0)
+                       noi->type = TCORE_NETWORK_OPERATOR_INFO_TYPE_TS25_DB;
+               else
+                       noi->type = TCORE_NETWORK_OPERATOR_INFO_TYPE_DELTA_DB;
+               info("[NETINFO] load name from DB : mcc[%s] mnc[%s] name[%s] type:[%d]", noi->mcc, noi->mnc, noi->name, noi->type);
+               tcore_network_operator_info_add(co, noi);
+               count++;
+       }
+       g_free(noi);
+
+       g_hash_table_destroy(result);
+
+       tcore_storage_remove_handle(strg, handle);
+
+       if (count == 0)
+               return FALSE;
+
+       return TRUE;
+}
+
+/* Updates Operator info in the database */
+void tcore_network_update_mcc_mnc_oper_list_db(TcorePlugin *p, const char *mcc, const char *mnc, const char *oper_name)
+{
+       Server *s;
+       Storage *strg;
+       void *handle;
+       char query[256] = {0, };
+       struct tcore_network_operator_info *noi = NULL;
+       GHashTable *result, *row = NULL;
+       GHashTableIter iter;
+       gpointer key, value;
+       gboolean field_exist = FALSE;
+
+       if (G_UNLIKELY(!mcc || !mnc || !oper_name || !p)) {
+               err("Input Parameter Addresses : mcc[%p] mnc[%p] oper_name[%p] plugin[%p]", mcc, mnc, oper_name, p);
+               return;
+       }
+
+       if (G_UNLIKELY(strlen(oper_name) == 0)) {
+               err("strlen of oper_name is Zero");
+               return;
+       }
+
+       dbg("mcc[%s] mnc[%s] oper_name[%s]", mcc, mnc, oper_name);
+
+       /* 1. Get DB handle */
+       s = tcore_plugin_ref_server(p);
+       strg = tcore_server_find_storage(s, "database");
+
+       handle = tcore_storage_create_handle(strg, NETWORK_MCC_MNC_OPER_LIST_GSMA_DB);
+       if (!handle) {
+               err("fail to create database handle");
+               return;
+       }
+
+       /* 2. Check duplicated network operator name in DB */
+       g_snprintf(query, 255,
+               "select country, mcc, mnc, oper from mcc_mnc_oper_list where mcc='%s' and mnc='%s'",
+               mcc, mnc);
+       dbg("query = [%s]", query);
+
+       result = g_hash_table_new_full(g_str_hash, g_str_equal, NULL,
+               (GDestroyNotify) g_hash_table_destroy);
+       if (!result) {
+               err("fail to create new hash table");
+               tcore_storage_remove_handle(strg, handle);
+               return;
+       }
+
+       tcore_storage_read_query_database(strg, handle, query, NULL, result, 4);
+
+       g_hash_table_iter_init(&iter, result);
+       noi = g_try_malloc0(sizeof(struct tcore_network_operator_info));
+       if (noi == NULL) {
+               err("Memory alloc failed");
+               tcore_storage_remove_handle(strg, handle);
+               g_hash_table_destroy(result);
+               return;
+       }
+       while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) {
+               row = value;
+
+               memset(noi, 0x0, sizeof(struct tcore_network_operator_info));
+
+               g_snprintf(noi->mcc, NETWORK_MAX_MCC_LEN+1, "%s", (char *)g_hash_table_lookup(row, "1"));
+               g_snprintf(noi->mnc, NETWORK_MAX_MNC_LEN+1, "%s", (char *)g_hash_table_lookup(row, "2"));
+               g_snprintf(noi->name, NETWORK_MAX_NETWORK_NAME_LEN+1, "%s", (char *)g_hash_table_lookup(row, "3"));
+               g_snprintf(noi->country, NETWORK_MAX_COUNTRY_CODE_LEN+1, "%s", (char *)g_hash_table_lookup(row, "0"));
+
+               info("This field (mcc[%s] mnc[%s] name[%s]) will be updated ", noi->mcc, noi->mnc, noi->name);
+               field_exist = TRUE;
+       }
+       g_free(noi);
+       g_hash_table_destroy(result);
+
+       /* 3. Update Network Operator name DB */
+       result = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
+       if (!result) {
+               err("fail to create new hash table");
+               tcore_storage_remove_handle(strg, handle);
+               return;
+       }
+
+       if (field_exist) {
+               /* Update DB */
+               snprintf(query, 255, "update mcc_mnc_oper_list set oper = ? where mcc = ? and mnc = ?");
+               dbg("query[%s]", query);
+
+               g_hash_table_insert(result, (gpointer)"1", g_strdup(oper_name));
+               g_hash_table_insert(result, (gpointer)"2", g_strdup(mcc));
+               g_hash_table_insert(result, (gpointer)"3", g_strdup(mnc));
+
+               if (tcore_storage_update_query_database(strg, handle, query, result) == FALSE)
+                       err("update query failed");
+       } else {
+               /* Insert DB */
+               snprintf(query, 255, "insert into mcc_mnc_oper_list (country, mcc, mnc, oper) values (?, ?, ?, ?)");
+               dbg("query[%s]", query);
+
+               g_hash_table_insert(result, (gpointer)"1", g_strdup("__"));
+               g_hash_table_insert(result, (gpointer)"2", g_strdup(mcc));
+               g_hash_table_insert(result, (gpointer)"3", g_strdup(mnc));
+               g_hash_table_insert(result, (gpointer)"4", g_strdup(oper_name));
+
+               if (tcore_storage_insert_query_database(strg, handle, query, result) == FALSE)
+                       err("insert query failed");
+       }
+
+       g_hash_table_destroy(result);
+       tcore_storage_remove_handle(strg, handle);
+}
index 98a1e5a..6b38ece 100644 (file)
@@ -25,6 +25,7 @@
 #include <glib.h>
 
 #include "tcore.h"
+#include "internal/tcore_types.h"
 #include "plugin.h"
 #include "queue.h"
 #include "user_request.h"
 #include "co_phonebook.h"
 
 struct private_object_data {
-       struct tcore_phonebook_operations *ops;
+       struct tcore_phonebook_operations *ops[TCORE_OPS_TYPE_MAX];
+
        gboolean b_init;
        struct tel_phonebook_support_list support_list;
        struct tel_phonebook_field_support_list field_support_list;
        enum tel_phonebook_type selected;
 };
 
-static TReturn _dispatcher(CoreObject *o, UserRequest *ur)
+static TReturn _dispatcher(CoreObject *o, UserRequest *ur, enum tcore_ops_type ops_type)
 {
        enum tcore_request_command command;
-       struct private_object_data *po = NULL;
+       struct private_object_data *po = tcore_object_ref_object(o);
+       struct tcore_phonebook_operations *ops = NULL;
 
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PHONEBOOK, TCORE_RETURN_EINVAL);
+       CORE_OBJECT_VALIDATE_OPS_RETURN_VAL(ops_type, TCORE_RETURN_EINVAL);
 
-       po = tcore_object_ref_object(o);
-       if (!po || !po->ops)
-               return TCORE_RETURN_ENOSYS;
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_EINVAL);
+       tcore_check_null_ret_err("ur", ur, TCORE_RETURN_EINVAL);
+
+       ops = po->ops[ops_type];
+       tcore_check_null_ret_err("ops", ops, TCORE_RETURN_FAILURE);
 
        command = tcore_user_request_get_command(ur);
        switch (command) {
-               case TREQ_PHONEBOOK_GETCOUNT:
-                       if (!po->ops->get_count)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_PHONEBOOK_GETCOUNT:
+               tcore_check_null_ret_err("ops->get_count",
+                       ops->get_count, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->get_count(o, ur);
-                       break;
+               return ops->get_count(o, ur);
 
-               case TREQ_PHONEBOOK_GETMETAINFO:
-                       if (!po->ops->get_info)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_PHONEBOOK_GETMETAINFO:
+               tcore_check_null_ret_err("ops->get_info",
+                       ops->get_info, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->get_info(o, ur);
-                       break;
+               return ops->get_info(o, ur);
 
-               case TREQ_PHONEBOOK_GETUSIMINFO:
-                       if (!po->ops->get_usim_info)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_PHONEBOOK_GETUSIMINFO:
+               tcore_check_null_ret_err("ops->get_usim_info",
+                       ops->get_usim_info, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->get_usim_info(o, ur);
-                       break;
+               return ops->get_usim_info(o, ur);
 
-               case TREQ_PHONEBOOK_READRECORD:
-                       if (!po->ops->read_record)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_PHONEBOOK_READRECORD:
+               tcore_check_null_ret_err("ops->read_record",
+                       ops->read_record, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->read_record(o, ur);
-                       break;
+               return ops->read_record(o, ur);
 
-               case TREQ_PHONEBOOK_UPDATERECORD:
-                       if (!po->ops->update_record)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_PHONEBOOK_UPDATERECORD:
+               tcore_check_null_ret_err("ops->update_record",
+                       ops->update_record, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->update_record(o, ur);
-                       break;
+               return ops->update_record(o, ur);
 
-               case TREQ_PHONEBOOK_DELETERECORD:
-                       if (!po->ops->delete_record)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_PHONEBOOK_DELETERECORD:
+               tcore_check_null_ret_err("ops->delete_record",
+                       ops->delete_record, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->delete_record(o, ur);
-                       break;
+               return ops->delete_record(o, ur);
 
-               default:
-                       break;
+       default:
+               break;
        }
 
        return TCORE_RETURN_SUCCESS;
@@ -119,6 +119,7 @@ gboolean tcore_phonebook_get_status(CoreObject *o)
        struct private_object_data *po = NULL;
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PHONEBOOK, FALSE);
        po = tcore_object_ref_object(o);
+
        return po->b_init;
 }
 
@@ -127,19 +128,22 @@ gboolean tcore_phonebook_set_status(CoreObject *o, gboolean b_init)
        struct private_object_data *po = NULL;
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PHONEBOOK, FALSE);
        po = tcore_object_ref_object(o);
+
        po->b_init = b_init;
+
        return TRUE;
 }
 
-struct tel_phonebook_support_listtcore_phonebook_get_support_list(CoreObject *o)
+struct tel_phonebook_support_list *tcore_phonebook_get_support_list(CoreObject *o)
 {
-       struct tel_phonebook_support_list *tmp;
        struct private_object_data *po = NULL;
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PHONEBOOK, NULL);
        po = tcore_object_ref_object(o);
-       tmp = calloc(1, sizeof(struct tel_phonebook_support_list));
-       memcpy(tmp, &po->support_list, sizeof(struct tel_phonebook_support_list));
-       return tmp;
+
+       if (po == NULL)
+               return NULL;
+
+       return g_memdup(&po->support_list, sizeof(struct tel_phonebook_support_list));
 }
 
 gboolean tcore_phonebook_set_support_list(CoreObject *o, struct tel_phonebook_support_list *list)
@@ -147,19 +151,22 @@ gboolean tcore_phonebook_set_support_list(CoreObject *o, struct tel_phonebook_su
        struct private_object_data *po = NULL;
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PHONEBOOK, FALSE);
        po = tcore_object_ref_object(o);
+
        memcpy(&po->support_list, list, sizeof(struct tel_phonebook_support_list));
+
        return TRUE;
 }
 
-struct tel_phonebook_field_support_listtcore_phonebook_get_field_support_list(CoreObject *o)
+struct tel_phonebook_field_support_list *tcore_phonebook_get_field_support_list(CoreObject *o)
 {
-       struct tel_phonebook_field_support_list *tmp;
        struct private_object_data *po = NULL;
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PHONEBOOK, NULL);
        po = tcore_object_ref_object(o);
-       tmp = calloc(1, sizeof(struct tel_phonebook_field_support_list));
-       memcpy(tmp, &po->field_support_list, sizeof(struct tel_phonebook_field_support_list));
-       return tmp;
+
+       if (po == NULL)
+               return NULL;
+
+       return g_memdup(&po->field_support_list, sizeof(struct tel_phonebook_field_support_list));
 }
 
 gboolean tcore_phonebook_set_field_support_list(CoreObject *o, struct tel_phonebook_field_support_list *list)
@@ -167,7 +174,9 @@ gboolean tcore_phonebook_set_field_support_list(CoreObject *o, struct tel_phoneb
        struct private_object_data *po = NULL;
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PHONEBOOK, FALSE);
        po = tcore_object_ref_object(o);
+
        memcpy(&po->field_support_list, list, sizeof(struct tel_phonebook_field_support_list));
+
        return TRUE;
 }
 
@@ -176,6 +185,7 @@ enum tel_phonebook_type tcore_phonebook_get_selected_type(CoreObject *o)
        struct private_object_data *po = NULL;
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PHONEBOOK, PB_TYPE_UNKNOWNN);
        po = tcore_object_ref_object(o);
+
        return po->selected;
 }
 
@@ -184,12 +194,14 @@ gboolean tcore_phonebook_set_selected_type(CoreObject *o, enum tel_phonebook_typ
        struct private_object_data *po = NULL;
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PHONEBOOK, FALSE);
        po = tcore_object_ref_object(o);
+
        po->selected = t;
+
        return TRUE;
 }
 
 CoreObject *tcore_phonebook_new(TcorePlugin *p, const char *name,
-               struct tcore_phonebook_operations *ops, TcoreHal *hal)
+       struct tcore_phonebook_operations *ops, TcoreHal *hal)
 {
        CoreObject *o = NULL;
        struct private_object_data *po = NULL;
@@ -207,7 +219,9 @@ CoreObject *tcore_phonebook_new(TcorePlugin *p, const char *name,
                return NULL;
        }
 
-       po->ops = ops;
+       /* set ops to default type when core object is created. */
+       po->ops[TCORE_OPS_TYPE_CP] = ops;
+
        po->selected = PB_TYPE_UNKNOWNN;
 
        tcore_object_set_type(o, CORE_OBJECT_TYPE_PHONEBOOK);
@@ -224,16 +238,18 @@ void tcore_phonebook_free(CoreObject *o)
        tcore_object_free(o);
 }
 
-void tcore_phonebook_set_ops(CoreObject *o, struct tcore_phonebook_operations *ops)
+void tcore_phonebook_set_ops(CoreObject *o, struct tcore_phonebook_operations *ops, enum tcore_ops_type ops_type)
 {
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK(o, CORE_OBJECT_TYPE_PHONEBOOK);
+       CORE_OBJECT_VALIDATE_OPS_RETURN(ops_type);
 
        po = (struct private_object_data *)tcore_object_ref_object(o);
        if (!po) {
+               err("po is NULL");
                return;
        }
 
-       po->ops = ops;
+       po->ops[ops_type] = ops;
 }
index a5af014..bbb2339 100644 (file)
 #include <glib.h>
 
 #include "tcore.h"
+#include "internal/tcore_types.h"
 #include "plugin.h"
 #include "user_request.h"
 #include "co_ps.h"
 #include "co_network.h"
 
-struct p_callid_type{
+struct p_callid_type {
        unsigned int cid;
        gboolean active;
        gboolean connected;
@@ -39,34 +40,36 @@ struct p_callid_type{
 };
 
 struct private_object_data {
-       struct tcore_ps_operations *ops;
+       struct tcore_ps_operations *ops[TCORE_OPS_TYPE_MAX];
 
        gboolean online;
        gint num_of_pdn;
 
        /* 1 ~ UMTS_PS_MAX_CID */
        struct p_callid_type cid[PS_MAX_CID + 1];
-       //CoreObject *cid[PS_MAX_CID + 1];
 
        GSList *context_list;
 };
 
-static TReturn _dispatcher(CoreObject *o, UserRequest *ur)
+static TReturn _dispatcher(CoreObject *o, UserRequest *ur, enum tcore_ops_type ops_type)
 {
        enum tcore_request_command command;
-       struct private_object_data *po = NULL;
+       struct private_object_data *po = tcore_object_ref_object(o);
+       struct tcore_ps_operations *ops = NULL;
 
-       if (!o || !ur)
-               return TCORE_RETURN_EINVAL;
+       CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_MODEM, TCORE_RETURN_EINVAL);
+       CORE_OBJECT_VALIDATE_OPS_RETURN_VAL(ops_type, TCORE_RETURN_EINVAL);
 
-       po = tcore_object_ref_object(o);
-       if (!po || !po->ops)
-               return TCORE_RETURN_ENOSYS;
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_EINVAL);
+       tcore_check_null_ret_err("ur", ur, TCORE_RETURN_EINVAL);
+
+       ops = po->ops[ops_type];
+       tcore_check_null_ret_err("ops", ops, TCORE_RETURN_FAILURE);
 
        command = tcore_user_request_get_command(ur);
        switch (command) {
-               default:
-                       break;
+       default:
+               break;
        }
 
        return TCORE_RETURN_SUCCESS;
@@ -93,7 +96,7 @@ static void _free_hook(CoreObject *o)
                po->context_list = NULL;
        }
 
-       free(po);
+       g_free(po);
        tcore_object_link_object(o, NULL);
 }
 
@@ -178,9 +181,10 @@ static gboolean _ps_is_duplicated_apn(CoreObject *o, CoreObject *ps_context)
                                tcore_context_cp_service_info(ps_context, s_context);
                                g_free(t_apn);
                                g_free(s_apn);
+
                                return TRUE;
                        }
-                       g_free (s_apn);
+                       g_free(s_apn);
 
                        contexts = contexts->next;
                }
@@ -190,7 +194,7 @@ static gboolean _ps_is_duplicated_apn(CoreObject *o, CoreObject *ps_context)
        return FALSE;
 }
 
-static void _deactivate_context (gpointer context, gpointer user_data)
+static void _deactivate_context(gpointer context, gpointer user_data)
 {
        if (!context || !user_data)
                return;
@@ -199,7 +203,7 @@ static void _deactivate_context (gpointer context, gpointer user_data)
 }
 
 CoreObject *tcore_ps_new(TcorePlugin *p, const char *name,
-               struct tcore_ps_operations *ops, TcoreHal *hal)
+       struct tcore_ps_operations *ops, TcoreHal *hal)
 {
        CoreObject *o = NULL;
        struct private_object_data *po = NULL;
@@ -211,13 +215,14 @@ CoreObject *tcore_ps_new(TcorePlugin *p, const char *name,
        if (!o)
                return NULL;
 
-       po = calloc(1, sizeof(struct private_object_data));
+       po = g_try_malloc0(sizeof(struct private_object_data));
        if (!po) {
                tcore_object_free(o);
                return NULL;
        }
 
-       po->ops = ops;
+       /* set ops to default type when core object is created. */
+       po->ops[TCORE_OPS_TYPE_CP] = ops;
 
        tcore_object_set_type(o, CORE_OBJECT_TYPE_PS);
        tcore_object_link_object(o, po);
@@ -233,18 +238,21 @@ void tcore_ps_free(CoreObject *o)
        tcore_object_free(o);
 }
 
-void tcore_ps_set_ops(CoreObject *o, struct tcore_ps_operations *ops)
+void tcore_ps_set_ops(CoreObject *o,
+       struct tcore_ps_operations *ops, enum tcore_ops_type ops_type)
 {
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK(o, CORE_OBJECT_TYPE_PS);
+       CORE_OBJECT_VALIDATE_OPS_RETURN(ops_type);
 
        po = (struct private_object_data *)tcore_object_ref_object(o);
        if (!po) {
+               err("po is NULL");
                return;
        }
 
-       po->ops = ops;
+       po->ops[ops_type] = ops;
 }
 
 TReturn tcore_ps_add_context(CoreObject *o, CoreObject *ctx_o)
@@ -291,7 +299,7 @@ TReturn tcore_ps_set_online(CoreObject *o, gboolean state)
                return TCORE_RETURN_EINVAL;
 
        po->online = state;
-       dbg("ps status = %d", po->online);
+       dbg("PS Status: [%s]", (po->online ? "ONLINE" : "OFFLINE"));
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -306,11 +314,11 @@ TReturn tcore_ps_set_num_of_pdn(CoreObject *o, gint numbers)
        if (!po)
                return TCORE_RETURN_EINVAL;
 
-       if(numbers <= 0 || numbers > PS_MAX_CID) {
+       if (numbers <= 0 || numbers > PS_MAX_CID)
                po->num_of_pdn = PS_MAX_CID;
-       } else {
+       else
                po->num_of_pdn = numbers;
-       }
+
        dbg("ps num of pdn = %d, numbers = %d", po->num_of_pdn, numbers);
 
        return TCORE_RETURN_SUCCESS;
@@ -335,12 +343,12 @@ unsigned int tcore_ps_set_cid_active(CoreObject *o, unsigned int cid, unsigned i
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS, 0);
-       if(cid == 0){
+       if (cid == 0)
                return 0;
-       }
+
        po = tcore_object_ref_object(o);
        for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) {
-               if (po->cid[idx_cid].cid == cid){
+               if (po->cid[idx_cid].cid == cid) {
                        po->cid[idx_cid].active = enable;
                        return 1;
                }
@@ -355,21 +363,18 @@ unsigned int tcore_ps_get_cid_active(CoreObject *o, unsigned int cid)
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS, 0);
-       if(cid == 0){
+       if (cid == 0)
                return 0;
-       }
 
        po = tcore_object_ref_object(o);
-       for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) {
-               if (po->cid[idx_cid].cid == cid){
+       for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++)
+               if (po->cid[idx_cid].cid == cid)
                        return po->cid[idx_cid].active;
-               }
-       }
 
        return 0;
 }
 
-GSListtcore_ps_get_active_cids(CoreObject *o)
+GSList *tcore_ps_get_active_cids(CoreObject *o)
 {
        int idx_cid = 0;
        GSList *active_list = NULL;
@@ -379,11 +384,9 @@ GSList* tcore_ps_get_active_cids(CoreObject *o)
 
        po = tcore_object_ref_object(o);
 
-       for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) {
-               if (po->cid[idx_cid].active){
+       for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++)
+               if (po->cid[idx_cid].active)
                        active_list = g_slist_append(active_list, &po->cid[idx_cid].cid);
-               }
-       }
 
        return active_list;
 }
@@ -394,13 +397,12 @@ unsigned int tcore_ps_set_cid_connected(CoreObject *o, unsigned int cid, unsigne
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS, 0);
-       if(cid == 0){
+       if (cid == 0)
                return 0;
-       }
 
        po = tcore_object_ref_object(o);
        for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) {
-               if (po->cid[idx_cid].cid == cid){
+               if (po->cid[idx_cid].cid == cid) {
                        po->cid[idx_cid].connected = connected;
                        return 1;
                }
@@ -415,21 +417,18 @@ unsigned int tcore_ps_get_cid_connected(CoreObject *o, unsigned int cid)
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS, 0);
-       if(cid == 0){
+       if (cid == 0)
                return 0;
-       }
 
        po = tcore_object_ref_object(o);
-       for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) {
-               if (po->cid[idx_cid].cid == cid){
+       for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++)
+               if (po->cid[idx_cid].cid == cid)
                        return po->cid[idx_cid].connected;
-               }
-       }
 
        return 0;
 }
 
-GSListtcore_ps_get_connected_cids(CoreObject *o)
+GSList *tcore_ps_get_connected_cids(CoreObject *o)
 {
        int idx_cid = 0;
        GSList *active_list = NULL;
@@ -439,16 +438,14 @@ GSList* tcore_ps_get_connected_cids(CoreObject *o)
 
        po = tcore_object_ref_object(o);
 
-       for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) {
-               if (po->cid[idx_cid].connected){
+       for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++)
+               if (po->cid[idx_cid].connected)
                        active_list = g_slist_append(active_list, &po->cid[idx_cid].cid);
-               }
-       }
 
        return active_list;
 }
 
-unsigned int tcore_ps_is_active_apn(CoreObject *o, const charapn)
+unsigned int tcore_ps_is_active_apn(CoreObject *o, const char *apn)
 {
        int idx_cid = 0;
        struct private_object_data *po = NULL;
@@ -457,13 +454,12 @@ unsigned int tcore_ps_is_active_apn(CoreObject *o, const char* apn)
 
        po = tcore_object_ref_object(o);
 
-       for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++){
+       for (idx_cid = 1; idx_cid <= po->num_of_pdn; idx_cid++) {
                if (po->cid[idx_cid].cid == 0)
                        continue;
 
-               if (g_strcmp0((const char*)po->cid[idx_cid].apn, apn) == 0 && po->cid[idx_cid].active) {
+               if (g_strcmp0((const char *)po->cid[idx_cid].apn, apn) == 0 && po->cid[idx_cid].active)
                        return 1;
-               }
        }
 
        return 0;
@@ -549,22 +545,21 @@ gboolean tcore_ps_any_context_activating_activated(CoreObject *o, int * state)
 
                        context_state = tcore_context_get_state(pdp_o);
 
-                       if(CONTEXT_STATE_ACTIVATED == context_state) {
+                       if (CONTEXT_STATE_ACTIVATED == context_state) {
                                *state = CONTEXT_STATE_ACTIVATED;
                                return  TRUE;
-                       }
-                       else if (CONTEXT_STATE_ACTIVATING == context_state){
+                       } else if (CONTEXT_STATE_ACTIVATING == context_state) {
                                *state = CONTEXT_STATE_ACTIVATING;
                                ret = TRUE;
                                continue;
-                       }
-                       else if (CONTEXT_STATE_DEACTIVATING == context_state){
+                       } else if (CONTEXT_STATE_DEACTIVATING == context_state) {
                                *state = CONTEXT_STATE_DEACTIVATING;
                                ret = TRUE;
                                continue;
                        }
                }
        }
+
        return ret;
 }
 
@@ -591,25 +586,22 @@ TReturn tcore_ps_assign_context_id(CoreObject *o, CoreObject *context, unsigned
                                po->cid[idx].cid = idx;
                                po->cid[idx].contexts = g_slist_append(po->cid[idx].contexts, context);
                                po->cid[idx].apn = tcore_context_get_apn(context);
+
                                dbg("assign contexts(%p) in cid(%d), apn(%s)", context, idx, po->cid[idx].apn);
+
                                return tcore_context_set_id(context, idx);
-                       }
-                       else {
+                       } else
                                dbg("cid[%d] is not null", idx);
-                       }
                }
 
                dbg("can't find empty cid");
-       }
-       else {
+       } else {
                /* Manual assign */
                if (po->cid[cid].cid == cid) {
                        po->cid[cid].contexts = g_slist_append(po->cid[cid].contexts, context);
                        return tcore_context_set_id(context, cid);
-               }
-               else {
+               } else
                        dbg("cid[%d] is not null", cid);
-               }
        }
 
        return TCORE_RETURN_PS_CID_ERROR;
@@ -630,7 +622,8 @@ TReturn tcore_ps_send_dormant_request(CoreObject *o, void *user_data)
                return TCORE_RETURN_PS_NETWORK_NOT_READY;
        }
 
-       return po->ops->send_dormant_request(o, user_data);
+       /* By 'default' considering Modem/CP opearations */
+       return po->ops[TCORE_OPS_TYPE_CP]->send_dormant_request(o, user_data);
 }
 
 TReturn tcore_ps_clear_context_id(CoreObject *o, CoreObject *context)
@@ -646,16 +639,15 @@ TReturn tcore_ps_clear_context_id(CoreObject *o, CoreObject *context)
                return TCORE_RETURN_EINVAL;
 
        i = tcore_context_get_id(context);
-       if (i == 0) {
+       if (i == 0)
                return TCORE_RETURN_PS_CID_ERROR;
-       }
 
        if (i > po->num_of_pdn)
                return TCORE_RETURN_PS_CID_ERROR;
 
        po->cid[i].contexts = g_slist_remove(po->cid[i].contexts, context);
        cnt = g_slist_length(po->cid[i].contexts);
-       if (cnt <= 0){
+       if (cnt <= 0) {
                po->cid[i].cid = 0;
                po->cid[i].active = FALSE;
                po->cid[i].connected = FALSE;
@@ -688,14 +680,11 @@ TReturn tcore_ps_define_context(CoreObject *o, CoreObject *ps_context, void *use
 
        co_nw = tcore_plugin_ref_core_object(tcore_object_ref_plugin(o), CORE_OBJECT_TYPE_NETWORK);
        tcore_network_get_access_technology(co_nw, &act);
-       if( act >= NETWORK_ACT_IS95A && act <= NETWORK_ACT_EHRPD ){
-               tcore_context_set_tech_preference(ps_context,CONTEXT_TECH_3GPP2);
-       } else if ((act >= NETWORK_ACT_GSM && act <= NETWORK_ACT_GSM_UTRAN) || act == NETWORK_ACT_LTE){
-               tcore_context_set_tech_preference(ps_context,CONTEXT_TECH_3GPP);
-       } else {
-               tcore_context_set_tech_preference(ps_context,CONTEXT_TECH_INVALID);
-               err("Invalid tech preference");
-               return TCORE_RETURN_FAILURE;
+       if (act >= NETWORK_ACT_IS95A && act <= NETWORK_ACT_EHRPD)
+               tcore_context_set_tech_preference(ps_context, CONTEXT_TECH_3GPP2);
+       else {
+               tcore_context_set_tech_preference(ps_context, CONTEXT_TECH_3GPP);
+               dbg("3GPP preference by default");
        }
 
        rv = _ps_is_duplicated_apn(o, ps_context);
@@ -706,14 +695,14 @@ TReturn tcore_ps_define_context(CoreObject *o, CoreObject *ps_context, void *use
                return TCORE_RETURN_SUCCESS;
        }
 
-       if (tcore_context_get_id(ps_context) == 0) {
+       if (tcore_context_get_id(ps_context) == 0)
                if (tcore_ps_assign_context_id(o, ps_context, 0) != TCORE_RETURN_SUCCESS)
                        return TCORE_RETURN_PS_CID_ERROR;
-       }
 
        dbg("contexts(%p), cid = %d", ps_context, tcore_context_get_id(ps_context));
 
-       return po->ops->define_context(o, ps_context, user_data);
+       /* By 'default' considering Modem/CP opearations */
+       return po->ops[TCORE_OPS_TYPE_CP]->define_context(o, ps_context, user_data);
 }
 
 TReturn tcore_ps_activate_context(CoreObject *o, CoreObject *ps_context, void *user_data)
@@ -728,7 +717,7 @@ TReturn tcore_ps_activate_context(CoreObject *o, CoreObject *ps_context, void *u
        if (!po)
                return TCORE_RETURN_EINVAL;
 
-       if (!po->online) {
+       if (!po->online) {
                dbg("ps network is not online !");
                return TCORE_RETURN_PS_NETWORK_NOT_READY;
        }
@@ -737,8 +726,7 @@ TReturn tcore_ps_activate_context(CoreObject *o, CoreObject *ps_context, void *u
                return TCORE_RETURN_EINVAL;
 
        rv = _ps_is_active_context(o, ps_context);
-       if (!rv)
-       {
+       if (!rv) {
                dbg("it is not defined context");
                return TCORE_RETURN_EINVAL;
        }
@@ -752,15 +740,13 @@ TReturn tcore_ps_activate_context(CoreObject *o, CoreObject *ps_context, void *u
 
        context_state = tcore_context_get_state(ps_context);
 
-       if (context_state == CONTEXT_STATE_ACTIVATED){
+       if (context_state == CONTEXT_STATE_ACTIVATED) {
                dbg("Context state : CONTEXT_STATE_ACTIVATED");
                return TCORE_RETURN_SUCCESS;
-       }
-       else if (context_state == CONTEXT_STATE_ACTIVATING){
+       } else if (context_state == CONTEXT_STATE_ACTIVATING) {
                dbg("Context state : CONTEXT_STATE_ACTIVATING");
                return TCORE_RETURN_SUCCESS;
-       }
-       else if (context_state == CONTEXT_STATE_DEACTIVATING){
+       } else if (context_state == CONTEXT_STATE_DEACTIVATING) {
                dbg("Context state : CONTEXT_STATE_DEACTIVATING");
                return TCORE_RETURN_PS_DEACTIVATING;
        }
@@ -768,8 +754,10 @@ TReturn tcore_ps_activate_context(CoreObject *o, CoreObject *ps_context, void *u
        dbg("cid = %d", tcore_context_get_id(ps_context));
 
        tcore_context_set_state(ps_context, CONTEXT_STATE_ACTIVATING);
-       rv = po->ops->activate_context(o, ps_context, user_data);
-       if(rv != TCORE_RETURN_SUCCESS)
+
+       /* By 'default' considering Modem/CP opearations */
+       rv = po->ops[TCORE_OPS_TYPE_CP]->activate_context(o, ps_context, user_data);
+       if (rv != TCORE_RETURN_SUCCESS)
                tcore_context_set_state(ps_context, CONTEXT_STATE_DEACTIVATED);
 
        return rv;
@@ -809,22 +797,22 @@ TReturn tcore_ps_deactivate_context(CoreObject *o, CoreObject *ps_context, void
        }
 
        context_state = tcore_context_get_state(ps_context);
-       if (context_state == CONTEXT_STATE_DEACTIVATED){
+       if (context_state == CONTEXT_STATE_DEACTIVATED) {
                dbg("Context State : CONTEXT_STATE_DEACTIVATED");
                return TCORE_RETURN_SUCCESS;
-       }
-       else if (context_state == CONTEXT_STATE_DEACTIVATING){
+       } else if (context_state == CONTEXT_STATE_DEACTIVATING) {
                dbg("Context State : CONTEXT_STATE_DEACTIVATING");
                return TCORE_RETURN_SUCCESS;
-       }
-       else if (context_state == CONTEXT_STATE_ACTIVATING){
+       } else if (context_state == CONTEXT_STATE_ACTIVATING) {
                dbg("Context State :CONTEXT_STATE_ACTIVATING");
                return TCORE_RETURN_PS_ACTIVATING;
        }
+
        tcore_context_set_state(ps_context, CONTEXT_STATE_DEACTIVATING);
 
-       rv = po->ops->deactivate_context(o, ps_context, user_data);
-       if(rv != TCORE_RETURN_SUCCESS)
+       /* By 'default' considering Modem/CP opearations */
+       rv = po->ops[TCORE_OPS_TYPE_CP]->deactivate_context(o, ps_context, user_data);
+       if (rv != TCORE_RETURN_SUCCESS)
                tcore_context_set_state(ps_context, CONTEXT_STATE_ACTIVATED);
 
        return rv;
@@ -850,10 +838,10 @@ TReturn tcore_ps_deactivate_contexts(CoreObject *o)
        for (temp_index = 1; temp_index <= po->num_of_pdn; temp_index++) {
                if (po->cid[temp_index].cid != 0) {
                        contexts = po->cid[temp_index].contexts;
-                       if(!contexts)
+                       if (!contexts)
                                continue;
 
-                       g_slist_foreach (contexts, _deactivate_context, o);
+                       g_slist_foreach(contexts, _deactivate_context, o);
                }
        }
 
@@ -880,10 +868,10 @@ TReturn tcore_ps_deactivate_cid(CoreObject *o, unsigned int cid)
        for (temp_index = 1; temp_index <= po->num_of_pdn; temp_index++) {
                if (po->cid[temp_index].cid != 0 && po->cid[temp_index].cid == cid) {
                        contexts = po->cid[temp_index].contexts;
-                       if(!contexts)
+                       if (!contexts)
                                continue;
 
-                       g_slist_foreach (contexts, _deactivate_context, o);
+                       g_slist_foreach(contexts, _deactivate_context, o);
                }
        }
 
index c4adb6e..2111991 100644 (file)
 #include <glib.h>
 
 #include "tcore.h"
+#include "internal/tcore_types.h"
 #include "plugin.h"
 #include "queue.h"
 #include "user_request.h"
 #include "co_sap.h"
 
 struct private_object_data {
-       struct tcore_sap_operations *ops;
+       struct tcore_sap_operations *ops[TCORE_OPS_TYPE_MAX];
 };
 
-static TReturn _dispatcher(CoreObject *o, UserRequest *ur)
+static TReturn _dispatcher(CoreObject *o, UserRequest *ur, enum tcore_ops_type ops_type)
 {
        enum tcore_request_command command;
-       struct private_object_data *po = NULL;
+       struct private_object_data *po = tcore_object_ref_object(o);
+       struct tcore_sap_operations *ops = NULL;
 
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_SAP, TCORE_RETURN_EINVAL);
+       CORE_OBJECT_VALIDATE_OPS_RETURN_VAL(ops_type, TCORE_RETURN_EINVAL);
 
-       po = tcore_object_ref_object(o);
-       if (!po || !po->ops)
-               return TCORE_RETURN_ENOSYS;
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_EINVAL);
+       tcore_check_null_ret_err("ur", ur, TCORE_RETURN_EINVAL);
+
+       ops = po->ops[ops_type];
+       tcore_check_null_ret_err("ops", ops, TCORE_RETURN_FAILURE);
 
        command = tcore_user_request_get_command(ur);
        switch (command) {
-               case TREQ_SAP_REQ_CONNECT:
-                       po = tcore_object_ref_object(o);
-                       if (!po->ops->connect)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SAP_REQ_CONNECT:
+               tcore_check_null_ret_err("ops->connect",
+                       ops->connect, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->connect(o, ur);
-                       break;
+               return ops->connect(o, ur);
 
-               case TREQ_SAP_REQ_DISCONNECT:
-                       if (!po->ops->disconnect)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SAP_REQ_DISCONNECT:
+               tcore_check_null_ret_err("ops->disconnect",
+                       ops->disconnect, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->disconnect(o, ur);
-                       break;
+               return ops->disconnect(o, ur);
 
-               case TREQ_SAP_REQ_STATUS:
-                       if (!po->ops->req_status)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SAP_REQ_STATUS:
+               tcore_check_null_ret_err("ops->req_status",
+                       ops->req_status, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->req_status(o, ur);
-                       break;
+               return ops->req_status(o, ur);
 
-               case TREQ_SAP_REQ_ATR:
-                       if (!po->ops->get_atr)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SAP_REQ_ATR:
+               tcore_check_null_ret_err("ops->get_atr",
+                       ops->get_atr, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->get_atr(o, ur);
-                       break;
+               return ops->get_atr(o, ur);
 
-               case TREQ_SAP_TRANSFER_APDU:
-                       if (!po->ops->transfer_apdu)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SAP_TRANSFER_APDU:
+               tcore_check_null_ret_err("ops->transfer_apdu",
+                       ops->transfer_apdu, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->transfer_apdu(o, ur);
-                       break;
+               return ops->transfer_apdu(o, ur);
 
-               case TREQ_SAP_SET_PROTOCOL:
-                       if (!po->ops->set_transport_protocol)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SAP_SET_PROTOCOL:
+               tcore_check_null_ret_err("ops->set_transport_protocol",
+                       ops->set_transport_protocol, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->set_transport_protocol(o, ur);
-                       break;
+               return ops->set_transport_protocol(o, ur);
 
-               case TREQ_SAP_SET_POWER:
-                       if (!po->ops->set_power)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SAP_SET_POWER:
+               tcore_check_null_ret_err("ops->set_power",
+                       ops->set_power, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->set_power(o, ur);
-                       break;
+               return ops->set_power(o, ur);
 
-               case TREQ_SAP_REQ_CARDREADERSTATUS:
-                       if (!po->ops->get_cardreader_status)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SAP_REQ_CARDREADERSTATUS:
+               tcore_check_null_ret_err("ops->get_cardreader_status",
+                       ops->get_cardreader_status, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->get_cardreader_status(o, ur);
-                       break;
+               return ops->get_cardreader_status(o, ur);
 
-               default:
-                       break;
+       default:
+               break;
        }
-       return TCORE_RETURN_SUCCESS;
-}
-
-static void _clone_hook(CoreObject *src, CoreObject *dest)
-{
-       struct private_object_data *src_po = NULL;
-       struct private_object_data *dest_po = NULL;
 
-       if (!src || !dest)
-               return;
-
-       dest_po = calloc(1, sizeof(struct private_object_data));
-       if (!dest_po) {
-               tcore_object_link_object(dest, NULL);
-               return;
-       }
-
-       src_po = tcore_object_ref_object(src);
-       dest_po->ops = src_po->ops;
-
-       tcore_object_link_object(dest, dest_po);
+       return TCORE_RETURN_SUCCESS;
 }
 
 static void _free_hook(CoreObject *o)
@@ -162,12 +139,12 @@ CoreObject *tcore_sap_new(TcorePlugin *p, const char *name,
                return NULL;
        }
 
-       po->ops = ops;
+       /* set ops to default type when core object is created. */
+       po->ops[TCORE_OPS_TYPE_CP] = ops;
 
        tcore_object_set_type(o, CORE_OBJECT_TYPE_SAP);
        tcore_object_link_object(o, po);
        tcore_object_set_free_hook(o, _free_hook);
-       tcore_object_set_clone_hook(o, _clone_hook);
        tcore_object_set_dispatcher(o, _dispatcher);
 
        return o;
@@ -179,16 +156,18 @@ void tcore_sap_free(CoreObject *o)
        tcore_object_free(o);
 }
 
-void tcore_sap_set_ops(CoreObject *o, struct tcore_sap_operations *ops)
+void tcore_sap_set_ops(CoreObject *o, struct tcore_sap_operations *ops, enum tcore_ops_type ops_type)
 {
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK(o, CORE_OBJECT_TYPE_SAP);
+       CORE_OBJECT_VALIDATE_OPS_RETURN(ops_type);
 
        po = (struct private_object_data *)tcore_object_ref_object(o);
        if (!po) {
+               err("po is NULL");
                return;
        }
 
-       po->ops = ops;
-}
\ No newline at end of file
+       po->ops[ops_type] = ops;
+}
index baff4c6..86df030 100644 (file)
@@ -25,6 +25,7 @@
 #include <glib.h>
 
 #include "tcore.h"
+#include "internal/tcore_types.h"
 #include "plugin.h"
 #include "queue.h"
 #include "user_request.h"
 #include "util.h"
 #include "co_sat.h"
 
-#define SATK_PROACTIVE_CMD_TAG 0xD0  /*Proactive Command Tag*/
-#define SATK_MENU_SELECTION_TAG        0xD3  /*Menu Selection Tag*/
-#define SATK_EVENT_DOWNLOAD_TAG        0xD6  /*Event Download Tag*/
-
-/*Tag Values (without Comprehension bit)*/
-#define SATK_COMMAND_DETAILS_TAG       0x01 /* COMMAND DETAILS TAG */
-#define SATK_DEVICE_IDENTITY_TAG       0x02 /* DEVICE IDENTITY TAG */
-#define SATK_RESULT_TAG        0x03 /* RESULT TAG */
-#define SATK_DURATION_TAG      0x04 /* DURATION TAG */
-#define SATK_ALPHA_IDENTIFIER_TAG      0x05 /* ALPHA IDENTIFIER TAG */
-#define SATK_ADDRESS_TAG       0x06 /* ADDRESS TAG */
+#define SATK_PROACTIVE_CMD_TAG                 0xD0 /* Proactive Command Tag */
+#define SATK_MENU_SELECTION_TAG                        0xD3 /* Menu Selection Tag */
+#define SATK_EVENT_DOWNLOAD_TAG                        0xD6 /* Event Download Tag */
+
+/*
+ * Tag Values (without Comprehension bit)
+ */
+#define SATK_COMMAND_DETAILS_TAG                       0x01 /* COMMAND DETAILS TAG */
+#define SATK_DEVICE_IDENTITY_TAG                       0x02 /* DEVICE IDENTITY TAG */
+#define SATK_RESULT_TAG                                0x03 /* RESULT TAG */
+#define SATK_DURATION_TAG                              0x04 /* DURATION TAG */
+#define SATK_ALPHA_IDENTIFIER_TAG                      0x05 /* ALPHA IDENTIFIER TAG */
+#define SATK_ADDRESS_TAG                               0x06 /* ADDRESS TAG */
 #define SATK_CAPABILITY_CONFIGURATION_PARAMETERS_TAG   0x07 /* CAPABILITY CONFIGURATION PARAMETERS TAG */
-#define SATK_SUB_ADDRESS_TAG   0x08 /* SUB ADDRESS TAG */
-#define SATK_SS_STRING_TAG     0x09 /* SS STRING TAG */
-#define SATK_USSD_STRING_TAG   0x0A /* USSD STRING TAG */
-#define SATK_SMS_TPDU_TAG      0x0B /* SMS TPDU TAG */
-#define SATK_CELL_BROADCAST_PAGE_TAG   0x0C /* CELL BROADCAST PAGE TAG */
-#define SATK_TEXT_STRING_TAG   0x0D /* TEXT STRING TAG */
-#define SATK_TONE_TAG  0x0E /* TONE TAG */
-#define SATK_ITEM_TAG  0x0F /* ITEM TAG */
-#define SATK_ITEM_IDENTIFIER_TAG       0x10 /* ITEM IDENTIFIER TAG */
-#define SATK_RESPONSE_LENGTH_TAG       0x11 /* RESPONSE LENGTH TAG */
-#define SATK_FILE_LIST_TAG     0x12 /* FILE LIST TAG */
-#define SATK_LOCATION_INFORMATION_TAG  0x13 /* LOCATION INFORMATION TAG */
-#define SATK_IMEI_TAG  0x14 /* IMEI TAG */
-#define SATK_HELP_REQUEST_TAG  0x15 /* HELP REQUEST TAG */
+#define SATK_SUB_ADDRESS_TAG                           0x08 /* SUB ADDRESS TAG */
+#define SATK_SS_STRING_TAG                             0x09 /* SS STRING TAG */
+#define SATK_USSD_STRING_TAG                           0x0A /* USSD STRING TAG */
+#define SATK_SMS_TPDU_TAG                              0x0B /* SMS TPDU TAG */
+#define SATK_CELL_BROADCAST_PAGE_TAG                   0x0C /* CELL BROADCAST PAGE TAG */
+#define SATK_TEXT_STRING_TAG                           0x0D /* TEXT STRING TAG */
+#define SATK_TONE_TAG                                  0x0E /* TONE TAG */
+#define SATK_ITEM_TAG                                  0x0F /* ITEM TAG */
+#define SATK_ITEM_IDENTIFIER_TAG                       0x10 /* ITEM IDENTIFIER TAG */
+#define SATK_RESPONSE_LENGTH_TAG                       0x11 /* RESPONSE LENGTH TAG */
+#define SATK_FILE_LIST_TAG                             0x12 /* FILE LIST TAG */
+#define SATK_LOCATION_INFORMATION_TAG          0x13 /* LOCATION INFORMATION TAG */
+#define SATK_IMEI_TAG                                  0x14 /* IMEI TAG */
+#define SATK_HELP_REQUEST_TAG                          0x15 /* HELP REQUEST TAG */
 #define SATK_NETWORK_MEASUREMENT_RESULTS_TAG   0x16 /* NETWORK MEASUREMENT RESULTS TAG */
-#define SATK_DEFAULT_TEXT_TAG  0x17 /* DEFAULT TEXT TAG */
+#define SATK_DEFAULT_TEXT_TAG                          0x17 /* DEFAULT TEXT TAG */
 #define SATK_ITEMS_NEXT_ACTION_INDICATOR_TAG   0x18 /* ITEMS NEXT ACTION INDICATOR TAG */
-#define SATK_EVENT_LIST_TAG    0x19 /* EVENT LIST TAG */
-#define SATK_CAUSE_TAG 0x1A /* CAUSE TAG */
-#define SATK_LOCATION_STATUS_TAG       0x1B /* LOCATION STATUS TAG */
-#define SATK_BCCH_CHANNEL_LIST_TAG     0x1D /* BCCH CHANNEL LIST TAG */
-#define SATK_ICON_IDENTIFIER_TAG       0x1E /* ICON IDENTIFIER TAG */
-#define SATK_ITEM_ICON_IDENTIFIER_LIST_TAG     0x1F /* ITEM ICON IDENTIFIER LIST TAG */
-#define SATK_DATE_TIME_AND_TIME_ZONE_TAG       0x26 /* DATE TIME AND TIME ZONE TAG */
+#define SATK_EVENT_LIST_TAG                            0x19 /* EVENT LIST TAG */
+#define SATK_CAUSE_TAG                                 0x1A /* CAUSE TAG */
+#define SATK_LOCATION_STATUS_TAG                       0x1B /* LOCATION STATUS TAG */
+#define SATK_BCCH_CHANNEL_LIST_TAG                     0x1D /* BCCH CHANNEL LIST TAG */
+#define SATK_ICON_IDENTIFIER_TAG                       0x1E /* ICON IDENTIFIER TAG */
+#define SATK_ITEM_ICON_IDENTIFIER_LIST_TAG             0x1F /* ITEM ICON IDENTIFIER LIST TAG */
+#define SATK_DATE_TIME_AND_TIME_ZONE_TAG               0x26 /* DATE TIME AND TIME ZONE TAG */
 #define SATK_CALL_CONTROL_REQUESTED_ACTION_TAG 0x27 /* CALL CONTROL REQUESTED ACTION TAG */
-#define SATK_AT_COMMAND_TAG    0x28 /* AT COMMAND TAG */
-#define SATK_AT_RESPONSE_TAG   0x29 /* AT RESPONSE TAG */
-#define SATK_BC_REPEAT_INDICATOR_TAG   0x2A /* BC REPEAT INDICATOR TAG */
-#define SATK_IMMEDIATE_RESPONSE_TAG    0x2B /* IMMEDIATE RESPONSE TAG */
-#define SATK_DTMF_STRING_TAG   0x2C /* DTMF STRING TAG */
-#define SATK_LANGUAGE_TAG      0x2D /* LANGUAGE TAG */
-#define SATK_BROWSER_IDENTITY_TAG      0x30 /* BROWSER IDENTITY TAG */
-#define SATK_URL_TAG   0x31 /* URL TAG */
-#define SATK_BEARER_TAG        0x32 /* BEARER TAG */
-#define SATK_PROVISIONING_REF_FILE_TAG 0x33 /* PROVISIONING REFERENCE FILE TAG */
-#define SATK_BROWSER_TERMINATION_CAUSE_TAG     0x34 /* BROWSER TERMINATION CAUSE TAG */
-#define SATK_BEARER_DISCRIPTION_TAG    0x35 /* BEARER DISCRIPTION TAG */
-#define SATK_CHANNEL_DATA_TAG  0x36 /* CHANNEL DATA TAG */
-#define SATK_CHANNEL_DATA_LEN_TAG      0x37 /* CHANNEL DATA LEN TAG */
-#define SATK_CHANNEL_STATUS_TAG        0x38 /* CHANNEL STATUS TAG */
-#define SATK_BUFFER_SIZE_TAG   0x39 /* BUFFER SIZE TAG */
-#define SATK_CARD_READER_IDENTIFIER_TAG        0x3A /* CARD READER IDENTIFIER TAG */
+#define SATK_AT_COMMAND_TAG                            0x28 /* AT COMMAND TAG */
+#define SATK_AT_RESPONSE_TAG                           0x29 /* AT RESPONSE TAG */
+#define SATK_BC_REPEAT_INDICATOR_TAG                   0x2A /* BC REPEAT INDICATOR TAG */
+#define SATK_IMMEDIATE_RESPONSE_TAG                    0x2B /* IMMEDIATE RESPONSE TAG */
+#define SATK_DTMF_STRING_TAG                           0x2C /* DTMF STRING TAG */
+#define SATK_LANGUAGE_TAG                              0x2D /* LANGUAGE TAG */
+#define SATK_BROWSER_IDENTITY_TAG                      0x30 /* BROWSER IDENTITY TAG */
+#define SATK_URL_TAG                                   0x31 /* URL TAG */
+#define SATK_BEARER_TAG                                0x32 /* BEARER TAG */
+#define SATK_PROVISIONING_REF_FILE_TAG         0x33 /* PROVISIONING REFERENCE FILE TAG */
+#define SATK_BROWSER_TERMINATION_CAUSE_TAG             0x34 /* BROWSER TERMINATION CAUSE TAG */
+#define SATK_BEARER_DISCRIPTION_TAG                    0x35 /* BEARER DISCRIPTION TAG */
+#define SATK_CHANNEL_DATA_TAG                  0x36 /* CHANNEL DATA TAG */
+#define SATK_CHANNEL_DATA_LEN_TAG                      0x37 /* CHANNEL DATA LEN TAG */
+#define SATK_CHANNEL_STATUS_TAG                        0x38 /* CHANNEL STATUS TAG */
+#define SATK_BUFFER_SIZE_TAG                           0x39 /* BUFFER SIZE TAG */
+#define SATK_CARD_READER_IDENTIFIER_TAG                0x3A /* CARD READER IDENTIFIER TAG */
 #define SATK_USIM_ME_INTERFACE_TRANSPORT_LEVEL_TAG     0x3C /* USIM ME INTERFACE TRANSPORT LEVEL  */
-#define SATK_OTHER_ADDRESS_TAG 0x3E /* OTHER ADDRESS        */
-#define SATK_NETWORK_ACCESS_TAG        0x47 /* NETWORK ACCESS NAME TAG */
-#define SATK_CDMA_SMS_TPDU_TAG 0x48 /* CDMA SMS TPDU TAG */
-#define SATK_REMOTE_ENTITY_ADDRESS_TAG 0x49 /* REMOTE ENTITY ADDRESS TAG */
-#define SATK_TEXT_ATTRIBUTE_TAG        0x50    /* TEXT ATTRIBUTE TAG */
-#define SATK_TEXT_ATTRIBUTE_LIST_TAG   0x51    /* TEXT ATTRIBUTE LIST TAG */
+#define SATK_OTHER_ADDRESS_TAG                 0x3E /* OTHER ADDRESS        */
+#define SATK_NETWORK_ACCESS_TAG                        0x47 /* NETWORK ACCESS NAME TAG */
+#define SATK_CDMA_SMS_TPDU_TAG                 0x48 /* CDMA SMS TPDU TAG */
+#define SATK_REMOTE_ENTITY_ADDRESS_TAG         0x49 /* REMOTE ENTITY ADDRESS TAG */
+#define SATK_TEXT_ATTRIBUTE_TAG                        0x50 /* TEXT ATTRIBUTE TAG */
+#define SATK_TEXT_ATTRIBUTE_LIST_TAG                   0x51 /* TEXT ATTRIBUTE LIST TAG */
 
 /* general data object lengths */
-#define SATK_DCS_LENGTH 0x01
-#define SATK_COMMAND_DETAILS_LENGTH    0x03  /*  COMMAND DETAILS LENGTH */
-#define SATK_DEVICE_IDENTITY_LENGTH    0x02  /*  DEVICE IDENTITY LENGTH */
-#define SATK_ICON_IDENTITY_LENGTH      0x02  /*  ICON IDENTITY LENGTH */
-#define SATK_DURATION_LENGTH   0x02  /*  DURATION LENGTH */
-#define SATK_ITEM_IDENTIFIER_LENGTH    0x01  /*  ITEM IDENTIFIER LENGTH */
-#define SATK_LOCATION_INFORMATION_LENGTH       0x07  /*  LOCATION INFORMATION LENGTH */
-#define SATK_HELP_REQUEST_LENGTH       0x00  /*  HELP REQUEST LENGTH */
-#define SATK_LOCATION_STATUS_LENGTH    0x01  /*  LOCATION STATUS LENGTH */
-#define SATK_DATE_TIME_AND_TIME_ZONE_LENGTH    0x07  /*  DATE TIME AND TIME ZONE LENGTH */
-#define SATK_LANGUAGE_LENGTH   0x02  /*  LANGUAGE LENGTH */
-#define SATK_BC_REPEAT_IND_LENGTH      0x01  /*  BC REPEAT INDICATION LENGTH */
-#define SATK_RESPONSE_LENGTH_LENGTH    0x02  /*  RESPONSE LENGTH LENGTH */
-#define SATK_TONE_LENGTH       0x01  /*  TONE LENGTH */
-#define SATK_BROWSER_ID_LENGTH 0x01  /*  BROWSER ID LENGTH */
-#define SATK_BROWSER_TERMINATION_CAUSE_LENGTH  0x01  /*  BROWSER TERMINATION CAUSE LENGTH */
-#define SATK_BUFFER_SIZE_LENGTH        0x02 /*  BUFFER SIZE LENGTH */
+#define SATK_DCS_LENGTH                                0x01
+#define SATK_COMMAND_DETAILS_LENGTH                    0x03 /*  COMMAND DETAILS LENGTH */
+#define SATK_DEVICE_IDENTITY_LENGTH                    0x02 /*  DEVICE IDENTITY LENGTH */
+#define SATK_ICON_IDENTITY_LENGTH                      0x02 /*  ICON IDENTITY LENGTH */
+#define SATK_DURATION_LENGTH                           0x02 /*  DURATION LENGTH */
+#define SATK_ITEM_IDENTIFIER_LENGTH                    0x01 /*  ITEM IDENTIFIER LENGTH */
+#define SATK_LOCATION_INFORMATION_LENGTH               0x07 /*  LOCATION INFORMATION LENGTH */
+#define SATK_HELP_REQUEST_LENGTH                       0x00 /*  HELP REQUEST LENGTH */
+#define SATK_LOCATION_STATUS_LENGTH                    0x01 /*  LOCATION STATUS LENGTH */
+#define SATK_DATE_TIME_AND_TIME_ZONE_LENGTH    0x07 /*  DATE TIME AND TIME ZONE LENGTH */
+#define SATK_LANGUAGE_LENGTH                           0x02 /*  LANGUAGE LENGTH */
+#define SATK_BC_REPEAT_IND_LENGTH                      0x01 /*  BC REPEAT INDICATION LENGTH */
+#define SATK_RESPONSE_LENGTH_LENGTH                    0x02 /*  RESPONSE LENGTH LENGTH */
+#define SATK_TONE_LENGTH                               0x01 /*  TONE LENGTH */
+#define SATK_BROWSER_ID_LENGTH                 0x01 /*  BROWSER ID LENGTH */
+#define SATK_BROWSER_TERMINATION_CAUSE_LENGTH  0x01 /*  BROWSER TERMINATION CAUSE LENGTH */
+#define SATK_BUFFER_SIZE_LENGTH                        0x02 /*  BUFFER SIZE LENGTH */
 #define SATK_UICC_ME_TRANS_INTERFACE_LEVEL_LENGTH      0x03 /*  UICC TERMINAL TRANSPORT INTERFACE LEVEL LENGTH */
 #define SATK_CHANNEL_DATA_LENGTH_VALUE_LENGTH  0x01 /*  CHANNEL DATA LENGTH VALUE LENGTH */
-#define SATK_CHANNEL_STATUS_LENGTH     0x02 /*  CHANNEL STATUS LENGTH */
+#define SATK_CHANNEL_STATUS_LENGTH                     0x02 /*  CHANNEL STATUS LENGTH */
 
 struct private_object_data {
-       struct tcore_sat_operations *ops;
+       struct tcore_sat_operations *ops[TCORE_OPS_TYPE_MAX];
 };
 
 gboolean b_comprehensive = FALSE;
 
-static TReturn _dispatcher(CoreObject *o, UserRequest *ur)
+static TReturn _dispatcher(CoreObject *o, UserRequest *ur, enum tcore_ops_type ops_type)
 {
        enum tcore_request_command command;
-       struct private_object_data *po = NULL;
+       struct private_object_data *po = tcore_object_ref_object(o);
+       struct tcore_sat_operations *ops = NULL;
 
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_SAT, TCORE_RETURN_EINVAL);
+       CORE_OBJECT_VALIDATE_OPS_RETURN_VAL(ops_type, TCORE_RETURN_EINVAL);
 
-       po = tcore_object_ref_object(o);
-       if (!po || !po->ops)
-               return TCORE_RETURN_ENOSYS;
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_EINVAL);
+       tcore_check_null_ret_err("ur", ur, TCORE_RETURN_EINVAL);
+
+       ops = po->ops[ops_type];
+       tcore_check_null_ret_err("ops", ops, TCORE_RETURN_FAILURE);
 
        command = tcore_user_request_get_command(ur);
        switch (command) {
-               case TREQ_SAT_REQ_ENVELOPE:
-                       if (!po->ops->envelope)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SAT_REQ_ENVELOPE:
+               tcore_check_null_ret_err("ops->envelope",
+                       ops->envelope, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->envelope(o, ur);
-                       break;
+               return ops->envelope(o, ur);
 
-               case TREQ_SAT_REQ_TERMINALRESPONSE:
-                       if (!po->ops->terminal_response)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SAT_REQ_TERMINALRESPONSE:
+               tcore_check_null_ret_err("ops->terminal_response",
+                       ops->terminal_response, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->terminal_response(o, ur);
-                       break;
+               return ops->terminal_response(o, ur);
 
-               case TREQ_SAT_REQ_USERCONFIRMATION:
-                       if (!po->ops->user_confirmation)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SAT_REQ_USERCONFIRMATION:
+               tcore_check_null_ret_err("ops->user_confirmation",
+                       ops->user_confirmation, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->user_confirmation(o, ur);
-                       break;
+               return ops->user_confirmation(o, ur);
 
-               default:
-                       break;
+       default:
+       break;
        }
 
        return TCORE_RETURN_SUCCESS;
 }
 
-static void _clone_hook(CoreObject *src, CoreObject *dest)
-{
-       struct private_object_data *src_po = NULL;
-       struct private_object_data *dest_po = NULL;
-
-       if (!src || !dest)
-               return;
-
-       dest_po = calloc(1, sizeof(struct private_object_data));
-       if (!dest_po) {
-               tcore_object_link_object(dest, NULL);
-               return;
-       }
-
-       src_po = tcore_object_ref_object(src);
-       dest_po->ops = src_po->ops;
-
-       tcore_object_link_object(dest, dest_po);
-}
-
 static void _free_hook(CoreObject *o)
 {
        struct private_object_data *po = NULL;
@@ -199,162 +183,167 @@ static void _free_hook(CoreObject *o)
 static gboolean _check_file_for_refresh(enum tel_sim_file_id file_id)
 {
        int i;
-       enum tel_sim_file_id ef_under_mf[3] = { SIM_EF_DIR, SIM_EF_ELP, SIM_EF_ICCID };
+       enum tel_sim_file_id ef_under_mf[3] = {SIM_EF_DIR, SIM_EF_ELP, SIM_EF_ICCID};
        enum tel_sim_file_id ef_under_df[29] = {
-               SIM_EF_IMSI,    SIM_EF_SST,
-               SIM_EF_EST,     SIM_EF_OPLMN_ACT,
+               SIM_EF_IMSI, SIM_EF_SST,
+               SIM_EF_EST, SIM_EF_OPLMN_ACT,
                SIM_EF_GID1, SIM_EF_GID2,
                SIM_EF_LP, SIM_EF_ECC,
-               SIM_EF_SPN,     SIM_EF_SPDI,
-               SIM_EF_PNN,     SIM_EF_OPL,
-               SIM_EF_MBDN,    SIM_EF_MSISDN,
+               SIM_EF_SPN, SIM_EF_SPDI,
+               SIM_EF_PNN, SIM_EF_OPL,
+               SIM_EF_MBDN, SIM_EF_MSISDN,
                SIM_EF_USIM_MBI, SIM_EF_USIM_MWIS,
-               SIM_EF_USIM_CFIS,       SIM_EF_CPHS_VOICE_MSG_WAITING,
+               SIM_EF_USIM_CFIS, SIM_EF_CPHS_VOICE_MSG_WAITING,
                SIM_EF_CPHS_SERVICE_STRING_TABLE, SIM_EF_CPHS_CALL_FORWARD_FLAGS,
-               SIM_EF_CPHS_OPERATOR_NAME_STRING,       SIM_EF_CPHS_CUSTOMER_SERVICE_PROFILE,
-               SIM_EF_CPHS_CPHS_INFO,  SIM_EF_CPHS_MAILBOX_NUMBERS,
+               SIM_EF_CPHS_OPERATOR_NAME_STRING, SIM_EF_CPHS_CUSTOMER_SERVICE_PROFILE,
+               SIM_EF_CPHS_CPHS_INFO, SIM_EF_CPHS_MAILBOX_NUMBERS,
                SIM_EF_CPHS_OPERATOR_NAME_SHORT_FORM_STRING, SIM_EF_CPHS_INFORMATION_NUMBERS,
                SIM_EF_CPHS_DYNAMICFLAGS, SIM_EF_CPHS_DYNAMIC2FLAG,
-               SIM_EF_CPHS_CUSTOMER_SERVICE_PROFILE_LINE2 };
+               SIM_EF_CPHS_CUSTOMER_SERVICE_PROFILE_LINE2};
 
        dbg("[SAT] SAT PARSER - FILE ID=0x%04x", (unsigned int)file_id);
 
-       if( (file_id & 0x2F00) == 0x2F00 )
-       {
-               dbg("[SAT] SAT PARSER - MF, EF=0x%04x",file_id);
-               for(i=0;i<3;i++){
-                       if(file_id == ef_under_mf[i]){
+       if ((file_id & 0x2F00) == 0x2F00) {
+               dbg("[SAT] SAT PARSER - MF, EF=0x%04x", file_id);
+               for (i = 0; i < 3; i++) {
+                       if (file_id == ef_under_mf[i]) {
                                dbg("[SAT] SAT PARSER - MATCH!");
                                return TRUE;
                        }
                }
-       }
-       else if( (file_id & 0x6F00) == 0x6F00)
-       {
-               dbg("[SAT] SAT PARSER - ADF_USIM EF=0x%04x",file_id);
-               for(i=0;i<29;i++){
-                       if(file_id == ef_under_df[i]){
+       } else if ((file_id & 0x6F00) == 0x6F00) {
+               dbg("[SAT] SAT PARSER - ADF_USIM EF=0x%04x", file_id);
+               for (i = 0; i < 29; i++) {
+                       if (file_id == ef_under_df[i]) {
                                dbg("[SAT] SAT PARSER - MATCH!");
                                return TRUE;
                        }
                }
        }
+
        return FALSE;
 }
 
 static int _get_length_filed_size(unsigned char firstLenByte)
 {
-       if (firstLenByte <= 0x7F) return 1;
-       else if (firstLenByte == 0x81) return 2;
-       else return 0; //return zero, as the length field can only be 1 or 2.
+       if (firstLenByte <= 0x7F)
+               return 1;
+       else if (firstLenByte == 0x81)
+               return 2;
+       else
+               return 0; /* return zero, as the length field can only be 1 or 2. */
 }
 
-static void _get_string_data(unsigned charsrc, int len,
-               struct tel_sat_text_string_object *text_obj)
+static void _get_string_data(unsigned char *src, int len,
+       struct tel_sat_text_string_object *text_obj)
 {
        if (!src || !text_obj) return;
 
        switch (text_obj->dcs.a_format) {
-               case ALPHABET_FORMAT_SMS_DEFAULT: {
-                       char* unpacked_str;
+       case ALPHABET_FORMAT_SMS_DEFAULT: {
+               char *unpacked_str;
 
-                       text_obj->string_length = 0;
-                       unpacked_str = (char *)tcore_util_unpack_gsm7bit(src, (unsigned int)len);
-                       if (!unpacked_str) return;
+               text_obj->string_length = 0;
+               unpacked_str = (char *)tcore_util_unpack_gsm7bit(src, (unsigned int)len);
+               if (!unpacked_str)
+                       return;
 
-                       text_obj->dcs.a_format = ALPHABET_FORMAT_8BIT_DATA;
-                       text_obj->string_length = strlen(unpacked_str);
+               text_obj->dcs.a_format = ALPHABET_FORMAT_8BIT_DATA;
+               text_obj->string_length = strlen(unpacked_str);
 
-                       if (text_obj->string_length >= SAT_TEXT_STRING_LEN_MAX) {
-                               text_obj->string_length = SAT_TEXT_STRING_LEN_MAX;
-                               memcpy(text_obj->string, unpacked_str, SAT_TEXT_STRING_LEN_MAX);
-                               text_obj->string[SAT_TEXT_STRING_LEN_MAX] = 0x00;
-                       }
-                       else {
-                               memcpy(text_obj->string, unpacked_str, text_obj->string_length);
-                               text_obj->string[text_obj->string_length] = 0x00;
-                       }
+               if (text_obj->string_length >= SAT_TEXT_STRING_LEN_MAX) {
+                       text_obj->string_length = SAT_TEXT_STRING_LEN_MAX;
+                       memcpy(text_obj->string, unpacked_str, SAT_TEXT_STRING_LEN_MAX);
+                       text_obj->string[SAT_TEXT_STRING_LEN_MAX] = 0x00;
+               } else {
+                       memcpy(text_obj->string, unpacked_str, text_obj->string_length);
+                       text_obj->string[text_obj->string_length] = 0x00;
+               }
 
-                       g_free(unpacked_str);
-               }break;
-               case ALPHABET_FORMAT_UCS2:
-               case ALPHABET_FORMAT_8BIT_DATA: {
-                       text_obj->string_length = len;
-                       if (text_obj->string_length >= SAT_TEXT_STRING_LEN_MAX) {
-                               text_obj->string_length = SAT_TEXT_STRING_LEN_MAX;
-                               memcpy(text_obj->string, src, SAT_TEXT_STRING_LEN_MAX);
-                               text_obj->string[SAT_TEXT_STRING_LEN_MAX] = 0x00;
-                       }
-                       else {
-                               memcpy(text_obj->string, src, text_obj->string_length);
-                               text_obj->string[text_obj->string_length+1] = 0x00;
-                       }
-               }break;
-               default: {
-                       dbg("[SAT] SAT PARSER -  Unknown alphabet format(%d)", text_obj->dcs.a_format);
-               }break;
+               g_free(unpacked_str);
        }
+       break;
 
-       return;
+       case ALPHABET_FORMAT_UCS2:
+       case ALPHABET_FORMAT_8BIT_DATA: {
+               text_obj->string_length = len;
+               if (text_obj->string_length >= SAT_TEXT_STRING_LEN_MAX) {
+                       text_obj->string_length = SAT_TEXT_STRING_LEN_MAX;
+                       memcpy(text_obj->string, src, SAT_TEXT_STRING_LEN_MAX);
+                       text_obj->string[SAT_TEXT_STRING_LEN_MAX] = 0x00;
+               } else {
+                       memcpy(text_obj->string, src, text_obj->string_length);
+                       text_obj->string[text_obj->string_length + 1] = 0x00;
+               }
+       }
+       break;
+
+       default: {
+               dbg("[SAT] SAT PARSER -  Unknown alphabet format(%d)", text_obj->dcs.a_format);
+       }
+       break;
+       }
 }
 
-static void _sat_decode_dcs(unsigned char dcs, struct data_coding_schemedsc_obj)
+static void _sat_decode_dcs(unsigned char dcs, struct data_coding_scheme *dsc_obj)
 {
        dbg("[SAT] SAT PARSER - dcs=[0x%x]", dcs);
        dsc_obj->raw_dcs = dcs;
-       //bit 5 of DCS byte will tell us if the text is compressed or not.
+       /* bit 5 of DCS byte will tell us if the text is compressed or not. */
 
        if (dcs & 0x20)
                dsc_obj->is_compressed_format = TRUE;
        else
                dsc_obj->is_compressed_format = FALSE;
 
-       //bit 4 when set, indicates that bits 0 & 1 have message class meaning.
+       /* bit 4 when set, indicates that bits 0 & 1 have message class meaning. */
        dsc_obj->m_class = MSG_CLASS_NONE;
        if (dcs & 0x10) {
                switch (dcs & 0x03) {
-                       case 0x00:
-                               dsc_obj->m_class = MSG_CLASS_0;
-                               break;
-                       case 0x01:
-                               dsc_obj->m_class = MSG_CLASS_1;
-                               break;
-                       case 0x02:
-                               dsc_obj->m_class = MSG_CLASS_2;
-                               break;
-                       case 0x03:
-                               dsc_obj->m_class = MSG_CLASS_3;
-                               break;
-                       default:
-                               err("invalid dcs type");
-                               break;
+               case 0x00:
+                       dsc_obj->m_class = MSG_CLASS_0;
+               break;
+
+               case 0x01:
+                       dsc_obj->m_class = MSG_CLASS_1;
+               break;
+
+               case 0x02:
+                       dsc_obj->m_class = MSG_CLASS_2;
+               break;
+
+               case 0x03:
+                       dsc_obj->m_class = MSG_CLASS_3;
+               break;
+
+               default:
+                       err("invalid dcs type");
+               break;
                }
        }
 
-       /*bits 2 & 3 indicate the character set being used*/
+       /* bits 2 & 3 indicate the character set being used */
        switch (dcs & 0x0C) {
-               case 0x00:
-               case 0x0C:
-                       dsc_obj->a_format = ALPHABET_FORMAT_SMS_DEFAULT;
-                       break;
+       case 0x00:
+       case 0x0C:
+               dsc_obj->a_format = ALPHABET_FORMAT_SMS_DEFAULT;
+       break;
 
-               case 0x04:
-                       dsc_obj->a_format = ALPHABET_FORMAT_8BIT_DATA;
-                       break;
+       case 0x04:
+               dsc_obj->a_format = ALPHABET_FORMAT_8BIT_DATA;
+       break;
 
-               case 0X08:
-                       dsc_obj->a_format = ALPHABET_FORMAT_UCS2;
-                       break;
+       case 0X08:
+               dsc_obj->a_format = ALPHABET_FORMAT_UCS2;
+       break;
 
-               default:
-                       dsc_obj->a_format = ALPHABET_FORMAT_RESERVED;
-                       break;
+       default:
+               dsc_obj->a_format = ALPHABET_FORMAT_RESERVED;
+       break;
        }
 
        dbg("[SAT] SAT PARSER - is_compressed_format(%d), msgClass(0x%x), alpha_format(0x%x)",
-                       dsc_obj->is_compressed_format, dsc_obj->m_class, dsc_obj->a_format);
-
-       return;
+               dsc_obj->is_compressed_format, dsc_obj->m_class, dsc_obj->a_format);
 }
 
 static void _sat_decode_ton_npi(unsigned char ton_npi, enum type_of_number *ton, enum numbering_plan_identifier *npi)
@@ -362,65 +351,65 @@ static void _sat_decode_ton_npi(unsigned char ton_npi, enum type_of_number *ton,
        int ton_value = 0;
        int npi_value = 0;
 
-       if(!ton || !npi)
+       if (!ton || !npi)
                return;
 
        ton_value = (ton_npi & 0x70) >> 4;
        *ton = ton_value;
-       if(*ton > TON_NETWORK_SPECIFIC)
+       if (*ton > TON_NETWORK_SPECIFIC)
                *ton = TON_RESERVED_FOR_EXT;
 
        npi_value = (ton_npi & 0x0F);
-       switch(npi_value){
-               case NPI_ISDN_TEL:
-               case NPI_DATA_NUMBERING_PLAN:
-               case NPI_TELEX:
-               case NPI_PRIVATE:
-               case NPI_RESERVED_FOR_EXT:
-                       *npi = npi_value;
-                       break;
-               default:
-                       *npi = NPI_UNKNOWN;
-                       break;
+       switch (npi_value) {
+       case NPI_ISDN_TEL:
+       case NPI_DATA_NUMBERING_PLAN:
+       case NPI_TELEX:
+       case NPI_PRIVATE:
+       case NPI_RESERVED_FOR_EXT:
+               *npi = npi_value;
+       break;
+
+       default:
+               *npi = NPI_UNKNOWN;
+       break;
        }
 
        dbg("[SAT] SAT PATSER - ton(0x%x) npi(0x%x)", *ton, *npi);
-       return;
 }
 
 static enum tel_sim_language_type _sat_decode_language(unsigned char byte1, unsigned char byte2)
 {
-       if((byte1 == 'e')&&(byte2 == 'n')){
+       if ((byte1 == 'e') && (byte2 == 'n'))
                return SIM_LANG_ENGLISH;
-       } else if((byte1 == 'd')&&(byte2 == 'e')){
+       else if ((byte1 == 'd') && (byte2 == 'e'))
                return SIM_LANG_GERMAN;
-       } else if((byte1 == 'i')&&(byte2 == 't')){
+       else if ((byte1 == 'i') && (byte2 == 't'))
                return SIM_LANG_ITALIAN;
-       } else if((byte1 == 'f')&&(byte2 == 'r')){
+       else if ((byte1 == 'f') && (byte2 == 'r'))
                return SIM_LANG_FRENCH;
-       } else if((byte1 == 'e')&&(byte2 == 's')){
+       else if ((byte1 == 'e') && (byte2 == 's'))
                return SIM_LANG_SPANISH;
-       } else if((byte1 == 'n')&&(byte2 == 'l')){
+       else if ((byte1 == 'n') && (byte2 == 'l'))
                return SIM_LANG_DUTCH;
-       } else if((byte1 == 's')&&(byte2 == 'v')){
+       else if ((byte1 == 's') && (byte2 == 'v'))
                return SIM_LANG_SWEDISH;
-       } else if((byte1 == 'd')&&(byte2 == 'a')){
+       else if ((byte1 == 'd') && (byte2 == 'a'))
                return SIM_LANG_DANISH;
-       } else if((byte1 == 'p')&&(byte2 == 't')){
+       else if ((byte1 == 'p') && (byte2 == 't'))
                return SIM_LANG_PORTUGUESE;
-       } else if((byte1 == 'f')&&(byte2 == 'i')){
+       else if ((byte1 == 'f') && (byte2 == 'i'))
                return SIM_LANG_FINNISH;
-       } else if((byte1 == 'n')&&(byte2 == 'o')){
+       else if ((byte1 == 'n') && (byte2 == 'o'))
                return SIM_LANG_NORWEGIAN;
-       } else if((byte1 == 'e')&&(byte2 == 'l')){
+       else if ((byte1 == 'e') && (byte2 == 'l'))
                return SIM_LANG_GREEK;
-       } else if((byte1 == 't')&&(byte2 == 'r')){
+       else if ((byte1 == 't') && (byte2 == 'r'))
                return SIM_LANG_TURKISH;
-       } else if((byte1 == 'h')&&(byte2 == 'u')){
+       else if ((byte1 == 'h') && (byte2 == 'u'))
                return SIM_LANG_HUNGARIAN;
-       } else if((byte1 == 'p')&&(byte2 == 'i')){
+       else if ((byte1 == 'p') && (byte2 == 'i'))
                return SIM_LANG_POLISH;
-       } else  {
+       else {
                dbg("[SAT] SAT PARSER -  unknown language, default to english.");
                return SIM_LANG_ENGLISH;
        }
@@ -429,10 +418,10 @@ static enum tel_sim_language_type _sat_decode_language(unsigned char byte1, unsi
 /*
  * Decode TLV data object
  */
-static enum tcore_sat_result _sat_decode_address_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_address* address_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_address_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_address *address_obj, int *consumed_data_len)
 {
-       unsigned charsrc_data;
+       unsigned char *src_data;
        int temp_index, len_of_len = 0;
        int address_len = 0;
        gboolean comprehensive_req = FALSE;
@@ -442,12 +431,12 @@ static enum tcore_sat_result _sat_decode_address_tlv(unsigned char* tlv_str, int
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if (tlv_len <= (curr_offset + 1)) {
+       if (tlv_len <= (curr_offset  +  1)) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
        if ((src_data[temp_index] & 0x7F) != SATK_ADDRESS_TAG) {
@@ -455,54 +444,55 @@ static enum tcore_sat_result _sat_decode_address_tlv(unsigned char* tlv_str, int
                return TCORE_SAT_REQUIRED_VALUE_MISSING;
        }
 
-       //comprehensive required
-       if((src_data[temp_index++] & 0x80))
+       /* comprehensive required */
+       if ((src_data[temp_index++] & 0x80))
                comprehensive_req = TRUE;
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
        if (!len_of_len) {
                dbg("[SAT] SAT PARSER -  incorrect length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
-       address_len = src_data[temp_index + len_of_len - 1];
+       address_len = src_data[temp_index  +  len_of_len - 1];
 
-       //check the address length
+       /* check the address length */
        temp_index += len_of_len;
-       if ((temp_index + address_len) > tlv_len) {
+       if ((temp_index  +  address_len) > tlv_len) {
                dbg("[SAT] SAT PARSER  -  incorrect length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
        address_obj->dialing_number_len = 0;
-       if(address_len > 1){
-               charstr_ascii = NULL;
+       if (address_len > 1) {
+               char *str_ascii = NULL;
                _sat_decode_ton_npi(src_data[temp_index++], &address_obj->ton, &address_obj->npi);
-               str_ascii = tcore_util_convert_bcd2ascii((const char*)&src_data[temp_index], address_len-1, SAT_DIALING_NUMBER_LEN_MAX);
-               if(str_ascii){
+               str_ascii = tcore_util_convert_bcd2ascii((const char *)&src_data[temp_index], address_len - 1, SAT_DIALING_NUMBER_LEN_MAX);
+               if (str_ascii) {
                        memcpy(address_obj->dialing_number, str_ascii, strlen(str_ascii));
                        address_obj->dialing_number_len = strlen(str_ascii);
                        g_free(str_ascii);
                }
        }
 
-       if(address_obj->dialing_number_len == 0){
-               if(comprehensive_req){
+       if (address_obj->dialing_number_len == 0) {
+               if (comprehensive_req) {
                        err("[SAT] SAT PARSER -  incorrect address");
                        return TCORE_SAT_REQUIRED_VALUE_MISSING;
                }
+
                dbg("comprehensive partial proactive command");
-               //global variable (comprehensive_partial= TRUE)
+               /* global variable (comprehensive_partial= TRUE) */
        }
 
-       *consumed_data_len = 1 + len_of_len + address_len;
+       *consumed_data_len = 1  +  len_of_len  +  address_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_subaddress_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_subaddress* sub_address_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_subaddress_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_subaddress *sub_address_obj, int *consumed_data_len)
 {
-       unsigned charsrc_data;
+       unsigned char *src_data;
        int temp_index, len_of_len = 0;
        int sub_address_len = 0;
        gboolean comprehensive_req = FALSE;
@@ -512,12 +502,12 @@ static enum tcore_sat_result _sat_decode_subaddress_tlv(unsigned char* tlv_str,
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if (tlv_len <= (curr_offset + 1)) {
+       if (tlv_len <= (curr_offset  +  1)) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
        if ((src_data[temp_index] & 0x7F) != SATK_SUB_ADDRESS_TAG) {
@@ -525,54 +515,52 @@ static enum tcore_sat_result _sat_decode_subaddress_tlv(unsigned char* tlv_str,
                return TCORE_SAT_REQUIRED_VALUE_MISSING;
        }
 
-       //comprehensive required
-       if((src_data[temp_index++] & 0x80))
+       /* comprehensive required */
+       if ((src_data[temp_index++] & 0x80))
                comprehensive_req = TRUE;
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
        if (!len_of_len) {
                dbg("[SAT] SAT PARSER -  incorrect length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
-       sub_address_len = src_data[temp_index + len_of_len - 1];
 
-       //check the address length
+       sub_address_len = src_data[temp_index  +  len_of_len - 1];
+
+       /* check the address length */
        temp_index += len_of_len;
-       if ((temp_index + sub_address_len) > tlv_len) {
+       if ((temp_index  +  sub_address_len) > tlv_len) {
                dbg("[SAT] SAT PARSER  -  incorrect length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //sub address
-       if(sub_address_len <= 0){
+       /* sub address */
+       if (sub_address_len <= 0) {
                dbg("[SAT] SAT PARSER - no sub address data");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
        sub_address_obj->subaddress_len = sub_address_len;
-       if( sub_address_obj->subaddress_len > SAT_CCP_DATA_LEN_MAX){
-               if(comprehensive_req){
+       if (sub_address_obj->subaddress_len > SAT_CCP_DATA_LEN_MAX) {
+               if (comprehensive_req) {
                        dbg("[SAT] SAT PARSER - sub address is too big");
                        return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
-               }
-               else{
-                       //bIsComprehensionPartial = TRUE;
+               } else {
+                       /* bIsComprehensionPartial = TRUE; */
                        sub_address_obj->subaddress_len = 0;
                }
-       }
-       else{
+       } else
                memcpy(sub_address_obj->subaddress, &src_data[temp_index], sub_address_obj->subaddress_len);
-       }
 
-       *consumed_data_len = 1 + len_of_len + sub_address_len;
+       *consumed_data_len = 1  +  len_of_len  +  sub_address_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_alpha_identifier_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_alpha_identifier* alpha_id_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_alpha_identifier_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_alpha_identifier *alpha_id_obj, int *consumed_data_len)
 {
-       unsigned charsrc_data;
+       unsigned char *src_data;
        int temp_index, len_of_len = 0;
        int alpha_len = 0;
 
@@ -581,12 +569,12 @@ static enum tcore_sat_result _sat_decode_alpha_identifier_tlv(unsigned char* tlv
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if (tlv_len <= (curr_offset + 1)) {
+       if (tlv_len <= (curr_offset  +  1)) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
        if ((src_data[temp_index++] & 0x7F) != SATK_ALPHA_IDENTIFIER_TAG) {
@@ -594,18 +582,19 @@ static enum tcore_sat_result _sat_decode_alpha_identifier_tlv(unsigned char* tlv
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //length
+       /* length */
        alpha_id_obj->is_exist = TRUE;
        len_of_len = _get_length_filed_size(src_data[temp_index]);
        if (!len_of_len) {
                dbg("[SAT] SAT PARSER -  incorrect length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
-       alpha_len = alpha_id_obj->alpha_data_len = src_data[temp_index + len_of_len - 1];
 
-       //alpha identifier
+       alpha_len = alpha_id_obj->alpha_data_len = src_data[temp_index  +  len_of_len - 1];
+
+       /* alpha identifier */
        temp_index += len_of_len;
-       if ((temp_index + alpha_len) > tlv_len) {
+       if ((temp_index  +  alpha_len) > tlv_len) {
                dbg("[SAT] SAT PARSER  -  incorrect length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
@@ -628,18 +617,18 @@ static enum tcore_sat_result _sat_decode_alpha_identifier_tlv(unsigned char* tlv
                _sat_decode_dcs(dcs, &alpha_id_obj->dcs);
        }
 
-       *consumed_data_len = 1 + len_of_len + alpha_len;
+       *consumed_data_len = 1  +  len_of_len  +  alpha_len;
        dbg("[SAT] SAT PARSER alphaId= %s", alpha_id_obj->alpha_data);
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_sub_address_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_subaddress* sub_address_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_sub_address_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_subaddress *sub_address_obj, int *consumed_data_len)
 {
        int i = 0;
        int temp_index, len_of_len = 0;
        int sub_address_len = 0;
-       unsigned charsrc_data;
+       unsigned char *src_data;
        gboolean comprehension_req = FALSE;
 
        if (tlv_str == NULL || consumed_data_len == NULL || sub_address_obj == NULL) {
@@ -647,12 +636,12 @@ static enum tcore_sat_result _sat_decode_sub_address_tlv(unsigned char* tlv_str,
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if (tlv_len <= (curr_offset + 1)) {
+       if (tlv_len <= (curr_offset  +  1)) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
        if ((src_data[temp_index] & 0x7F) != SATK_SUB_ADDRESS_TAG) {
@@ -660,56 +649,54 @@ static enum tcore_sat_result _sat_decode_sub_address_tlv(unsigned char* tlv_str,
                return TCORE_SAT_REQUIRED_VALUE_MISSING;
        }
 
-       //comprehensive required
-       if((src_data[temp_index++] & 0x80))
+       /* comprehensive required */
+       if ((src_data[temp_index++] & 0x80))
                comprehension_req = TRUE;
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
        if (!len_of_len) {
                dbg("[SAT] SAT PARSER -  incorrect length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
-       sub_address_len = src_data[temp_index + len_of_len - 1];
+       sub_address_len = src_data[temp_index  +  len_of_len - 1];
 
-       //check the address length
+       /* check the address length */
        temp_index += len_of_len;
-       if ((temp_index + sub_address_len) > tlv_len) {
+       if ((temp_index  +  sub_address_len) > tlv_len) {
                dbg("[SAT] SAT PARSER  -  incorrect length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if(sub_address_len <= 0){
+       if (sub_address_len <= 0) {
                dbg("[SAT] SAT PARSER  -  no sub address");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
        sub_address_obj->subaddress_len = sub_address_len;
-       if(sub_address_obj->subaddress_len > SAT_SUB_ADDR_LEN_MAX){
-               if(comprehension_req)
+       if (sub_address_obj->subaddress_len > SAT_SUB_ADDR_LEN_MAX) {
+               if (comprehension_req)
                        return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
                else
                        sub_address_obj->subaddress_len = 0;
-       }
-       else{
-               memcpy(sub_address_obj->subaddress, &src_data[temp_index],sub_address_obj->subaddress_len);
-       }
+       } else
+               memcpy(sub_address_obj->subaddress, &src_data[temp_index], sub_address_obj->subaddress_len);
 
-       dbg("[SAT] SAT PARSER -  subAddressLen=%d",sub_address_obj->subaddress_len);
-       for(i=0;i<sub_address_obj->subaddress_len;i++)
-               dbg("[SAT] SAT PARSER - 0x%02x\t",sub_address_obj->subaddress[i]);
+       dbg("[SAT] SAT PARSER -  subAddressLen=%d", sub_address_obj->subaddress_len);
+       for (i = 0; i < sub_address_obj->subaddress_len; i++)
+               dbg("[SAT] SAT PARSER - 0x%02x\t", sub_address_obj->subaddress[i]);
 
-       *consumed_data_len = 1+len_of_len+sub_address_len;
+       *consumed_data_len = 1 + len_of_len + sub_address_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_ccp_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_ccp* ccp_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_ccp_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_ccp *ccp_obj, int *consumed_data_len)
 {
        int i = 0;
        int temp_index, len_of_len = 0;
        int ccp_len = 0;
-       unsigned charsrc_data;
+       unsigned char *src_data;
        gboolean comprehension_req = FALSE;
 
        if (tlv_str == NULL || consumed_data_len == NULL || ccp_obj == NULL) {
@@ -717,105 +704,106 @@ static enum tcore_sat_result _sat_decode_ccp_tlv(unsigned char* tlv_str, int tlv
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if (tlv_len <= (curr_offset + 1)) {
+       if (tlv_len <= (curr_offset  +  1)) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if ((src_data[temp_index] & 0x7F) != SATK_CAPABILITY_CONFIGURATION_PARAMETERS_TAG) {
+       if ((src_data[temp_index] & 0x7F)
+                       != SATK_CAPABILITY_CONFIGURATION_PARAMETERS_TAG) {
                dbg("[SAT] SAT PARSER -  CCP TAG missing");
                return TCORE_SAT_REQUIRED_VALUE_MISSING;
        }
 
-       //comprehensive required
-       if((src_data[temp_index++] & 0x80))
+       /* comprehensive required */
+       if ((src_data[temp_index++] & 0x80))
                comprehension_req = TRUE;
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
        if (!len_of_len) {
                dbg("[SAT] SAT PARSER -  incorrect length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
-       ccp_len = src_data[temp_index + len_of_len - 1];
 
-       //check the address length
+       ccp_len = src_data[temp_index  +  len_of_len - 1];
+
+       /* check the address length */
        temp_index += len_of_len;
-       if ((temp_index + ccp_len) > tlv_len) {
+       if ((temp_index  +  ccp_len) > tlv_len) {
                dbg("[SAT] SAT PARSER  -  incorrect length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if(ccp_len <= 0){
+       if (ccp_len <= 0) {
                dbg("[SAT] SAT PARSER  -  no ccp data");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
        ccp_obj->data_len = ccp_len;
-       if(ccp_obj->data_len > SAT_CCP_DATA_LEN_MAX){
-               if(comprehension_req)
+       if (ccp_obj->data_len > SAT_CCP_DATA_LEN_MAX) {
+               if (comprehension_req)
                        return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
                else
                        ccp_obj->data_len = 0;
-       }
-       else{
-               memcpy(ccp_obj->data, &src_data[temp_index],ccp_obj->data_len);
-       }
+       } else
+               memcpy(ccp_obj->data, &src_data[temp_index], ccp_obj->data_len);
 
-       dbg("[SAT] SAT PARSER -  ccp len=%d",ccp_obj->data_len);
-       for(i=0;i<ccp_obj->data_len;i++)
-               dbg("[SAT] SAT PARSER - 0x%02x\t",ccp_obj->data[i]);
+       dbg("[SAT] SAT PARSER -  ccp len=%d", ccp_obj->data_len);
+       for (i = 0; i < ccp_obj->data_len; i++)
+               dbg("[SAT] SAT PARSER - 0x%02x\t", ccp_obj->data[i]);
 
-       *consumed_data_len = 1+len_of_len+ccp_len;
+       *consumed_data_len = 1 + len_of_len + ccp_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_device_identities_tlv(unsigned chartlv_str,
-               struct tel_sat_device_identities* dev_id_obj)
+static enum tcore_sat_result _sat_decode_device_identities_tlv(unsigned char *tlv_str,
+       struct tel_sat_device_identities *dev_id_obj)
 {
        int temp_index = 0, i;
 
        if (tlv_str == NULL || dev_id_obj == NULL) {
-               dbg("[SAT] SAT PARSER -  tlv_str ==NULL || dev_id_obj == NULL");
+               dbg("[SAT] SAT PARSER -  tlv_str  == NULL || dev_id_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        if ((tlv_str[temp_index++] & 0x7F) != SATK_DEVICE_IDENTITY_TAG) {
                dbg("[SAT] SAT PARSER -  device identity tag missing.");
-               return TCORE_SAT_REQUIRED_VALUE_MISSING; //send TR
+               return TCORE_SAT_REQUIRED_VALUE_MISSING; /* Send TR */
        }
 
        if (tlv_str[temp_index++] != SATK_DEVICE_IDENTITY_LENGTH) {
                dbg("[SAT] SAT PARSER -  device identity length incorrect.");
-               return TCORE_SAT_REQUIRED_VALUE_MISSING; //send TR
+               return TCORE_SAT_REQUIRED_VALUE_MISSING; /* Send TR */
        }
 
        for (i = 0; i < 2; i++) {
                switch (tlv_str[temp_index]) {
-                       case DEVICE_ID_KEYPAD:
-                       case DEVICE_ID_DISPLAY:
-                       case DEVICE_ID_EARPIECE:
-                       case DEVICE_ID_SIM:
-                       case DEVICE_ID_ME:
-                       case DEVICE_ID_NETWORK:
+               case DEVICE_ID_KEYPAD:
+               case DEVICE_ID_DISPLAY:
+               case DEVICE_ID_EARPIECE:
+               case DEVICE_ID_SIM:
+               case DEVICE_ID_ME:
+               case DEVICE_ID_NETWORK:
+                       if (i == 0) dev_id_obj->src = tlv_str[temp_index];
+                       if (i == 1) dev_id_obj->dest = tlv_str[temp_index];
+               break;
+
+               default:
+                       if (tlv_str[temp_index] >= 0x21 && tlv_str[temp_index] <= 0x27) {
+                               dbg("BIP channel id(0x%x)", tlv_str[temp_index]);
                                if (i == 0) dev_id_obj->src = tlv_str[temp_index];
                                if (i == 1) dev_id_obj->dest = tlv_str[temp_index];
-                               break;
-                       default:{
-                               if(tlv_str[temp_index] >= 0x21 && tlv_str[temp_index] <= 0x27){
-                                       dbg("BIP channel id(0x%x)", tlv_str[temp_index])
-                                       if (i == 0) dev_id_obj->src = tlv_str[temp_index];
-                                       if (i == 1) dev_id_obj->dest = tlv_str[temp_index];
-                               }
-                               else{
-                                       dbg("unmatched device id");
-                                       return TCORE_SAT_REQUIRED_VALUE_MISSING;
-                               }
-                       }break;
+                       } else {
+                               dbg("unmatched device id");
+                               return TCORE_SAT_REQUIRED_VALUE_MISSING;
+                       }
+               break;
                }
+
                temp_index++;
        }
 
@@ -823,18 +811,18 @@ static enum tcore_sat_result _sat_decode_device_identities_tlv(unsigned char* tl
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_duration_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_duration *duration_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_duration_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_duration *duration_obj, int *consumed_data_len)
 {
        int temp_index = 0;
-       unsigned charsrc_data = NULL;
+       unsigned char *src_data = NULL;
 
        if (!tlv_str || !duration_obj || !consumed_data_len) {
                err("[SAT] SAT PARSER data is null");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if (tlv_len < curr_offset + 3) {
+       if (tlv_len < curr_offset  +  3) {
                err("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
@@ -843,101 +831,108 @@ static enum tcore_sat_result _sat_decode_duration_tlv(unsigned char* tlv_str, in
        src_data = &tlv_str[0];
        if ((src_data[temp_index++] & 0x7F) != SATK_DURATION_TAG) {
                err("[SAT] SAT PARSER -  duration tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
        if (src_data[temp_index++] != SATK_DURATION_LENGTH) {
                err("[SAT] SAT PARSER -  incorrect length value.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       //time unit
+       /* time unit */
        switch (src_data[temp_index]) {
-               case TIME_UNIT_MINUTES:
-               case TIME_UNIT_SECONDS:
-               case TIME_UNIT_TENTHS_OF_SECONDS:
-                       duration_obj->time_unit = src_data[temp_index];
-                       break;
-               default:
-                       duration_obj->time_unit = TIME_UNIT_RESERVED;
-                       break;
+       case TIME_UNIT_MINUTES:
+       case TIME_UNIT_SECONDS:
+       case TIME_UNIT_TENTHS_OF_SECONDS:
+               duration_obj->time_unit = src_data[temp_index];
+       break;
+
+       default:
+               duration_obj->time_unit = TIME_UNIT_RESERVED;
+       break;
        }
 
-       //interval
+       /* interval */
        temp_index++;
        duration_obj->time_interval = src_data[temp_index];
        *consumed_data_len = 4;
 
-       dbg("[SAT] SAT PARSER -  timeUnit=%d, interval=%d", duration_obj->time_unit, duration_obj->time_interval);
+       dbg("[SAT] SAT PARSER -  timeUnit=%d, interval=%d",
+               duration_obj->time_unit, duration_obj->time_interval);
 
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_item_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_item_info* item_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_item_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_item_info *item_obj, int *consumed_data_len)
 {
-       int temp_index, len_of_len=0, i=0;
-       int item_len =0;
+       int temp_index, len_of_len = 0, i = 0;
+       int item_len = 0;
        unsigned char dcs;
-       unsigned charsrc_data = NULL;
+       unsigned char *src_data = NULL;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || item_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || item_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || item_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)) {
+       if (tlv_len <= (curr_offset + 1)) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index++]&0x7F) != SATK_ITEM_TAG){
-               dbg("[SAT] SAT PARSER -  tag not found.=%d",src_data[temp_index-1]);
+       if ((src_data[temp_index++] & 0x7F) != SATK_ITEM_TAG) {
+               dbg("[SAT] SAT PARSER -  tag not found.=%d", src_data[temp_index-1]);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
-       if(!len_of_len){
+       if (!len_of_len) {
                dbg("[SAT] SAT PARSER -  incorrect length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
-       item_len = src_data[temp_index+len_of_len-1];
 
-       temp_index+=len_of_len; //temp_index pointing to item.
-       if((temp_index+item_len) > tlv_len){
+       item_len = src_data[temp_index + len_of_len-1];
+
+       temp_index += len_of_len; /* temp_index pointing to item. */
+       if ((temp_index + item_len) > tlv_len) {
                dbg("[SAT] SAT PARSER -  incorrect length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       memset(item_obj->text, 0x00,(SAT_ITEM_TEXT_LEN_MAX+1));
-       if(item_len <= 0){
+       memset(item_obj->text, 0x00, (SAT_ITEM_TEXT_LEN_MAX + 1));
+       if (item_len <= 0) {
                dbg("[SAT] SAT PARSER -  menu_text is NULL, remove the menu");
-               *consumed_data_len = 1+len_of_len+item_len;
+               *consumed_data_len = 1 + len_of_len + item_len;
                return TCORE_SAT_SUCCESS;
        }
 
-       //item
+       /* item */
        item_obj->item_id = src_data[temp_index++];
-       // fix for orange SIM issue
-       // H0100078487 Strange Character display on SIM SAT
-       // The string length was less than its real length
-       // So garbage characters was displayed. To fix it, we would recalculate the real length.
-       for(i=0; i<item_len-1;i++){
-               dbg("[SAT] %d: %c", i, src_data[temp_index+i]);
-               if(src_data[temp_index+i] == 0xFF) break;
+
+       /*
+        * fix for orange SIM issue
+        * H0100078487 Strange Character display on SIM SAT
+        * The string length was less than its real length
+        * So garbage characters was displayed. To fix it, we would recalculate the real length.
+        */
+       for (i = 0;  i < item_len-1; i++) {
+               dbg("[SAT] %d: %c", i, src_data[temp_index + i]);
+               if (src_data[temp_index + i] == 0xFF) break;
        }
+
        item_obj->text_len = i;
 
-       if(item_obj->text_len <= 0){
+       if (item_obj->text_len <= 0) {
                dbg("[SAT] SAT PARSER -  text len = 0");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if(item_obj->text_len >= SAT_ITEM_TEXT_LEN_MAX)
+       if (item_obj->text_len >= SAT_ITEM_TEXT_LEN_MAX)
                item_obj->text_len = SAT_ITEM_TEXT_LEN_MAX-1;
 
        memcpy(item_obj->text, &src_data[temp_index], item_obj->text_len);
@@ -950,22 +945,22 @@ static enum tcore_sat_result _sat_decode_item_tlv(unsigned char* tlv_str, int tl
 
 
        dbg("[SAT] SAT PARSER -  item_text=%s", item_obj->text);
-       *consumed_data_len = 1+len_of_len+item_len;
+       *consumed_data_len = 1 + len_of_len + item_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_response_length_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_response_length *response_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_response_length_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_response_length *response_obj, int *consumed_data_len)
 {
        int temp_index = 0;
-       unsigned charsrc_data = NULL;
+       unsigned char *src_data = NULL;
 
        if (!tlv_str || !response_obj || !consumed_data_len) {
                err("[SAT] SAT PARSER data is null");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if (tlv_len <= curr_offset + 1) {
+       if (tlv_len <= curr_offset  +  1) {
                err("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
@@ -974,12 +969,12 @@ static enum tcore_sat_result _sat_decode_response_length_tlv(unsigned char* tlv_
        src_data = &tlv_str[0];
        if ((src_data[temp_index++] & 0x7F) != SATK_RESPONSE_LENGTH_TAG) {
                err("[SAT] SAT PARSER -  response length tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
        if (src_data[temp_index++] != SATK_RESPONSE_LENGTH_LENGTH) {
                err("[SAT] SAT PARSER -  incorrect length value.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
        response_obj->min = src_data[temp_index++];
@@ -987,7 +982,7 @@ static enum tcore_sat_result _sat_decode_response_length_tlv(unsigned char* tlv_
        dbg("[SAT] SAT PARSER  min length(%d), max length(%d)", response_obj->min, response_obj->max);
 
        *consumed_data_len = 4;
-       if(response_obj->min > response_obj->max){
+       if (response_obj->min > response_obj->max) {
                err("[SAT] SAT PARSER - : min length is larger than max length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
@@ -995,19 +990,19 @@ static enum tcore_sat_result _sat_decode_response_length_tlv(unsigned char* tlv_
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_sms_tpdu_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_sms_tpdu *sms_tpdu_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_sms_tpdu_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_sms_tpdu *sms_tpdu_obj, int *consumed_data_len)
 {
        int temp_index = 0, len_of_len = 0;
        int tpdu_len = 0;
-       unsigned charsrc_data = NULL;
+       unsigned char *src_data = NULL;
 
        if (!tlv_str || !sms_tpdu_obj || !consumed_data_len) {
                err("[SAT] SAT PARSER data is null");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if (tlv_len <= curr_offset + 1) {
+       if (tlv_len <= curr_offset  +  1) {
                err("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
@@ -1019,44 +1014,43 @@ static enum tcore_sat_result _sat_decode_sms_tpdu_tlv(unsigned char* tlv_str, in
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
-       if(!len_of_len){
+       if (!len_of_len) {
                err("[SAT] parser: invalid length.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
-       tpdu_len = src_data[temp_index+len_of_len-1];
+       tpdu_len = src_data[temp_index + len_of_len-1];
        temp_index += len_of_len;
 
-       if(tpdu_len <= 0)
+       if (tpdu_len <= 0)
                return TCORE_SAT_REQUIRED_VALUE_MISSING;
 
-       //data len
+       /* data len */
        sms_tpdu_obj->data_len = tpdu_len;
-       if(sms_tpdu_obj->data_len > SAT_SMS_TPDU_SMS_DATA_LEN_MAX){
+       if (sms_tpdu_obj->data_len > SAT_SMS_TPDU_SMS_DATA_LEN_MAX)
                sms_tpdu_obj->data_len = SAT_SMS_TPDU_SMS_DATA_LEN_MAX;
-       }
 
-       //data
+       /* data */
        memcpy(sms_tpdu_obj->data, &src_data[temp_index], sms_tpdu_obj->data_len);
        dbg("[SAT] SAT PARSER tpdu_len (%d)", sms_tpdu_obj->data_len);
 
-       *consumed_data_len = 1+len_of_len+tpdu_len;
+       *consumed_data_len = 1 + len_of_len + tpdu_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_item_identifier_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_item_identifier *item_identifier_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_item_identifier_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_item_identifier *item_identifier_obj, int *consumed_data_len)
 {
        int temp_index = 0;
-       unsigned charsrc_data = NULL;
+       unsigned char *src_data = NULL;
 
        if (!tlv_str || !item_identifier_obj || !consumed_data_len) {
                err("[SAT] SAT PARSER data is null");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if (tlv_len <= curr_offset + 1) {
+       if (tlv_len <= curr_offset  +  1) {
                err("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
@@ -1065,12 +1059,12 @@ static enum tcore_sat_result _sat_decode_item_identifier_tlv(unsigned char* tlv_
        src_data = &tlv_str[0];
        if ((src_data[temp_index++] & 0x7F) != SATK_ITEM_IDENTIFIER_TAG) {
                err("[SAT] SAT PARSER -  Item identifier tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
        if (src_data[temp_index++] != SATK_ITEM_IDENTIFIER_LENGTH) {
                err("[SAT] SAT PARSER -  incorrect length value.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
        item_identifier_obj->item_identifier = src_data[temp_index++];
@@ -1080,13 +1074,13 @@ static enum tcore_sat_result _sat_decode_item_identifier_tlv(unsigned char* tlv_
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_ss_string_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_ss_string *ss_str_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_ss_string_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_ss_string *ss_str_obj, int *consumed_data_len)
 {
-       charstr_ascii = NULL;
-       int temp_index, len_of_len=0;
-       int ss_len =0;
-       unsigned charsrc_data;
+       char *str_ascii = NULL;
+       int temp_index, len_of_len = 0;
+       int ss_len = 0;
+       unsigned char *src_data;
        gboolean comprehension_req = FALSE;
 
        if (!tlv_str || !ss_str_obj || !consumed_data_len) {
@@ -1094,7 +1088,7 @@ static enum tcore_sat_result _sat_decode_ss_string_tlv(unsigned char* tlv_str, i
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if (tlv_len <= curr_offset + 1) {
+       if (tlv_len <= curr_offset  +  1) {
                err("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
@@ -1103,198 +1097,199 @@ static enum tcore_sat_result _sat_decode_ss_string_tlv(unsigned char* tlv_str, i
        src_data = &tlv_str[0];
        if ((src_data[temp_index] & 0x7F) != SATK_SS_STRING_TAG) {
                err("[SAT] SAT PARSER -  SS string tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       if(src_data[temp_index++]&0x80)
+       if (src_data[temp_index++] & 0x80)
                comprehension_req = TRUE;
 
        dbg("comprehension_req=[%d]", comprehension_req);
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
-       if(!len_of_len){
+       if (!len_of_len) {
                err("[SAT] parser: invalid length.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       ss_len = src_data[temp_index+len_of_len-1];
-       dbg("[SAT] parser: ss_tlv len=%d",ss_len);
+       ss_len = src_data[temp_index + len_of_len-1];
+       dbg("[SAT] parser: ss_tlv len=%d", ss_len);
 
        temp_index += len_of_len;
        ss_str_obj->string_len = 0;
 
-       //ss data
-       if(ss_len <= 1)
+       /* ss data */
+       if (ss_len <= 1)
                return TCORE_SAT_REQUIRED_VALUE_MISSING;
 
        _sat_decode_ton_npi(src_data[temp_index++], &ss_str_obj->ton, &ss_str_obj->npi);
-       str_ascii = tcore_util_convert_bcd2ascii((const char*)&src_data[temp_index], ss_len-1, SAT_SS_STRING_LEN_MAX);
-       if(str_ascii){
+       str_ascii = tcore_util_convert_bcd2ascii((const char *)&src_data[temp_index], ss_len-1, SAT_SS_STRING_LEN_MAX);
+       if (str_ascii) {
                memcpy(ss_str_obj->ss_string, str_ascii, strlen(str_ascii));
                ss_str_obj->string_len = strlen(str_ascii);
                g_free(str_ascii);
        }
 
-        // 1 is the length of Tag.
-       *consumed_data_len = 1 + len_of_len + ss_len;
+        /*  1 is the length of Tag. */
+       *consumed_data_len = 1  +  len_of_len  +  ss_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_text_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_text_string_object *text_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_text_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_text_string_object *text_obj, int *consumed_data_len)
 {
-       int temp_index, len_of_len=0;
-       int text_len =0;
-       unsigned charsrc_data;
+       int temp_index, len_of_len = 0;
+       int text_len = 0;
+       unsigned char *src_data;
        gboolean comprehension_req = FALSE;
 
-       if (!tlv_str || !consumed_data_len ) {
+       if (!tlv_str || !consumed_data_len) {
                err("[SAT] parser: data is null");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)){
+       if (tlv_len <= (curr_offset + 1)) {
                err("[SAT] parser: incorrect length");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index]&0x7F) != SATK_TEXT_STRING_TAG && (src_data[temp_index]&0x7F) != SATK_DEFAULT_TEXT_TAG){
-               err("[SAT] parser: text string tag missing, tag=0x%x",src_data[temp_index]);
+       if ((src_data[temp_index] & 0x7F) != SATK_TEXT_STRING_TAG
+                       && (src_data[temp_index] & 0x7F) != SATK_DEFAULT_TEXT_TAG) {
+               err("[SAT] parser: text string tag missing, tag=0x%x",
+                       src_data[temp_index]);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if(src_data[temp_index++]&0x80)
+       if (src_data[temp_index++] & 0x80)
                comprehension_req = TRUE;
 
        dbg("comprehension_req=[%d]", comprehension_req);
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
-       if(!len_of_len){
+       if (!len_of_len) {
                err("[SAT] parser: invalid length.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       text_len = src_data[temp_index+len_of_len-1];
+       text_len = src_data[temp_index + len_of_len-1];
        temp_index += len_of_len;
        memset(text_obj->string, 0x00, SAT_TEXT_STRING_LEN_MAX);
 
-       //text
-       if(text_len <=1){
+       /* text */
+       if (text_len <= 1) {
                text_obj->string_length = 0;
-       }else{
+       } else {
                _sat_decode_dcs(src_data[temp_index++], &text_obj->dcs);
                _get_string_data(&src_data[temp_index], text_len-1, text_obj);
        }
 
        dbg("[SAT] parser: text_tlv_len=%d, parsed text length=%d", text_len, text_obj->string_length);
 
-       // 1 is the length of Tag.
-       *consumed_data_len = 1 + len_of_len + text_len;
+       /*  1 is the length of Tag. */
+       *consumed_data_len = 1  +  len_of_len  +  text_len;
 
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_tone_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_tone *tone_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_tone_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_tone *tone_obj, int *consumed_data_len)
 {
        int temp_index;
-       unsigned charsrc_data;
+       unsigned char *src_data;
        gboolean comprehension_req = FALSE;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || tone_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || tone_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || tone_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)) {
+       if (tlv_len <= (curr_offset + 1)) {
                dbg("[SAT] SAT PARSER - incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index]&0x7F) != SATK_TONE_TAG){
+       if ((src_data[temp_index] & 0x7F) != SATK_TONE_TAG) {
                err("[SAT] parser: tone tag missing");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if(src_data[temp_index++]&0x80)
+       if (src_data[temp_index++] & 0x80)
                comprehension_req = TRUE;
 
-       //length
+       /* length */
        if (src_data[temp_index++] != SATK_TONE_LENGTH) {
                err("[SAT] SAT PARSER -  incorrect length value.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       if((temp_index+SATK_TONE_LENGTH) > tlv_len)
-       {
-               err("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d", (temp_index+SATK_TONE_LENGTH),tlv_len);
+       if ((temp_index + SATK_TONE_LENGTH) > tlv_len) {
+               err("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d",
+                       (temp_index + SATK_TONE_LENGTH), tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tone
-       switch(src_data[temp_index])
-       {
-               // standard supervisory tones
-               case DIAL_TONE:
-               case CALLED_SUBSCRIBER_BUSY     :
-               case CONGESTION :
-               case RADIO_PATH_ACK:
-               case RADIO_PATH_NOT_AVAILABLE_CALL_DROPPED:
-               case ERR_SPECIAL_INFO:
-               case CALL_WAITING_TONE:
-               case RINGING_TONE:
-               // ME proprietary tones
-               case GENERAL_BEEP:
-               case POSITIVE_ACK_TONE:
-               case NEGATIVE_ACK_OR_ERROR_TONE:
-               case RINGING_TONE_SLCTD_BY_USR_FOR_INCOM_SPEECH_CALL:
-               case ALERT_TONE_SELECTED_BY_USER_FOR_INCOMING_SMS:
-               case CRITICAL_ALERT:
-               //Themed tones
-               case HAPPY_TONE:
-               case SAD_TONE:
-               case URGENT_ACTION_TONE :
-               case QUESTION_TONE:
-               case MESSAGE_RECEIVED_TONE      :
-               //Melody tones
-               case MELODY_1:
-               case MELODY_2:
-               case MELODY_3:
-               case MELODY_4:
-               case MELODY_5:
-               case MELODY_6:
-               case MELODY_7:
-               case MELODY_8:
-                       dbg("[SAT] SAT PARSER -  Tone =0x%x", src_data[temp_index]);
-                       tone_obj->tone_type = src_data[temp_index];
-                       break;
-
-               case TONE_TYPE_RESERVED:
-               default:
-                       dbg("[SAT] SAT PARSER -  Reserved value of Tone =0x%x", src_data[temp_index]);
-                       if(comprehension_req)
-                               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
-                       break;
+       /* tone */
+       switch (src_data[temp_index]) {
+       /* standard supervisory tones */
+       case DIAL_TONE:
+       case CALLED_SUBSCRIBER_BUSY:
+       case CONGESTION:
+       case RADIO_PATH_ACK:
+       case RADIO_PATH_NOT_AVAILABLE_CALL_DROPPED:
+       case ERR_SPECIAL_INFO:
+       case CALL_WAITING_TONE:
+       case RINGING_TONE:
+       /* ME proprietary tones */
+       case GENERAL_BEEP:
+       case POSITIVE_ACK_TONE:
+       case NEGATIVE_ACK_OR_ERROR_TONE:
+       case RINGING_TONE_SLCTD_BY_USR_FOR_INCOM_SPEECH_CALL:
+       case ALERT_TONE_SELECTED_BY_USER_FOR_INCOMING_SMS:
+       case CRITICAL_ALERT:
+       /* Themed tones */
+       case HAPPY_TONE:
+       case SAD_TONE:
+       case URGENT_ACTION_TONE:
+       case QUESTION_TONE:
+       case MESSAGE_RECEIVED_TONE:
+       /* Melody tones */
+       case MELODY_1:
+       case MELODY_2:
+       case MELODY_3:
+       case MELODY_4:
+       case MELODY_5:
+       case MELODY_6:
+       case MELODY_7:
+       case MELODY_8:
+               dbg("[SAT] SAT PARSER -  Tone =0x%x", src_data[temp_index]);
+               tone_obj->tone_type = src_data[temp_index];
+       break;
+
+       case TONE_TYPE_RESERVED: /* Fallthrough */
+       default:
+               dbg("[SAT] SAT PARSER -  Reserved value of Tone =0x%x", src_data[temp_index]);
+               if (comprehension_req)
+                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
+       break;
        }
 
        *consumed_data_len = 3;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_ussd_string_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_ussd_string *ussd_str_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_ussd_string_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_ussd_string *ussd_str_obj, int *consumed_data_len)
 {
-       int temp_index, len_of_len=0;
-       int ussd_len =0;
-       unsigned charsrc_data;
+       int temp_index, len_of_len = 0;
+       int ussd_len = 0;
+       unsigned char *src_data;
        gboolean comprehension_req = FALSE;
 
        if (!tlv_str || !ussd_str_obj || !consumed_data_len) {
@@ -1302,7 +1297,7 @@ static enum tcore_sat_result _sat_decode_ussd_string_tlv(unsigned char* tlv_str,
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if (tlv_len <= curr_offset + 1) {
+       if (tlv_len <= curr_offset  +  1) {
                err("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
@@ -1311,81 +1306,83 @@ static enum tcore_sat_result _sat_decode_ussd_string_tlv(unsigned char* tlv_str,
        src_data = &tlv_str[0];
        if ((src_data[temp_index] & 0x7F) != SATK_USSD_STRING_TAG) {
                err("[SAT] SAT PARSER -  SS string tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       if(src_data[temp_index++]&0x80)
+       if (src_data[temp_index++] & 0x80)
                comprehension_req = TRUE;
 
        dbg("comprehension_req=[%d]", comprehension_req);
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
-       if(!len_of_len){
+       if (!len_of_len) {
                err("[SAT] parser: invalid length.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       ussd_len = src_data[temp_index+len_of_len-1];
-       dbg("[SAT] parser: ussd_tlv len=%d",ussd_len);
+       ussd_len = src_data[temp_index + len_of_len-1];
+       dbg("[SAT] parser: ussd_tlv len=%d", ussd_len);
 
        temp_index += len_of_len;
        ussd_str_obj->string_len = 0;
 
-       //ussd data
-       if(ussd_len <= 1)
+       /* ussd data */
+       if (ussd_len <= 1)
                return TCORE_SAT_REQUIRED_VALUE_MISSING;
 
        _sat_decode_dcs(src_data[temp_index++], &ussd_str_obj->dsc);
        ussd_str_obj->string_len = ussd_len - 1;
        memcpy(ussd_str_obj->ussd_string, &src_data[temp_index], ussd_str_obj->string_len);
 
-        // 1 is the length of Tag.
-       *consumed_data_len = 1 + len_of_len + ussd_len;
+        /* 1 is the length of Tag. */
+       *consumed_data_len = 1  +  len_of_len  +  ussd_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_file_list_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_file_list *file_list_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_file_list_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_file_list *file_list_obj, int *consumed_data_len)
 {
-       //tmp
+       /* tmp */
        int tmp_cnt;
        int f_count;
        unsigned int ef = 0x0000;
 
-       int temp_index, len_of_len=0;
+       int temp_index, len_of_len = 0;
        int file_list_len = 0;
-       unsigned charsrc_data;
+       unsigned char *src_data;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || file_list_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || file_list_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || file_list_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)) {
+       if (tlv_len <= (curr_offset + 1)) {
                dbg("[SAT] SAT PARSER - incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index]&0x7F) != SATK_FILE_LIST_TAG){
-               err("[SAT] parser: tag missing, tag=0x%x",src_data[temp_index]);
+       if ((src_data[temp_index] & 0x7F) != SATK_FILE_LIST_TAG) {
+               err("[SAT] parser: tag missing, tag=0x%x", src_data[temp_index]);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
-       if(!len_of_len){
+       if (!len_of_len) {
                err("[SAT] parser: invalid length.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
-       file_list_len = src_data[temp_index+len_of_len-1];
+
+       file_list_len = src_data[temp_index + len_of_len-1];
        temp_index += len_of_len;
 
-       if((temp_index+file_list_len) > tlv_len) {
-               dbg("[SAT] SAT PARSER - incorrect cmd len, expected len = %d, orig_len=%d", (temp_index+file_list_len),tlv_len);
+       if ((temp_index + file_list_len) > tlv_len) {
+               dbg("[SAT] SAT PARSER - incorrect cmd len, expected len = %d, orig_len=%d",
+                       (temp_index + file_list_len), tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
@@ -1393,180 +1390,180 @@ static enum tcore_sat_result _sat_decode_file_list_tlv(unsigned char* tlv_str, i
        file_list_obj->file_count = 0;
        memset(file_list_obj->file_id, 0, SAT_FILE_ID_LIST_MAX_COUNT);
 
-       if(!tmp_cnt){
+       if (!tmp_cnt) {
                dbg("file cnt = 0");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
        f_count = 0;
-       do{
+       do {
                ef = 0x0000;
-               if( src_data[temp_index] != 0x3F || src_data[temp_index+1] != 0x00){
+               if (src_data[temp_index] != 0x3F || src_data[temp_index + 1] != 0x00) {
                        temp_index++;
-                       if(temp_index > tlv_len) break;
-                       else continue;
+                       if (temp_index > tlv_len)
+                               break;
+                       else
+                               continue;
                }
-               temp_index+=2; //MASTER FILE (DIR) 0x3F00
 
-               if(src_data[temp_index] == 0x2F){
-               //ELEMENTRY FILE (VALUE)
+               temp_index += 2; /* MASTER FILE (DIR) 0x3F00 */
+
+               if (src_data[temp_index] == 0x2F) {
+                       /* ELEMENTRY FILE (VALUE) */
                        ef = src_data[temp_index] << 8;
                        temp_index++;
                        ef = ef | src_data[temp_index];
 
-                       if( _check_file_for_refresh((enum tel_sim_file_id)ef) ){//check file registered for refresh?
+                       if (_check_file_for_refresh((enum tel_sim_file_id)ef)) {/* check file registered for refresh? */
                                file_list_obj->file_id[file_list_obj->file_count] = ef;
                                file_list_obj->file_count++;
                        }
-               }
-               else if(src_data[temp_index] == 0x7F && src_data[temp_index+1] == 0xFF){
-               //USIM DIRECTORY FILE (DIR) 0x7FFF
-                       temp_index+=2;
-                       if(src_data[temp_index] == 0x6F){
+               } else if (src_data[temp_index] == 0x7F && src_data[temp_index + 1] == 0xFF) {
+                       /* USIM DIRECTORY FILE (DIR) 0x7FFF */
+                       temp_index += 2;
+                       if (src_data[temp_index] == 0x6F) {
                                ef = 0x6A << 8;
                                temp_index++;
                                ef = ef | src_data[temp_index];
 
-                               if( _check_file_for_refresh((enum tel_sim_file_id)ef) ){//check file registered for refresh?
+                               if (_check_file_for_refresh((enum tel_sim_file_id)ef)) {/* check file registered for refresh? */
                                        file_list_obj->file_id[file_list_obj->file_count] = ef;
                                        file_list_obj->file_count++;
                                }
-                       }
-                       else{
+                       } else
                                temp_index++;
-                       }
-               }
-               else if(src_data[temp_index] == 0x7F && (src_data[temp_index+1] == 0x10 || src_data[temp_index+1] == 0x20) ){
-               //TELECOM DIRECTORY FILE 0x7F10 or GSM DIRECTORY FILE 0x7F20
-                       temp_index+=2;
-                       if(src_data[temp_index] == 0x6F){
+               } else if (src_data[temp_index] == 0x7F && (src_data[temp_index + 1] == 0x10
+                               || src_data[temp_index + 1] == 0x20)) {
+                       /* TELECOM DIRECTORY FILE 0x7F10 or GSM DIRECTORY FILE 0x7F20 */
+                       temp_index += 2;
+                       if (src_data[temp_index] == 0x6F) {
                                ef = src_data[temp_index] << 8;
                                temp_index++;
                                ef = ef | src_data[temp_index];
 
-                               if( _check_file_for_refresh((enum tel_sim_file_id)ef) ){//check file registered for refresh?
+                               if (_check_file_for_refresh((enum tel_sim_file_id)ef)) {/* check file registered for refresh? */
                                        file_list_obj->file_id[file_list_obj->file_count] = ef;
                                        file_list_obj->file_count++;
                                }
-                       }
-                       else{
+                       } else
                                temp_index++;
-                       }
                }
 
                f_count++;
                temp_index++;
-       }while( f_count < tmp_cnt);
+       } while (f_count < tmp_cnt);
 
        dbg("[SAT] SAT PARSER -  total file count=%d, PDA file count = %d", tmp_cnt, file_list_obj->file_count);
-       *consumed_data_len = 1 + len_of_len + file_list_len;
+       *consumed_data_len = 1  +  len_of_len  +  file_list_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_item_next_action_indicator_tlv(unsigned char* tlv_str,
-               int tlv_len, int curr_offset,
-               struct tel_sat_item_next_action_indicatior_list* item_next_act_indi_obj,
-               int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_item_next_action_indicator_tlv(unsigned char *tlv_str, int tlv_len, int curr_offset,
+       struct tel_sat_item_next_action_indicatior_list *item_next_act_indi_obj, int *consumed_data_len)
 {
        int temp_index;
        int item_nai_len;
-       unsigned charsrc_data;
+       unsigned char *src_data;
        gboolean comprehension_req = FALSE;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || item_next_act_indi_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || item_next_act_indi_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || item_next_act_indi_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)) {
+       if (tlv_len <= (curr_offset + 1)) {
                dbg("[SAT] SAT PARSER - incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index]&0x7F) != SATK_ITEMS_NEXT_ACTION_INDICATOR_TAG){
-               dbg("[SAT] SAT PARSER - tag not found.=%d",src_data[temp_index]);
+       if ((src_data[temp_index] & 0x7F) != SATK_ITEMS_NEXT_ACTION_INDICATOR_TAG) {
+               dbg("[SAT] SAT PARSER - tag not found.=%d", src_data[temp_index]);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if((src_data[temp_index++]&0x7F))
+       if ((src_data[temp_index++] & 0x7F))
                comprehension_req = TRUE;
 
-       //item cnt
+       /* item cnt */
        item_nai_len = item_next_act_indi_obj->cnt = src_data[temp_index++];
-       if((temp_index+item_nai_len) > tlv_len) {
-               dbg("[SAT] SAT PARSER - incorrect cmd len, expected len = %d, orig_len=%d", (temp_index+item_nai_len),tlv_len);
+       if ((temp_index + item_nai_len) > tlv_len) {
+               dbg("[SAT] SAT PARSER - incorrect cmd len, expected len = %d, orig_len=%d",
+                       (temp_index + item_nai_len), tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if(item_next_act_indi_obj->cnt > SAT_ITEMS_NEXT_ACTION_INDI_LIST_MAX_COUNT) {
-               if(comprehension_req == TRUE) {
-                       dbg("[SAT] SAT PARSER - list count exceeds maximum allowed count=%d",item_next_act_indi_obj->cnt);
+       if (item_next_act_indi_obj->cnt > SAT_ITEMS_NEXT_ACTION_INDI_LIST_MAX_COUNT) {
+               if (comprehension_req == TRUE) {
+                       dbg("[SAT] SAT PARSER - list count exceeds maximum allowed count=%d", item_next_act_indi_obj->cnt);
                        return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
                }
+
                item_next_act_indi_obj->cnt = 0;
        }
 
        memset(item_next_act_indi_obj->indicator_list, 0xFF, SAT_ITEMS_NEXT_ACTION_INDI_LIST_MAX_COUNT);
-       if(item_next_act_indi_obj->cnt > 0)
+       if (item_next_act_indi_obj->cnt > 0)
                memcpy(item_next_act_indi_obj->indicator_list, &src_data[temp_index], item_next_act_indi_obj->cnt);
 
-       *consumed_data_len = 1+1+item_nai_len;
-       dbg("[SAT] SAT PARSER - listCount=%d, consumed_data_len = %d",item_next_act_indi_obj->cnt, *consumed_data_len);
+       *consumed_data_len = 1 + 1 + item_nai_len;
+       dbg("[SAT] SAT PARSER - listCount=%d, consumed_data_len = %d", item_next_act_indi_obj->cnt, *consumed_data_len);
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_event_list_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_event_list* event_list_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_event_list_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_event_list *event_list_obj, int *consumed_data_len)
 {
        int i = 0;
-       int temp_index, len_of_len=0;
+       int temp_index, len_of_len = 0;
        int evt_list_len;
-       unsigned charsrc_data;
+       unsigned char *src_data;
        gboolean comprehension_req = FALSE;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || event_list_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || event_list_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || event_list_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)) {
+       if (tlv_len <= (curr_offset + 1)) {
                dbg("[SAT] SAT PARSER - incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index]&0x7F) != SATK_EVENT_LIST_TAG){
-               dbg("[SAT] SAT PARSER - tag not found.=%d",src_data[temp_index]);
+       if ((src_data[temp_index] & 0x7F) != SATK_EVENT_LIST_TAG) {
+               dbg("[SAT] SAT PARSER - tag not found.=%d", src_data[temp_index]);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if((src_data[temp_index++]&0x80))
+       if ((src_data[temp_index++] & 0x80))
                comprehension_req = TRUE;
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
-       if(!len_of_len){
+       if (!len_of_len) {
                err("[SAT] parser: invalid length.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       evt_list_len = src_data[temp_index+len_of_len-1];
-       dbg("[SAT] parser: evt_list_len=%d",evt_list_len);
+       evt_list_len = src_data[temp_index + len_of_len-1];
+       dbg("[SAT] parser: evt_list_len=%d", evt_list_len);
        temp_index += len_of_len;
 
-       if((temp_index+evt_list_len) > tlv_len) {
-               dbg("[SAT] SAT PARSER - incorrect cmd len, expected len = %d, orig_len=%d", (temp_index+evt_list_len),tlv_len);
+       if ((temp_index + evt_list_len) > tlv_len) {
+               dbg("[SAT] SAT PARSER - incorrect cmd len, expected len = %d, orig_len=%d",
+                       (temp_index + evt_list_len), tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if(evt_list_len > SAT_EVENT_LIST_MAX){
-               dbg("[SAT] SAT PARSER - event list contains more items than it is supposed to have! len=%d", evt_list_len);
-               if(comprehension_req)
+       if (evt_list_len > SAT_EVENT_LIST_MAX) {
+               dbg("[SAT] SAT PARSER - event list contains more items than it is supposed to have! len=%d",
+                       evt_list_len);
+               if (comprehension_req)
                        return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
                else
                        evt_list_len = SAT_EVENT_LIST_MAX;
@@ -1575,162 +1572,164 @@ static enum tcore_sat_result _sat_decode_event_list_tlv(unsigned char* tlv_str,
        event_list_obj->event_list_cnt = 0;
        memset(event_list_obj->evt_list, 0xFF, SAT_EVENT_LIST_MAX);
 
-       //event list
-       for(i = 0; i < evt_list_len; i++){
-               dbg("[SAT] SAT PARSER - event[%d]=0x%x", i, src_data[temp_index]);
-               switch(src_data[temp_index]){
-                       /*PDA events*/
-                       case EVENT_USER_ACTIVITY:
-                       case EVENT_IDLE_SCREEN_AVAILABLE:
-                       case EVENT_LANGUAGE_SELECTION:
-                       case EVENT_BROWSER_TERMINATION:
-                       case EVENT_DATA_AVAILABLE:
-                       case EVENT_CHANNEL_STATUS:
-                       case EVENT_MT_CALL      :
-                       case EVENT_CALL_CONNECTED:
-                       case EVENT_CALL_DISCONNECTED:
-                       case EVENT_LOCATION_STATUS:
-                       case EVENT_ACCESS_TECHNOLOGY_CHANGED:
-                               event_list_obj->evt_list[i] = src_data[temp_index];
-                               event_list_obj->event_list_cnt++;
-                               break;
-                       case EVENT_UNKNOWN:
-                       default:
-                               if(comprehension_req)
-                                       return TCORE_SAT_BEYOND_ME_CAPABILITY;
-                               break;
+       /* event list */
+       for (i = 0; i < evt_list_len; i++) {
+               dbg("[SAT] SAT PARSER - event[%d]=0x%x",
+                       i, src_data[temp_index]);
+               switch (src_data[temp_index]) {
+               /* PDA events */
+               case EVENT_USER_ACTIVITY:
+               case EVENT_IDLE_SCREEN_AVAILABLE:
+               case EVENT_LANGUAGE_SELECTION:
+               case EVENT_BROWSER_TERMINATION:
+               case EVENT_DATA_AVAILABLE:
+               case EVENT_CHANNEL_STATUS:
+               case EVENT_MT_CALL:
+               case EVENT_CALL_CONNECTED:
+               case EVENT_CALL_DISCONNECTED:
+               case EVENT_LOCATION_STATUS:
+               case EVENT_ACCESS_TECHNOLOGY_CHANGED:
+                       event_list_obj->evt_list[i] = src_data[temp_index];
+                       event_list_obj->event_list_cnt++;
+               break;
+
+               case EVENT_UNKNOWN: /* Fallthrough */
+               default:
+                       if (comprehension_req)
+                               return TCORE_SAT_BEYOND_ME_CAPABILITY;
+               break;
                }
                temp_index++;
        }
 
-        // 1 is the length of Tag.
-       *consumed_data_len = 1 + len_of_len + evt_list_len;
+        /*  1 is the length of Tag. */
+       *consumed_data_len = 1  +  len_of_len  +  evt_list_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_icon_identifier_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_icon_identifier* icon_id_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_icon_identifier_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_icon_identifier *icon_id_obj, int *consumed_data_len)
 {
-       unsigned charsrc_data;
+       unsigned char *src_data;
        int temp_index = 0;
 
-       if(tlv_str == NULL || icon_id_obj == NULL ||consumed_data_len == NULL)  {
+       if (tlv_str == NULL || icon_id_obj == NULL || consumed_data_len == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || icon_id_obj == NULL ||consumed_data_len == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)) {//length of icon id tlv is 4
+       if (tlv_len <= (curr_offset + 1)) {/* length of icon id tlv is 4 */
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index++]&0x7F) != SATK_ICON_IDENTIFIER_TAG) {
+       if ((src_data[temp_index++] & 0x7F) != SATK_ICON_IDENTIFIER_TAG) {
                dbg("[SAT] SAT PARSER -  icon identity tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       if(src_data[temp_index++] != SATK_ICON_IDENTITY_LENGTH) {
+       if (src_data[temp_index++] != SATK_ICON_IDENTITY_LENGTH) {
                dbg("[SAT] SAT PARSER -  incorrect length value.");
-               return FALSE; //send TR
+               return FALSE; /* Send TR */
        }
 
-       if((temp_index+SATK_ICON_IDENTITY_LENGTH) > tlv_len) {
-               dbg("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d", (temp_index+SATK_ICON_IDENTITY_LENGTH),tlv_len);
+       if ((temp_index + SATK_ICON_IDENTITY_LENGTH) > tlv_len) {
+               dbg("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d",
+                       (temp_index + SATK_ICON_IDENTITY_LENGTH), tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
+
        icon_id_obj->is_exist = TRUE;
 
-       if((src_data[temp_index++]&0x01))
+       if ((src_data[temp_index++] & 0x01))
                icon_id_obj->icon_qualifer = ICON_QUALI_NOT_SELF_EXPLANATORY;
        else
                icon_id_obj->icon_qualifer = ICON_QUALI_SELF_EXPLANATORY;
 
-       if(src_data[temp_index] > 0x00) {
+       if (src_data[temp_index] > 0x00)
                icon_id_obj->icon_identifier = src_data[temp_index];
-       }
        else {
                dbg("[SAT] SAT PARSER -  incorrect icon identifier");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       dbg("[SAT] SAT PARSER -  icon_qual=%d, iconId=%d",icon_id_obj->icon_qualifer, icon_id_obj->icon_identifier);
+       dbg("[SAT] SAT PARSER -  icon_qual=%d, iconId=%d", icon_id_obj->icon_qualifer, icon_id_obj->icon_identifier);
        *consumed_data_len = 4;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_icon_identifier_list_tlv(unsigned char* tlv_str,
-               int tlv_len, int curr_offset, struct tel_sat_icon_identifier_list* icon_list_obj,
-               int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_icon_identifier_list_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_icon_identifier_list *icon_list_obj, int *consumed_data_len)
 {
        int temp_index, i;
-       int len_value =0;
-       unsigned charsrc_data;
+       int len_value = 0;
+       unsigned char *src_data;
        gboolean comprehension_req = FALSE;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || icon_list_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || icon_list_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || icon_list_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)+1) {
+       if (tlv_len <= (curr_offset + 1) + 1) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index]&0x7F) != SATK_ITEM_ICON_IDENTIFIER_LIST_TAG) {
+       if ((src_data[temp_index] & 0x7F) != SATK_ITEM_ICON_IDENTIFIER_LIST_TAG) {
                dbg("[SAT] SAT PARSER -  icon identity tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
        icon_list_obj->is_exist = TRUE;
-       if(src_data[temp_index++]&0x80)
+       if (src_data[temp_index++] & 0x80)
                comprehension_req = TRUE;
 
        len_value = src_data[temp_index++];
-       if(src_data[temp_index++]&0x01)
+       if (src_data[temp_index++] & 0x01)
                icon_list_obj->icon_qualifer = ICON_QUALI_NOT_SELF_EXPLANATORY;
        else
                icon_list_obj->icon_qualifer = ICON_QUALI_SELF_EXPLANATORY;
 
        icon_list_obj->icon_cnt = len_value-1;
-       if(icon_list_obj->icon_cnt > SAT_ICON_LIST_MAX_COUNT){
-               if(comprehension_req == TRUE) {
-                       dbg("[SAT] SAT PARSER -  list count exceeds maximum allowed count=%d",icon_list_obj->icon_cnt);
+       if (icon_list_obj->icon_cnt > SAT_ICON_LIST_MAX_COUNT) {
+               if (comprehension_req == TRUE) {
+                       dbg("[SAT] SAT PARSER -  list count exceeds maximum allowed count=%d", icon_list_obj->icon_cnt);
                        return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
                }
+
                icon_list_obj->icon_cnt = 0;
-       }
-       else{
+       } else {
 
-               for(i=0;i<icon_list_obj->icon_cnt;i++) {
-                       if(src_data[temp_index] > 0x00) {
-                               icon_list_obj->icon_id_list[i]= src_data[temp_index++];
-                       } else  {
+               for (i = 0; i < icon_list_obj->icon_cnt; i++) {
+                       if (src_data[temp_index] > 0x00) {
+                               icon_list_obj->icon_id_list[i] = src_data[temp_index++];
+                       } else {
                                dbg("[SAT] SAT PARSER -  incorrect icon identifier");
-                               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+                               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
                        }
                }
        }
 
-       *consumed_data_len = 1+1+len_value;
-       dbg("[SAT] SAT PARSER -  icon_qual=%d, iconCount=%d",icon_list_obj->icon_qualifer, icon_list_obj->icon_cnt);
+       *consumed_data_len = 1 + 1 + len_value;
+       dbg("[SAT] SAT PARSER -  icon_qual=%d, iconCount=%d", icon_list_obj->icon_qualifer, icon_list_obj->icon_cnt);
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_dtmf_string_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, struct tel_sat_dtmf_string* dtmf_string_obj, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_dtmf_string_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_dtmf_string *dtmf_string_obj, int *consumed_data_len)
 {
-       unsigned charsrc_data;
+       unsigned char *src_data;
        int temp_index, len_of_len = 0;
        int dtmf_len = 0;
        gboolean comprehension_req = FALSE;
-       charstr_ascii = NULL;
+       char *str_ascii = NULL;
 
        if (tlv_str == NULL || consumed_data_len == NULL || dtmf_string_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || dtmf_string_obj == NULL");
@@ -1739,44 +1738,45 @@ static enum tcore_sat_result _sat_decode_dtmf_string_tlv(unsigned char* tlv_str,
 
        src_data = &tlv_str[0];
 
-       if (tlv_len <= (curr_offset + 1)) {
+       if (tlv_len <= (curr_offset  +  1)) {
                dbg("[SAT] SAT PARSER - incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //Tag
+       /* Tag */
        temp_index = curr_offset;
        if ((src_data[temp_index] & 0x7F) != SATK_DTMF_STRING_TAG) {
                dbg("[SAT] SAT PARSER - address tag missing");
                return TCORE_SAT_REQUIRED_VALUE_MISSING;
        }
 
-       //comprehensive required
-       if((src_data[temp_index++] & 0x80))
+       /* comprehensive required */
+       if ((src_data[temp_index++] & 0x80))
                comprehension_req = TRUE;
 
        dbg("comprehension_req=[%d]", comprehension_req);
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
-       if(!len_of_len){
+       if (!len_of_len) {
                err("[SAT] parser: invalid length.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       dtmf_len = src_data[temp_index + len_of_len - 1];
-       temp_index += len_of_len; //temp_index pointing to TON/NPI
+       dtmf_len = src_data[temp_index  +  len_of_len - 1];
+       temp_index += len_of_len; /* temp_index pointing to TON/NPI */
 
-       if ((temp_index + dtmf_len) > tlv_len) {
-               dbg("[SAT] SAT PARSER - incorrect cmd len, expected len = %d, orig_len=%d", (temp_index+dtmf_len), tlv_len);
+       if ((temp_index  +  dtmf_len) > tlv_len) {
+               dbg("[SAT] SAT PARSER - incorrect cmd len, expected len = %d, orig_len=%d",
+                       (temp_index + dtmf_len), tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
        dtmf_string_obj->dtmf_length = 0;
 
-       if(dtmf_len > 0){
-               str_ascii = tcore_util_convert_bcd2ascii((const char*)&src_data[temp_index], dtmf_len, SAT_DTMF_STRING_LEN_MAX);
-               if(str_ascii){
+       if (dtmf_len > 0) {
+               str_ascii = tcore_util_convert_bcd2ascii((const char *)&src_data[temp_index], dtmf_len, SAT_DTMF_STRING_LEN_MAX);
+               if (str_ascii) {
                        memcpy(dtmf_string_obj->dtmf_string, str_ascii, strlen(str_ascii));
                        dtmf_string_obj->dtmf_length = strlen(str_ascii);
                        g_free(str_ascii);
@@ -1788,17 +1788,17 @@ static enum tcore_sat_result _sat_decode_dtmf_string_tlv(unsigned char* tlv_str,
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       *consumed_data_len = 1 + len_of_len + dtmf_len;
+       *consumed_data_len = 1  +  len_of_len  +  dtmf_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_language_tlv(unsigned chartlv_str, int tlv_len,
-               int curr_offset, enum tel_sim_language_type* language_obj)
+static enum tcore_sat_result _sat_decode_language_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, enum tel_sim_language_type *language_obj)
 {
-       unsigned charsrc_data;
+       unsigned char *src_data;
        int temp_index = 0;
 
-       if(tlv_len <= (curr_offset+1)) {
+       if (tlv_len <= (curr_offset + 1)) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
@@ -1806,28 +1806,31 @@ static enum tcore_sat_result _sat_decode_language_tlv(unsigned char* tlv_str, in
        src_data = &tlv_str[0];
        temp_index = curr_offset;
 
-       if((src_data[temp_index++]&0x7F) != SATK_LANGUAGE_TAG)  {
+       if ((src_data[temp_index++] & 0x7F) != SATK_LANGUAGE_TAG)       {
                dbg("[SAT] SAT PARSER -  Language tag missing.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
-       if(src_data[temp_index++] != SATK_LANGUAGE_LENGTH) {
+
+       if (src_data[temp_index++] != SATK_LANGUAGE_LENGTH) {
                dbg("[SAT] SAT PARSER -  incorrect length value.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if((temp_index+SATK_LANGUAGE_LENGTH) > tlv_len) {
-               dbg("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d", (temp_index+SATK_LANGUAGE_LENGTH),tlv_len);
+       if ((temp_index + SATK_LANGUAGE_LENGTH) > tlv_len) {
+               dbg("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d",
+                       (temp_index + SATK_LANGUAGE_LENGTH), tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
-       *language_obj = _sat_decode_language(src_data[temp_index], src_data[temp_index+1]);
-       dbg("[SAT] SAT PARSER -  <in> %c %c, <out> %d", src_data[temp_index], src_data[temp_index+1], *language_obj);
+
+       *language_obj = _sat_decode_language(src_data[temp_index], src_data[temp_index + 1]);
+       dbg("[SAT] SAT PARSER -  <in> %c %c, <out> %d", src_data[temp_index], src_data[temp_index + 1], *language_obj);
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_browser_identity_tlv(unsigned char* tlv_str, int tlv_len, int curr_offset,
-               enum browser_identity* browser_id, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_browser_identity_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, enum browser_identity *browser_id, int *consumed_data_len)
 {
-       unsigned charsrc_data;
+       unsigned char *src_data;
        int temp_index = 0;
 
        if (tlv_str == NULL || browser_id == NULL || consumed_data_len == NULL) {
@@ -1835,7 +1838,7 @@ static enum tcore_sat_result _sat_decode_browser_identity_tlv(unsigned char* tlv
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if (tlv_len <= (curr_offset + 1)) {
+       if (tlv_len <= (curr_offset  +  1)) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
@@ -1847,6 +1850,7 @@ static enum tcore_sat_result _sat_decode_browser_identity_tlv(unsigned char* tlv
                dbg("[SAT] SAT PARSER -  Browser ID tag missing.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
+
        if (src_data[temp_index++] != SATK_BROWSER_ID_LENGTH) {
                dbg("[SAT] SAT PARSER -  incorrect length value.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
@@ -1855,36 +1859,41 @@ static enum tcore_sat_result _sat_decode_browser_identity_tlv(unsigned char* tlv
        dbg("[SAT] SAT PARSER - : browser ID value:ox%x", src_data[temp_index]);
 
        switch (src_data[temp_index]) {
-               case 0x00:
-                       *browser_id = BROWSER_ID_DEFAULT;
-                       break;
-               case 0x01:
-                       *browser_id = BROWSER_ID_WML;
-                       break;
-               case 0x02:
-                       *browser_id = BROWSER_ID_HTML;
-                       break;
-               case 0x03:
-                       *browser_id = BROWSER_ID_XHTML;
-                       break;
-               case 0x04:
-                       *browser_id = BROWSER_ID_CHTML;
-                       break;
-               default:
-                       *browser_id = BROWSER_ID_RESERVED;
-                       break;
+       case 0x00:
+               *browser_id = BROWSER_ID_DEFAULT;
+       break;
+
+       case 0x01:
+               *browser_id = BROWSER_ID_WML;
+       break;
+
+       case 0x02:
+               *browser_id = BROWSER_ID_HTML;
+       break;
+
+       case 0x03:
+               *browser_id = BROWSER_ID_XHTML;
+       break;
+
+       case 0x04:
+               *browser_id = BROWSER_ID_CHTML;
+       break;
+
+       default:
+               *browser_id = BROWSER_ID_RESERVED;
+       break;
        }
 
        *consumed_data_len = 3;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_url_tlv(unsigned char* tlv_str, int tlv_len, int curr_offset,
-               struct tel_sat_url* url, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_url_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_url *url, int *consumed_data_len)
 {
-       unsigned charsrc_data;
-       int temp_index= curr_offset;
-       int len_of_len=0, url_len=0;
+       unsigned char *src_data;
+       int temp_index = curr_offset;
+       int len_of_len = 0, url_len = 0;
 
        if (tlv_str == NULL || url == NULL || consumed_data_len == NULL)        {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || url == NULL ||consumed_data_len == NULL");
@@ -1892,51 +1901,51 @@ static enum tcore_sat_result _sat_decode_url_tlv(unsigned char* tlv_str, int tlv
        }
 
        src_data = &tlv_str[0];
-       if(tlv_len <= (curr_offset+1)) {
+       if (tlv_len <= (curr_offset + 1)) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if((src_data[temp_index++]&0x7F) != SATK_URL_TAG) {
+       if ((src_data[temp_index++] & 0x7F) != SATK_URL_TAG) {
                dbg("[SAT] SAT PARSER -  Browser URL tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
-       if(!len_of_len){
+       if (!len_of_len) {
                err("[SAT] parser: invalid length.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       url_len =  src_data[temp_index+len_of_len-1];
+       url_len =  src_data[temp_index + len_of_len-1];
        url->url_length = url_len;
-       temp_index+=len_of_len; //temp_index pointing to url.
+       temp_index += len_of_len; /* temp_index pointing to url. */
        dbg("URL length (%d)", url_len);
 
-       if(url_len < 0){
+       if (url_len < 0) {
                dbg("[SAT] URL is null");
-               *consumed_data_len = 1+len_of_len+url_len;
+               *consumed_data_len = 1 + len_of_len + url_len;
                return TCORE_SAT_SUCCESS;
        }
 
-       if(url_len > SAT_URL_LEN_MAX){
+       if (url_len > SAT_URL_LEN_MAX) {
                dbg("[SAT] URL length is wrong");
-               *consumed_data_len = 1+len_of_len+url_len;
+               *consumed_data_len = 1 + len_of_len + url_len;
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
        memcpy(url->url, &src_data[temp_index], url_len);
        dbg("[SAT] url(%s)", url->url);
-       *consumed_data_len = 1+len_of_len+url_len;
+       *consumed_data_len = 1 + len_of_len + url_len;
 
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_bearer_tlv(unsigned char* tlv_str, int tlv_len, int curr_offset,
-               struct tel_sat_bearer_list* satk_bearer, int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_bearer_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_bearer_list *satk_bearer, int *consumed_data_len)
 {
-       unsigned charsrc_data;
+       unsigned char *src_data;
        int temp_index, len_of_len = 0;
        int list_len = 0, list_idx = 0;
 
@@ -1945,8 +1954,9 @@ static enum tcore_sat_result _sat_decode_bearer_tlv(unsigned char* tlv_str, int
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if (tlv_len <= (curr_offset + 1)) {
-               dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d",     tlv_len);
+       if (tlv_len <= (curr_offset  +  1)) {
+               dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d",
+                       tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
@@ -1958,19 +1968,20 @@ static enum tcore_sat_result _sat_decode_bearer_tlv(unsigned char* tlv_str, int
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
-       if(!len_of_len){
+       if (!len_of_len) {
                err("[SAT] parser: invalid length.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       satk_bearer->count = src_data[temp_index + len_of_len - 1];
+       satk_bearer->count = src_data[temp_index  +  len_of_len - 1];
        list_len = satk_bearer->count;
        temp_index += len_of_len;
 
-       if ((temp_index + list_len) > tlv_len) {
-               dbg("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d",    (temp_index + list_len), tlv_len);
+       if ((temp_index  +  list_len) > tlv_len) {
+               dbg("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d",
+                       (temp_index  +  list_len), tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
@@ -1980,37 +1991,41 @@ static enum tcore_sat_result _sat_decode_bearer_tlv(unsigned char* tlv_str, int
 
                for (list_idx = 0; list_idx < list_len; list_idx++) {
                        switch (src_data[temp_index]) {
-                               case 0x00:
-                                       satk_bearer->bear[list_idx] = BEARER_LIST_SMS;
-                                       break;
-                               case 0x01:
-                                       satk_bearer->bear[list_idx] = BEARER_LIST_CSD;
-                                       break;
-                               case 0x02:
-                                       satk_bearer->bear[list_idx] = BEARER_LIST_USSD;
-                                       break;
-                               case 0x03:
-                                       satk_bearer->bear[list_idx] = BEARER_LIST_GPRS;
-                                       break;
-                               default:
-                                       satk_bearer->bear[list_idx] = BEARER_LIST_RESERVED;
-                                       break;
+                       case 0x00:
+                               satk_bearer->bear[list_idx] = BEARER_LIST_SMS;
+                       break;
+
+                       case 0x01:
+                               satk_bearer->bear[list_idx] = BEARER_LIST_CSD;
+                       break;
+
+                       case 0x02:
+                               satk_bearer->bear[list_idx] = BEARER_LIST_USSD;
+                       break;
+
+                       case 0x03:
+                               satk_bearer->bear[list_idx] = BEARER_LIST_GPRS;
+                       break;
+
+                       default:
+                               satk_bearer->bear[list_idx] = BEARER_LIST_RESERVED;
+                       break;
                        }
+
                        dbg("[SAT] SAT PARSER -  bearer[%d]=0x%x", list_idx, satk_bearer->bear[list_idx]);
                        temp_index++;
                }
-       } else {
+       } else
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
-       }
 
-       *consumed_data_len = 1 + len_of_len + list_len;
+       *consumed_data_len = 1  +  len_of_len  +  list_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_provisioning_file_ref_tlv(unsigned char* tlv_str,
-               int tlv_len, int curr_offset, struct tel_sat_provisioning_file_ref* prf, int* data_len_consumed)
+static enum tcore_sat_result _sat_decode_provisioning_file_ref_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_provisioning_file_ref *prf, int *data_len_consumed)
 {
-       unsigned charsrc_data;
+       unsigned char *src_data;
        int temp_index = curr_offset;
        int len_of_len = 0, prf_len = 0;
 
@@ -2020,26 +2035,26 @@ static enum tcore_sat_result _sat_decode_provisioning_file_ref_tlv(unsigned char
        }
 
        src_data = &tlv_str[0];
-       if (tlv_len <= (curr_offset + 1)) {
-               dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d",tlv_len);
+       if (tlv_len <= (curr_offset  +  1)) {
+               dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
        if ((src_data[temp_index++] & 0x7F) != SATK_PROVISIONING_REF_FILE_TAG) {
                dbg("[SAT] SAT PARSER -  PRF tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
-       if(!len_of_len){
+       if (!len_of_len) {
                err("[SAT] parser: invalid length.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       prf_len = src_data[temp_index + len_of_len - 1];
+       prf_len = src_data[temp_index  +  len_of_len - 1];
        prf->file_path_length = prf_len;
-       temp_index += len_of_len; //temp_index pointing to prf.
+       temp_index += len_of_len; /* temp_index pointing to prf. */
 
        if (prf_len > 0) {
                if (prf_len > SAT_PROVISIONING_FILE_PATH_LEN_MAX)
@@ -2051,190 +2066,191 @@ static enum tcore_sat_result _sat_decode_provisioning_file_ref_tlv(unsigned char
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       *data_len_consumed = 1 + len_of_len + prf_len;
+       *data_len_consumed = 1  +  len_of_len  +  prf_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_bearer_description_tlv(unsigned char* tlv_str,
-               int tlv_len, int curr_offset, struct tel_sat_bearer_description *bearer_desc_obj,
-               int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_bearer_description_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_bearer_description *bearer_desc_obj, int *consumed_data_len)
 {
-       int temp_index, length=0;
-       unsigned charsrc_data;
+       int temp_index, length = 0;
+       unsigned char *src_data;
 
-       if(tlv_len <= (curr_offset+1)+1) {
+       if (tlv_len <= (curr_offset + 1) + 1) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       while(1){
-               if(temp_index >= tlv_len){
+       while (1) {
+               if (temp_index >= tlv_len) {
                        dbg("bearer desc cannot find. UICC Server mode");
                        *consumed_data_len = 0;
                        return TCORE_SAT_SUCCESS;
                }
 
-               if( (src_data[temp_index]&0x7F) == SATK_BEARER_DISCRIPTION_TAG ){
+               if ((src_data[temp_index] & 0x7F) == SATK_BEARER_DISCRIPTION_TAG) {
                        dbg("find bearer description tag temp_index(%d)", temp_index);
                        temp_index++;
                        break;
                }
+
                temp_index++;
        }
 
-       //length
+       /* length */
        length = src_data[temp_index++];
        dbg("bearer description length (%d)", length);
 
-       //bearer parameter
-       switch(src_data[temp_index++]){
-               case BEARER_CSD:
-                       bearer_desc_obj->bearer_type = BEARER_CSD;
-                       bearer_desc_obj->bearer_parameter.cs_bearer_param.data_rate = src_data[temp_index++];
-                       bearer_desc_obj->bearer_parameter.cs_bearer_param.service_type = src_data[temp_index++];
-                       bearer_desc_obj->bearer_parameter.cs_bearer_param.connection_element_type = src_data[temp_index++];
-                       break;
-               case BEARER_GPRS:
-                       bearer_desc_obj->bearer_type = BEARER_GPRS;
-                       bearer_desc_obj->bearer_parameter.ps_bearer_param.precedence_class = src_data[temp_index++];
-                       bearer_desc_obj->bearer_parameter.ps_bearer_param.delay_class = src_data[temp_index++];
-                       bearer_desc_obj->bearer_parameter.ps_bearer_param.reliability_class = src_data[temp_index++];
-                       bearer_desc_obj->bearer_parameter.ps_bearer_param.peak_throughput_class = src_data[temp_index++];
-                       bearer_desc_obj->bearer_parameter.ps_bearer_param.mean_throughput_class = src_data[temp_index++];
-                       bearer_desc_obj->bearer_parameter.ps_bearer_param.pdp_type = BIP_GPRS_PDP_TYPE_RESERVED;
-                       if(src_data[temp_index] == BIP_GPRS_PDP_TYPE_IP)
-                               bearer_desc_obj->bearer_parameter.ps_bearer_param.pdp_type = BIP_GPRS_PDP_TYPE_IP;
-                       break;
-               case BEARER_DEFAULT_BEARER_FROM_TRANSPORT_LAYER:
-                       bearer_desc_obj->bearer_type = BEARER_DEFAULT_BEARER_FROM_TRANSPORT_LAYER;
-                       break;
-               case BEARER_LOCAL_LINK_TECHNOLOGY_INDEPENDENT:
-                       bearer_desc_obj->bearer_type = BEARER_DEFAULT_BEARER_FROM_TRANSPORT_LAYER;
-                       break;
-               default:
-                       bearer_desc_obj->bearer_type = BEARER_RESERVED;
-                       dbg("bearer type not supported");
-                       return TCORE_SAT_BEYOND_ME_CAPABILITY;
+       /* bearer parameter */
+       switch (src_data[temp_index++]) {
+       case BEARER_CSD:
+               bearer_desc_obj->bearer_type = BEARER_CSD;
+               bearer_desc_obj->bearer_parameter.cs_bearer_param.data_rate = src_data[temp_index++];
+               bearer_desc_obj->bearer_parameter.cs_bearer_param.service_type = src_data[temp_index++];
+               bearer_desc_obj->bearer_parameter.cs_bearer_param.connection_element_type = src_data[temp_index++];
+       break;
+
+       case BEARER_GPRS:
+               bearer_desc_obj->bearer_type = BEARER_GPRS;
+               bearer_desc_obj->bearer_parameter.ps_bearer_param.precedence_class = src_data[temp_index++];
+               bearer_desc_obj->bearer_parameter.ps_bearer_param.delay_class = src_data[temp_index++];
+               bearer_desc_obj->bearer_parameter.ps_bearer_param.reliability_class = src_data[temp_index++];
+               bearer_desc_obj->bearer_parameter.ps_bearer_param.peak_throughput_class = src_data[temp_index++];
+               bearer_desc_obj->bearer_parameter.ps_bearer_param.mean_throughput_class = src_data[temp_index++];
+               bearer_desc_obj->bearer_parameter.ps_bearer_param.pdp_type = BIP_GPRS_PDP_TYPE_RESERVED;
+               if (src_data[temp_index] == BIP_GPRS_PDP_TYPE_IP)
+                       bearer_desc_obj->bearer_parameter.ps_bearer_param.pdp_type = BIP_GPRS_PDP_TYPE_IP;
+       break;
+
+       case BEARER_DEFAULT_BEARER_FROM_TRANSPORT_LAYER:
+               bearer_desc_obj->bearer_type = BEARER_DEFAULT_BEARER_FROM_TRANSPORT_LAYER;
+       break;
+
+       case BEARER_LOCAL_LINK_TECHNOLOGY_INDEPENDENT:
+               bearer_desc_obj->bearer_type = BEARER_DEFAULT_BEARER_FROM_TRANSPORT_LAYER;
+       break;
+
+       default:
+               bearer_desc_obj->bearer_type = BEARER_RESERVED;
+               dbg("bearer type not supported");
+               return TCORE_SAT_BEYOND_ME_CAPABILITY;
        }
 
-       *consumed_data_len = 1+1+length;
+       *consumed_data_len = 1 + 1 + length;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_channel_data_tlv(unsigned char* tlv_str,
-               int tlv_len, int curr_offset, struct tel_sat_channel_data *channel_data_obj,
-               int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_channel_data_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_channel_data *channel_data_obj, int *consumed_data_len)
 {
        int temp_index = 0;
        int len_of_len = 0, channel_data_len = 0;
-       unsigned charsrc_data;
+       unsigned char *src_data;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || channel_data_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || channel_data_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || channel_data_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)) {
+       if (tlv_len <= (curr_offset + 1)) {
                dbg("[SAT] SAT PARSER - incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index++]&0x7F) != SATK_CHANNEL_DATA_TAG){
-               dbg("[SAT] SAT PARSER - tag not found.=%d",src_data[temp_index]);
+       if ((src_data[temp_index++] & 0x7F) != SATK_CHANNEL_DATA_TAG) {
+               dbg("[SAT] SAT PARSER - tag not found.=%d", src_data[temp_index]);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
-       if(!len_of_len){
+       if (!len_of_len) {
                err("[SAT] parser: invalid length.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       channel_data_len = src_data[temp_index+len_of_len-1];
-       dbg("[SAT] parser: channel_data_len=%d",channel_data_len);
+       channel_data_len = src_data[temp_index + len_of_len-1];
+       dbg("[SAT] parser: channel_data_len=%d", channel_data_len);
        temp_index += len_of_len;
 
-       if((temp_index+channel_data_len) > tlv_len) {
-               dbg("[SAT] SAT PARSER - incorrect cmd len, expected len = %d, orig_len=%d", (temp_index+channel_data_len),tlv_len);
+       if ((temp_index + channel_data_len) > tlv_len) {
+               dbg("[SAT] SAT PARSER - incorrect cmd len, expected len = %d, orig_len=%d", (temp_index + channel_data_len), tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //data
+       /* data */
        channel_data_obj->data_string_len = channel_data_len;
        memcpy(channel_data_obj->data_string, &src_data[temp_index], channel_data_len);
 
-       *consumed_data_len = 1+len_of_len+channel_data_len;
+       *consumed_data_len = 1 + len_of_len + channel_data_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_channel_data_length_tlv(unsigned char* tlv_str,
-               int tlv_len, int curr_offset, struct tel_sat_channel_data_len *data_len_obj,
-               int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_channel_data_length_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_channel_data_len *data_len_obj, int *consumed_data_len)
 {
        int temp_index;
-       unsigned charsrc_data;
+       unsigned char *src_data;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || data_len_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || data_len_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || data_len_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index++]&0x7F) != SATK_CHANNEL_DATA_LEN_TAG) {
+       if ((src_data[temp_index++] & 0x7F) != SATK_CHANNEL_DATA_LEN_TAG) {
                dbg("[SAT] SAT PARSER -  channel data tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       //length
-       if(src_data[temp_index++] != SATK_CHANNEL_DATA_LENGTH_VALUE_LENGTH) {
+       /* length */
+       if (src_data[temp_index++] != SATK_CHANNEL_DATA_LENGTH_VALUE_LENGTH) {
                dbg("[SAT] SAT PARSER -  incorrect length");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       //data
+       /* data */
        data_len_obj->data_len = src_data[temp_index];
 
        *consumed_data_len = 3;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_buffer_size_tlv(unsigned char* tlv_str,
-               int tlv_len, int curr_offset, struct tel_sat_buffer_size *buffer_size_obj,
-               int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_buffer_size_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_buffer_size *buffer_size_obj, int *consumed_data_len)
 {
        int temp_index;
-       unsigned charsrc_data;
+       unsigned char *src_data;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || buffer_size_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || buffer_size_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || buffer_size_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)+SATK_BUFFER_SIZE_LENGTH) {
+       if (tlv_len <= (curr_offset + 1) + SATK_BUFFER_SIZE_LENGTH) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index++]&0x7F) != SATK_BUFFER_SIZE_TAG) {
+       if ((src_data[temp_index++] & 0x7F) != SATK_BUFFER_SIZE_TAG) {
                dbg("[SAT] SAT PARSER -  buffer size tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       //length
-       if(src_data[temp_index++] != SATK_BUFFER_SIZE_LENGTH) {
+       /* length */
+       if (src_data[temp_index++] != SATK_BUFFER_SIZE_LENGTH) {
                dbg("[SAT] SAT PARSER -  incorrect length");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
        buffer_size_obj->size[0] = src_data[temp_index++];
@@ -2245,65 +2261,69 @@ static enum tcore_sat_result _sat_decode_buffer_size_tlv(unsigned char* tlv_str,
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_other_address_tlv(unsigned char* tlv_str,
-               int tlv_len, int curr_offset, struct tel_sat_other_address *other_address_obj,
-               int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_other_address_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_other_address *other_address_obj, int *consumed_data_len)
 {
-       gcharaddress = NULL;
+       gchar *address = NULL;
        int temp_index, address_len;
-       unsigned charsrc_data;
+       unsigned char *src_data;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || other_address_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || other_address_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || other_address_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)) {
+       if (tlv_len <= (curr_offset + 1)) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index++]&0x7F) != SATK_OTHER_ADDRESS_TAG) {
+       if ((src_data[temp_index++] & 0x7F) != SATK_OTHER_ADDRESS_TAG) {
                dbg("[SAT] SAT PARSER -  other address tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       //length
+       /* length */
        address_len = src_data[temp_index++];
-       if((temp_index+address_len) > tlv_len) {
-               dbg("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d", (temp_index+address_len),tlv_len);
+       if ((temp_index + address_len) > tlv_len) {
+               dbg("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d", (temp_index + address_len), tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if(address_len-1 > SAT_OTHER_ADDR_LEN_MAX){
+       if (address_len-1 > SAT_OTHER_ADDR_LEN_MAX) {
                dbg("[SAT] SAT PARSER - address is longer than capability");
                return TCORE_SAT_BEYOND_ME_CAPABILITY;
        }
 
-       //other address type
-       switch(src_data[temp_index++]){
-               case ADDR_TYPE_IPv4:{
+       /* other address type */
+       switch (src_data[temp_index++]) {
+               case ADDR_TYPE_IPv4: {
                        other_address_obj->address_type = ADDR_TYPE_IPv4;
-                       address = g_strdup_printf("%d.%d.%d.%d", src_data[temp_index], src_data[temp_index+1], src_data[temp_index+2], src_data[temp_index+3]);
-               }break;
-               case ADDR_TYPE_IPv6:{
+                       address = g_strdup_printf("%d.%d.%d.%d", src_data[temp_index], src_data[temp_index + 1], src_data[temp_index + 2], src_data[temp_index + 3]);
+               }
+               break;
+
+               case ADDR_TYPE_IPv6: {
                        other_address_obj->address_type = ADDR_TYPE_IPv6;
                        address = g_strdup_printf("%x%x:%x%x:%x%x:%x%x:%x%x:%x%x:%x%x:%x%x:",
-                                       src_data[temp_index], src_data[temp_index+1], src_data[temp_index+2], src_data[temp_index+3],
-                                       src_data[temp_index+4], src_data[temp_index+5], src_data[temp_index+6], src_data[temp_index+7],
-                                       src_data[temp_index+8], src_data[temp_index+9], src_data[temp_index+10], src_data[temp_index+11],
-                                       src_data[temp_index+12], src_data[temp_index+13], src_data[temp_index+14], src_data[temp_index+15]);
-               }break;
-               default:{
+                                       src_data[temp_index], src_data[temp_index + 1], src_data[temp_index + 2], src_data[temp_index + 3],
+                                       src_data[temp_index + 4], src_data[temp_index + 5], src_data[temp_index + 6], src_data[temp_index + 7],
+                                       src_data[temp_index + 8], src_data[temp_index + 9], src_data[temp_index + 10], src_data[temp_index + 11],
+                                       src_data[temp_index + 12], src_data[temp_index + 13], src_data[temp_index + 14], src_data[temp_index + 15]);
+               }
+               break;
+
+               default: {
                        other_address_obj->address_type = ADDR_RESERVED;
                        address = g_strdup("");
-               }break;
-       }//end of switch
+               }
+               break;
+       } /* end of switch */
 
-       //address
+       /* address */
        if (address) {
                memcpy(other_address_obj->address, address, strlen(address));
                other_address_obj->address_len = strlen(address);
@@ -2312,240 +2332,243 @@ static enum tcore_sat_result _sat_decode_other_address_tlv(unsigned char* tlv_st
                dbg("destination address(%s)", other_address_obj->address);
        }
 
-       *consumed_data_len = 2+address_len;
+       *consumed_data_len = 2 + address_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_uicc_terminal_interface_tlv(unsigned chartlv_str,
+static enum tcore_sat_result _sat_decode_uicc_terminal_interface_tlv(unsigned char *tlv_str,
                int tlv_len, int curr_offset, struct tel_sat_uicc_terminal_interface_transport_level *level_obj,
-               intconsumed_data_len)
+               int *consumed_data_len)
 {
        int temp_index;
-       unsigned charsrc_data;
+       unsigned char *src_data;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || level_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || level_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || level_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)+SATK_UICC_ME_TRANS_INTERFACE_LEVEL_LENGTH) {
+       if (tlv_len <= (curr_offset + 1) + SATK_UICC_ME_TRANS_INTERFACE_LEVEL_LENGTH) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index++]&0x7F) != SATK_USIM_ME_INTERFACE_TRANSPORT_LEVEL_TAG) {
+       if ((src_data[temp_index++] & 0x7F) != SATK_USIM_ME_INTERFACE_TRANSPORT_LEVEL_TAG) {
                dbg("[SAT] SAT PARSER - UICC/TERMINAL Interface transport level tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       //length
-       if(src_data[temp_index++] != SATK_UICC_ME_TRANS_INTERFACE_LEVEL_LENGTH) {
+       /* length */
+       if (src_data[temp_index++] != SATK_UICC_ME_TRANS_INTERFACE_LEVEL_LENGTH) {
                dbg("[SAT] SAT PARSER -  incorrect length");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
        level_obj->protocol_type = src_data[temp_index++];
        level_obj->port_number = src_data[temp_index++] << 8;
        level_obj->port_number |= src_data[temp_index];
 
-       *consumed_data_len = 2+SATK_UICC_ME_TRANS_INTERFACE_LEVEL_LENGTH;
+       *consumed_data_len = 2 + SATK_UICC_ME_TRANS_INTERFACE_LEVEL_LENGTH;
        dbg("[SAT] SAT PARSER -  protocol type(%d) , port number(%d)", level_obj->protocol_type, level_obj->port_number);
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_remote_entity_address_tlv(unsigned chartlv_str,
+static enum tcore_sat_result _sat_decode_remote_entity_address_tlv(unsigned char *tlv_str,
                int tlv_len, int curr_offset, struct tel_sat_remote_entity_address *remote_address_obj,
-               intconsumed_data_len)
+               int *consumed_data_len)
 {
        int temp_index = 0;
        int len_of_len = 0, remote_data_len = 0;
-       unsigned charsrc_data;
+       unsigned char *src_data;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || remote_address_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || remote_address_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || remote_address_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)) {
+       if (tlv_len <= (curr_offset + 1)) {
                dbg("[SAT] SAT PARSER - incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index]&0x7F) != SATK_REMOTE_ENTITY_ADDRESS_TAG){
-               dbg("[SAT] SAT PARSER - tag not found.=%d",src_data[temp_index]);
+       if ((src_data[temp_index] & 0x7F) != SATK_REMOTE_ENTITY_ADDRESS_TAG) {
+               dbg("[SAT] SAT PARSER - tag not found.=%d", src_data[temp_index]);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //length
+       /* length */
        len_of_len = _get_length_filed_size(src_data[temp_index]);
-       if(!len_of_len){
+       if (!len_of_len) {
                err("[SAT] parser: invalid length.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       remote_data_len = src_data[temp_index+len_of_len-1];
-       dbg("[SAT] parser: remote_data_len=%d",remote_data_len);
+       remote_data_len = src_data[temp_index + len_of_len-1];
+       dbg("[SAT] parser: remote_data_len=%d", remote_data_len);
        temp_index += len_of_len;
 
-       //data
-       switch(src_data[temp_index++]){
-               case REMOTE_ENTITY_ADDR_CODING_TYPE_IEEE802_48BIT:
-                       remote_address_obj->coding_type = REMOTE_ENTITY_ADDR_CODING_TYPE_IEEE802_48BIT;
-                       break;
-               case REMOTE_ENTITY_ADDR_CODING_TYPE_IRDA_32BIT:
-                       remote_address_obj->coding_type = REMOTE_ENTITY_ADDR_CODING_TYPE_IRDA_32BIT;
-                       break;
-               default:
-                       remote_address_obj->coding_type =REMOTE_ENTITY_ADDR_CODING_TYPE_RESERVED;
-                       break;
+       /* data */
+       switch (src_data[temp_index++]) {
+       case REMOTE_ENTITY_ADDR_CODING_TYPE_IEEE802_48BIT:
+               remote_address_obj->coding_type = REMOTE_ENTITY_ADDR_CODING_TYPE_IEEE802_48BIT;
+       break;
+
+       case REMOTE_ENTITY_ADDR_CODING_TYPE_IRDA_32BIT:
+               remote_address_obj->coding_type = REMOTE_ENTITY_ADDR_CODING_TYPE_IRDA_32BIT;
+       break;
+
+       default:
+               remote_address_obj->coding_type = REMOTE_ENTITY_ADDR_CODING_TYPE_RESERVED;
+       break;
        }
 
        remote_address_obj->length = remote_data_len - 1;
        memcpy(remote_address_obj->remote_entity_address, &src_data[temp_index], remote_address_obj->length);
 
-       *consumed_data_len = 1+len_of_len+remote_data_len;
+       *consumed_data_len = 1 + len_of_len + remote_data_len;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_network_access_name_tlv(unsigned char* tlv_str,
-               int tlv_len, int curr_offset, struct tel_sat_network_access_name *access_name_obj,
-               int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_network_access_name_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_network_access_name *access_name_obj, int *consumed_data_len)
 {
        int temp_index, idx, name_idx, name_length;
-       unsigned charsrc_data;
+       unsigned char *src_data;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || access_name_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || access_name_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || access_name_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)) {
+       if (tlv_len <= (curr_offset + 1)) {
                dbg("[SAT] SAT PARSER -  incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index++]&0x7F) != SATK_NETWORK_ACCESS_TAG) {
+       if ((src_data[temp_index++] & 0x7F) != SATK_NETWORK_ACCESS_TAG) {
                dbg("[SAT] SAT PARSER -  network access name tag missing.");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       //length
+       /* length */
        name_length = src_data[temp_index++];
-       if((temp_index+name_length) > tlv_len) {
-               dbg("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d", (temp_index+name_length),tlv_len);
+       if ((temp_index + name_length) > tlv_len) {
+               dbg("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d",
+                       (temp_index + name_length), tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
        access_name_obj->length = name_length;
-       if(access_name_obj->length > SAT_NET_ACC_NAM_LEN_MAX){
+       if (access_name_obj->length > SAT_NET_ACC_NAM_LEN_MAX) {
                dbg("[SAT] SAT PARSER - network access name is longer than capability");
                return TCORE_SAT_BEYOND_ME_CAPABILITY;
        }
 
        name_idx = 0;
-       for(idx = 0; idx < access_name_obj->length; idx++){
-               dbg("data (%c) Bool(%d)",src_data[temp_index], g_ascii_isalpha(src_data[temp_index]) );
+       for (idx = 0; idx < access_name_obj->length; idx++) {
+               dbg("data (%c) Bool(%d)", src_data[temp_index], g_ascii_isalpha(src_data[temp_index]));
 
-               if( g_ascii_isalpha(src_data[temp_index]) ){
+               if (g_ascii_isalpha(src_data[temp_index])) {
                        access_name_obj->network_access_name[name_idx] = src_data[temp_index];
                        name_idx++;
-               }
-               else{
-
-                       if(src_data[temp_index] == 0x02){//02 convert to "."
+               } else {
+                       if (src_data[temp_index] == 0x02) {/* 02 convert to "." */
                                access_name_obj->network_access_name[name_idx] = '.';
                                name_idx++;
                        }
                }
+
                temp_index++;
        }
 
-       //network access name
+       /* network access name */
        dbg("network access name(%s)", access_name_obj->network_access_name);
 
-       *consumed_data_len = 2+name_length;
+       *consumed_data_len = 2 + name_length;
        return TCORE_SAT_SUCCESS;
 }
 
-static enum tcore_sat_result _sat_decode_text_attribute_tlv(unsigned char* tlv_str,
-               int tlv_len, int curr_offset, struct tel_sat_text_attribute *text_attribute_obj,
-               int* consumed_data_len)
+static enum tcore_sat_result _sat_decode_text_attribute_tlv(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tel_sat_text_attribute *text_attribute_obj, int *consumed_data_len)
 {
        int temp_index, length;
-       unsigned charsrc_data;
+       unsigned char *src_data;
 
-       if(tlv_str == NULL || consumed_data_len == NULL || text_attribute_obj == NULL) {
+       if (tlv_str == NULL || consumed_data_len == NULL || text_attribute_obj == NULL) {
                dbg("[SAT] SAT PARSER -  tlv_str == NULL || consumed_data_len == NULL || text_attribute_obj == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if(tlv_len <= (curr_offset+1)) {
+       if (tlv_len <= (curr_offset + 1)) {
                dbg("[SAT] SAT PARSER - incorrect length original_command_len=%d", tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //tag
+       /* tag */
        temp_index = curr_offset;
        src_data = &tlv_str[0];
-       if((src_data[temp_index++]&0x7F) != SATK_TEXT_ATTRIBUTE_TAG) {
+       if ((src_data[temp_index++] & 0x7F) != SATK_TEXT_ATTRIBUTE_TAG) {
                dbg("[SAT] SAT PARSER - text attribute tag is missing");
-               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //send TR
+               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
-       //length
+       /* length */
        length = src_data[temp_index++];
-       if((temp_index+length) > tlv_len) {
-               dbg("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d", (temp_index+length),tlv_len);
+       if ((temp_index + length) > tlv_len) {
+               dbg("[SAT] SAT PARSER -  incorrect cmd len, expected len = %d, orig_len=%d", (temp_index + length), tlv_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       //attribute data
+       /* attribute data */
        text_attribute_obj->b_txt_attr = TRUE;
        memcpy(text_attribute_obj->text_formatting, &src_data[temp_index], length);
 
-       *consumed_data_len = 2+length;
+       *consumed_data_len = 2 + length;
        return TCORE_SAT_SUCCESS;
 }
 
-//decode proactive cmd
-//6.4.1 DISPLAY TEXT
-static enum tcore_sat_result _sat_decode_display_text(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * decode proactive cmd
+ */
+/*
+ * 6.4.1 DISPLAY TEXT
+ */
+static enum tcore_sat_result _sat_decode_display_text(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
        int tlv_length = 0, remain_len = 0, expected_len = 0;
-       int data_len_consumed=0;
+       int data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        cmd_data = &o_cmd_data[0];
        tlv_length = cmd_data[curr_offset-1];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.display_text.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.display_text.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /* ******decode command qualifier****** */
+       /* decode command qualifier */
        if (cmd_data[temp_index] & 0x01) {
                sat_cmd_ind_data->data.display_text.command_detail.cmd_qualifier.display_text.text_priority =
                                TEXT_PRIORITY_HIGH;
                dbg("[SAT] SAT PARSER -  msg_prio=TAPI_SAT_MSG_PRIORITY_HIGH.");
-       }
-       else {
+       } else {
                sat_cmd_ind_data->data.display_text.command_detail.cmd_qualifier.display_text.text_priority =
                                TEXT_PRIORITY_NORMAL;
                dbg("[SAT] SAT PARSER - : msg_prio=TAPI_SAT_MSG_PRIORITY_NORMAL.");
@@ -2555,108 +2578,117 @@ static enum tcore_sat_result _sat_decode_display_text(unsigned char* o_cmd_data,
                sat_cmd_ind_data->data.display_text.command_detail.cmd_qualifier.display_text.text_clear_type =
                                TEXT_WAIT_FOR_USER_TO_CLEAR_MSG;
                dbg("[SAT] SAT PARSER - : msgClear=TAPI_SAT_WAIT_FOR_USER_TO_CLEAR_MSG.");
-       }
-       else {
+       } else {
                sat_cmd_ind_data->data.display_text.command_detail.cmd_qualifier.display_text.text_clear_type =
                                TEXT_AUTO_CLEAR_MSG_AFTER_A_DELAY;
                dbg("[SAT] SAT PARSER -  msgClear=TAPI_SAT_AUTO_CLEAR_MSG_AFTER_A_DELAY.");
        }
 
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.display_text.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       temp_index+=4; // device identities consumes 4 bytes.
+       temp_index += 4; /* device identities consumes 4 bytes. */
 
        remain_len = o_length-temp_index;
        expected_len = tlv_length-5-4;
-       if(remain_len!=expected_len){
+       if (remain_len != expected_len) {
                dbg("[SAT] SAT PARSER - : mismatch!! remain_len=%d, expected_len=%d", remain_len, expected_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.display_text.text, &data_len_consumed);
-       if(rv != TCORE_SAT_SUCCESS)
+       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index,
+               &sat_cmd_ind_data->data.display_text.text,
+               &data_len_consumed);
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       if(sat_cmd_ind_data->data.display_text.text.string_length <= 0){
+       if (sat_cmd_ind_data->data.display_text.text.string_length <= 0) {
                err("[SAT] SAT PARSER - :string length is 0");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       dbg("[SAT] SAT PARSER  text(%s)",sat_cmd_ind_data->data.display_text.text.string);
-       dbg("[SAT] SAT PARSER o_len(%d) temp_index(%d) data_len_consumed(%d)",o_length , temp_index, data_len_consumed);
+       dbg("[SAT] SAT PARSER  text(%s)", sat_cmd_ind_data->data.display_text.text.string);
+       dbg("[SAT] SAT PARSER o_len(%d) temp_index(%d) data_len_consumed(%d)",
+               o_length , temp_index, data_len_consumed);
 
-       if(o_length-temp_index < data_len_consumed){
+       if (o_length-temp_index < data_len_consumed) {
                dbg("[SAT] SAT PARSER - :wrong text TLV.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if(o_length-temp_index == data_len_consumed){
+       if (o_length-temp_index == data_len_consumed) {
                dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                return TCORE_SAT_SUCCESS;
        }
-       temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
 
-       //icon identifier
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
-               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.display_text.icon_id, &data_len_consumed);
+       temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
 
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* icon identifier */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
+               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.display_text.icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(o_length-temp_index == data_len_consumed){
+               if (o_length-temp_index == data_len_consumed) {
                        dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //immediate response
+       /* immediate response */
        sat_cmd_ind_data->data.display_text.immediate_response_requested = FALSE;
-       if((cmd_data[temp_index]&0x7F) == SATK_IMMEDIATE_RESPONSE_TAG){
+       if ((cmd_data[temp_index] & 0x7F) == SATK_IMMEDIATE_RESPONSE_TAG) {
                data_len_consumed = 2;
                dbg("[SAT] SAT PARSER - :immediate response required.");
                sat_cmd_ind_data->data.display_text.immediate_response_requested = TRUE;
-               if(o_length-temp_index == data_len_consumed){
+               if (o_length-temp_index == data_len_consumed) {
                        dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //time duration - optional
-       if((cmd_data[temp_index]&0x7F)==SATK_DURATION_TAG){
-               rv =_sat_decode_duration_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.display_text.duration, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* time duration - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_DURATION_TAG) {
+               rv = _sat_decode_duration_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.display_text.duration,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(o_length-temp_index == data_len_consumed){
+               if (o_length-temp_index == data_len_consumed) {
                        dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //text attribute - optional
-       if((cmd_data[temp_index]&0x7F)==SATK_TEXT_ATTRIBUTE_TAG){
-               rv =_sat_decode_text_attribute_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.display_text.text_attribute, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* text attribute - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_ATTRIBUTE_TAG) {
+               rv = _sat_decode_text_attribute_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.display_text.text_attribute,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(o_length-temp_index == data_len_consumed){
+               if (o_length-temp_index == data_len_consumed) {
                        dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       if(o_length > temp_index){
+       if (o_length > temp_index) {
                dbg("[SAT] SAT PARSER - : wrong text TLV, remaining data is found!!");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
@@ -2665,53 +2697,53 @@ static enum tcore_sat_result _sat_decode_display_text(unsigned char* o_cmd_data,
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.2 GET INKEY
-static enum tcore_sat_result _sat_decode_get_inkey(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.2 GET INKEY
+ */
+static enum tcore_sat_result _sat_decode_get_inkey(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
        int tlv_length = 0, remain_len = 0, expected_len = 0;
-       int data_len_consumed=0;
+       int data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        cmd_data = &o_cmd_data[0];
        tlv_length = cmd_data[curr_offset-1];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.get_inkey.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.get_inkey.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /* ******decode command qualifier****** */
+       /* decode command qualifier */
        if (cmd_data[temp_index] & 0x01) {
                sat_cmd_ind_data->data.get_inkey.command_detail.cmd_qualifier.get_inkey.alphabet_set = TRUE;
                dbg("[SAT] SAT PARSER - Alphabet set");
        }
 
-       if(cmd_data[temp_index]&0x02){
+       if (cmd_data[temp_index] & 0x02) {
                sat_cmd_ind_data->data.get_inkey.command_detail.cmd_qualifier.get_inkey.alphabet_type = INPUT_ALPHABET_TYPE_UCS2;
                dbg("[SAT] SAT PARSER -  INPUT_ALPHABET_TYPE_UCS2");
-       }
-       else{
+       } else {
                sat_cmd_ind_data->data.get_inkey.command_detail.cmd_qualifier.get_inkey.alphabet_type = INPUT_ALPHABET_TYPE_SMS_DEFAULT;
                dbg("[SAT] SAT PARSER -  INPUT_ALPHABET_TYPE_SMS_DEFAULT");
        }
 
-       if(cmd_data[temp_index]&0x04){
+       if (cmd_data[temp_index] & 0x04) {
                sat_cmd_ind_data->data.get_inkey.command_detail.cmd_qualifier.get_inkey.inkey_type = INKEY_TYPE_YES_NO_REQUESTED;
                dbg("[SAT] SAT PARSER -  INKEY_TYPE_YES_NO_REQUESTED");
-       }
-       else{
+       } else {
                sat_cmd_ind_data->data.get_inkey.command_detail.cmd_qualifier.get_inkey.inkey_type = INKEY_TYPE_CHARACTER_SET_ENABLED;
                dbg("[SAT] SAT PARSER -  INKEY_TYPE_YES_NO_REQUESTED");
        }
 
-       if(cmd_data[temp_index]&0x08){
+       if (cmd_data[temp_index] & 0x08) {
                sat_cmd_ind_data->data.get_inkey.command_detail.cmd_qualifier.get_inkey.immediate_rsp_required = TRUE;
                dbg("[SAT] SAT PARSER -  immediate response requested");
        }
@@ -2721,90 +2753,99 @@ static enum tcore_sat_result _sat_decode_get_inkey(unsigned char* o_cmd_data, in
                dbg("[SAT] SAT PARSER - Help info");
        }
 
-       //device identities
+       /* device identities */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.get_inkey.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //text
-       temp_index+=4;
+       /* text */
+       temp_index += 4;
 
        remain_len = o_length-temp_index;
        expected_len = tlv_length-5-4;
-       if(remain_len!=expected_len){
+       if (remain_len != expected_len) {
                dbg("[SAT] SAT PARSER - : mismatch!! remain_len=%d, expected_len=%d", remain_len, expected_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.get_inkey.text, &data_len_consumed);
-       if(rv != TCORE_SAT_SUCCESS)
+       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index,
+               &sat_cmd_ind_data->data.get_inkey.text,
+               &data_len_consumed);
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       if(sat_cmd_ind_data->data.get_inkey.text.string_length <= 0){
+       if (sat_cmd_ind_data->data.get_inkey.text.string_length <= 0) {
                err("[SAT] SAT PARSER - :string length is 0");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       dbg("[SAT] SAT PARSER  text(%s)",sat_cmd_ind_data->data.get_inkey.text.string);
-       dbg("[SAT] SAT PARSER o_len(%d) temp_index(%d) data_len_consumed(%d)",o_length , temp_index, data_len_consumed);
+       dbg("[SAT] SAT PARSER  text(%s)", sat_cmd_ind_data->data.get_inkey.text.string);
+       dbg("[SAT] SAT PARSER o_len(%d) temp_index(%d) data_len_consumed(%d)",
+               o_length , temp_index, data_len_consumed);
 
-       if(o_length-temp_index < data_len_consumed){
+       if (o_length-temp_index < data_len_consumed) {
                dbg("[SAT] SAT PARSER - :wrong text TLV.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if(o_length-temp_index == data_len_consumed){
+       if (o_length-temp_index == data_len_consumed) {
                dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                return TCORE_SAT_SUCCESS;
        }
-       temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
 
-       //icon identifier - optional
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
-               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.get_inkey.icon_id, &data_len_consumed);
+       temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
 
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* icon identifier - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
+               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.get_inkey.icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(o_length-temp_index == data_len_consumed){
+               if (o_length-temp_index == data_len_consumed) {
                        dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //time duration - optional
-       if((cmd_data[temp_index]&0x7F)==SATK_DURATION_TAG){
-               rv =_sat_decode_duration_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.get_inkey.duration, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* time duration - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_DURATION_TAG) {
+               rv = _sat_decode_duration_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.get_inkey.duration,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(o_length-temp_index == data_len_consumed){
+               if (o_length-temp_index == data_len_consumed) {
                        dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //text attribute - optional
-       if((cmd_data[temp_index]&0x7F)==SATK_TEXT_ATTRIBUTE_TAG){
-               rv =_sat_decode_text_attribute_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.get_inkey.text_attribute, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* text attribute - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_ATTRIBUTE_TAG) {
+               rv = _sat_decode_text_attribute_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.get_inkey.text_attribute,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(o_length-temp_index == data_len_consumed){
+               if (o_length-temp_index == data_len_consumed) {
                        dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       if(o_length > temp_index){
+       if (o_length > temp_index) {
                dbg("[SAT] SAT PARSER - : wrong text TLV, remaining data is found!!");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
@@ -2813,61 +2854,59 @@ static enum tcore_sat_result _sat_decode_get_inkey(unsigned char* o_cmd_data, in
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.3 GET INPUT
-static enum tcore_sat_result _sat_decode_get_input(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.3 GET INPUT
+ */
+static enum tcore_sat_result _sat_decode_get_input(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
        int tlv_length = 0, remain_len = 0, expected_len = 0;
-       int data_len_consumed=0;
+       int data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        cmd_data = &o_cmd_data[0];
        tlv_length = cmd_data[curr_offset-1];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.get_input.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.get_input.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /* ******decode command qualifier****** */
+       /* decode command qualifier */
        if (cmd_data[temp_index] & 0x01) {
                sat_cmd_ind_data->data.get_input.command_detail.cmd_qualifier.get_input.alphabet_set = TRUE;
                dbg("[SAT] SAT PARSER - Alphabet set");
-       }
-       else{
+       } else {
                sat_cmd_ind_data->data.get_input.command_detail.cmd_qualifier.get_input.alphabet_set = FALSE;
                dbg("[SAT] SAT PARSER - Numeric info");
        }
 
-       if(cmd_data[temp_index]&0x02){
+       if (cmd_data[temp_index] & 0x02) {
                sat_cmd_ind_data->data.get_input.command_detail.cmd_qualifier.get_input.alphabet_type = INPUT_ALPHABET_TYPE_UCS2;
                dbg("[SAT] SAT PARSER -  INPUT_ALPHABET_TYPE_UCS2");
-       }
-       else{
+       } else {
                sat_cmd_ind_data->data.get_input.command_detail.cmd_qualifier.get_input.alphabet_type = INPUT_ALPHABET_TYPE_SMS_DEFAULT;
                dbg("[SAT] SAT PARSER -  INPUT_ALPHABET_TYPE_SMS_DEFAULT");
        }
 
-       if(cmd_data[temp_index]&0x04){
+       if (cmd_data[temp_index] & 0x04) {
                sat_cmd_ind_data->data.get_input.command_detail.cmd_qualifier.get_input.me_echo_user_input = FALSE;
                dbg("[SAT] SAT PARSER -  user input not be revealed");
-       }
-       else{
+       } else {
                sat_cmd_ind_data->data.get_input.command_detail.cmd_qualifier.get_input.me_echo_user_input = TRUE;
                dbg("[SAT] SAT PARSER -  Me echo user input");
        }
 
-       if(cmd_data[temp_index]&0x08){
+       if (cmd_data[temp_index] & 0x08) {
                sat_cmd_ind_data->data.get_input.command_detail.cmd_qualifier.get_input.user_input_unpacked_format = FALSE;
                dbg("[SAT] SAT PARSER - packing required");
-       }
-       else{
+       } else {
                sat_cmd_ind_data->data.get_input.command_detail.cmd_qualifier.get_input.user_input_unpacked_format = TRUE;
                dbg("[SAT] SAT PARSER - unpacked format");
        }
@@ -2877,102 +2916,114 @@ static enum tcore_sat_result _sat_decode_get_input(unsigned char* o_cmd_data, in
                dbg("[SAT] SAT PARSER - Help info");
        }
 
-       //device identities
+       /* device identities */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.get_input.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //text - mandatory
-       temp_index+=4;
+       /* text - mandatory */
+       temp_index += 4;
 
        remain_len = o_length-temp_index;
-       expected_len = tlv_length-5-4;
-       if(remain_len!=expected_len){
+       expected_len = tlv_length - 5 - 4;
+       if (remain_len != expected_len) {
                dbg("[SAT] SAT PARSER - : mismatch!! remain_len=%d, expected_len=%d", remain_len, expected_len);
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.get_input.text, &data_len_consumed);
-       if(rv != TCORE_SAT_SUCCESS)
+       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index,
+               &sat_cmd_ind_data->data.get_input.text,
+               &data_len_consumed);
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       if(sat_cmd_ind_data->data.get_input.text.string_length <= 0){
+       if (sat_cmd_ind_data->data.get_input.text.string_length <= 0)
                err("[SAT] SAT PARSER - :string length is 0");
-       }
-       dbg("[SAT] SAT PARSER  text(%s)",sat_cmd_ind_data->data.get_input.text.string);
-       dbg("[SAT] SAT PARSER o_len(%d) temp_index(%d) data_len_consumed(%d)",o_length , temp_index, data_len_consumed);
 
-       if(o_length-temp_index < data_len_consumed){
+       dbg("[SAT] SAT PARSER  text(%s)", sat_cmd_ind_data->data.get_input.text.string);
+       dbg("[SAT] SAT PARSER o_len(%d) temp_index(%d) data_len_consumed(%d)",
+               o_length , temp_index, data_len_consumed);
+
+       if (o_length-temp_index < data_len_consumed) {
                dbg("[SAT] SAT PARSER - :wrong text TLV.");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       if(o_length-temp_index == data_len_consumed){
+       if (o_length-temp_index == data_len_consumed) {
                dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                return TCORE_SAT_SUCCESS;
        }
-       temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
 
-       //response length - mandatory
-       rv = _sat_decode_response_length_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.get_input.rsp_len, &data_len_consumed);
-       if(rv != TCORE_SAT_SUCCESS)
+       temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
+
+       /* response length - mandatory */
+       rv = _sat_decode_response_length_tlv(o_cmd_data, o_length, temp_index,
+               &sat_cmd_ind_data->data.get_input.rsp_len,
+               &data_len_consumed);
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       if(o_length-temp_index == data_len_consumed){
+       if (o_length-temp_index == data_len_consumed) {
                dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                return TCORE_SAT_SUCCESS;
        }
-       temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
 
-       //default text - optional
-       if((o_cmd_data[temp_index]&0x7F) == SATK_DEFAULT_TEXT_TAG){
-               rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.get_input.default_text, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS)
+       temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
+
+       /* default text - optional */
+       if ((o_cmd_data[temp_index] & 0x7F) == SATK_DEFAULT_TEXT_TAG) {
+               rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.get_input.default_text,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
 
-               if(sat_cmd_ind_data->data.get_input.default_text.string_length <= 0){
+               if (sat_cmd_ind_data->data.get_input.default_text.string_length <= 0)
                        err("[SAT] SAT PARSER - :string length is 0");
-               }
-               dbg("[SAT] SAT PARSER default text(%s)",sat_cmd_ind_data->data.get_input.default_text.string);
-               if(o_length-temp_index == data_len_consumed){
+
+               dbg("[SAT] SAT PARSER default text(%s)", sat_cmd_ind_data->data.get_input.default_text.string);
+               if (o_length-temp_index == data_len_consumed) {
                        dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
-       }
 
-       //icon identifier
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
-               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.get_input.icon_id, &data_len_consumed);
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
+       }
 
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* icon identifier */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
+               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.get_input.icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(o_length-temp_index == data_len_consumed){
+               if (o_length-temp_index == data_len_consumed) {
                        dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //text attribute - optional
-       if((cmd_data[temp_index]&0x7F)==SATK_TEXT_ATTRIBUTE_TAG){
-               rv =_sat_decode_text_attribute_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.get_input.text_attribute, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* text attribute - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_ATTRIBUTE_TAG) {
+               rv = _sat_decode_text_attribute_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.get_input.text_attribute,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(o_length-temp_index == data_len_consumed){
+               if (o_length-temp_index == data_len_consumed) {
                        dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       if(o_length > temp_index){
+       if (o_length > temp_index) {
                dbg("[SAT] SAT PARSER - : wrong text TLV, remaining data is found!!");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
@@ -2981,408 +3032,422 @@ static enum tcore_sat_result _sat_decode_get_input(unsigned char* o_cmd_data, in
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.4 MORE TIME
-static enum tcore_sat_result _sat_decode_more_time(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.4 MORE TIME
+ */
+static enum tcore_sat_result _sat_decode_more_time(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //command detail
+       /* command detail */
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.setup_event_list.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.setup_event_list.command_detail.cmd_type = cmd_data[temp_index++];
 
-       //device identifier
+       /* device identifier */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.setup_event_list.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       temp_index+=4;
+       temp_index += 4;
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.5 PLAY TONE
-static enum tcore_sat_result _sat_decode_play_tone(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.5 PLAY TONE
+ */
+static enum tcore_sat_result _sat_decode_play_tone(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0, data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //command detail
+       /* command detail */
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.play_tone.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.play_tone.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /* ******decode command qualifier****** */
+       /* decode command qualifier */
        if (cmd_data[temp_index] & 0x01)
                sat_cmd_ind_data->data.play_tone.command_detail.cmd_qualifier.play_tone.vibration_alert = VIBRATE_ALERT_REQUIRED;
        else
                sat_cmd_ind_data->data.play_tone.command_detail.cmd_qualifier.play_tone.vibration_alert = VIBRATE_ALERT_OPTIONAL;
 
-       //device identifier
+       /* device identifier */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.play_tone.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //alpha id - optional
-       temp_index+=4;
-       if((cmd_data[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
-               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.play_tone.alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+       /* alpha id - optional */
+       temp_index += 4;
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
+               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.play_tone.alpha_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
 
-               temp_index+=data_len_consumed;
-               if(temp_index >= o_length){
+               temp_index += data_len_consumed;
+               if (temp_index >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        dbg("[SAT] SAT PARSER - default value is set - tone type, duration");
                        sat_cmd_ind_data->data.play_tone.tone.tone_type = GENERAL_BEEP;
                        sat_cmd_ind_data->data.play_tone.duration.time_unit = TIME_UNIT_SECONDS;
                        sat_cmd_ind_data->data.play_tone.duration.time_interval = 2;
+
                        return TCORE_SAT_SUCCESS;
                }
        }
 
-       //tone - optional
-       if((cmd_data[temp_index]&0x7F) == SATK_TONE_TAG){
-               rv = _sat_decode_tone_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.play_tone.tone, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+       /* tone - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_TONE_TAG) {
+               rv = _sat_decode_tone_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.play_tone.tone,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
-       }
-       else{
+
+               temp_index += data_len_consumed;
+       } else
                sat_cmd_ind_data->data.play_tone.tone.tone_type = GENERAL_BEEP;
-       }
 
-       //time duration - optional
-       if((cmd_data[temp_index]&0x7F)==SATK_DURATION_TAG){
-               rv =_sat_decode_duration_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.play_tone.duration, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* time duration - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_DURATION_TAG) {
+               rv = _sat_decode_duration_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.play_tone.duration,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               temp_index+=data_len_consumed;
-               if(temp_index >= o_length){
+               temp_index += data_len_consumed;
+               if (temp_index >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-       }
-       else{
+       } else {
                dbg("[SAT] SAT PARSER -  Duration TLV not present, ME should use a default value.");
                sat_cmd_ind_data->data.play_tone.duration.time_unit = TIME_UNIT_SECONDS;
                sat_cmd_ind_data->data.play_tone.duration.time_interval = 2;
        }
 
-       //icon identifier
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
+       /* icon identifier */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
-               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.play_tone.icon_id, &data_len_consumed);
-
-               if(rv != TCORE_SAT_SUCCESS){
-                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //SEND TR
-               }
+               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.play_tone.icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
 
-               if(temp_index+data_len_consumed >= o_length){
+               if (temp_index + data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
 
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //text attribute - optional
-       if((cmd_data[temp_index]&0x7F)==SATK_TEXT_ATTRIBUTE_TAG){
-               rv =_sat_decode_text_attribute_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.play_tone.text_attribute, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* text attribute - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_ATTRIBUTE_TAG) {
+               rv = _sat_decode_text_attribute_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.play_tone.text_attribute,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(temp_index+data_len_consumed >= o_length){
+               if (temp_index + data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
 
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-//ToDo: frames
+       /*
+       * TODO:
+       *       frames
+       */
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.7 REFRESH
-static enum tcore_sat_result _sat_decode_refresh(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.7 REFRESH
+ */
+static enum tcore_sat_result _sat_decode_refresh(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0, data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //command detail
+       /* command detail */
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.refresh.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.refresh.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /* ******decode command qualifier****** */
-       switch(cmd_data[temp_index]){
-               case SIM_REFRESH_CMD_INIT_AND_FULL_FCN:
-               case SIM_REFRESH_CMD_FCN:
-               case SIM_REFRESH_CMD_INIT_AND_FCN:
-               case SIM_REFRESH_CMD_INIT       :
-               case SIM_REFRESH_CMD_RESET:
-                       sat_cmd_ind_data->data.refresh.command_detail.cmd_qualifier.refresh.refresh = cmd_data[temp_index];
-                       dbg("[SAT] SAT PARSER - : refresh mode=[0x%02x]:0-init&FFCN, 1-FCN, 2-init&FCN, 3-init, 4-reset", cmd_data[temp_index]);
-                       break;
-
-               case SIM_REFRESH_CMD_3G_APPLICATION_RESET:
-               case SIM_REFRESH_CMD_3G_SESSION_RESET:
-               case SIM_REFRESH_CMD_RESERVED:
-               default:
-                       dbg("[SAT] SAT PARSER - : refresh mode=0x%02x Not Supported", cmd_data[temp_index]);
-                       return TCORE_SAT_BEYOND_ME_CAPABILITY;
-                       break;
+       /* decode command qualifier */
+       switch (cmd_data[temp_index]) {
+       case SIM_REFRESH_CMD_INIT_AND_FULL_FCN:
+       case SIM_REFRESH_CMD_FCN:
+       case SIM_REFRESH_CMD_INIT_AND_FCN:
+       case SIM_REFRESH_CMD_INIT:
+       case SIM_REFRESH_CMD_RESET:
+               sat_cmd_ind_data->data.refresh.command_detail.cmd_qualifier.refresh.refresh = cmd_data[temp_index];
+               dbg("[SAT] SAT PARSER - : refresh mode=[0x%02x]:0-init&FFCN, 1-FCN, 2-init&FCN, 3-init, 4-reset",
+                       cmd_data[temp_index]);
+       break;
+
+       case SIM_REFRESH_CMD_3G_APPLICATION_RESET:
+       case SIM_REFRESH_CMD_3G_SESSION_RESET:
+       case SIM_REFRESH_CMD_RESERVED:
+       default:
+               dbg("[SAT] SAT PARSER - : refresh mode=0x%02x Not Supported", cmd_data[temp_index]);
+               return TCORE_SAT_BEYOND_ME_CAPABILITY;
        }
 
-       //device identifier
+       /* device identifier */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.refresh.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //check file list
-       temp_index+=4;
-       if( (sat_cmd_ind_data->data.refresh.command_detail.cmd_qualifier.refresh.refresh == SIM_REFRESH_CMD_FCN)
-               || (sat_cmd_ind_data->data.refresh.command_detail.cmd_qualifier.refresh.refresh == SIM_REFRESH_CMD_INIT_AND_FCN) ){
-
-               rv = _sat_decode_file_list_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.refresh.file_list, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS)
+       /* check file list */
+       temp_index += 4;
+       if ((sat_cmd_ind_data->data.refresh.command_detail.cmd_qualifier.refresh.refresh == SIM_REFRESH_CMD_FCN)
+                       || (sat_cmd_ind_data->data.refresh.command_detail.cmd_qualifier.refresh.refresh == SIM_REFRESH_CMD_INIT_AND_FCN)) {
+               rv = _sat_decode_file_list_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.refresh.file_list,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-       }
-       else
+       } else
                sat_cmd_ind_data->data.refresh.file_list.file_count = 0;
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.8 SETUP MENU
-static enum tcore_sat_result _sat_decode_setup_menu(unsigned char* tlv_str, int tlv_len,
-               int curr_offset, struct tcore_sat_proactive_command *pactive_cmd_ind_obj)
+/*
+ * 6.4.8 SETUP MENU
+ */
+static enum tcore_sat_result _sat_decode_setup_menu(unsigned char *tlv_str, int tlv_len,
+       int curr_offset, struct tcore_sat_proactive_command *pactive_cmd_ind_obj)
 {
        int temp_index = 0;
-       int data_len_consumed=0;
+       int data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charsrc_data;
+       unsigned char *src_data;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       //access command detail
-       temp_index = curr_offset+2; //move the temp_index to command detail info +2(tag and length)
+       /* access command detail */
+       temp_index = curr_offset + 2; /* move the temp_index to command detail info  + 2(tag and length) */
        src_data = &tlv_str[0];
 
-// In this time, the point of temp_index is COMMAND NUMBER
-// [1] insert command detail information into each proactive command data structure.
+       /* In this time, the point of temp_index is COMMAND NUMBER */
+       /* [1] insert command detail information into each proactive command data structure. */
        pactive_cmd_ind_obj->data.setup_menu.command_detail.cmd_num = src_data[temp_index++];
        pactive_cmd_ind_obj->data.setup_menu.command_detail.cmd_type = src_data[temp_index++];
 
-// [2] decode COMMAND QUALIFIER
-/*
--bit 1:        0 = no selection preference;
-               1 = selection using soft key preferred.
--bits 2 to 7:  = RFU.
--bit 8:        0 = no help information available;
-               1 = help information available.
-*/
-
-//[2-1] selection preference
+       /* [2] decode COMMAND QUALIFIER */
+       /*
+        * -bit 1:      0 = no selection preference;
+        *      1 = selection using soft key preferred.
+        * -bits 2 to 7:        = RFU.
+        * -bit 8:      0 = no help information available;
+        *      1 = help information available.
+        */
+
+       /* [2-1] selection preference */
        if (src_data[temp_index] & 0x01) {
                pactive_cmd_ind_obj->data.setup_menu.command_detail.cmd_qualifier.setup_menu.select_preference =
                                SELECTION_PREFERENCE_USING_SOFT_KEY;
                dbg("[SAT] SAT PARSER -  sel_pref=SAT_SELECTION_PREFERENCE_USING_SOFT_KEY.");
-       }
-       else {
+       } else {
                pactive_cmd_ind_obj->data.setup_menu.command_detail.cmd_qualifier.setup_menu.select_preference =
                                SELECTION_PREFERENCE_NONE_REQUESTED;
                dbg("[SAT] SAT PARSER - : sel_pref=SAT_SELECTION_PREFERENCE_NONE_REQUESTED.");
        }
 
-//[2-2] help available
+       /* [2-2] help available */
        if (src_data[temp_index] & 0x80) {
                pactive_cmd_ind_obj->data.setup_menu.command_detail.cmd_qualifier.setup_menu.help_info =
                                TRUE;
-               ;dbg("[SAT] SAT PARSER - : is help Available=TRUE.");
-       }
-       else {
+               dbg("[SAT] SAT PARSER - : is help Available=TRUE.");
+       } else {
                pactive_cmd_ind_obj->data.setup_menu.command_detail.cmd_qualifier.setup_menu.help_info =
                                FALSE;
                dbg("[SAT] SAT PARSER -  is help Available=FALSE.");
        }
 
-// In this time, the point of temp_index is DEVICE IDENTITIES.
-//[3] decode DEVICE IDENTITIES TLV
+       /* In this time, the point of temp_index is DEVICE IDENTITIES. */
+       /* [3] decode DEVICE IDENTITIES TLV */
        temp_index++;
        memcpy(dev_id, &src_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &pactive_cmd_ind_obj->data.setup_menu.device_id);
        if (rv != TCORE_SAT_SUCCESS) {
-               //send TR in SatkProcessProactiveCmdInd()
+               /* send TR in SatkProcessProactiveCmdInd() */
                return rv;
        }
 
-
-// In this time, the point of temp_index is ALPHA IDENTIFIER. 11 or 12.
-//[4] decode ALPHA IDENTIFIER TLV
-       temp_index+=4;
-       dbg("[SAT] SAT PARSER - :temp_index=%d",temp_index);
+       /* In this time, the point of temp_index is ALPHA IDENTIFIER. 11 or 12. */
+       /* [4] decode ALPHA IDENTIFIER TLV */
+       temp_index += 4;
+       dbg("[SAT] SAT PARSER - :temp_index=%d", temp_index);
        rv = _sat_decode_alpha_identifier_tlv(src_data, tlv_len, temp_index,
-                       &pactive_cmd_ind_obj->data.setup_menu.alpha_id, &data_len_consumed);
-       if(rv != TCORE_SAT_SUCCESS) {
+               &pactive_cmd_ind_obj->data.setup_menu.alpha_id,
+               &data_len_consumed);
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
-       }
 
-// In this time, the point of temp_index is ITEM  TLV
-//[5] decode ITEM LIST (at least one is mandatory)
-       temp_index+= data_len_consumed;
+       /* In this time, the point of temp_index is ITEM  TLV */
+       /* [5] decode ITEM LIST (at least one is mandatory) */
+       temp_index +=  data_len_consumed;
        pactive_cmd_ind_obj->data.setup_menu.menu_item_cnt = 0;
-       do{
-               data_len_consumed=0;
-               if((src_data[temp_index]&0x7F) == SATK_ITEM_TAG) {
+       do {
+               data_len_consumed = 0;
+               if ((src_data[temp_index] & 0x7F) == SATK_ITEM_TAG) {
                        rv = _sat_decode_item_tlv(src_data, tlv_len, temp_index,
-                                               &pactive_cmd_ind_obj->data.setup_menu.menu_item[pactive_cmd_ind_obj->data.setup_menu.menu_item_cnt],
-                                               &data_len_consumed);
-
-                       if(rv != TCORE_SAT_SUCCESS)
+                               &pactive_cmd_ind_obj->data.setup_menu.menu_item[pactive_cmd_ind_obj->data.setup_menu.menu_item_cnt],
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
                                return rv;
 
-                       if(!pactive_cmd_ind_obj->data.setup_menu.menu_item[0].text_len)
+                       if (!pactive_cmd_ind_obj->data.setup_menu.menu_item[0].text_len)
                                break;
-               }
-               else {
-                       if(pactive_cmd_ind_obj->data.setup_menu.menu_item_cnt == 0) {
+               } else {
+                       if (pactive_cmd_ind_obj->data.setup_menu.menu_item_cnt == 0) {
                                dbg("menu item is not exist.");
                                return TCORE_SAT_REQUIRED_VALUE_MISSING;
                        }
-                       //else
-                       break;  //???
+                       /* else */
+                       break;  /* ??? */
                }
                pactive_cmd_ind_obj->data.setup_menu.menu_item_cnt++;
                temp_index += data_len_consumed;
 
-               if(temp_index >= tlv_len)
+               if (temp_index >= tlv_len)
                        break;
-       }while(pactive_cmd_ind_obj->data.setup_menu.menu_item_cnt < SAT_MENU_ITEM_COUNT_MAX);
+       } while (pactive_cmd_ind_obj->data.setup_menu.menu_item_cnt < SAT_MENU_ITEM_COUNT_MAX);
 
-       dbg("[SAT] SAT PARSER - :setup menu item_count=%d",pactive_cmd_ind_obj->data.setup_menu.menu_item_cnt);
-       if(temp_index >= tlv_len){
+       dbg("[SAT] SAT PARSER - :setup menu item_count=%d", pactive_cmd_ind_obj->data.setup_menu.menu_item_cnt);
+       if (temp_index >= tlv_len) {
                dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
-               //send TR in SatkProcessProactiveCmdInd()
+               /* send TR in SatkProcessProactiveCmdInd() */
                return TCORE_SAT_SUCCESS;
        }
 
-//[6] (optional TLV) decode ITEMS NEXT ACTION INDICATOR TLV
-       if((src_data[temp_index]&0x7F) == SATK_ITEMS_NEXT_ACTION_INDICATOR_TAG) {
+       /* [6] (optional TLV) decode ITEMS NEXT ACTION INDICATOR TLV */
+       if ((src_data[temp_index] & 0x7F) == SATK_ITEMS_NEXT_ACTION_INDICATOR_TAG) {
                data_len_consumed = 0;
                rv = _sat_decode_item_next_action_indicator_tlv(tlv_str, tlv_len, temp_index,
-                               &pactive_cmd_ind_obj->data.setup_menu.next_act_ind_list, &data_len_consumed);
-               if(rv!=TCORE_SAT_SUCCESS) return rv;
+                       &pactive_cmd_ind_obj->data.setup_menu.next_act_ind_list,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv;
 
-               if(temp_index+data_len_consumed >= tlv_len) {
+               if (temp_index + data_len_consumed >= tlv_len) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                       //send the data to Noti manager.
+                       /* send the data to Noti manager. */
                        return TCORE_SAT_SUCCESS;
                }
 
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
-       }
-       else {
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
+       } else {
                dbg("[SAT] SAT PARSER -  ITEMS NEXT ACTION INDICATOR TLV Not present");
        }
 
-//[7] (optional TLV) decode ICON IDENTIFIER TLV
-       if((src_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG) {
+       /* [7] (optional TLV) decode ICON IDENTIFIER TLV */
+       if ((src_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
                rv = _sat_decode_icon_identifier_tlv(tlv_str, tlv_len, temp_index,
-                               &pactive_cmd_ind_obj->data.setup_menu.icon_id, &data_len_consumed);
-               if(rv !=TCORE_SAT_SUCCESS) return rv;
+                       &pactive_cmd_ind_obj->data.setup_menu.icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv;
 
-               if(temp_index+data_len_consumed >= tlv_len) {
+               if (temp_index + data_len_consumed >= tlv_len) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                       //send the data to Noti manager.
+                       /* send the data to Noti manager. */
                        return TCORE_SAT_SUCCESS;
                }
 
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
-       }
-       else{
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
+       } else {
                dbg("[SAT] SAT PARSER - ICON IDENTIFIER TLV Not present");
        }
 
-//[8] (optional TLV) decode ICON IDENTIFIER LIST TLV
-       if((src_data[temp_index]&0x7F) == SATK_ITEM_ICON_IDENTIFIER_LIST_TAG) {
+       /* [8] (optional TLV) decode ICON IDENTIFIER LIST TLV */
+       if ((src_data[temp_index] & 0x7F) == SATK_ITEM_ICON_IDENTIFIER_LIST_TAG) {
                data_len_consumed = 0;
                rv = _sat_decode_icon_identifier_list_tlv(tlv_str, tlv_len, temp_index,
-                               &pactive_cmd_ind_obj->data.setup_menu.icon_list, &data_len_consumed);
-               if(rv !=TCORE_SAT_SUCCESS) return rv; //SEND TR
+                       &pactive_cmd_ind_obj->data.setup_menu.icon_list,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(temp_index+data_len_consumed >= tlv_len){
+               if (temp_index + data_len_consumed >= tlv_len) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                       //send the data to Noti manager.
+                       /* send the data to Noti manager. */
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
 
-       }
-       else {
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
+
+       } else {
                dbg("[SAT] SAT PARSER - ICON IDENTIFIER LIST TLV not present");
        }
 
-       //text attribute - optional
-       if((src_data[temp_index]&0x7F)==SATK_TEXT_ATTRIBUTE_TAG){
-               rv =_sat_decode_text_attribute_tlv(tlv_str, tlv_len, temp_index, &pactive_cmd_ind_obj->data.setup_menu.text_attribute, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* text attribute - optional */
+       if ((src_data[temp_index] & 0x7F) == SATK_TEXT_ATTRIBUTE_TAG) {
+               rv = _sat_decode_text_attribute_tlv(tlv_str, tlv_len, temp_index,
+                       &pactive_cmd_ind_obj->data.setup_menu.text_attribute,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(temp_index+data_len_consumed >= tlv_len){
+               if (temp_index + data_len_consumed >= tlv_len) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
 
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //text attribute list - optional
-       if((src_data[temp_index]&0x7F) == SATK_TEXT_ATTRIBUTE_LIST_TAG){
+       /* text attribute list - optional */
+       if ((src_data[temp_index] & 0x7F) == SATK_TEXT_ATTRIBUTE_LIST_TAG) {
                int attr_item_temp_index = 0, item_cnt = 0;
                int txt_attr_list_len = 0;
 
@@ -3390,22 +3455,22 @@ static enum tcore_sat_result _sat_decode_setup_menu(unsigned char* tlv_str, int
 
                txt_attr_list = &pactive_cmd_ind_obj->data.setup_menu.text_attribute_list;
 
-               //length
+               /* length */
                temp_index++;
                txt_attr_list_len = src_data[temp_index];
-               if(txt_attr_list_len == 0){
+               if (txt_attr_list_len == 0) {
                        dbg("[SAT] - Text Attribute List is nothing");
                        return TCORE_SAT_REQUIRED_VALUE_MISSING;
                }
 
-               //item cnt - each text attribute length is 4byte
+               /* item cnt - each text attribute length is 4byte */
                item_cnt = txt_attr_list_len/4;
                txt_attr_list->list_cnt = item_cnt;
                dbg("[SAT] - text attribute item cnt(%d)", item_cnt);
 
-               //get attribute data
+               /* get attribute data */
                temp_index++;
-               for(attr_item_temp_index = 0; attr_item_temp_index < item_cnt; attr_item_temp_index++){
+               for (attr_item_temp_index = 0; attr_item_temp_index < item_cnt; attr_item_temp_index++) {
                        memcpy(txt_attr_list->text_attribute_list[attr_item_temp_index].text_formatting, &src_data[temp_index], 4);
                        temp_index += 4;
                }
@@ -3417,38 +3482,38 @@ static enum tcore_sat_result _sat_decode_setup_menu(unsigned char* tlv_str, int
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.9 SELECT ITEM
-static enum tcore_sat_result _sat_decode_select_item(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.9 SELECT ITEM
+ */
+static enum tcore_sat_result _sat_decode_select_item(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
-       int data_len_consumed=0;
+       int data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.select_item.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.select_item.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /* ******decode command qualifier****** */
+       /* decode command qualifier */
        if (cmd_data[temp_index] & 0x01) {
                if (cmd_data[temp_index] & 0x02) {
                        sat_cmd_ind_data->data.select_item.command_detail.cmd_qualifier.select_item.presentation_type = PRESENTATION_TYPE_NAVIGATION_OPTION;
                        dbg("[SAT] SAT PARSER - PRESENTATION_TYPE_NAVIGATION_OPTION");
-               }
-               else{
+               } else {
                        sat_cmd_ind_data->data.select_item.command_detail.cmd_qualifier.select_item.presentation_type = PRESENTATION_TYPE_DATA_VALUE;
                        dbg("[SAT] SAT PARSER - PRESENTATION_TYPE_DATA_VALUE");
                }
-       }
-       else {
+       } else {
                sat_cmd_ind_data->data.select_item.command_detail.cmd_qualifier.select_item.presentation_type = PRESENTATION_TYPE_NOT_SPECIFIED;
                dbg("[SAT] SAT PARSER - PRESENTATION_TYPE_NOT_SPECIFIED");
        }
@@ -3456,8 +3521,7 @@ static enum tcore_sat_result _sat_decode_select_item(unsigned char* o_cmd_data,
        if (cmd_data[temp_index] & 0x04) {
                sat_cmd_ind_data->data.select_item.command_detail.cmd_qualifier.select_item.select_preference = SELECTION_PREFERENCE_USING_SOFT_KEY;
                dbg("[SAT] SAT PARSER - SELECTION_PREFERENCE_USING_SOFT_KEY");
-       }
-       else {
+       } else {
                sat_cmd_ind_data->data.select_item.command_detail.cmd_qualifier.select_item.select_preference = SELECTION_PREFERENCE_NONE_REQUESTED;
                dbg("[SAT] SAT PARSER - SELECTION_PREFERENCE_NONE_REQUESTED");
        }
@@ -3467,140 +3531,143 @@ static enum tcore_sat_result _sat_decode_select_item(unsigned char* o_cmd_data,
                dbg("[SAT] SAT PARSER - Help info");
        }
 
-       //device identities
+       /* device identities */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.select_item.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //alpha identifier
-       temp_index+=4;
-       if((cmd_data[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
-               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.select_item.alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+       /* alpha identifier */
+       temp_index += 4;
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
+               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.select_item.alpha_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
+
+               temp_index += data_len_consumed;
        }
 
-       //item objects
+       /* item objects */
        sat_cmd_ind_data->data.select_item.menu_item_cnt = 0;
-       do{
-               data_len_consumed=0;
+       do {
+               data_len_consumed = 0;
 
-               if((cmd_data[temp_index]&0x7F) == SATK_ITEM_TAG) {
+               if ((cmd_data[temp_index] & 0x7F) == SATK_ITEM_TAG) {
                        rv = _sat_decode_item_tlv(o_cmd_data, o_length, temp_index,
                                &sat_cmd_ind_data->data.select_item.menu_item[sat_cmd_ind_data->data.select_item.menu_item_cnt],
                                &data_len_consumed);
-
-                       if(rv != TCORE_SAT_SUCCESS)
+                       if (rv != TCORE_SAT_SUCCESS)
                                return rv;
-               }
-               else {
-                       if(sat_cmd_ind_data->data.select_item.menu_item_cnt == 0) {
+               } else {
+                       if (sat_cmd_ind_data->data.select_item.menu_item_cnt == 0) {
                                dbg("menu item is not exist.");
                                return TCORE_SAT_REQUIRED_VALUE_MISSING;
                        }
-                       //else
-                       break;  //???
+                       /* else */
+                       break;  /* ??? */
                }
+
                sat_cmd_ind_data->data.select_item.menu_item_cnt++;
                temp_index += data_len_consumed;
 
-               if(temp_index >= o_length)
+               if (temp_index >= o_length)
                        break;
 
-       }while(sat_cmd_ind_data->data.select_item.menu_item_cnt < SAT_MENU_ITEM_COUNT_MAX);
+       } while (sat_cmd_ind_data->data.select_item.menu_item_cnt < SAT_MENU_ITEM_COUNT_MAX);
 
-       dbg("[SAT] SAT PARSER - select menu item_count=%d",sat_cmd_ind_data->data.select_item.menu_item_cnt);
-       if(temp_index >= o_length){
+       dbg("[SAT] SAT PARSER - select menu item_count=%d", sat_cmd_ind_data->data.select_item.menu_item_cnt);
+       if (temp_index >= o_length) {
                dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                return TCORE_SAT_SUCCESS;
        }
 
-       //item next action indicator
-       if((cmd_data[temp_index]&0x7F) == SATK_ITEMS_NEXT_ACTION_INDICATOR_TAG) {
+       /* item next action indicator */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ITEMS_NEXT_ACTION_INDICATOR_TAG) {
                data_len_consumed = 0;
                rv = _sat_decode_item_next_action_indicator_tlv(o_cmd_data, o_length, temp_index,
                                &sat_cmd_ind_data->data.select_item.item_next_act_ind_list, &data_len_consumed);
-               if(rv!=TCORE_SAT_SUCCESS)
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
 
-               if(temp_index+data_len_consumed >= o_length) {
+               if (temp_index + data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
 
-               temp_index+=data_len_consumed;
+               temp_index += data_len_consumed;
        }
 
-       //item identifier
-       if((cmd_data[temp_index]&0x7F) == SATK_ITEM_IDENTIFIER_TAG) {
+       /* item identifier */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ITEM_IDENTIFIER_TAG) {
                data_len_consumed = 0;
                rv = _sat_decode_item_identifier_tlv(o_cmd_data, o_length, temp_index,
-                               &sat_cmd_ind_data->data.select_item.item_identifier, &data_len_consumed);
-               if(rv !=TCORE_SAT_SUCCESS)
+                       &sat_cmd_ind_data->data.select_item.item_identifier,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
 
-               if(temp_index+data_len_consumed >= o_length) {
+               if (temp_index + data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
 
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //icon identifier
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
+       /* icon identifier */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
                rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
-                               &sat_cmd_ind_data->data.select_item.icon_id, &data_len_consumed);
-
-               if(rv != TCORE_SAT_SUCCESS){
-                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //SEND TR
-               }
+                       &sat_cmd_ind_data->data.select_item.icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
 
-               if(temp_index+data_len_consumed >= o_length){
+               if (temp_index + data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
 
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       if((cmd_data[temp_index]&0x7F) == SATK_ITEM_ICON_IDENTIFIER_LIST_TAG) {
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ITEM_ICON_IDENTIFIER_LIST_TAG) {
                data_len_consumed = 0;
                rv = _sat_decode_icon_identifier_list_tlv(o_cmd_data, o_length, temp_index,
-                               &sat_cmd_ind_data->data.select_item.icon_list, &data_len_consumed);
-               if(rv !=TCORE_SAT_SUCCESS)
-                       return rv; //SEND TR
+                       &sat_cmd_ind_data->data.select_item.icon_list,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(temp_index+data_len_consumed >= o_length){
+               if (temp_index + data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //text attribute - optional
-       if((cmd_data[temp_index]&0x7F)==SATK_TEXT_ATTRIBUTE_TAG){
-               rv =_sat_decode_text_attribute_tlv(o_cmd_data, o_length, temp_index,
-                               &sat_cmd_ind_data->data.select_item.text_attribute, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* text attribute - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_ATTRIBUTE_TAG) {
+               rv = _sat_decode_text_attribute_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.select_item.text_attribute,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(temp_index+data_len_consumed >= o_length){
+               if (temp_index + data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
 
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //text attribute list - optional
-       if((cmd_data[temp_index]&0x7F) == SATK_TEXT_ATTRIBUTE_LIST_TAG){
+       /* text attribute list - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_ATTRIBUTE_LIST_TAG) {
                int attr_item_temp_index = 0, item_cnt = 0;
                int txt_attr_list_len = 0;
 
@@ -3608,22 +3675,22 @@ static enum tcore_sat_result _sat_decode_select_item(unsigned char* o_cmd_data,
 
                txt_attr_list = &sat_cmd_ind_data->data.select_item.text_attribute_list;
 
-               //length
+               /* length */
                temp_index++;
                txt_attr_list_len = cmd_data[temp_index];
-               if(txt_attr_list_len == 0){
+               if (txt_attr_list_len == 0) {
                        dbg("[SAT] - Text Attribute List is nothing");
                        return TCORE_SAT_REQUIRED_VALUE_MISSING;
                }
 
-               //item cnt - each text attribute length is 4byte
+               /* item cnt - each text attribute length is 4byte */
                item_cnt = txt_attr_list_len/4;
                txt_attr_list->list_cnt = item_cnt;
                dbg("[SAT] - text attribute item cnt(%d)", item_cnt);
 
-               //get attribute data
+               /* get attribute data */
                temp_index++;
-               for(attr_item_temp_index = 0; attr_item_temp_index < item_cnt; attr_item_temp_index++){
+               for (attr_item_temp_index = 0; attr_item_temp_index < item_cnt; attr_item_temp_index++) {
                        memcpy(txt_attr_list->text_attribute_list[attr_item_temp_index].text_formatting, &cmd_data[temp_index], 4);
                        temp_index += 4;
                }
@@ -3635,648 +3702,711 @@ static enum tcore_sat_result _sat_decode_select_item(unsigned char* o_cmd_data,
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.10 SEND SMS
-static enum tcore_sat_result _sat_decode_send_sms(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.10 SEND SMS
+ */
+static enum tcore_sat_result _sat_decode_send_sms(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
-       int data_len_consumed=0;
+       int data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.send_sms.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.send_sms.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /* ******decode command qualifier****** */
-       if (cmd_data[temp_index] & 0x01) {
+       /* decode command qualifier */
+       if (cmd_data[temp_index] & 0x01)
                sat_cmd_ind_data->data.send_sms.command_detail.cmd_qualifier.send_sms.packing_by_me_required = TRUE;
-       }
        else {
                sat_cmd_ind_data->data.send_sms.command_detail.cmd_qualifier.send_sms.packing_by_me_required = FALSE;
                dbg("[SAT] SAT PARSER - packing by me required is false");
        }
 
-       //device identities
+       /* device identities */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.send_sms.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //alpha identifier
-       temp_index+=4;
-       if((cmd_data[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
+       /* alpha identifier */
+       temp_index += 4;
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
                data_len_consumed = 0;
-               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_sms.alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.send_sms.alpha_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
+
+               temp_index += data_len_consumed;
        }
 
-       //address
-       if((cmd_data[temp_index]&0x7F) == SATK_ADDRESS_TAG){
+       /* address */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ADDRESS_TAG) {
                data_len_consumed = 0;
-               rv = _sat_decode_address_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_sms.address, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+               rv = _sat_decode_address_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.send_sms.address,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
+
+               temp_index += data_len_consumed;
        }
 
-       //SMS-TPDU
+       /* SMS-TPDU */
        data_len_consumed = 0;
-       rv = _sat_decode_sms_tpdu_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_sms.sms_tpdu, &data_len_consumed);
-       if(rv != TCORE_SAT_SUCCESS)
+       rv = _sat_decode_sms_tpdu_tlv(o_cmd_data, o_length, temp_index,
+               &sat_cmd_ind_data->data.send_sms.sms_tpdu,
+               &data_len_consumed);
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       if(temp_index+data_len_consumed >= o_length){
+       if (temp_index + data_len_consumed >= o_length) {
                dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                return TCORE_SAT_SUCCESS;
        }
 
-       //icon identifier
-       temp_index+=data_len_consumed;
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
+       /* icon identifier */
+       temp_index += data_len_consumed;
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
                rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
-                               &sat_cmd_ind_data->data.send_sms.icon_id, &data_len_consumed);
-
-               if(rv != TCORE_SAT_SUCCESS){
-                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //SEND TR
-               }
+                       &sat_cmd_ind_data->data.send_sms.icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
 
-               if(temp_index+data_len_consumed >= o_length){
+               if (temp_index + data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
 
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.11 SEND SS
-static enum tcore_sat_result _sat_decode_send_ss(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.11 SEND SS
+ */
+static enum tcore_sat_result _sat_decode_send_ss(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0, data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL || sat_cmd_ind_data == NULL){
+       if (o_cmd_data == NULL || sat_cmd_ind_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.send_ss.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.send_ss.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /** command detail **/
-       temp_index++; //RFU
+       /* command detail */
+       temp_index++; /* RFU */
 
-       //device identities
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       /* device identities */
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.send_ss.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //alpha identifier - optional
+       /* alpha identifier - optional */
        temp_index += 4;
-       if((cmd_data[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
-               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_ss.alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
+               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.send_ss.alpha_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
+
+               temp_index += data_len_consumed;
        }
 
-       //ss string
-       rv = _sat_decode_ss_string_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_ss.ss_string, &data_len_consumed);
-       if(rv != TCORE_SAT_SUCCESS)
+       /* ss string */
+       rv = _sat_decode_ss_string_tlv(o_cmd_data, o_length, temp_index,
+               &sat_cmd_ind_data->data.send_ss.ss_string,
+               &data_len_consumed);
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //icon identifier- optional
-       temp_index+=data_len_consumed;
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
+       /* icon identifier - optional */
+       temp_index += data_len_consumed;
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
 
-               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_ss.icon_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //SEND TR
-               }
-
+               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.send_ss.icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.12 SEND USSD
-static enum tcore_sat_result _sat_decode_send_ussd(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.12 SEND USSD
+ */
+static enum tcore_sat_result _sat_decode_send_ussd(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0, data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL || sat_cmd_ind_data == NULL){
+       if (o_cmd_data == NULL || sat_cmd_ind_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.send_ussd.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.send_ussd.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /** command detail **/
-       temp_index++; //RFU
+       /* command detail */
+       temp_index++; /* RFU */
 
-       //device identities
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       /* device identities */
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.send_ussd.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //alpha identifier - optional
+       /* alpha identifier - optional */
        temp_index += 4;
-       if((cmd_data[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
-               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_ussd.alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
+               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.send_ussd.alpha_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
+
+               temp_index += data_len_consumed;
        }
 
-       //ussd string
-       rv = _sat_decode_ussd_string_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_ussd.ussd_string, &data_len_consumed);
-       if(rv != TCORE_SAT_SUCCESS)
+       /* ussd string */
+       rv = _sat_decode_ussd_string_tlv(o_cmd_data, o_length, temp_index,
+               &sat_cmd_ind_data->data.send_ussd.ussd_string,
+               &data_len_consumed);
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //icon identifier- optional
-       temp_index+=data_len_consumed;
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
+       /* icon identifier- optional */
+       temp_index += data_len_consumed;
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
 
-               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_ussd.icon_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //SEND TR
-               }
-
+               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.send_ussd.icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
        }
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.13 SETUP CALL
-static enum tcore_sat_result _sat_decode_setup_call(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.13 SETUP CALL
+ */
+static enum tcore_sat_result _sat_decode_setup_call(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0, data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL || sat_cmd_ind_data == NULL){
+       if (o_cmd_data == NULL || sat_cmd_ind_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //command detail
+       /* command detail */
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.setup_call.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.setup_call.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /* ******decode command qualifier****** */
-       switch(cmd_data[temp_index]){
-               case SETUP_CALL_IF_ANOTHER_CALL_NOT_BUSY:
-               case SETUP_CALL_IF_ANOTHER_CALL_NOT_BUSY_WITH_REDIAL:
-               case SETUP_CALL_PUT_ALL_OTHER_CALLS_ON_HOLD:
-               case SETUP_CALL_PUT_ALL_OTHER_CALLS_ON_HOLD_WITH_REDIAL:
-               case SETUP_CALL_DISCONN_ALL_OTHER_CALLS:
-               case SETUP_CALL_DISCONN_ALL_OTHER_CALLS_WITH_REDIAL:
-                       sat_cmd_ind_data->data.setup_call.command_detail.cmd_qualifier.setup_call.setup_call = cmd_data[temp_index];
-                       dbg("[SAT] SAT PARSER -  setup_call.cmd_qualifier= 0x%02x", sat_cmd_ind_data->data.setup_call.command_detail.cmd_qualifier.setup_call.setup_call);
-                       break;
-               case SETUP_CALL_RESERVED:
-               default:
-                       dbg("[SAT] SAT PARSER -  setup_call.cmd_qualifier= 0x%02x", cmd_data[temp_index]);
-                       return TCORE_SAT_BEYOND_ME_CAPABILITY;
-                       break;
+       /* decode command qualifier */
+       switch (cmd_data[temp_index]) {
+       case SETUP_CALL_IF_ANOTHER_CALL_NOT_BUSY:
+       case SETUP_CALL_IF_ANOTHER_CALL_NOT_BUSY_WITH_REDIAL:
+       case SETUP_CALL_PUT_ALL_OTHER_CALLS_ON_HOLD:
+       case SETUP_CALL_PUT_ALL_OTHER_CALLS_ON_HOLD_WITH_REDIAL:
+       case SETUP_CALL_DISCONN_ALL_OTHER_CALLS:
+       case SETUP_CALL_DISCONN_ALL_OTHER_CALLS_WITH_REDIAL:
+               sat_cmd_ind_data->data.setup_call.command_detail.cmd_qualifier.setup_call.setup_call = cmd_data[temp_index];
+               dbg("[SAT] SAT PARSER -  setup_call.cmd_qualifier= 0x%02x",
+                       sat_cmd_ind_data->data.setup_call.command_detail.cmd_qualifier.setup_call.setup_call);
+       break;
+
+       case SETUP_CALL_RESERVED: /* Fallthrough */
+       default:
+               dbg("[SAT] SAT PARSER -  setup_call.cmd_qualifier= 0x%02x", cmd_data[temp_index]);
+               return TCORE_SAT_BEYOND_ME_CAPABILITY;
        }
 
-       //device identifier
+       /* device identifier */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.setup_call.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //alpha identifier (user confirmation) - optional
-       temp_index+=4;
-       if((cmd_data[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
-               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.setup_call.user_confirm_alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+       /* alpha identifier (user confirmation) - optional */
+       temp_index += 4;
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
+               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.setup_call.user_confirm_alpha_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
+
+               temp_index += data_len_consumed;
        }
 
-       //address
-       rv = _sat_decode_address_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.setup_call.address, &data_len_consumed);
-       if(rv != TCORE_SAT_SUCCESS) {
+       /* address */
+       rv = _sat_decode_address_tlv(o_cmd_data, o_length, temp_index,
+               &sat_cmd_ind_data->data.setup_call.address,
+               &data_len_consumed);
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
-       }
 
-       temp_index+=data_len_consumed;
-       if(temp_index >= o_length){
+       temp_index += data_len_consumed;
+       if (temp_index >= o_length) {
                dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                return TCORE_SAT_SUCCESS;
        }
 
-       //capability configuration parameter - optional
-       if((cmd_data[temp_index]&0x7F)==SATK_CAPABILITY_CONFIGURATION_PARAMETERS_TAG){
-               rv =_sat_decode_ccp_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.setup_call.ccp, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* capability configuration parameter - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_CAPABILITY_CONFIGURATION_PARAMETERS_TAG) {
+               rv = _sat_decode_ccp_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.setup_call.ccp,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               temp_index+=data_len_consumed;
-               if(temp_index >= o_length){
+               temp_index += data_len_consumed;
+               if (temp_index >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
        }
 
-       //sub address - optional
-       if((cmd_data[temp_index]&0x7F)==SATK_SUB_ADDRESS_TAG){
-               rv =_sat_decode_sub_address_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.setup_call.subaddress, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* sub address - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_SUB_ADDRESS_TAG) {
+               rv = _sat_decode_sub_address_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.setup_call.subaddress,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               temp_index+=data_len_consumed;
-               if(temp_index >= o_length){
+               temp_index += data_len_consumed;
+               if (temp_index >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
        }
 
-       //time duration - optional
-       if((cmd_data[temp_index]&0x7F)==SATK_DURATION_TAG){
-               rv =_sat_decode_duration_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.setup_call.duration, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
+       /* time duration - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_DURATION_TAG) {
+               rv = _sat_decode_duration_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.setup_call.duration,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               temp_index+=data_len_consumed;
-               if(temp_index >= o_length){
+               temp_index += data_len_consumed;
+               if (temp_index >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
        }
 
-       //icon identifier (user confirmation) - optional
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
+       /* icon identifier (user confirmation) - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
-               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.setup_call.user_confirm_icon_id, &data_len_consumed);
-
-               if(rv != TCORE_SAT_SUCCESS){
-                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //SEND TR
-               }
+               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.setup_call.user_confirm_icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
 
-               temp_index+=data_len_consumed;
-               if(temp_index >= o_length){
+               temp_index += data_len_consumed;
+               if (temp_index >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
        }
 
-       //alpha identifier (call setup) - optional
-       if((cmd_data[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
-               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.setup_call.call_setup_alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+       /* alpha identifier (call setup) - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
+               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.setup_call.call_setup_alpha_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
 
-               temp_index+=data_len_consumed;
-               if(temp_index >= o_length){
+               temp_index += data_len_consumed;
+               if (temp_index >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
        }
 
-       //icon identifier (call setup) - optional
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
+       /* icon identifier (call setup) - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
-               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.setup_call.call_setup_icon_id, &data_len_consumed);
-
-               if(rv != TCORE_SAT_SUCCESS){
-                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //SEND TR
-               }
+               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.setup_call.call_setup_icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
 
-               temp_index+=data_len_consumed;
-               if(temp_index >= o_length){
+               temp_index += data_len_consumed;
+               if (temp_index >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
        }
 
-       //ToDo:  Text Attribute (user_confirmation , call_setup)
+       /*
+        * TODO -
+        *      Text Attribute (user_confirmation , call_setup)
+        */
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.15 PROVIDE LOCAL INFO
-static enum tcore_sat_result _sat_decode_provide_local_info(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.15 PROVIDE LOCAL INFO
+ */
+static enum tcore_sat_result _sat_decode_provide_local_info(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //command detail
+       /* command detail */
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.setup_event_list.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.setup_event_list.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /* ******decode command qualifier****** */
-       switch(cmd_data[temp_index]){
-               case LOCAL_INFO_DATE_TIME_AND_TIMEZONE:
-               case LOCAL_INFO_LANGUAGE:
-                       sat_cmd_ind_data->data.setup_event_list.command_detail.cmd_qualifier.provide_local_info.provide_local_info = cmd_data[temp_index];
-                       break;
-               //TODO - Other cases
-               default:
-                       sat_cmd_ind_data->data.setup_event_list.command_detail.cmd_qualifier.provide_local_info.provide_local_info = LOCAL_INFO_RESERVED;
-                       break;
+       /* decode command qualifier */
+       switch (cmd_data[temp_index]) {
+       case LOCAL_INFO_DATE_TIME_AND_TIMEZONE:
+       case LOCAL_INFO_LANGUAGE:
+               sat_cmd_ind_data->data.setup_event_list.command_detail.cmd_qualifier.provide_local_info.provide_local_info = cmd_data[temp_index];
+       break;
+
+       /*
+        * TODO -
+        *      Other cases
+        */
+       default:
+               sat_cmd_ind_data->data.setup_event_list.command_detail.cmd_qualifier.provide_local_info.provide_local_info = LOCAL_INFO_RESERVED;
+       break;
        }
 
-       //device identifier
+       /* device identifier */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.setup_event_list.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //TODO - UTRAN Measurement Qualifier
+       /*
+        * TODO -
+        *      UTRAN Measurement Qualifier
+        */
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.16 SETUP EVENT LIST
-static enum tcore_sat_result _sat_decode_setup_event_list(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.16 SETUP EVENT LIST
+ */
+static enum tcore_sat_result _sat_decode_setup_event_list(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0, data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //command detail
+       /* command detail */
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.setup_event_list.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.setup_event_list.command_detail.cmd_type = cmd_data[temp_index++];
 
-       //device identifier
+       /* device identifier */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.setup_event_list.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //event list
-       temp_index+=4;
+       /* event list */
+       temp_index += 4;
        rv = _sat_decode_event_list_tlv(o_cmd_data, o_length, temp_index,
-                       &sat_cmd_ind_data->data.setup_event_list.event_list, &data_len_consumed);
+               &sat_cmd_ind_data->data.setup_event_list.event_list,
+               &data_len_consumed);
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.22 SETUP IDLE MODE TEXT
-static enum tcore_sat_result _sat_decode_setup_idle_mode_text(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.22 SETUP IDLE MODE TEXT
+ */
+static enum tcore_sat_result _sat_decode_setup_idle_mode_text(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0, data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //command detail
+       /* command detail */
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.setup_idle_mode_text.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.setup_idle_mode_text.command_detail.cmd_type = cmd_data[temp_index++];
 
-       //device identifier
+       /* device identifier */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.setup_idle_mode_text.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //text string
-       temp_index+=4;
-       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.setup_idle_mode_text.text, &data_len_consumed);
-       if(rv != TCORE_SAT_SUCCESS)
+       /* text string */
+       temp_index += 4;
+       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index,
+               &sat_cmd_ind_data->data.setup_idle_mode_text.text,
+               &data_len_consumed);
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       if(sat_cmd_ind_data->data.setup_idle_mode_text.text.string_length < 0){
+       if (sat_cmd_ind_data->data.setup_idle_mode_text.text.string_length < 0) {
                err("[SAT] SAT PARSER - :string length is less than 0");
                return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
        }
 
-       dbg("[SAT] SAT PARSER  text(%s)",sat_cmd_ind_data->data.setup_idle_mode_text.text.string);
-       dbg("[SAT] SAT PARSER o_len(%d) temp_index(%d) data_len_consumed(%d)",o_length , temp_index, data_len_consumed);
+       dbg("[SAT] SAT PARSER  text(%s)", sat_cmd_ind_data->data.setup_idle_mode_text.text.string);
+       dbg("[SAT] SAT PARSER o_len(%d) temp_index(%d) data_len_consumed(%d)",
+               o_length , temp_index, data_len_consumed);
 
-       if(temp_index+data_len_consumed > o_length){
+       if (temp_index + data_len_consumed > o_length) {
                err("[SAT] SAT PARSER - Wrong String TLV");
                return TCORE_SAT_BEYOND_ME_CAPABILITY;
-       }
-       else if(temp_index+data_len_consumed == o_length){
+       } else if (temp_index + data_len_consumed == o_length) {
                dbg("[SAT] SAT PARSER - :no more TLVs to decode.");
                return TCORE_SAT_SUCCESS;
        }
 
-       //icon identifier
-       temp_index+=data_len_consumed;
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
+       /* icon identifier */
+       temp_index += data_len_consumed;
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
-               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.setup_idle_mode_text.icon_id, &data_len_consumed);
-
-               if(rv != TCORE_SAT_SUCCESS){
-                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; //SEND TR
-               }
+               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.setup_idle_mode_text.icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD; /* Send TR */
 
-               if(temp_index+data_len_consumed >= o_length){
+               if (temp_index + data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
 
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //ToDo:  Text Attribute
+       /*
+        * TODO:
+        *      Text Attribute
+        */
+
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.24 SEND DTMF
-static enum tcore_sat_result _sat_decode_send_dtmf(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.24 SEND DTMF
+ */
+static enum tcore_sat_result _sat_decode_send_dtmf(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0, data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //command detail
+       /* command detail */
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.send_dtmf.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.send_dtmf.command_detail.cmd_type = cmd_data[temp_index++];
 
-       //device identifier
+       /* device identifier */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.send_dtmf.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //alpha identifier - optional
-       temp_index+=4;
-       if((cmd_data[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
-               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_dtmf.alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+       /* alpha identifier - optional */
+       temp_index += 4;
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
+               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.send_dtmf.alpha_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
+
+               temp_index += data_len_consumed;
        }
 
-       // DTMF string - mandatory
+       /* DTMF string - mandatory */
        if ((cmd_data[temp_index] & 0x7F) == SATK_DTMF_STRING_TAG) {
                rv = _sat_decode_dtmf_string_tlv(o_cmd_data, o_length, temp_index,
-                               &sat_cmd_ind_data->data.send_dtmf.dtmf_string, &data_len_consumed);
-               if (rv != TCORE_SAT_SUCCESS) {
+                       &sat_cmd_ind_data->data.send_dtmf.dtmf_string,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
 
-               if (temp_index + data_len_consumed >= o_length) {
+               if (temp_index  +  data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
+
                temp_index += data_len_consumed;
        } else {
                dbg("[SAT] SAT PARSER - DTMF tlv is missed.");
                return TCORE_SAT_REQUIRED_VALUE_MISSING;
        }
 
-       //icon identifier - optional
+       /* icon identifier - optional */
        if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
                rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
-                               &sat_cmd_ind_data->data.send_dtmf.icon_id, &data_len_consumed);
-
-               if (rv != TCORE_SAT_SUCCESS) {
+                               &sat_cmd_ind_data->data.send_dtmf.icon_id,
+                               &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
-               }
 
-               if (temp_index + data_len_consumed >= o_length) {
+               if (temp_index  +  data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index += data_len_consumed; //temp_index pointing to the Tag of next TLV
+
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //ToDo:  Text Attribute, Frame Identifier
+       /*
+        * TODO:
+        *      Text Attribute, Frame Identifier
+        */
+
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.25 LANGUAGE NOTIFICATION
-static enum tcore_sat_result _sat_decode_language_notification(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.25 LANGUAGE NOTIFICATION
+ */
+static enum tcore_sat_result _sat_decode_language_notification(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //command detail
+       /* command detail */
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.language_notification.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.language_notification.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /* ******decode command qualifier****** */
-       if(cmd_data[temp_index]&0x01)
+       /* decode command qualifier */
+       if (cmd_data[temp_index] & 0x01)
                sat_cmd_ind_data->data.language_notification.command_detail.cmd_qualifier.language_notification.specific_language = TRUE;
        else
                sat_cmd_ind_data->data.language_notification.command_detail.cmd_qualifier.language_notification.specific_language = FALSE;
 
-       //device identifier
+       /* device identifier */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.language_notification.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //language - conditional
-       temp_index+=4;
+       /* language - conditional */
+       temp_index += 4;
        if (sat_cmd_ind_data->data.language_notification.command_detail.cmd_qualifier.language_notification.specific_language == TRUE) {
-               if((cmd_data[temp_index]&0x7F) == SATK_LANGUAGE_TAG) {
-                       rv = _sat_decode_language_tlv(cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.language_notification.language);
-                       if(rv != TCORE_SAT_SUCCESS)
+               if ((cmd_data[temp_index] & 0x7F) == SATK_LANGUAGE_TAG) {
+                       rv = _sat_decode_language_tlv(cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.language_notification.language);
+                       if (rv != TCORE_SAT_SUCCESS)
                                return rv;
-               } else  {
+               } else {
                        dbg("[SAT] SAT PARSER -  Language TLV is required but missing.");
                        return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
                }
@@ -4289,80 +4419,92 @@ static enum tcore_sat_result _sat_decode_language_notification(unsigned char* o_
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.26 LAUNCH BROWSER
-static enum tcore_sat_result _sat_decode_launch_browser(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.26 LAUNCH BROWSER
+ */
+static enum tcore_sat_result _sat_decode_launch_browser(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0, data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //command detail
+       /* command detail */
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.launch_browser.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.launch_browser.command_detail.cmd_type = cmd_data[temp_index++];
 
-       // decode command qualifier
+       /* decode command qualifier */
        switch (cmd_data[temp_index]) {
-               case 0x00:
-                       sat_cmd_ind_data->data.launch_browser.command_detail.cmd_qualifier.launch_browser.launch_browser =
-                                       LAUNCH_BROWSER_IF_NOT_ALREADY_LAUNCHED;
-                       break;
-               case 0x01:
-                       sat_cmd_ind_data->data.launch_browser.command_detail.cmd_qualifier.launch_browser.launch_browser =
-                                       LAUNCH_BROWSER_NOT_USED;
-                       break;
-               case 0x02:
-                       sat_cmd_ind_data->data.launch_browser.command_detail.cmd_qualifier.launch_browser.launch_browser =
-                                       LAUNCH_BROWSER_USE_EXISTING_BROWSER;
-                       break;
-               case 0x03:
-                       sat_cmd_ind_data->data.launch_browser.command_detail.cmd_qualifier.launch_browser.launch_browser =
-                                       LAUNCH_BROWSER_CLOSE_AND_LAUNCH_NEW_BROWSER;
-                       break;
-               case 0x04:
-                       sat_cmd_ind_data->data.launch_browser.command_detail.cmd_qualifier.launch_browser.launch_browser =
-                                       LAUNCH_BROWSER_NOT_USED2;
-                       break;
-               default:
-                       sat_cmd_ind_data->data.launch_browser.command_detail.cmd_qualifier.launch_browser.launch_browser =
-                                       LAUNCH_BROWSER_RESERVED;
-                       break;
-       }
-
-       //device identifier
+       case 0x00:
+               sat_cmd_ind_data->data.launch_browser.command_detail.cmd_qualifier.launch_browser.launch_browser =
+                               LAUNCH_BROWSER_IF_NOT_ALREADY_LAUNCHED;
+       break;
+
+       case 0x01:
+               sat_cmd_ind_data->data.launch_browser.command_detail.cmd_qualifier.launch_browser.launch_browser =
+                               LAUNCH_BROWSER_NOT_USED;
+       break;
+
+       case 0x02:
+               sat_cmd_ind_data->data.launch_browser.command_detail.cmd_qualifier.launch_browser.launch_browser =
+                               LAUNCH_BROWSER_USE_EXISTING_BROWSER;
+       break;
+
+       case 0x03:
+               sat_cmd_ind_data->data.launch_browser.command_detail.cmd_qualifier.launch_browser.launch_browser =
+                               LAUNCH_BROWSER_CLOSE_AND_LAUNCH_NEW_BROWSER;
+       break;
+
+       case 0x04:
+               sat_cmd_ind_data->data.launch_browser.command_detail.cmd_qualifier.launch_browser.launch_browser =
+                               LAUNCH_BROWSER_NOT_USED2;
+       break;
+
+       default:
+               sat_cmd_ind_data->data.launch_browser.command_detail.cmd_qualifier.launch_browser.launch_browser =
+                               LAUNCH_BROWSER_RESERVED;
+       break;
+       }
+
+       /* device identifier */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.language_notification.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
        temp_index += 4;
 
-       //Browser Identity TLV - Optional
+       /* Browser Identity TLV - Optional */
        if ((cmd_data[temp_index] & 0x7F) == SATK_BROWSER_IDENTITY_TAG) {
-               rv = _sat_decode_browser_identity_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.launch_browser.browser_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS)
+               rv = _sat_decode_browser_identity_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.launch_browser.browser_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
+
                temp_index += data_len_consumed;
        } else {
                dbg("[SAT] SAT PARSER - Browser ID NOT present");
        }
 
-       //URL TLV - Mandatory
+       /* URL TLV - Mandatory */
        if ((cmd_data[temp_index] & 0x7F) == SATK_URL_TAG) {
-               rv = _sat_decode_url_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.launch_browser.url, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS)
+               rv = _sat_decode_url_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.launch_browser.url,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
 
-               if (temp_index + data_len_consumed >= o_length) {
+               if (temp_index  +  data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER -  No more TLVs to decode, decoding done.");
                        return TCORE_SAT_SUCCESS;
                } else {
@@ -4374,23 +4516,24 @@ static enum tcore_sat_result _sat_decode_launch_browser(unsigned char* o_cmd_dat
                return TCORE_SAT_REQUIRED_VALUE_MISSING;
        }
 
-       //bearer - optional
+       /* bearer - optional */
        if ((cmd_data[temp_index] & 0x7F) == SATK_BEARER_TAG) {
-               rv = _sat_decode_bearer_tlv(o_cmd_data, o_length, temp_index,   &sat_cmd_ind_data->data.launch_browser.bearer, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS)
+               rv = _sat_decode_bearer_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.launch_browser.bearer,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
 
-               if (temp_index + data_len_consumed >= o_length) {
+               if (temp_index  +  data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER -  No more TLVs to decode, decoding done.");
                        return TCORE_SAT_SUCCESS;
-               } else {
+               } else
                        temp_index += data_len_consumed;
-               }
        } else {
                dbg("[SAT] SAT PARSER -  Bearer TLV Not present.");
        }
 
-       //Provisioning reference file - optional
+       /* Provisioning reference file - optional */
        sat_cmd_ind_data->data.launch_browser.file_ref_count = 0;
        while ((cmd_data[temp_index] & 0x7F) == SATK_PROVISIONING_REF_FILE_TAG) {
                if (sat_cmd_ind_data->data.launch_browser.file_ref_count >= SAT_PROVISIONING_REF_MAX_COUNT) {
@@ -4398,1093 +4541,1194 @@ static enum tcore_sat_result _sat_decode_launch_browser(unsigned char* o_cmd_dat
                        return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
                }
 
-               rv = _sat_decode_provisioning_file_ref_tlv(
-                                                               o_cmd_data,
-                                                               o_length,
-                                                               temp_index,
-                                                               &sat_cmd_ind_data->data.launch_browser.file_list[sat_cmd_ind_data->data.launch_browser.file_ref_count],
-                                                               &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+               rv = _sat_decode_provisioning_file_ref_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.launch_browser.file_list[sat_cmd_ind_data->data.launch_browser.file_ref_count],
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               } else {
+               else
                        sat_cmd_ind_data->data.launch_browser.file_ref_count++;
-               }
 
-               if (temp_index + data_len_consumed >= o_length) {
+               if (temp_index  +  data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER -  No more TLVs to decode, decoding done.");
                        return TCORE_SAT_SUCCESS;
-               } else {
+               } else
                        temp_index += data_len_consumed;
-               }
        }
 
-       //text string(gateway/proxy identity) - optional
+       /* text string(gateway/proxy identity) - optional */
        if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_STRING_TAG) {
-               rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.launch_browser.gateway_proxy_text, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS)
+               rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.launch_browser.gateway_proxy_text,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
 
-               if (temp_index + data_len_consumed >= o_length) {
+               if (temp_index  +  data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER -  No more TLVs to decode, decoding done.");
                        return TCORE_SAT_SUCCESS;
-               } else {
+               } else
                        temp_index += data_len_consumed;
-               }
        }
 
-       //alpha identifier - optional
-       if((cmd_data[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
-               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.launch_browser.user_confirm_alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+       /* alpha identifier - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
+               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.launch_browser.user_confirm_alpha_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               if (temp_index + data_len_consumed >= o_length) {
+
+               if (temp_index  +  data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER -  No more TLVs to decode, decoding done.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index+=data_len_consumed;
+               temp_index += data_len_consumed;
        } else {
                dbg("[SAT] SAT PARSER -  No Alpha ID TLV.");
        }
 
-       //icon identifier - optional
+       /* icon identifier - optional */
        if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
                rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
-                               &sat_cmd_ind_data->data.launch_browser.user_confirm_icon_id, &data_len_consumed);
-
-               if (rv != TCORE_SAT_SUCCESS) {
+                       &sat_cmd_ind_data->data.launch_browser.user_confirm_icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
-               }
 
-               if (temp_index + data_len_consumed >= o_length) {
+               if (temp_index  +  data_len_consumed >= o_length) {
                        dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                        return TCORE_SAT_SUCCESS;
                }
-               temp_index += data_len_consumed; //temp_index pointing to the Tag of next TLV
+
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //ToDo:  Text Attribute, Frame Identifier
+       /*
+        * TODO:
+        *      Text Attribute, Frame Identifier
+        */
+
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.27 OPEN CHANNEL
-static enum tcore_sat_result _sat_decode_open_channel(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.27 OPEN CHANNEL
+ */
+static enum tcore_sat_result _sat_decode_open_channel(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
        gboolean b_1st_duration = FALSE;
-       int bearer_desc_len =0, data_len_consumed=0;
+       int bearer_desc_len = 0, data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.open_channel.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.open_channel.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /** command detail **/
+       /* command detail */
        sat_cmd_ind_data->data.open_channel.command_detail.cmd_qualifier.open_channel.immediate_link = FALSE;
        sat_cmd_ind_data->data.open_channel.command_detail.cmd_qualifier.open_channel.automatic_reconnection = FALSE;
        sat_cmd_ind_data->data.open_channel.command_detail.cmd_qualifier.open_channel.background_mode = FALSE;
 
-       if(cmd_data[temp_index]&0x01){
+       if (cmd_data[temp_index] & 0x01) {
                sat_cmd_ind_data->data.open_channel.command_detail.cmd_qualifier.open_channel.immediate_link = TRUE;
                dbg("[SAT] SAT PARSER - Immediate Link Establishment");
        }
 
-       if(cmd_data[temp_index]&0x02){
+       if (cmd_data[temp_index] & 0x02) {
                sat_cmd_ind_data->data.open_channel.command_detail.cmd_qualifier.open_channel.automatic_reconnection = TRUE;
                dbg("[SAT] SAT PARSER - Auto Reconnection");
        }
 
-       if(cmd_data[temp_index]&0x04){
+       if (cmd_data[temp_index] & 0x04) {
                sat_cmd_ind_data->data.open_channel.command_detail.cmd_qualifier.open_channel.background_mode = TRUE;
                dbg("[SAT] SAT PARSER - Background mode");
        }
 
-       //device identities
+       /* device identities */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
-       rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.open_channel.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       memcpy(dev_id, &cmd_data[temp_index], 4);
+       rv = _sat_decode_device_identities_tlv(dev_id,
+               &sat_cmd_ind_data->data.open_channel.device_id);
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //alpha identifier - optional
+       /* alpha identifier - optional */
        temp_index += 4;
-       if((cmd_data[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
-               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
+               rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.open_channel.alpha_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
+
+               temp_index += data_len_consumed;
        }
 
-       //icon id - optional
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
+       /* icon id - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
-               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.icon_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+               rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.open_channel.icon_id,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
+
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //bearer description
-       rv =_sat_decode_bearer_description_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_desc, &data_len_consumed);
+       /* bearer description */
+       rv = _sat_decode_bearer_description_tlv(o_cmd_data, o_length, temp_index,
+               &sat_cmd_ind_data->data.open_channel.bearer_desc,
+               &data_len_consumed);
        bearer_desc_len = data_len_consumed;
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
-       //TODO UICC SERVER MODE
 
-       switch(sat_cmd_ind_data->data.open_channel.bearer_desc.bearer_type){
-               case BEARER_CSD:
+       /*
+        * TODO -
+        *      UICC SERVER MODE
+        */
+
+       switch (sat_cmd_ind_data->data.open_channel.bearer_desc.bearer_type) {
+       case BEARER_CSD:
+               /* address */
+               rv = _sat_decode_address_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.address,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv;
 
-                       //address
-                       rv = _sat_decode_address_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.address, &data_len_consumed);
-                       if(rv != TCORE_SAT_SUCCESS) {
+               temp_index += data_len_consumed;
+
+               /* sub address - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_SUB_ADDRESS_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_subaddress_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.subaddress,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
                                return rv;
-                       }
-                       temp_index+=data_len_consumed;
-
-                       //sub address - optional
-                       if((cmd_data[temp_index]&0x7F) == SATK_SUB_ADDRESS_TAG){
-                               data_len_consumed = 0;
-                               rv = _sat_decode_subaddress_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.subaddress, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS) {
-                                       return rv;
-                               }
-                               temp_index+=data_len_consumed;
-                       }
 
-                       //time duration 1- optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_DURATION_TAG){
-                               data_len_consumed = 0;
-                               rv =_sat_decode_duration_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.duration1, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS){
-                                       return rv; //SEND TR
-                               }
-                               temp_index+=data_len_consumed;
-                               b_1st_duration = TRUE;
-                       }
+                       temp_index += data_len_consumed;
+               }
 
-                       //time duration 2- optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_DURATION_TAG){
+               /* time duration 1- optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_DURATION_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_duration_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.duration1,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv; /* Send TR */
 
-                               if(!b_1st_duration){
-                                       dbg("duration 1 does not present!");
-                                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
-                               }
+                       temp_index += data_len_consumed;
+                       b_1st_duration = TRUE;
+               }
 
-                               data_len_consumed = 0;
-                               rv =_sat_decode_duration_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.duration2, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS){
-                                       return rv; //SEND TR
-                               }
-                               temp_index+=data_len_consumed;
+               /* time duration 2- optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_DURATION_TAG) {
+
+                       if (!b_1st_duration) {
+                               dbg("duration 1 does not present!");
+                               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
                        }
 
-                       //bearer description - already did it
-                       temp_index+=bearer_desc_len;
+                       data_len_consumed = 0;
+                       rv = _sat_decode_duration_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.duration2,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv; /* Send TR */
 
-                       //buffer size
-                       rv =_sat_decode_buffer_size_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.buffer_size, &data_len_consumed);
-                       if(rv != TCORE_SAT_SUCCESS){
-                               return rv; //SEND TR
-                       }
+                       temp_index += data_len_consumed;
+               }
+
+               /* bearer description - already did it */
+               temp_index += bearer_desc_len;
+
+               /* buffer size */
+               rv = _sat_decode_buffer_size_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.open_channel.buffer_size,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
+
+               temp_index += data_len_consumed;
+               if (temp_index >= o_length) {
+                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                       return TCORE_SAT_SUCCESS;
+               }
+
+               /* other address - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_OTHER_ADDRESS_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.other_address,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv; /* Send TR */
 
-                       temp_index+=data_len_consumed;
-                       if(temp_index >= o_length){
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
                                dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                                return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //other address - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_OTHER_ADDRESS_TAG){
-                               data_len_consumed = 0;
-                               rv =_sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.other_address, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS){
-                                       return rv; //SEND TR
-                               }
+               /* text string - user login - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_STRING_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.text_user_login,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv;
 
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //text string - user login - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_TEXT_STRING_TAG){
-                               data_len_consumed = 0;
-                               rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.text_user_login, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS)
-                                       return rv;
-
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
-                       }
+               /* text string - user password - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_STRING_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.text_user_pwd,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv;
 
-                       //text string - user password - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_TEXT_STRING_TAG){
-                               data_len_consumed = 0;
-                               rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.cs_bearer.text_user_pwd, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS)
-                                       return rv;
-
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //UICC/TERMINAL interface transport level - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_USIM_ME_INTERFACE_TRANSPORT_LEVEL_TAG){
-                               data_len_consumed = 0;
-                               rv = _sat_decode_uicc_terminal_interface_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.interface_transport_level, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS)
-                                       return rv;
-
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+               /* UICC/TERMINAL interface transport level - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_USIM_ME_INTERFACE_TRANSPORT_LEVEL_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_uicc_terminal_interface_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.interface_transport_level,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv;
+
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //destination address - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_OTHER_ADDRESS_TAG){
-                               data_len_consumed = 0;
-                               rv =_sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.data_destination_address, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS){
-                                       return rv; //SEND TR
-                               }
+               /* destination address - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_OTHER_ADDRESS_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.data_destination_address,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv; /* Send TR */
 
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
+       break;
 
-                       break;
-               case BEARER_GPRS:
-                       //bearer description - already did it
-                       temp_index+=bearer_desc_len;
-
-                       //buffer size
-                       rv =_sat_decode_buffer_size_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.buffer_size, &data_len_consumed);
-                       if(rv != TCORE_SAT_SUCCESS){
-                               return rv; //SEND TR
-                       }
+       case BEARER_GPRS:
+               /* bearer description - already did it */
+               temp_index += bearer_desc_len;
+
+               /* buffer size */
+               rv = _sat_decode_buffer_size_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.open_channel.buffer_size,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-                       temp_index+=data_len_consumed;
-                       if(temp_index >= o_length){
+               temp_index += data_len_consumed;
+               if (temp_index >= o_length) {
+                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                       return TCORE_SAT_SUCCESS;
+               }
+
+               /* Network Access Name - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_NETWORK_ACCESS_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_network_access_name_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.ps_bearer.network_access_name,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv; /* Send TR */
+
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
                                dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                                return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //Network Access Name - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_NETWORK_ACCESS_TAG){
-                               data_len_consumed = 0;
-                               rv =_sat_decode_network_access_name_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.ps_bearer.network_access_name, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS){
-                                       return rv; //SEND TR
-                               }
+               /* other address - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_OTHER_ADDRESS_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.ps_bearer.other_address,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv; /* Send TR */
 
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //other address - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_OTHER_ADDRESS_TAG){
-                               data_len_consumed = 0;
-                               rv =_sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.ps_bearer.other_address, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS){
-                                       return rv; //SEND TR
-                               }
+               /* text string - user login - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_STRING_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.ps_bearer.text_user_login,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv;
 
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //text string - user login - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_TEXT_STRING_TAG){
-                               data_len_consumed = 0;
-                               rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.ps_bearer.text_user_login, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS)
-                                       return rv;
-
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
-                       }
+               /* text string - user password - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_STRING_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.ps_bearer.text_user_pwd,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv;
 
-                       //text string - user password - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_TEXT_STRING_TAG){
-                               data_len_consumed = 0;
-                               rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.ps_bearer.text_user_pwd, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS)
-                                       return rv;
-
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //UICC/TERMINAL interface transport level - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_USIM_ME_INTERFACE_TRANSPORT_LEVEL_TAG){
-                               data_len_consumed = 0;
-                               rv = _sat_decode_uicc_terminal_interface_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.interface_transport_level, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS)
-                                       return rv;
-
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+               /* UICC/TERMINAL interface transport level - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_USIM_ME_INTERFACE_TRANSPORT_LEVEL_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_uicc_terminal_interface_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.interface_transport_level,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv;
+
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       dbg("the value (0x%x) after interface transport level", cmd_data[temp_index]&0x7F);
+               dbg("the value (0x%x) after interface transport level", cmd_data[temp_index] & 0x7F);
 
-                       //destination address - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_OTHER_ADDRESS_TAG){
-                               data_len_consumed = 0;
-                               rv =_sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.data_destination_address, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS){
-                                       return rv; //SEND TR
-                               }
+               /* destination address - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_OTHER_ADDRESS_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.data_destination_address,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv; /* Send TR */
 
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
+       break;
 
-                       break;
-               case BEARER_DEFAULT_BEARER_FROM_TRANSPORT_LAYER:
-                       //bearer description - already did it
-                       temp_index+=bearer_desc_len;
-
-                       //buffer size
-                       rv =_sat_decode_buffer_size_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.buffer_size, &data_len_consumed);
-                       if(rv != TCORE_SAT_SUCCESS){
-                               return rv; //SEND TR
-                       }
+       case BEARER_DEFAULT_BEARER_FROM_TRANSPORT_LAYER:
+               /* bearer description - already did it */
+               temp_index += bearer_desc_len;
+
+               /* buffer size */
+               rv = _sat_decode_buffer_size_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.open_channel.buffer_size,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-                       temp_index+=data_len_consumed;
-                       if(temp_index >= o_length){
+               temp_index += data_len_consumed;
+               if (temp_index >= o_length) {
+                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                       return TCORE_SAT_SUCCESS;
+               }
+
+               /* other address - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_OTHER_ADDRESS_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.default_bearer.other_address,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv; /* Send TR */
+
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
                                dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                                return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //other address - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_OTHER_ADDRESS_TAG){
-                               data_len_consumed = 0;
-                               rv =_sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.default_bearer.other_address, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS){
-                                       return rv; //SEND TR
-                               }
+               /* text string - user login - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_STRING_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.default_bearer.text_user_login,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv;
 
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //text string - user login - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_TEXT_STRING_TAG){
-                               data_len_consumed = 0;
-                               rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.default_bearer.text_user_login, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS)
-                                       return rv;
-
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
-                       }
+               /* text string - user password - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_STRING_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.default_bearer.text_user_pwd,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv;
 
-                       //text string - user password - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_TEXT_STRING_TAG){
-                               data_len_consumed = 0;
-                               rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.default_bearer.text_user_pwd, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS)
-                                       return rv;
-
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //UICC/TERMINAL interface transport level - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_USIM_ME_INTERFACE_TRANSPORT_LEVEL_TAG){
-                               data_len_consumed = 0;
-                               rv = _sat_decode_uicc_terminal_interface_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.interface_transport_level, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS)
-                                       return rv;
-
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+               /* UICC/TERMINAL interface transport level - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_USIM_ME_INTERFACE_TRANSPORT_LEVEL_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_uicc_terminal_interface_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.interface_transport_level,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv;
+
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //destination address - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_OTHER_ADDRESS_TAG){
-                               data_len_consumed = 0;
-                               rv =_sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.data_destination_address, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS){
-                                       return rv; //SEND TR
-                               }
+               /* destination address - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_OTHER_ADDRESS_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.data_destination_address,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv; /* Send TR */
 
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
+       break;
 
-                       break;
-               case BEARER_LOCAL_LINK_TECHNOLOGY_INDEPENDENT:
-
-                       //time duration 1- optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_DURATION_TAG){
-                               data_len_consumed = 0;
-                               rv =_sat_decode_duration_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.local_bearer.duration1, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS){
-                                       return rv; //SEND TR
-                               }
-                               temp_index+=data_len_consumed;
-                               b_1st_duration = TRUE;
+       case BEARER_LOCAL_LINK_TECHNOLOGY_INDEPENDENT:
+               /* time duration 1- optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_DURATION_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_duration_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.local_bearer.duration1,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv; /* Send TR */
+
+                       temp_index += data_len_consumed;
+                       b_1st_duration = TRUE;
+               }
+
+               /* time duration 2- optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_DURATION_TAG) {
+                       if (!b_1st_duration) {
+                               dbg("duration 1 does not present!");
+                               return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
                        }
 
-                       //time duration 2- optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_DURATION_TAG){
+                       data_len_consumed = 0;
+                       rv = _sat_decode_duration_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.local_bearer.duration2,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv; /* Send TR */
 
-                               if(!b_1st_duration){
-                                       dbg("duration 1 does not present!");
-                                       return TCORE_SAT_COMMAND_NOT_UNDERSTOOD;
-                               }
+                       temp_index += data_len_consumed;
+               }
 
-                               data_len_consumed = 0;
-                               rv =_sat_decode_duration_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.local_bearer.duration2, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS){
-                                       return rv; //SEND TR
-                               }
-                               temp_index+=data_len_consumed;
-                       }
+               /* bearer description - already did it */
+               temp_index += bearer_desc_len;
 
-                       //bearer description - already did it
-                       temp_index+=bearer_desc_len;
+               /* buffer size */
+               rv = _sat_decode_buffer_size_tlv(o_cmd_data, o_length, temp_index,
+                       &sat_cmd_ind_data->data.open_channel.buffer_size,
+                       &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-                       //buffer size
-                       rv =_sat_decode_buffer_size_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.buffer_size, &data_len_consumed);
-                       if(rv != TCORE_SAT_SUCCESS){
-                               return rv; //SEND TR
-                       }
+               temp_index += data_len_consumed;
+               if (temp_index >= o_length) {
+                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                       return TCORE_SAT_SUCCESS;
+               }
+
+               /* text string - user password - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_TEXT_STRING_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.local_bearer.text_user_pwd,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv;
 
-                       temp_index+=data_len_consumed;
-                       if(temp_index >= o_length){
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
                                dbg("[SAT] SAT PARSER - no more TLVs to decode.");
                                return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //text string - user password - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_TEXT_STRING_TAG){
-                               data_len_consumed = 0;
-                               rv = _sat_decode_text_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.local_bearer.text_user_pwd, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS)
-                                       return rv;
-
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
-                       }
+               /* UICC/TERMINAL interface transport level - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_USIM_ME_INTERFACE_TRANSPORT_LEVEL_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_uicc_terminal_interface_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.interface_transport_level,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv;
 
-                       //UICC/TERMINAL interface transport level - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_USIM_ME_INTERFACE_TRANSPORT_LEVEL_TAG){
-                               data_len_consumed = 0;
-                               rv = _sat_decode_uicc_terminal_interface_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.interface_transport_level, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS)
-                                       return rv;
-
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //destination address - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_OTHER_ADDRESS_TAG){
-                               data_len_consumed = 0;
-                               rv =_sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.data_destination_address, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS){
-                                       return rv; //SEND TR
-                               }
+               /* destination address - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_OTHER_ADDRESS_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_other_address_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.data_destination_address,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv; /* Send TR */
 
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
 
-                       //remote entity address - optional
-                       if((cmd_data[temp_index]&0x7F)==SATK_REMOTE_ENTITY_ADDRESS_TAG){
-                               data_len_consumed = 0;
-                               rv =_sat_decode_remote_entity_address_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.open_channel.bearer_detail.local_bearer.remote_entity_address, &data_len_consumed);
-                               if(rv != TCORE_SAT_SUCCESS){
-                                       return rv; //SEND TR
-                               }
+               /* remote entity address - optional */
+               if ((cmd_data[temp_index] & 0x7F) == SATK_REMOTE_ENTITY_ADDRESS_TAG) {
+                       data_len_consumed = 0;
+                       rv = _sat_decode_remote_entity_address_tlv(o_cmd_data, o_length, temp_index,
+                               &sat_cmd_ind_data->data.open_channel.bearer_detail.local_bearer.remote_entity_address,
+                               &data_len_consumed);
+                       if (rv != TCORE_SAT_SUCCESS)
+                               return rv; /* Send TR */
 
-                               temp_index+=data_len_consumed;
-                               if(temp_index >= o_length){
-                                       dbg("[SAT] SAT PARSER - no more TLVs to decode.");
-                                       return TCORE_SAT_SUCCESS;
-                               }
+                       temp_index += data_len_consumed;
+                       if (temp_index >= o_length) {
+                               dbg("[SAT] SAT PARSER - no more TLVs to decode.");
+                               return TCORE_SAT_SUCCESS;
                        }
+               }
+       break;
 
-                       break;
-               default:
-                       break;
-       }//end of switch
+       default:
+       break;
+       } /* end of switch */
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.28 CLOSE CHANNEL
-static enum tcore_sat_result _sat_decode_close_channel(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.28 CLOSE CHANNEL
+ */
+static enum tcore_sat_result _sat_decode_close_channel(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
-       int data_len_consumed=0;
+       int data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.close_channel.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.close_channel.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /** command detail **/
-       temp_index++; //RFU
+       /* command detail */
+       temp_index++; /* RFU */
 
-       //device identities
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       /* device identities */
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.close_channel.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //alpha identifier - optional
+       /* alpha identifier - optional */
        temp_index += 4;
-       if((cmd_data[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
                rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.close_channel.alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
+
+               temp_index += data_len_consumed;
        }
 
-       //icon id - optional
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
+       /* icon id - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
                rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.close_channel.icon_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
+
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //ToDo:  Text Attribute and frames
+       /*
+        * TODO:
+        *      Text Attribute and frames
+        */
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.29 RECEIVE DATA
-static enum tcore_sat_result _sat_decode_receive_data(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.29 RECEIVE DATA
+ */
+static enum tcore_sat_result _sat_decode_receive_data(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
-       int data_len_consumed=0;
+       int data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.receive_data.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.receive_data.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /** command detail **/
-       temp_index++; //RFU
+       /* command detail */
+       temp_index++; /* RFU */
 
-       //device identities
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       /* device identities */
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.receive_data.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //alpha identifier - optional
+       /* alpha identifier - optional */
        temp_index += 4;
-       if((cmd_data[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
                rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.receive_data.alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
+
+               temp_index += data_len_consumed;
        }
 
-       //icon id - optional
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
+       /* icon id - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
                rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.receive_data.icon_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
-       }
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-       //channel data length
-       rv =_sat_decode_channel_data_length_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.receive_data.channel_data_len, &data_len_consumed);
-       if(rv != TCORE_SAT_SUCCESS){
-               return rv; //SEND TR
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //ToDo:  Text Attribute and frames
+       /* channel data length */
+       rv = _sat_decode_channel_data_length_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.receive_data.channel_data_len, &data_len_consumed);
+       if (rv != TCORE_SAT_SUCCESS)
+               return rv; /* Send TR */
+
+       /*
+        * TODO:
+        *      Text Attribute and frames
+        */
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.30 SEND DATA
-static enum tcore_sat_result _sat_decode_send_data(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.30 SEND DATA
+ */
+static enum tcore_sat_result _sat_decode_send_data(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
-       int data_len_consumed=0;
+       int data_len_consumed = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.send_data.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.send_data.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /** command detail **/
+       /* command detail */
        sat_cmd_ind_data->data.send_data.command_detail.cmd_qualifier.send_data.send_data_immediately = FALSE;
-       if(cmd_data[temp_index]&0x01){
+       if (cmd_data[temp_index] & 0x01) {
                sat_cmd_ind_data->data.send_data.command_detail.cmd_qualifier.send_data.send_data_immediately = TRUE;
                dbg("[SAT] SAT PARSER - Send data immediately");
        }
 
-       //device identities
+       /* device identities */
        temp_index++;
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.send_data.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
-       //alpha identifier - optional
+       /* alpha identifier - optional */
        temp_index += 4;
-       if((cmd_data[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
                rv = _sat_decode_alpha_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_data.alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
+
+               temp_index += data_len_consumed;
        }
 
-       //icon id - optional
-       if((cmd_data[temp_index]&0x7F) == SATK_ICON_IDENTIFIER_TAG){
+       /* icon id - optional */
+       if ((cmd_data[temp_index] & 0x7F) == SATK_ICON_IDENTIFIER_TAG) {
                data_len_consumed = 0;
                rv = _sat_decode_icon_identifier_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_data.icon_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
-               temp_index+=data_len_consumed; //temp_index pointing to the Tag of next TLV
-       }
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-       //channel data
-       rv =_sat_decode_channel_data_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_data.channel_data, &data_len_consumed);
-       if(rv != TCORE_SAT_SUCCESS){
-               return rv; //SEND TR
+               temp_index += data_len_consumed; /* temp_index pointing to the Tag of next TLV */
        }
 
-       //ToDo:  Text Attribute and frames
+       /* channel data */
+       rv = _sat_decode_channel_data_tlv(o_cmd_data, o_length, temp_index, &sat_cmd_ind_data->data.send_data.channel_data, &data_len_consumed);
+       if (rv != TCORE_SAT_SUCCESS)
+               return rv; /* Send TR */
+
+       /*
+        * TODO:
+        *      Text Attribute and frames
+        */
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.31 GET CHANNEL STATUS
-static enum tcore_sat_result _sat_decode_get_channel_status(unsigned char* o_cmd_data, int o_length,
-               int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
+/*
+ * 6.4.31 GET CHANNEL STATUS
+ */
+static enum tcore_sat_result _sat_decode_get_channel_status(unsigned char *o_cmd_data, int o_length,
+       int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.get_channel_status.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.get_channel_status.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /** command detail **/
-       temp_index++; //RFU
+       /* command detail */
+       temp_index++; /* RFU */
 
-       //device identities
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       /* device identities */
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.get_channel_status.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-//6.4.XX Unsupported Command
-static enum tcore_sat_result _sat_decode_unsupported_command(unsigned char* o_cmd_data, int o_length,
+/*
+ * 6.4.XX Unsupported Command
+ */
+static enum tcore_sat_result _sat_decode_unsupported_command(unsigned char *o_cmd_data, int o_length,
                int curr_offset, struct tcore_sat_proactive_command *sat_cmd_ind_data)
 {
        int temp_index = 0;
        unsigned char dev_id[4];
-       unsigned charcmd_data = NULL;
+       unsigned char *cmd_data = NULL;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(o_cmd_data == NULL){
+       if (o_cmd_data == NULL) {
                dbg("[SAT] SAT PARSER -  o_cmd_data == NULL");
                return TCORE_SAT_ERROR_FATAL;
        }
 
        cmd_data = &o_cmd_data[0];
-       temp_index = curr_offset+2;
+       temp_index = curr_offset + 2;
        sat_cmd_ind_data->data.unsupport_cmd.command_detail.cmd_num = cmd_data[temp_index++];
        sat_cmd_ind_data->data.unsupport_cmd.command_detail.cmd_type = cmd_data[temp_index++];
 
-       /** command detail **/
-       temp_index++; //RFU
+       /* command detail */
+       temp_index++; /* RFU */
 
-       //device identities
-       memcpy(dev_id,&cmd_data[temp_index],4);
+       /* device identities */
+       memcpy(dev_id, &cmd_data[temp_index], 4);
        rv = _sat_decode_device_identities_tlv(dev_id, &sat_cmd_ind_data->data.unsupport_cmd.device_id);
-       if(rv != TCORE_SAT_SUCCESS)
+       if (rv != TCORE_SAT_SUCCESS)
                return rv;
 
        dbg("[SAT] SAT PARSER - :decoding done!.");
        return TCORE_SAT_SUCCESS;
 }
 
-int tcore_sat_decode_proactive_command(unsigned chartlv_origin, unsigned int tlv_length,
-               struct tcore_sat_proactive_command* decoded_tlv)
+int tcore_sat_decode_proactive_command(unsigned char *tlv_origin, unsigned int tlv_length,
+       struct tcore_sat_proactive_command *decoded_tlv)
 {
        unsigned int temp_index = 0;
        int length_field_len = 0;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(tlv_origin == NULL || tlv_length <=2) {
+       if (tlv_origin == NULL || tlv_length <= 2) {
                dbg("[SAT] SAT PARSER - pointer pData passed is NULL or invalid length.");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //tag
-       if(tlv_origin[temp_index++]!= SATK_PROACTIVE_CMD_TAG) {
+       /* tag */
+       if (tlv_origin[temp_index++] !=  SATK_PROACTIVE_CMD_TAG) {
                dbg("[SAT] SAT PARSER - Did not find Proactive command tag.tag=%d", tlv_origin[temp_index-1]);
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //length
+       /* length */
        length_field_len = _get_length_filed_size(tlv_origin[temp_index]);
-       if(length_field_len == 0) {
+       if (length_field_len == 0) {
                dbg("[SAT] SAT PARSER - Invalid length.");
                return TCORE_SAT_ERROR_FATAL;
        }
-       //length
+
+       /* length */
        dbg("[SAT] SAT PARSER - tlv_length=%d", tlv_length);
-       temp_index+=length_field_len;
+       temp_index += length_field_len;
 
-       //check command validation
-       if(tlv_length < temp_index+5+4)//command detail(5) and device identities(4)
+       /* check command validation */
+       if (tlv_length < temp_index + 5 + 4)/* command detail(5) and device identities(4) */
                return TCORE_SAT_ERROR_FATAL;
 
-       //check comprehensive value
-       if((tlv_origin[temp_index] | 0x7F) != 0x7F){
+       /* check comprehensive value */
+       if ((tlv_origin[temp_index] | 0x7F) != 0x7F) {
                dbg("comprehensive value 0x%x", tlv_origin[temp_index] | 0x7F);
                b_comprehensive = TRUE;
        }
 
-       if( (tlv_origin[temp_index] & 0x7F) != SATK_COMMAND_DETAILS_TAG){
+       if ((tlv_origin[temp_index] & 0x7F) != SATK_COMMAND_DETAILS_TAG) {
                err("[SAT] no command detail info");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       if( tlv_origin[temp_index+1] != SATK_COMMAND_DETAILS_LENGTH){
+       if (tlv_origin[temp_index + 1] != SATK_COMMAND_DETAILS_LENGTH) {
                err("[SAT] invalid command detail length");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       decoded_tlv->cmd_num= tlv_origin[temp_index+2];
-       decoded_tlv->cmd_type = tlv_origin[temp_index+3];
-
-       switch(decoded_tlv->cmd_type) {
-               case SAT_PROATV_CMD_DISPLAY_TEXT: //6.4.1
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_DISPLAY_TEXT");
-                       rv = _sat_decode_display_text(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_GET_INKEY: //6.4.2
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_GET_INKEY");
-                       rv = _sat_decode_get_inkey(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_GET_INPUT: //6.4.3
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_GET_INPUT");
-                       rv = _sat_decode_get_input(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_MORE_TIME: //6.4.4
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_MORE_TIME");
-                       rv = _sat_decode_more_time(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_PLAY_TONE: //6.4.5
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_PLAY TONE");
-                       rv = _sat_decode_play_tone(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               //case POLL INTERVAL //6.4.6 processing by cp
-               case SAT_PROATV_CMD_REFRESH: //6.4.7
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_REFRESH");
-                       rv = _sat_decode_refresh(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_SETUP_MENU: //6.4.8
-                       dbg("[SAT] SAT PARSER - SAT_PROATV_CMD_SETUP_MENU");
-                       rv = _sat_decode_setup_menu(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_SELECT_ITEM: //6.4.9
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SELECT_ITEM");
-                       rv = _sat_decode_select_item(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_SEND_SMS: //6.4.10
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SEND_SMS");
-                       rv = _sat_decode_send_sms(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_SEND_SS: //6.4.11
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SEND_SS");
-                       rv = _sat_decode_send_ss(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_SEND_USSD: //6.4.12
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SEND_USSD");
-                       rv = _sat_decode_send_ussd(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_SETUP_CALL: //6.4.13
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SETUP_CALL");
-                       rv = _sat_decode_setup_call(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_PROVIDE_LOCAL_INFO: //6.4.15
-                       dbg("[SAT] SAT PARSER - SAT_PROATV_CMD_PROVIDE_LOCAL_INFO");
-                       rv = _sat_decode_provide_local_info(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_SETUP_EVENT_LIST: //6.4.16
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SETUP_EVENT_LIST");
-                       rv = _sat_decode_setup_event_list(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_SETUP_IDLE_MODE_TEXT: //6.4.22
-                       dbg("[SAT] SAT PARSER - SAT_PROATV_CMD_SETUP_IDLE_MODE_TEXT");
-                       rv = _sat_decode_setup_idle_mode_text(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_SEND_DTMF: //6.4.24
-                       dbg("[SAT] SAT PARSER - SAT_PROATV_CMD_SEND_DTMF");
-                       rv = _sat_decode_send_dtmf(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_LANGUAGE_NOTIFICATION: //6.4.25
-                       dbg("[SAT] SAT PARSER - SAT_PROATV_CMD_LANGUAGE_NOTIFICATION");
-                       rv = _sat_decode_language_notification(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_LAUNCH_BROWSER: //6.4.26
-                       dbg("[SAT] SAT PARSER - SAT_PROATV_CMD_LAUNCH_BROWSER");
-                       rv = _sat_decode_launch_browser(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_OPEN_CHANNEL://6.4.27
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_OPEN_CHANNEL");
-                       rv = _sat_decode_open_channel(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_CLOSE_CHANNEL://6.4.28
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_CLOSE_CHANNEL");
-                       rv = _sat_decode_close_channel(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_RECEIVE_DATA://6.4.29
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_RECEIVE_DATA");
-                       rv = _sat_decode_receive_data(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_SEND_DATA://6.4.30
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SEND_DATA");
-                       rv = _sat_decode_send_data(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               case SAT_PROATV_CMD_GET_CHANNEL_STATUS://6.4.31
-                       dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_GET_CHANNEL_STATUS");
-                       rv = _sat_decode_get_channel_status(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
-               default:
-                       dbg("[SAT] SAT PARSER - ME cannot perform this command =0x[%02x]", decoded_tlv->cmd_type);
-                       rv = _sat_decode_unsupported_command(tlv_origin, tlv_length, temp_index, decoded_tlv);
-                       break;
+       decoded_tlv->cmd_num = tlv_origin[temp_index + 2];
+       decoded_tlv->cmd_type = tlv_origin[temp_index + 3];
+
+       switch (decoded_tlv->cmd_type) {
+       case SAT_PROATV_CMD_DISPLAY_TEXT: /* 6.4.1 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_DISPLAY_TEXT");
+               rv = _sat_decode_display_text(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_GET_INKEY: /* 6.4.2 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_GET_INKEY");
+               rv = _sat_decode_get_inkey(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_GET_INPUT: /* 6.4.3 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_GET_INPUT");
+               rv = _sat_decode_get_input(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_MORE_TIME: /* 6.4.4 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_MORE_TIME");
+               rv = _sat_decode_more_time(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_PLAY_TONE: /* 6.4.5 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_PLAY TONE");
+               rv = _sat_decode_play_tone(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       /* case POLL INTERVAL //6.4.6 processing by cp */
+       case SAT_PROATV_CMD_REFRESH: /* 6.4.7 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_REFRESH");
+               rv = _sat_decode_refresh(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_SETUP_MENU: /* 6.4.8 */
+               dbg("[SAT] SAT PARSER - SAT_PROATV_CMD_SETUP_MENU");
+               rv = _sat_decode_setup_menu(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_SELECT_ITEM: /* 6.4.9 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SELECT_ITEM");
+               rv = _sat_decode_select_item(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_SEND_SMS: /* 6.4.10 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SEND_SMS");
+               rv = _sat_decode_send_sms(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_SEND_SS: /* 6.4.11 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SEND_SS");
+               rv = _sat_decode_send_ss(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_SEND_USSD: /* 6.4.12 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SEND_USSD");
+               rv = _sat_decode_send_ussd(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_SETUP_CALL: /* 6.4.13 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SETUP_CALL");
+               rv = _sat_decode_setup_call(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_PROVIDE_LOCAL_INFO: /* 6.4.15 */
+               dbg("[SAT] SAT PARSER - SAT_PROATV_CMD_PROVIDE_LOCAL_INFO");
+               rv = _sat_decode_provide_local_info(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_SETUP_EVENT_LIST: /* 6.4.16 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SETUP_EVENT_LIST");
+               rv = _sat_decode_setup_event_list(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_SETUP_IDLE_MODE_TEXT: /* 6.4.22 */
+               dbg("[SAT] SAT PARSER - SAT_PROATV_CMD_SETUP_IDLE_MODE_TEXT");
+               rv = _sat_decode_setup_idle_mode_text(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_SEND_DTMF: /* 6.4.24 */
+               dbg("[SAT] SAT PARSER - SAT_PROATV_CMD_SEND_DTMF");
+               rv = _sat_decode_send_dtmf(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_LANGUAGE_NOTIFICATION: /* 6.4.25 */
+               dbg("[SAT] SAT PARSER - SAT_PROATV_CMD_LANGUAGE_NOTIFICATION");
+               rv = _sat_decode_language_notification(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_LAUNCH_BROWSER: /* 6.4.26 */
+               dbg("[SAT] SAT PARSER - SAT_PROATV_CMD_LAUNCH_BROWSER");
+               rv = _sat_decode_launch_browser(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_OPEN_CHANNEL:/* 6.4.27 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_OPEN_CHANNEL");
+               rv = _sat_decode_open_channel(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_CLOSE_CHANNEL:/* 6.4.28 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_CLOSE_CHANNEL");
+               rv = _sat_decode_close_channel(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_RECEIVE_DATA:/* 6.4.29 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_RECEIVE_DATA");
+               rv = _sat_decode_receive_data(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_SEND_DATA:/* 6.4.30 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_SEND_DATA");
+               rv = _sat_decode_send_data(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       case SAT_PROATV_CMD_GET_CHANNEL_STATUS:/* 6.4.31 */
+               dbg("[SAT] SAT PARSER - SAT_CMD_TYPE_GET_CHANNEL_STATUS");
+               rv = _sat_decode_get_channel_status(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
+
+       default:
+               dbg("[SAT] SAT PARSER - ME cannot perform this command =0x[%02x]", decoded_tlv->cmd_type);
+               rv = _sat_decode_unsupported_command(tlv_origin, tlv_length, temp_index, decoded_tlv);
+       break;
        }
 
        dbg("[SAT] SAT PARSER - each command parsing done.");
        return rv;
 }
 
-int tcore_sat_decode_call_control_result(unsigned char* tlv_origin, unsigned int tlv_length, struct tnoti_sat_call_control_result_ind* call_ctrl_result_tlv)
+int tcore_sat_decode_call_control_result(unsigned char *tlv_origin, unsigned int tlv_length, struct tnoti_sat_call_control_result_ind *call_ctrl_result_tlv)
 {
        unsigned int temp_index = 0;
        int length = 0, data_len = 0, data_len_consumed = 0;
        enum tcore_sat_result rv = TCORE_SAT_SUCCESS;
 
-       if(tlv_origin == NULL || tlv_length <=2) {
+       if (tlv_origin == NULL || tlv_length <= 2) {
                dbg("[SAT] SAT PARSER - pointer pData passed is NULL or invalid length.");
                return TCORE_SAT_ERROR_FATAL;
        }
 
-       //call conrol result
+       /* call conrol result */
        call_ctrl_result_tlv->cc_result = tlv_origin[temp_index++];
        length = _get_length_filed_size(tlv_origin[temp_index]);
-       if(length == 0){
+       if (length == 0) {
                dbg("[SAT] fail to get the call control result length");
                return TCORE_SAT_ERROR_FATAL;
        }
-       temp_index = temp_index+length-1;
+
+       temp_index = temp_index + length-1;
        data_len = tlv_origin[temp_index];
-       dbg("[SAT] call control result (%d), data len(%d)",call_ctrl_result_tlv->cc_result, data_len);
-       if(data_len == 0){
+       dbg("[SAT] call control result (%d), data len(%d)", call_ctrl_result_tlv->cc_result, data_len);
+       if (data_len == 0) {
                dbg("no more call control result - decoding done");
                return rv;
        }
        temp_index++;
 
-       //address - optional (voice call)
-       if((tlv_origin[temp_index]&0x7F) == SATK_ADDRESS_TAG){
+       /* address - optional (voice call) */
+       if ((tlv_origin[temp_index] & 0x7F) == SATK_ADDRESS_TAG) {
                rv = _sat_decode_address_tlv(tlv_origin, tlv_length, temp_index, &call_ctrl_result_tlv->address, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
 
-               if(temp_index >= tlv_length){
+               temp_index += data_len_consumed;
+
+               if (temp_index >= tlv_length) {
                        dbg("[SAT] call control decoding done");
                        return TCORE_SAT_SUCCESS;
                }
        }
 
-       //ss string - optional (ss)
-       if((tlv_origin[temp_index]&0x7F) == SATK_SS_STRING_TAG){
+       /* ss string - optional (ss) */
+       if ((tlv_origin[temp_index] & 0x7F) == SATK_SS_STRING_TAG) {
                rv = _sat_decode_ss_string_tlv(tlv_origin, tlv_length, temp_index, &call_ctrl_result_tlv->ss_string, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
 
-               if(temp_index >= tlv_length){
+               temp_index += data_len_consumed;
+
+               if (temp_index >= tlv_length) {
                        dbg("[SAT] call control decoding done");
                        return TCORE_SAT_SUCCESS;
                }
        }
 
-       //ccp1 - optional
-       if((tlv_origin[temp_index]&0x7F)==SATK_CAPABILITY_CONFIGURATION_PARAMETERS_TAG){
-               rv =_sat_decode_ccp_tlv(tlv_origin, tlv_length, temp_index, &call_ctrl_result_tlv->ccp1, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
-               temp_index+=data_len_consumed;
+       /* ccp1 - optional */
+       if ((tlv_origin[temp_index] & 0x7F) == SATK_CAPABILITY_CONFIGURATION_PARAMETERS_TAG) {
+               rv = _sat_decode_ccp_tlv(tlv_origin, tlv_length, temp_index, &call_ctrl_result_tlv->ccp1, &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
+
+               temp_index += data_len_consumed;
 
-               if(temp_index >= tlv_length){
+               if (temp_index >= tlv_length) {
                        dbg("[SAT] call control decoding done");
                        return TCORE_SAT_SUCCESS;
                }
        }
 
-       //sub address
-       if((tlv_origin[temp_index]&0x7F) == SATK_SUB_ADDRESS_TAG){
+       /* sub address */
+       if ((tlv_origin[temp_index] & 0x7F) == SATK_SUB_ADDRESS_TAG) {
                rv = _sat_decode_sub_address_tlv(tlv_origin, tlv_length, temp_index, &call_ctrl_result_tlv->sub_address, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
 
-               if(temp_index >= tlv_length){
+               temp_index += data_len_consumed;
+
+               if (temp_index >= tlv_length) {
                        dbg("[SAT] call control decoding done");
                        return TCORE_SAT_SUCCESS;
                }
        }
 
-       //alpha id
-       if((tlv_origin[temp_index]&0x7F) == SATK_ALPHA_IDENTIFIER_TAG){
+       /* alpha id */
+       if ((tlv_origin[temp_index] & 0x7F) == SATK_ALPHA_IDENTIFIER_TAG) {
                rv = _sat_decode_alpha_identifier_tlv(tlv_origin, tlv_length, temp_index, &call_ctrl_result_tlv->alpha_id, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS) {
+               if (rv != TCORE_SAT_SUCCESS)
                        return rv;
-               }
-               temp_index+=data_len_consumed;
 
-               if(temp_index >= tlv_length){
+               temp_index += data_len_consumed;
+
+               if (temp_index >= tlv_length) {
                        dbg("[SAT] call control decoding done");
                        return TCORE_SAT_SUCCESS;
                }
        }
 
-       //bc repeated indicator
-       if((tlv_origin[temp_index]&0x7F) == SATK_BC_REPEAT_INDICATOR_TAG){
+       /* bc repeated indicator */
+       if ((tlv_origin[temp_index] & 0x7F) == SATK_BC_REPEAT_INDICATOR_TAG) {
                int tag = 0;
                int bc_repeat_ind_len = 0;
 
@@ -5493,21 +5737,21 @@ int tcore_sat_decode_call_control_result(unsigned char* tlv_origin, unsigned int
                call_ctrl_result_tlv->bc_repeat_type.bc_indi_repeat_type = tlv_origin[temp_index++];
 
                dbg("bc repeated indication tag(%x) len(%x) type(%x)", tag, bc_repeat_ind_len, call_ctrl_result_tlv->bc_repeat_type.bc_indi_repeat_type);
-               if(temp_index >= tlv_length){
+               if (temp_index >= tlv_length) {
                        dbg("[SAT] call control decoding done");
                        return TCORE_SAT_SUCCESS;
                }
        }
 
-       //ccp2
-       if((tlv_origin[temp_index]&0x7F)==SATK_CAPABILITY_CONFIGURATION_PARAMETERS_TAG){
-               rv =_sat_decode_ccp_tlv(tlv_origin, tlv_length, temp_index, &call_ctrl_result_tlv->ccp2, &data_len_consumed);
-               if(rv != TCORE_SAT_SUCCESS){
-                       return rv; //SEND TR
-               }
-               temp_index+=data_len_consumed;
+       /* ccp2 */
+       if ((tlv_origin[temp_index] & 0x7F) == SATK_CAPABILITY_CONFIGURATION_PARAMETERS_TAG) {
+               rv = _sat_decode_ccp_tlv(tlv_origin, tlv_length, temp_index, &call_ctrl_result_tlv->ccp2, &data_len_consumed);
+               if (rv != TCORE_SAT_SUCCESS)
+                       return rv; /* Send TR */
 
-               if(temp_index >= tlv_length){
+               temp_index += data_len_consumed;
+
+               if (temp_index >= tlv_length) {
                        dbg("[SAT] call control decoding done");
                        return TCORE_SAT_SUCCESS;
                }
@@ -5516,57 +5760,56 @@ int tcore_sat_decode_call_control_result(unsigned char* tlv_origin, unsigned int
        return rv;
 }
 
-static unsigned char _sat_encode_dcs_tlv(const struct data_coding_schemesrc)
+static unsigned char _sat_encode_dcs_tlv(const struct data_coding_scheme *src)
 {
        unsigned char rv = 0x00;
 
-       if(src == NULL)
+       if (src == NULL)
                return 0;
 
-       if(src->is_compressed_format)
+       if (src->is_compressed_format)
                rv |= 0x20;
 
-       //msg class
-       switch(src->m_class){
-               case MSG_CLASS_0:
-               case MSG_CLASS_1:
-               case MSG_CLASS_2:
-               case MSG_CLASS_3:
-                       rv |= 0x10;
-                       rv |= src->m_class;
-               break;
+       /* msg class */
+       switch (src->m_class) {
+       case MSG_CLASS_0:
+       case MSG_CLASS_1:
+       case MSG_CLASS_2:
+       case MSG_CLASS_3:
+               rv |= 0x10;
+               rv |= src->m_class;
+       break;
 
-               case MSG_CLASS_RESERVED:
-               case MSG_CLASS_NONE:
-               default:
-                       rv &= 0xEF;
-                       break;
+       case MSG_CLASS_RESERVED:
+       case MSG_CLASS_NONE:
+       default:
+               rv &= 0xEF;
+       break;
        }
 
-       //alphabet format
-       switch(src->a_format)
-       {
-               case ALPHABET_FORMAT_SMS_DEFAULT:
-                       rv &= 0xF3;
-                       break;
+       /* alphabet format */
+       switch (src->a_format) {
+       case ALPHABET_FORMAT_SMS_DEFAULT:
+               rv &= 0xF3;
+       break;
 
-               case ALPHABET_FORMAT_8BIT_DATA:
-                       rv |= 0x04;
-                       break;
+       case ALPHABET_FORMAT_8BIT_DATA:
+               rv |= 0x04;
+       break;
 
-               case ALPHABET_FORMAT_UCS2:
-                       rv |= 0x08;
-                       break;
+       case ALPHABET_FORMAT_UCS2:
+               rv |= 0x08;
+       break;
 
-               default:
-                       rv |= 0x0C;
-                       break;
+       default:
+               rv |= 0x0C;
+       break;
        }
 
        return rv;
 }
 
-static int _sat_encode_command_detail_tlv(const struct tel_sat_cmd_detail_infosrc, char *dst, int current_temp_index)
+static int _sat_encode_command_detail_tlv(const struct tel_sat_cmd_detail_info *src, char *dst, int current_temp_index)
 {
        dst[current_temp_index++] = (b_comprehensive ? (SATK_COMMAND_DETAILS_TAG | 0x80) : SATK_COMMAND_DETAILS_TAG);
        dst[current_temp_index++] = SATK_COMMAND_DETAILS_LENGTH;
@@ -5574,394 +5817,415 @@ static int _sat_encode_command_detail_tlv(const struct tel_sat_cmd_detail_info*
        dst[current_temp_index++] = src->cmd_type;
        dst[current_temp_index] = 0x00;
 
-       switch(src->cmd_type){
-               case SAT_PROATV_CMD_DISPLAY_TEXT:{
-                       //command detail text priority
-                       if (src->cmd_qualifier.display_text.text_priority == TEXT_PRIORITY_HIGH)
-                               dst[current_temp_index] += 0x01;
-
-                       //command detail text clear type
-                       if (src->cmd_qualifier.display_text.text_clear_type == TEXT_WAIT_FOR_USER_TO_CLEAR_MSG)
-                               dst[current_temp_index] += 0x80;
-               }break;
-               case SAT_PROATV_CMD_GET_INKEY:{
-                       //command detail alphabet set
-                       if(src->cmd_qualifier.get_inkey.alphabet_set)
-                               dst[current_temp_index] += 0x01;
-
-                       //command detail alphabet type
-                       if(src->cmd_qualifier.get_inkey.alphabet_type == INPUT_ALPHABET_TYPE_UCS2)
-                               dst[current_temp_index] += 0x02;
-
-                       //command detail get inkey type
-                       if(src->cmd_qualifier.get_inkey.inkey_type == INKEY_TYPE_YES_NO_REQUESTED)
-                               dst[current_temp_index] += 0x04;
-
-
-                       //command detail immediate response required
-                       if(src->cmd_qualifier.get_inkey.immediate_rsp_required)
-                               dst[current_temp_index] += 0x08;
-
-                       //command detail help available
-                       if (src->cmd_qualifier.get_inkey.help_info)
-                               dst[current_temp_index] += 0x80;
-               }break;
-               case SAT_PROATV_CMD_GET_INPUT:{
-                       //command detail alphabet set
-                       if(src->cmd_qualifier.get_input.alphabet_set)
-                               dst[current_temp_index] += 0x01;
-
-                       //command detail alphabet type
-                       if(src->cmd_qualifier.get_input.alphabet_type == INPUT_ALPHABET_TYPE_UCS2)
-                               dst[current_temp_index] += 0x02;
-
-                       //command detail echo user input
-                       if(!src->cmd_qualifier.get_input.me_echo_user_input)
-                               dst[current_temp_index] += 0x04;
-
-                       //command detail user input unpacked format
-                       if(!src->cmd_qualifier.get_input.user_input_unpacked_format)
-                               dst[current_temp_index] += 0x08;
-
-                       //command detail help available
-                       if (src->cmd_qualifier.get_input.help_info)
-                               dst[current_temp_index] += 0x80;
-               }break;
-               case SAT_PROATV_CMD_MORE_TIME:{
-                       dbg("more time : 1bit RFU")
-               }break;
-               case SAT_PROATV_CMD_PLAY_TONE:{
-                       //command detail vibration alert
-                       if(src->cmd_qualifier.play_tone.vibration_alert == VIBRATE_ALERT_REQUIRED)
-                               dst[current_temp_index] += 0x01;
-               }break;
-               case SAT_PROATV_CMD_REFRESH:{
-                       //command detail refresh command
-                       dst[current_temp_index] += src->cmd_qualifier.refresh.refresh;
-               }break;
-               case SAT_PROATV_CMD_SETUP_MENU:{
-                       //command detail preferences
-                       if (src->cmd_qualifier.setup_menu.select_preference == SELECTION_PREFERENCE_USING_SOFT_KEY)
-                               dst[current_temp_index] += 0x01;
-
-                       //command detail help available
-                       if (src->cmd_qualifier.setup_menu.help_info)
-                               dst[current_temp_index] += 0x80;
-               }break;
-               case SAT_PROATV_CMD_SELECT_ITEM:{
-                       //command detail presentation
-                       if(src->cmd_qualifier.select_item.presentation_type != PRESENTATION_TYPE_NOT_SPECIFIED){
-                               dst[current_temp_index] += 0x01;
-                               if(src->cmd_qualifier.select_item.presentation_type == PRESENTATION_TYPE_NAVIGATION_OPTION){
-                                       dst[current_temp_index] += PRESENTATION_TYPE_NAVIGATION_OPTION;
-                               }
-                       }
-
-                       //command detail selection preference
-                       if(src->cmd_qualifier.select_item.select_preference == SELECTION_PREFERENCE_USING_SOFT_KEY)
-                               dst[current_temp_index] += 0x04;
-
-                       //command detail help available
-                       if (src->cmd_qualifier.select_item.help_info)
-                               dst[current_temp_index] += 0x80;
-               }break;
-               case SAT_PROATV_CMD_SEND_SMS:{
-                       //command detail sms packing by me required
-                       if(src->cmd_qualifier.send_sms.packing_by_me_required)
-                               dst[current_temp_index] += 0x01;
-               }break;
-               case SAT_PROATV_CMD_SETUP_CALL:{
-                       //command detail setup call command;
-                       dst[current_temp_index] += src->cmd_qualifier.setup_call.setup_call;
-               }break;
-               case SAT_PROATV_CMD_SETUP_EVENT_LIST:{
-                       dbg("setup evnet list : 1bit RFU")
-               }break;
-               case SAT_PROATV_CMD_OPEN_CHANNEL:{
-                       if(src->cmd_qualifier.open_channel.immediate_link)
-                               dst[current_temp_index] += 0x01;
-                       if(src->cmd_qualifier.open_channel.automatic_reconnection)
-                               dst[current_temp_index] += 0x02;
-                       if(src->cmd_qualifier.open_channel.background_mode)
-                               dst[current_temp_index] += 0x04;
-               }break;
-               case SAT_PROATV_CMD_SEND_DATA:{
-                       if(src->cmd_qualifier.send_data.send_data_immediately)
-                               dst[current_temp_index] += 0x01;
-               }break;
-               case SAT_PROATV_CMD_PROVIDE_LOCAL_INFO:{
-                       dst[current_temp_index] += src->cmd_qualifier.provide_local_info.provide_local_info;
-               }break;
-               case SAT_PROATV_CMD_LANGUAGE_NOTIFICATION:{
-                       if(src->cmd_qualifier.language_notification.specific_language)
-                               dst[current_temp_index] += 0x01;
-               }break;
-               case SAT_PROATV_CMD_LAUNCH_BROWSER:{
-                               dst[current_temp_index] += src->cmd_qualifier.launch_browser.launch_browser;
-               }break;
-               default:
-                       err("no matched cmd type(%d)", src->cmd_type);
-                       break;
+       switch (src->cmd_type) {
+       case SAT_PROATV_CMD_DISPLAY_TEXT:
+               /* command detail text priority */
+               if (src->cmd_qualifier.display_text.text_priority == TEXT_PRIORITY_HIGH)
+                       dst[current_temp_index] += 0x01;
+
+               /* command detail text clear type */
+               if (src->cmd_qualifier.display_text.text_clear_type == TEXT_WAIT_FOR_USER_TO_CLEAR_MSG)
+                       dst[current_temp_index] += 0x80;
+       break;
+
+       case SAT_PROATV_CMD_GET_INKEY:
+               /* command detail alphabet set */
+               if (src->cmd_qualifier.get_inkey.alphabet_set)
+                       dst[current_temp_index] += 0x01;
+
+               /* command detail alphabet type */
+               if (src->cmd_qualifier.get_inkey.alphabet_type == INPUT_ALPHABET_TYPE_UCS2)
+                       dst[current_temp_index] += 0x02;
+
+               /* command detail get inkey type */
+               if (src->cmd_qualifier.get_inkey.inkey_type == INKEY_TYPE_YES_NO_REQUESTED)
+                       dst[current_temp_index] += 0x04;
+
+
+               /* command detail immediate response required */
+               if (src->cmd_qualifier.get_inkey.immediate_rsp_required)
+                       dst[current_temp_index] += 0x08;
+
+               /* command detail help available */
+               if (src->cmd_qualifier.get_inkey.help_info)
+                       dst[current_temp_index] += 0x80;
+       break;
+
+       case SAT_PROATV_CMD_GET_INPUT:
+               /* command detail alphabet set */
+               if (src->cmd_qualifier.get_input.alphabet_set)
+                       dst[current_temp_index] += 0x01;
+
+               /* command detail alphabet type */
+               if (src->cmd_qualifier.get_input.alphabet_type == INPUT_ALPHABET_TYPE_UCS2)
+                       dst[current_temp_index] += 0x02;
+
+               /* command detail echo user input */
+               if (!src->cmd_qualifier.get_input.me_echo_user_input)
+                       dst[current_temp_index] += 0x04;
+
+               /* command detail user input unpacked format */
+               if (!src->cmd_qualifier.get_input.user_input_unpacked_format)
+                       dst[current_temp_index] += 0x08;
+
+               /* command detail help available */
+               if (src->cmd_qualifier.get_input.help_info)
+                       dst[current_temp_index] += 0x80;
+       break;
+
+       case SAT_PROATV_CMD_MORE_TIME:
+               dbg("more time : 1bit RFU");
+       break;
+
+       case SAT_PROATV_CMD_PLAY_TONE:
+               /* command detail vibration alert */
+               if (src->cmd_qualifier.play_tone.vibration_alert == VIBRATE_ALERT_REQUIRED)
+                       dst[current_temp_index] += 0x01;
+       break;
+
+       case SAT_PROATV_CMD_REFRESH:
+               /* command detail refresh command */
+               dst[current_temp_index] += src->cmd_qualifier.refresh.refresh;
+       break;
+
+       case SAT_PROATV_CMD_SETUP_MENU:
+               /* command detail preferences */
+               if (src->cmd_qualifier.setup_menu.select_preference == SELECTION_PREFERENCE_USING_SOFT_KEY)
+                       dst[current_temp_index] += 0x01;
+
+               /* command detail help available */
+               if (src->cmd_qualifier.setup_menu.help_info)
+                       dst[current_temp_index] += 0x80;
+       break;
+
+       case SAT_PROATV_CMD_SELECT_ITEM:
+               /* command detail presentation */
+               if (src->cmd_qualifier.select_item.presentation_type != PRESENTATION_TYPE_NOT_SPECIFIED) {
+                       dst[current_temp_index] += 0x01;
+                       if (src->cmd_qualifier.select_item.presentation_type == PRESENTATION_TYPE_NAVIGATION_OPTION)
+                               dst[current_temp_index] += PRESENTATION_TYPE_NAVIGATION_OPTION;
+               }
+
+               /* command detail selection preference */
+               if (src->cmd_qualifier.select_item.select_preference == SELECTION_PREFERENCE_USING_SOFT_KEY)
+                       dst[current_temp_index] += 0x04;
+
+               /* command detail help available */
+               if (src->cmd_qualifier.select_item.help_info)
+                       dst[current_temp_index] += 0x80;
+       break;
+
+       case SAT_PROATV_CMD_SEND_SMS:
+               /* command detail sms packing by me required */
+               if (src->cmd_qualifier.send_sms.packing_by_me_required)
+                       dst[current_temp_index] += 0x01;
+       break;
+
+       case SAT_PROATV_CMD_SETUP_CALL:
+               /* command detail setup call command */
+               dst[current_temp_index] += src->cmd_qualifier.setup_call.setup_call;
+       break;
+
+       case SAT_PROATV_CMD_SETUP_EVENT_LIST:
+               dbg("setup evnet list : 1bit RFU");
+       break;
+
+       case SAT_PROATV_CMD_OPEN_CHANNEL:
+               if (src->cmd_qualifier.open_channel.immediate_link)
+                       dst[current_temp_index] += 0x01;
+
+               if (src->cmd_qualifier.open_channel.automatic_reconnection)
+                       dst[current_temp_index] += 0x02;
+
+               if (src->cmd_qualifier.open_channel.background_mode)
+                       dst[current_temp_index] += 0x04;
+       break;
+
+       case SAT_PROATV_CMD_SEND_DATA:
+               if (src->cmd_qualifier.send_data.send_data_immediately)
+                       dst[current_temp_index] += 0x01;
+       break;
+
+       case SAT_PROATV_CMD_PROVIDE_LOCAL_INFO:
+               dst[current_temp_index] += src->cmd_qualifier.provide_local_info.provide_local_info;
+       break;
+
+       case SAT_PROATV_CMD_LANGUAGE_NOTIFICATION:
+               if (src->cmd_qualifier.language_notification.specific_language)
+                       dst[current_temp_index] += 0x01;
+       break;
+
+       case SAT_PROATV_CMD_LAUNCH_BROWSER:
+               dst[current_temp_index] += src->cmd_qualifier.launch_browser.launch_browser;
+       break;
+
+       default:
+               err("no matched cmd type(%d)", src->cmd_type);
+       break;
        }
 
        return 5;
 }
 
-static int _sat_encode_device_identities_tlv(const struct tel_sat_device_identitiessrc, char *dst, int current_temp_index)
+static int _sat_encode_device_identities_tlv(const struct tel_sat_device_identities *src, char *dst, int current_temp_index)
 {
        dst[current_temp_index++] = SATK_DEVICE_IDENTITY_TAG;
        dst[current_temp_index++] = SATK_DEVICE_IDENTITY_LENGTH;
        dst[current_temp_index++] = src->src;
        dst[current_temp_index++] = src->dest;
 
-       //device identities total len 4
+       /* device identities total len 4 */
        return 4;
 }
 
-static int _sat_encode_item_identifier_tlv(const struct tel_sat_item_identifiersrc, char *dst, int current_temp_index)
+static int _sat_encode_item_identifier_tlv(const struct tel_sat_item_identifier *src, char *dst, int current_temp_index)
 {
-       dst[current_temp_index++] =SATK_ITEM_IDENTIFIER_TAG;
-       dst[current_temp_index++] =SATK_ITEM_IDENTIFIER_LENGTH;
+       dst[current_temp_index++] = SATK_ITEM_IDENTIFIER_TAG;
+       dst[current_temp_index++] = SATK_ITEM_IDENTIFIER_LENGTH;
        dst[current_temp_index++] = src->item_identifier;
 
-       //item identifier total len 3
+       /* item identifier total len 3 */
        return 3;
 }
 
-/*static int _sat_encode_duration_tlv(const struct tel_sat_duration* src, char *dst, int current_temp_index)
+#if 0
+static int _sat_encode_duration_tlv(const struct tel_sat_duration *src, char *dst, int current_temp_index)
 {
-       dst[current_temp_index++] =SATK_DURATION_TAG;
-       dst[current_temp_index++] =SATK_DURATION_LENGTH;
+       dst[current_temp_index++] = SATK_DURATION_TAG;
+       dst[current_temp_index++] = SATK_DURATION_LENGTH;
        dst[current_temp_index++] = src->time_unit;
        dst[current_temp_index++] = src->time_interval;
 
-       //duration total len 4
+       /*duration total len 4 */
        return 4;
-}*/
+}
+#endif
 
-static int _sat_encode_text_tlv(const struct tel_sat_text_string_objectsrc, char *dst, int current_temp_index, gboolean raw_dcs)
+static int _sat_encode_text_tlv(const struct tel_sat_text_string_object *src, char *dst, int current_temp_index, gboolean raw_dcs)
 {
        int total_len = 0;
        int length_temp_index = 0;
 
-       //tag
-       dst[current_temp_index++] =SATK_TEXT_STRING_TAG;
+       /* tag */
+       dst[current_temp_index++] = SATK_TEXT_STRING_TAG;
 
-       //length
-       if(src->string_length <= 0x7F){
-               dst[current_temp_index++] =SATK_DCS_LENGTH+src->string_length;
+       /* length */
+       if (src->string_length <= 0x7F) {
+               dst[current_temp_index++] = SATK_DCS_LENGTH  +  src->string_length;
                length_temp_index = 1;
-       }
-       else{
+       } else {
                dst[current_temp_index++] = 0x81;
-               dst[current_temp_index++] =SATK_DCS_LENGTH+src->string_length;
+               dst[current_temp_index++] = SATK_DCS_LENGTH  +  src->string_length;
                length_temp_index = 2;
        }
 
-       //dcs
-       if(raw_dcs)
+       /* dcs */
+       if (raw_dcs)
                dst[current_temp_index++] = src->dcs.raw_dcs;
        else
-               dst[current_temp_index++] =_sat_encode_dcs_tlv(&(src->dcs));
+               dst[current_temp_index++] = _sat_encode_dcs_tlv(&(src->dcs));
 
-       //value
-       if(src->string_length > 0){
+       /* value */
+       if (src->string_length > 0)
                memcpy(&(dst[current_temp_index]), src->string, src->string_length);
-       }
 
-       //tag+temp_index+dcs+data
-       total_len = 1+length_temp_index+1+src->string_length;
+       /* tag + temp_index + dcs + data */
+       total_len = 1 + length_temp_index + 1 + src->string_length;
 
        return total_len;
 }
 
 static int _sat_encode_eventlist_tlv(const enum event_list src, char *dst, int current_temp_index)
 {
-       dst[current_temp_index++] =SATK_EVENT_LIST_TAG;
-       dst[current_temp_index++] =0x01;
-       dst[current_temp_index++] =src;
+       dst[current_temp_index++] = SATK_EVENT_LIST_TAG;
+       dst[current_temp_index++] = 0x01;
+       dst[current_temp_index++] = src;
 
        return 3;
-}
-
-static int _sat_encode_date_time_and_timezone_tlv(const struct tel_sat_date_time_and_timezone *src, char *dst, int current_temp_index)
-{
-       dst[current_temp_index++] = SATK_DATE_TIME_AND_TIME_ZONE_TAG;
-       dst[current_temp_index++] = SATK_DATE_TIME_AND_TIME_ZONE_LENGTH;
-       dst[current_temp_index++] = src->year;
-       dst[current_temp_index++] = src->month;
-       dst[current_temp_index++] = src->day;
-       dst[current_temp_index++] = src->hour;
-       dst[current_temp_index++] = src->minute;
-       dst[current_temp_index++] = src->second;
-       dst[current_temp_index++] = src->timeZone;
-
-       return 1+1+SATK_DATE_TIME_AND_TIME_ZONE_LENGTH; //tag length+len field length+value length;
-}
-
-static int _sat_encode_language_tlv(const enum tel_sim_language_type src, char *dst, int current_temp_index)
-{
-       dst[current_temp_index++] =SATK_LANGUAGE_TAG;
-       dst[current_temp_index++] =SATK_LANGUAGE_LENGTH;
-
-       dbg("language (%d)", src);
-
-       switch(src){
-
-               case SIM_LANG_GERMAN :
-                       dst[current_temp_index++] = 'd';
-                       dst[current_temp_index++] = 'e';
-                       break;
-
-               case SIM_LANG_ENGLISH :
-                       dst[current_temp_index++] = 'e';
-                       dst[current_temp_index++] = 'n';
-                       break;
-
-               case SIM_LANG_ITALIAN :
-                       dst[current_temp_index++] = 'i';
-                       dst[current_temp_index++] = 't';
-                       break;
-
-               case SIM_LANG_FRENCH :
-                       dst[current_temp_index++] = 'f';
-                       dst[current_temp_index++] = 'r';
-                       break;
-
-               case SIM_LANG_SPANISH :
-                       dst[current_temp_index++] = 'e';
-                       dst[current_temp_index++] = 's';
-                       break;
-
-               case SIM_LANG_DUTCH :
-                       dst[current_temp_index++] = 'n';
-                       dst[current_temp_index++] = 'l';
-                       break;
-
-               case SIM_LANG_SWEDISH :
-                       dst[current_temp_index++] = 's';
-                       dst[current_temp_index++] = 'v';
-                       break;
-
-               case SIM_LANG_DANISH :
-                       dst[current_temp_index++] = 'd';
-                       dst[current_temp_index++] = 'a';
-                       break;
-
-               case SIM_LANG_PORTUGUESE :
-                       dst[current_temp_index++] = 'p';
-                       dst[current_temp_index++] = 't';
-                       break;
-
-               case SIM_LANG_FINNISH :
-                       dst[current_temp_index++] = 'f';
-                       dst[current_temp_index++] = 'i';
-                       break;
-
-               case SIM_LANG_NORWEGIAN :
-                       dst[current_temp_index++] = 'n';
-                       dst[current_temp_index++] = 'b';
-                       break;
-
-               case SIM_LANG_GREEK :
-                       dst[current_temp_index++] = 'e';
-                       dst[current_temp_index++] = 'l';
-                       break;
-
-               case SIM_LANG_TURKISH :
-                       dst[current_temp_index++] = 't';
-                       dst[current_temp_index++] = 'k';
-                       break;
-
-               case SIM_LANG_HUNGARIAN :
-                       dst[current_temp_index++] = 'h';
-                       dst[current_temp_index++] = 'u';
-                       break;
-
-               case SIM_LANG_POLISH :
-                       dst[current_temp_index++] = 'p';
-                       dst[current_temp_index++] = 'l';
-                       break;
+}
 
-               case SIM_LANG_KOREAN :
-                       dst[current_temp_index++] = 'k';
-                       dst[current_temp_index++] = 'o';
-                       break;
+static int _sat_encode_date_time_and_timezone_tlv(const struct tel_sat_date_time_and_timezone *src, char *dst, int current_temp_index)
+{
+       dst[current_temp_index++] = SATK_DATE_TIME_AND_TIME_ZONE_TAG;
+       dst[current_temp_index++] = SATK_DATE_TIME_AND_TIME_ZONE_LENGTH;
+       dst[current_temp_index++] = src->year;
+       dst[current_temp_index++] = src->month;
+       dst[current_temp_index++] = src->day;
+       dst[current_temp_index++] = src->hour;
+       dst[current_temp_index++] = src->minute;
+       dst[current_temp_index++] = src->second;
+       dst[current_temp_index++] = src->timeZone;
 
-               case SIM_LANG_CHINESE :
-                       dst[current_temp_index++] = 'z';
-                       dst[current_temp_index++] = 'h';
-                       break;
+       return 1 + 1 + SATK_DATE_TIME_AND_TIME_ZONE_LENGTH; /* tag length + len field length + value length; */
+}
 
-               case SIM_LANG_RUSSIAN :
-                       dst[current_temp_index++] = 'r';
-                       dst[current_temp_index++] = 'u';
-                       break;
+static int _sat_encode_language_tlv(const enum tel_sim_language_type src, char *dst, int current_temp_index)
+{
+       dst[current_temp_index++] = SATK_LANGUAGE_TAG;
+       dst[current_temp_index++] = SATK_LANGUAGE_LENGTH;
 
-               case SIM_LANG_JAPANESE:
-                       dst[current_temp_index++] = 'j';
-                       dst[current_temp_index++] = 'a';
-                       break;
+       dbg("language (%d)", src);
 
-               default:{
-                       dst[current_temp_index++] = 'e';
-                       dst[current_temp_index++] = 'n';
-                       dbg("[SAT] SAT PARSER - Unknown Language: 0x%x",src);
-                       break;
-               }
+       switch (src) {
+       case SIM_LANG_GERMAN:
+               dst[current_temp_index++] = 'd';
+               dst[current_temp_index++] = 'e';
+       break;
+
+       case SIM_LANG_ENGLISH:
+               dst[current_temp_index++] = 'e';
+               dst[current_temp_index++] = 'n';
+       break;
+
+       case SIM_LANG_ITALIAN:
+               dst[current_temp_index++] = 'i';
+               dst[current_temp_index++] = 't';
+       break;
+
+       case SIM_LANG_FRENCH:
+               dst[current_temp_index++] = 'f';
+               dst[current_temp_index++] = 'r';
+       break;
+
+       case SIM_LANG_SPANISH:
+               dst[current_temp_index++] = 'e';
+               dst[current_temp_index++] = 's';
+       break;
+
+       case SIM_LANG_DUTCH:
+               dst[current_temp_index++] = 'n';
+               dst[current_temp_index++] = 'l';
+       break;
+
+       case SIM_LANG_SWEDISH:
+               dst[current_temp_index++] = 's';
+               dst[current_temp_index++] = 'v';
+       break;
+
+       case SIM_LANG_DANISH:
+               dst[current_temp_index++] = 'd';
+               dst[current_temp_index++] = 'a';
+       break;
+
+       case SIM_LANG_PORTUGUESE:
+               dst[current_temp_index++] = 'p';
+               dst[current_temp_index++] = 't';
+       break;
+
+       case SIM_LANG_FINNISH:
+               dst[current_temp_index++] = 'f';
+               dst[current_temp_index++] = 'i';
+       break;
+
+       case SIM_LANG_NORWEGIAN:
+               dst[current_temp_index++] = 'n';
+               dst[current_temp_index++] = 'b';
+       break;
+
+       case SIM_LANG_GREEK:
+               dst[current_temp_index++] = 'e';
+               dst[current_temp_index++] = 'l';
+       break;
+
+       case SIM_LANG_TURKISH:
+               dst[current_temp_index++] = 't';
+               dst[current_temp_index++] = 'k';
+       break;
+
+       case SIM_LANG_HUNGARIAN:
+               dst[current_temp_index++] = 'h';
+               dst[current_temp_index++] = 'u';
+       break;
+
+       case SIM_LANG_POLISH:
+               dst[current_temp_index++] = 'p';
+               dst[current_temp_index++] = 'l';
+       break;
+
+       case SIM_LANG_KOREAN:
+               dst[current_temp_index++] = 'k';
+               dst[current_temp_index++] = 'o';
+       break;
+
+       case SIM_LANG_CHINESE:
+               dst[current_temp_index++] = 'z';
+               dst[current_temp_index++] = 'h';
+       break;
+
+       case SIM_LANG_RUSSIAN:
+               dst[current_temp_index++] = 'r';
+               dst[current_temp_index++] = 'u';
+       break;
+
+       case SIM_LANG_JAPANESE:
+               dst[current_temp_index++] = 'j';
+               dst[current_temp_index++] = 'a';
+       break;
+
+       default:
+               dst[current_temp_index++] = 'e';
+               dst[current_temp_index++] = 'n';
+               dbg("[SAT] SAT PARSER - Unknown Language: 0x%x", src);
+       break;
        }
+
        return 4;
 }
 
 static int _sat_encode_browser_termination_tlv(const enum browser_termination_cause src, char *dst, int current_temp_index)
 {
-       dst[current_temp_index++] =SATK_BROWSER_TERMINATION_CAUSE_TAG;
-       dst[current_temp_index++] =SATK_BROWSER_TERMINATION_CAUSE_LENGTH;
-       dst[current_temp_index++] =src;
+       dst[current_temp_index++] = SATK_BROWSER_TERMINATION_CAUSE_TAG;
+       dst[current_temp_index++] = SATK_BROWSER_TERMINATION_CAUSE_LENGTH;
+       dst[current_temp_index++] = src;
 
        return 3;
 }
+
 #if 0
-static int _sat_encode_bearer_desc_tlv(const struct tel_sat_bearer_descriptionsrc, char *dst, int current_temp_index)
+static int _sat_encode_bearer_desc_tlv(const struct tel_sat_bearer_description *src, char *dst, int current_temp_index)
 {
        int total_len = 0;
        int length_temp_index = 0;
 
-       dst[current_temp_index++] =SATK_BEARER_DISCRIPTION_TAG;
+       dst[current_temp_index++] = SATK_BEARER_DISCRIPTION_TAG;
 
-       //length temp_index
+       /* length temp_index */
        length_temp_index = current_temp_index++;
 
-       //bearer type
+       /* bearer type */
        dst[current_temp_index++] = src->bearer_type;
 
-       switch(src->bearer_type){
-               case BEARER_CSD:{
-                       dst[current_temp_index++] = src->bearer_parameter.cs_bearer_param.data_rate;
-                       dst[current_temp_index++] = src->bearer_parameter.cs_bearer_param.service_type;
-                       dst[current_temp_index++] = src->bearer_parameter.cs_bearer_param.connection_element_type;
-               }break;
-               case BEARER_GPRS:{
-                       dst[current_temp_index++] = src->bearer_parameter.ps_bearer_param.precedence_class;
-                       dst[current_temp_index++] = src->bearer_parameter.ps_bearer_param.delay_class;
-                       dst[current_temp_index++] = src->bearer_parameter.ps_bearer_param.reliability_class;
-                       dst[current_temp_index++] = src->bearer_parameter.ps_bearer_param.peak_throughput_class;
-                       dst[current_temp_index++] = src->bearer_parameter.ps_bearer_param.mean_throughput_class;
-                       dst[current_temp_index++] = src->bearer_parameter.ps_bearer_param.pdp_type;
-               }break;
-               case BEARER_DEFAULT_BEARER_FROM_TRANSPORT_LAYER:
-               case BEARER_LOCAL_LINK_TECHNOLOGY_INDEPENDENT:
-               default:
-               break;
+       switch (src->bearer_type) {
+       case BEARER_CSD: {
+               dst[current_temp_index++] = src->bearer_parameter.cs_bearer_param.data_rate;
+               dst[current_temp_index++] = src->bearer_parameter.cs_bearer_param.service_type;
+               dst[current_temp_index++] = src->bearer_parameter.cs_bearer_param.connection_element_type;
+       }
+       break;
+
+       case BEARER_GPRS: {
+               dst[current_temp_index++] = src->bearer_parameter.ps_bearer_param.precedence_class;
+               dst[current_temp_index++] = src->bearer_parameter.ps_bearer_param.delay_class;
+               dst[current_temp_index++] = src->bearer_parameter.ps_bearer_param.reliability_class;
+               dst[current_temp_index++] = src->bearer_parameter.ps_bearer_param.peak_throughput_class;
+               dst[current_temp_index++] = src->bearer_parameter.ps_bearer_param.mean_throughput_class;
+               dst[current_temp_index++] = src->bearer_parameter.ps_bearer_param.pdp_type;
+       }
+       break;
+
+       case BEARER_DEFAULT_BEARER_FROM_TRANSPORT_LAYER:
+       case BEARER_LOCAL_LINK_TECHNOLOGY_INDEPENDENT:
+       default:
+       break;
        }
 
        dst[length_temp_index] = (current_temp_index-1) - length_temp_index;
-       total_len = (current_temp_index-1) - length_temp_index + 2; //tag and length
+       total_len = (current_temp_index-1) - length_temp_index  +  2; /* tag and length */
 
        return total_len;
 }
 
-static int _sat_encode_buffer_size_tlv(const struct tel_sat_buffer_sizesrc, char *dst, int current_temp_index)
+static int _sat_encode_buffer_size_tlv(const struct tel_sat_buffer_size *src, char *dst, int current_temp_index)
 {
        dst[current_temp_index++] = SATK_BUFFER_SIZE_TAG;
        dst[current_temp_index++] = SATK_BUFFER_SIZE_LENGTH;
@@ -5971,18 +6235,18 @@ static int _sat_encode_buffer_size_tlv(const struct tel_sat_buffer_size* src, ch
        return 4;
 }
 #endif
-static int _sat_encode_channel_data_tlv(const struct tel_sat_channel_data* src, char *dst, int current_temp_index)
+
+static int _sat_encode_channel_data_tlv(const struct tel_sat_channel_data *src, char *dst, int current_temp_index)
 {
        int total_len = 0;
        int length_temp_index = 0;
 
        dst[current_temp_index++] = SATK_CHANNEL_DATA_TAG;
 
-       if(src->data_string_len <= 0x7F){
+       if (src->data_string_len <= 0x7F) {
                dst[current_temp_index++] = src->data_string_len;
                length_temp_index = 1;
-       }
-       else{
+       } else {
                dst[current_temp_index++] = 0x81;
                dst[current_temp_index++] = src->data_string_len;
                length_temp_index = 2;
@@ -5990,12 +6254,12 @@ static int _sat_encode_channel_data_tlv(const struct tel_sat_channel_data* src,
 
        memcpy(&(dst[current_temp_index]), src->data_string, src->data_string_len);
 
-       total_len = 1+length_temp_index+src->data_string_len;
+       total_len = 1 + length_temp_index + src->data_string_len;
 
        return total_len;
 }
 
-static int _sat_encode_channel_data_length_tlv(const struct tel_sat_channel_data_lensrc, char *dst, int current_temp_index)
+static int _sat_encode_channel_data_length_tlv(const struct tel_sat_channel_data_len *src, char *dst, int current_temp_index)
 {
        dst[current_temp_index++] = SATK_CHANNEL_DATA_LEN_TAG;
        dst[current_temp_index++] = SATK_CHANNEL_DATA_LENGTH_VALUE_LENGTH;
@@ -6004,15 +6268,15 @@ static int _sat_encode_channel_data_length_tlv(const struct tel_sat_channel_data
        return 3;
 }
 
-static int _sat_encode_channel_status_tlv(const struct tel_sat_channel_statussrc, char *dst, int current_temp_index)
+static int _sat_encode_channel_status_tlv(const struct tel_sat_channel_status *src, char *dst, int current_temp_index)
 {
        dst[current_temp_index++] = SATK_CHANNEL_STATUS_TAG;
        dst[current_temp_index++] = SATK_CHANNEL_STATUS_LENGTH;
 
-       if(src->status == link_or_packet_service_activated) //(bit 8)
+       if (src->status == link_or_packet_service_activated) /* (bit 8) */
                dst[current_temp_index] += 0x80;
 
-       dst[current_temp_index++] += src->channel_id; //(bit 1~3)
+       dst[current_temp_index++] += src->channel_id; /* (bit 1~3) */
        dst[current_temp_index++] = src->status_info;
 
        return 4;
@@ -6025,36 +6289,40 @@ static int _sat_encode_download_event(const struct tel_sat_envelop_event_downloa
 
        dbg("event type(%d)", evt_dl->event);
 
-       //event list
+       /* event list */
        encoded_len = _sat_encode_eventlist_tlv(evt_dl->event, dst_envelop, temp_index);
        temp_index += encoded_len;
 
-       //device id - len 4
-       encoded_len =_sat_encode_device_identities_tlv(&(evt_dl->device_identitie), dst_envelop, temp_index);
+       /* device id - len 4 */
+       encoded_len = _sat_encode_device_identities_tlv(&(evt_dl->device_identitie), dst_envelop, temp_index);
        temp_index += encoded_len;
 
-       switch(evt_dl->event){
-               case EVENT_LANGUAGE_SELECTION:
-                       encoded_len = _sat_encode_language_tlv(evt_dl->language, dst_envelop, temp_index);
-                       temp_index += encoded_len;
-                       break;
-               case EVENT_BROWSER_TERMINATION:
-                       encoded_len = _sat_encode_browser_termination_tlv(evt_dl->browser_termination, dst_envelop, temp_index);
-                       temp_index += encoded_len;
-                       break;
-               case EVENT_DATA_AVAILABLE:
-                       encoded_len = _sat_encode_channel_status_tlv(&(evt_dl->channel_status), dst_envelop, temp_index);
-                       temp_index += encoded_len;
+       switch (evt_dl->event) {
+       case EVENT_LANGUAGE_SELECTION:
+               encoded_len = _sat_encode_language_tlv(evt_dl->language, dst_envelop, temp_index);
+               temp_index += encoded_len;
+       break;
 
-                       encoded_len = _sat_encode_channel_data_length_tlv(&(evt_dl->channel_data_len), dst_envelop, temp_index);
-                       temp_index += encoded_len;
-                       break;
-               case EVENT_CHANNEL_STATUS:
-                       encoded_len = _sat_encode_channel_status_tlv(&(evt_dl->channel_status), dst_envelop, temp_index);
-                       temp_index += encoded_len;
-                       break;
-               default:
-                       break;
+       case EVENT_BROWSER_TERMINATION:
+               encoded_len = _sat_encode_browser_termination_tlv(evt_dl->browser_termination, dst_envelop, temp_index);
+               temp_index += encoded_len;
+       break;
+
+       case EVENT_DATA_AVAILABLE:
+               encoded_len = _sat_encode_channel_status_tlv(&(evt_dl->channel_status), dst_envelop, temp_index);
+               temp_index += encoded_len;
+
+               encoded_len = _sat_encode_channel_data_length_tlv(&(evt_dl->channel_data_len), dst_envelop, temp_index);
+               temp_index += encoded_len;
+       break;
+
+       case EVENT_CHANNEL_STATUS:
+               encoded_len = _sat_encode_channel_status_tlv(&(evt_dl->channel_status), dst_envelop, temp_index);
+               temp_index += encoded_len;
+       break;
+
+       default:
+       break;
        }
 
        dst_envelop[0] = SATK_EVENT_DOWNLOAD_TAG;
@@ -6062,11 +6330,10 @@ static int _sat_encode_download_event(const struct tel_sat_envelop_event_downloa
 
        dbg("download envelop cmd len(%d)", temp_index);
 
-       if(temp_index-2 > 0x7F){
+       if (temp_index-2 > 0x7F) {
                int idx = 0;
-               for(idx = temp_index; idx > 0; idx--){
-                       dst_envelop[idx] = dst_envelop[idx+1];
-               }
+               for (idx = temp_index; idx > 0; idx--)
+                       dst_envelop[idx] = dst_envelop[idx + 1];
                dst_envelop[1] = 0x81;
                temp_index += 1;
                dbg("download envelop added cmd len(%d)", temp_index);
@@ -6077,36 +6344,36 @@ static int _sat_encode_download_event(const struct tel_sat_envelop_event_downloa
 
 int tcore_sat_encode_envelop_cmd(const struct treq_sat_envelop_cmd_data *src_envelop, char *dst_envelop)
 {
-       int temp_index = 0, encoded_len= 0;
+       int temp_index = 0, encoded_len = 0;
 
-       if(!dst_envelop)
+       if (!dst_envelop)
                return 0;
 
-       if(src_envelop->sub_cmd == ENVELOP_MENU_SELECTION){
-               temp_index = 2; //set the cursor to device identity
+       if (src_envelop->sub_cmd
+                        ==  ENVELOP_MENU_SELECTION) {
+               temp_index = 2; /* set the cursor to device identity */
                dbg("item id(%d)", src_envelop->envelop_data.menu_select.item_identifier.item_identifier);
-               encoded_len =_sat_encode_device_identities_tlv(&(src_envelop->envelop_data.menu_select.device_identitie), dst_envelop, temp_index);
+               encoded_len = _sat_encode_device_identities_tlv(&(src_envelop->envelop_data.menu_select.device_identitie), dst_envelop, temp_index);
                temp_index += encoded_len;
 
-               //item identifier
+               /* item identifier */
                encoded_len = _sat_encode_item_identifier_tlv(&(src_envelop->envelop_data.menu_select.item_identifier), dst_envelop, temp_index);
                temp_index += encoded_len;
 
-               if(src_envelop->envelop_data.menu_select.help_request){
-                       encoded_len = 2;//help request
+               if (src_envelop->envelop_data.menu_select.help_request) {
+                       encoded_len = 2;/* help request */
                        dst_envelop[temp_index++] = SATK_HELP_REQUEST_TAG;
                        dst_envelop[temp_index++] = SATK_HELP_REQUEST_LENGTH;
                }
 
                dbg("menu selection cmd len(%d)", temp_index);
 
-               //main cmd
+               /* main cmd */
                dst_envelop[0] = SATK_MENU_SELECTION_TAG;
                dst_envelop[1] = temp_index-2;
-       }
-       else if(src_envelop->sub_cmd == ENVELOP_EVENT_DOWNLOAD){
-               temp_index = _sat_encode_download_event(&(src_envelop->envelop_data.event_download),dst_envelop);
-       }
+       } else if (src_envelop->sub_cmd
+                        ==  ENVELOP_EVENT_DOWNLOAD)
+               temp_index = _sat_encode_download_event(&(src_envelop->envelop_data.event_download), dst_envelop);
 
        return temp_index;
 }
@@ -6117,42 +6384,44 @@ static int _sat_encode_display_text(const struct tel_sat_tr_display_text_tlv *sr
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
+       /* set result info */
        dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-               case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
-               case RESULT_BACKWARD_MOVE_BY_USER:
-               case RESULT_NO_RESPONSE_FROM_USER:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_FRAMES_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+       case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
+       case RESULT_BACKWARD_MOVE_BY_USER:
+       case RESULT_NO_RESPONSE_FROM_USER:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_FRAMES_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6162,50 +6431,53 @@ static int _sat_encode_get_inkey(const struct tel_sat_tr_get_inkey_tlv *src_tr,
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
 
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
 
-                       encoded_len = _sat_encode_text_tlv(&(src_tr->text), dst_tr, temp_index, FALSE);
-                       temp_index += encoded_len;
-                       break;
-               case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
-               case RESULT_BACKWARD_MOVE_BY_USER:
-               case RESULT_HELP_INFO_REQUIRED_BY_USER:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-               case RESULT_NO_RESPONSE_FROM_USER:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_FRAMES_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+               encoded_len = _sat_encode_text_tlv(&(src_tr->text), dst_tr, temp_index, FALSE);
+               temp_index += encoded_len;
+       break;
+
+       case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
+       case RESULT_BACKWARD_MOVE_BY_USER:
+       case RESULT_HELP_INFO_REQUIRED_BY_USER:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+       case RESULT_NO_RESPONSE_FROM_USER:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_FRAMES_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6215,50 +6487,53 @@ static int _sat_encode_get_input(const struct tel_sat_tr_get_input_tlv *src_tr,
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
 
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
 
-                       encoded_len = _sat_encode_text_tlv(&(src_tr->text), dst_tr, temp_index, FALSE);
-                       temp_index += encoded_len;
-                       break;
-               case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
-               case RESULT_BACKWARD_MOVE_BY_USER:
-               case RESULT_NO_RESPONSE_FROM_USER:
-               case RESULT_HELP_INFO_REQUIRED_BY_USER:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_FRAMES_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index =0;
-                       break;
+               encoded_len = _sat_encode_text_tlv(&(src_tr->text), dst_tr, temp_index, FALSE);
+               temp_index += encoded_len;
+       break;
+
+       case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
+       case RESULT_BACKWARD_MOVE_BY_USER:
+       case RESULT_NO_RESPONSE_FROM_USER:
+       case RESULT_HELP_INFO_REQUIRED_BY_USER:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_FRAMES_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6268,38 +6543,40 @@ static int _sat_encode_more_time(const struct tel_sat_tr_more_time_tlv *src_tr,
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6309,42 +6586,44 @@ static int _sat_encode_play_tone(const struct tel_sat_tr_play_tone_tlv *src_tr,
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-               case RESULT_SUCCESS_BUT_TONE_NOT_PLAYED:
-               case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_FRAMES_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+       case RESULT_SUCCESS_BUT_TONE_NOT_PLAYED:
+       case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_FRAMES_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6354,40 +6633,42 @@ static int _sat_encode_refresh(const struct tel_sat_tr_refresh_tlv *src_tr, char
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_REFRESH_PERFORMED_WITH_ADDITIONAL_EFS_READ:
-               case RESULT_REFRESH_PRFRMD_BUT_INDICATED_USIM_NOT_ACTIVE:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_REFRESH_PERFORMED_WITH_ADDITIONAL_EFS_READ:
+       case RESULT_REFRESH_PRFRMD_BUT_INDICATED_USIM_NOT_ACTIVE:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6397,38 +6678,40 @@ static int _sat_encode_setup_menu(const struct tel_sat_tr_setup_menu_tlv *src_tr
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6438,49 +6721,52 @@ static int _sat_encode_select_item(const struct tel_sat_tr_select_item_tlv *src_
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-               case RESULT_HELP_INFO_REQUIRED_BY_USER:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       encoded_len = _sat_encode_item_identifier_tlv(&(src_tr->item_identifier), dst_tr, temp_index);
-                       temp_index += encoded_len;
-                       break;
-               case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
-               case RESULT_BACKWARD_MOVE_BY_USER:
-               case RESULT_NO_RESPONSE_FROM_USER:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_FRAMES_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+       case RESULT_HELP_INFO_REQUIRED_BY_USER:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+               encoded_len = _sat_encode_item_identifier_tlv(&(src_tr->item_identifier), dst_tr, temp_index);
+               temp_index += encoded_len;
+       break;
+
+       case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
+       case RESULT_BACKWARD_MOVE_BY_USER:
+       case RESULT_NO_RESPONSE_FROM_USER:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_FRAMES_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6490,45 +6776,48 @@ static int _sat_encode_send_sms(const struct tel_sat_tr_send_sms_tlv *src_tr, ch
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
 
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_SMS_RP_ERROR:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               case RESULT_INTRCTN_WITH_CC_OR_SMS_CTRL_PRMNT_PRBLM:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->cc_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_SMS_RP_ERROR:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       case RESULT_INTRCTN_WITH_CC_OR_SMS_CTRL_PRMNT_PRBLM:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->cc_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6538,59 +6827,64 @@ static int _sat_encode_send_ss(const struct tel_sat_tr_send_ss_tlv *src_tr, char
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-               case RESULT_SUCCESS_BUT_MODIFIED_BY_CALL_CONTROL_BY_SIM:
-               case RESULT_USSD_OR_SS_TRANSACTION_TERMINATED_BY_USER:
-                       dst_tr[temp_index++] = 1+src_tr->text.string_length;
-                       dst_tr[temp_index++] = src_tr->result_type;
-
-                       memcpy(&(dst_tr[temp_index]), src_tr->text.string, src_tr->text.string_length);
-                       encoded_len = src_tr->text.string_length;
-                       temp_index += encoded_len;
-                       break;
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               case RESULT_INTRCTN_WITH_CC_OR_SMS_CTRL_PRMNT_PRBLM:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->cc_problem_type;
-                       break;
-               case RESULT_SS_RETURN_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->ss_problem;
-                       break;
-               case RESULT_BEYOND_ME_CAPABILITIES:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+       case RESULT_SUCCESS_BUT_MODIFIED_BY_CALL_CONTROL_BY_SIM:
+       case RESULT_USSD_OR_SS_TRANSACTION_TERMINATED_BY_USER:
+               dst_tr[temp_index++] = 1 + src_tr->text.string_length;
+               dst_tr[temp_index++] = src_tr->result_type;
+
+               memcpy(&(dst_tr[temp_index]), src_tr->text.string, src_tr->text.string_length);
+               encoded_len = src_tr->text.string_length;
+               temp_index += encoded_len;
+       break;
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       case RESULT_INTRCTN_WITH_CC_OR_SMS_CTRL_PRMNT_PRBLM:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->cc_problem_type;
+       break;
+
+       case RESULT_SS_RETURN_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->ss_problem;
+       break;
+
+       case RESULT_BEYOND_ME_CAPABILITIES:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6600,55 +6894,60 @@ static int _sat_encode_send_ussd(const struct tel_sat_tr_send_ussd_tlv *src_tr,
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-               case RESULT_SUCCESS_BUT_MODIFIED_BY_CALL_CONTROL_BY_SIM:
-               case RESULT_USSD_OR_SS_TRANSACTION_TERMINATED_BY_USER:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-
-                       encoded_len = _sat_encode_text_tlv(&(src_tr->text), dst_tr, temp_index, TRUE);
-                       temp_index += encoded_len;
-                       break;
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               case RESULT_INTRCTN_WITH_CC_OR_SMS_CTRL_PRMNT_PRBLM:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->cc_problem_type;
-                       break;
-               case RESULT_USSD_RETURN_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->ussd_problem;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+       case RESULT_SUCCESS_BUT_MODIFIED_BY_CALL_CONTROL_BY_SIM:
+       case RESULT_USSD_OR_SS_TRANSACTION_TERMINATED_BY_USER:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+
+               encoded_len = _sat_encode_text_tlv(&(src_tr->text), dst_tr, temp_index, TRUE);
+               temp_index += encoded_len;
+       break;
+
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       case RESULT_INTRCTN_WITH_CC_OR_SMS_CTRL_PRMNT_PRBLM:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->cc_problem_type;
+       break;
+
+       case RESULT_USSD_RETURN_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->ussd_problem;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6658,55 +6957,59 @@ static int _sat_encode_setup_call(const struct tel_sat_tr_setup_call_tlv *src_tr
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-               case RESULT_SUCCESS_BUT_MODIFIED_BY_CALL_CONTROL_BY_SIM:
-               case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-               case RESULT_SS_RETURN_ERROR:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_USER_DID_NOT_ACCEPT_CALL_SETUP_REQ:
-               case RESULT_USER_CLEAR_DOWN_CALL_BEFORE_CONN:
-               case RESULT_FRAMES_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->network_problem_type;
-                       break;
-               case RESULT_INTRCTN_WITH_CC_OR_SMS_CTRL_PRMNT_PRBLM:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->cc_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+       case RESULT_SUCCESS_BUT_MODIFIED_BY_CALL_CONTROL_BY_SIM:
+       case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+       case RESULT_SS_RETURN_ERROR:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_USER_DID_NOT_ACCEPT_CALL_SETUP_REQ:
+       case RESULT_USER_CLEAR_DOWN_CALL_BEFORE_CONN:
+       case RESULT_FRAMES_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->network_problem_type;
+       break;
+
+       case RESULT_INTRCTN_WITH_CC_OR_SMS_CTRL_PRMNT_PRBLM:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->cc_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6716,53 +7019,59 @@ static int _sat_encode_provide_local_info(const struct tel_sat_tr_provide_local_
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_LIMITED_SERVICE:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       switch(src_tr->command_detail.cmd_qualifier.provide_local_info.provide_local_info){
-                               case LOCAL_INFO_DATE_TIME_AND_TIMEZONE:
-                                       encoded_len = _sat_encode_date_time_and_timezone_tlv(&(src_tr->other.date_time_and_timezone), dst_tr, temp_index);
-                                       break;
-                               case LOCAL_INFO_LANGUAGE:
-                                       encoded_len = _sat_encode_language_tlv(src_tr->other.language, dst_tr, temp_index);
-                                       break;
-                               default:
-                                       dbg("local info type[%d] is not handled", src_tr->command_detail.cmd_qualifier.provide_local_info.provide_local_info);
-                                       break;
-                       }
-                       temp_index += encoded_len;
-                       break;
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_LIMITED_SERVICE:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+               switch (src_tr->command_detail.cmd_qualifier.provide_local_info.provide_local_info) {
+               case LOCAL_INFO_DATE_TIME_AND_TIMEZONE:
+                       encoded_len = _sat_encode_date_time_and_timezone_tlv(&(src_tr->other.date_time_and_timezone), dst_tr, temp_index);
+               break;
+
+               case LOCAL_INFO_LANGUAGE:
+                       encoded_len = _sat_encode_language_tlv(src_tr->other.language, dst_tr, temp_index);
+               break;
+
                default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+                       dbg("local info type[%d] is not handled", src_tr->command_detail.cmd_qualifier.provide_local_info.provide_local_info);
+               break;
+               }
+
+               temp_index += encoded_len;
+       break;
+
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6772,37 +7081,39 @@ static int _sat_encode_setup_event_list(const struct tel_sat_tr_setup_event_list
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6812,40 +7123,42 @@ static int _sat_encode_setup_idle_mode_text(const struct tel_sat_tr_setup_idle_m
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_FRAMES_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_FRAMES_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6855,40 +7168,42 @@ static int _sat_encode_send_dtmf(const struct tel_sat_tr_send_dtmf_tlv *src_tr,
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-               case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+       case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6898,39 +7213,41 @@ static int _sat_encode_language_notification(const struct tel_sat_tr_language_no
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_FRAMES_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_FRAMES_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6940,48 +7257,51 @@ static int _sat_encode_launch_browser(const struct tel_sat_tr_launch_browser_tlv
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
-               case RESULT_BACKWARD_MOVE_BY_USER:
-               case RESULT_NO_RESPONSE_FROM_USER:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_FRAMES_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               case RESULT_LAUNCH_BROWSER_GENERIC_ERROR_CODE:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->browser_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
+       case RESULT_BACKWARD_MOVE_BY_USER:
+       case RESULT_NO_RESPONSE_FROM_USER:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_FRAMES_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       case RESULT_LAUNCH_BROWSER_GENERIC_ERROR_CODE:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->browser_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -6991,57 +7311,60 @@ static int _sat_encode_open_channel(const struct tel_sat_tr_open_channel_tlv *sr
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-               case RESULT_SUCCESS_WITH_MODIFICATION:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-
-                       //set channel status
-                       encoded_len = _sat_encode_channel_status_tlv(&(src_tr->channel_status), dst_tr, temp_index);
-                       temp_index += encoded_len;
-                       break;
-               case RESULT_REFRESH_PRFRMD_BUT_INDICATED_USIM_NOT_ACTIVE:
-               case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
-               case RESULT_INTERACTION_WITH_CC_BY_SIM_IN_TMP_PRBLM:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-               case RESULT_USER_DID_NOT_ACCEPT_CALL_SETUP_REQ:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_FRAMES_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               case RESULT_BEARER_INDEPENDENT_PROTOCOL_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->bip_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       return 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+       case RESULT_SUCCESS_WITH_MODIFICATION:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+
+               /* set channel status */
+               encoded_len = _sat_encode_channel_status_tlv(&(src_tr->channel_status), dst_tr, temp_index);
+               temp_index += encoded_len;
+       break;
+
+       case RESULT_REFRESH_PRFRMD_BUT_INDICATED_USIM_NOT_ACTIVE:
+       case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
+       case RESULT_INTERACTION_WITH_CC_BY_SIM_IN_TMP_PRBLM:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+       case RESULT_USER_DID_NOT_ACCEPT_CALL_SETUP_REQ:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_FRAMES_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       case RESULT_BEARER_INDEPENDENT_PROTOCOL_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->bip_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               return 0;
        }
 
        return temp_index;
@@ -7051,45 +7374,48 @@ static int _sat_encode_close_channel(const struct tel_sat_tr_close_channel_tlv *
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-               case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_FRAMES_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               case RESULT_BEARER_INDEPENDENT_PROTOCOL_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->bip_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+       case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_FRAMES_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       case RESULT_BEARER_INDEPENDENT_PROTOCOL_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->bip_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -7099,49 +7425,51 @@ static int _sat_encode_send_data(const struct tel_sat_tr_send_data_tlv *src_tr,
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-               case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       encoded_len = _sat_encode_channel_data_length_tlv(&(src_tr->channel_data_len), dst_tr, temp_index);
-                       temp_index += encoded_len;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_FRAMES_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+       case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+               encoded_len = _sat_encode_channel_data_length_tlv(&(src_tr->channel_data_len), dst_tr, temp_index);
+               temp_index += encoded_len;
+       break;
 
-               case RESULT_BEARER_INDEPENDENT_PROTOCOL_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->bip_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_FRAMES_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       case RESULT_BEARER_INDEPENDENT_PROTOCOL_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->bip_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -7151,50 +7479,52 @@ static int _sat_encode_receive_data(const struct tel_sat_tr_receive_data_tlv *sr
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-               case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       encoded_len = _sat_encode_channel_data_tlv(&(src_tr->channel_data), dst_tr, temp_index);
-                       temp_index += encoded_len;
-                       encoded_len = _sat_encode_channel_data_length_tlv(&(src_tr->channel_data_len), dst_tr, temp_index);
-                       temp_index += encoded_len;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_FRAMES_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+       case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+               encoded_len = _sat_encode_channel_data_tlv(&(src_tr->channel_data), dst_tr, temp_index);
+               temp_index += encoded_len;
+               encoded_len = _sat_encode_channel_data_length_tlv(&(src_tr->channel_data_len), dst_tr, temp_index);
+               temp_index += encoded_len;
+       break;
 
-               case RESULT_BEARER_INDEPENDENT_PROTOCOL_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->bip_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_FRAMES_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       case RESULT_BEARER_INDEPENDENT_PROTOCOL_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->bip_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -7204,50 +7534,54 @@ static int _sat_encode_get_channel_status(const struct tel_sat_tr_get_channel_st
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
-       switch(src_tr->result_type){
-               case RESULT_SUCCESS:
-               case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
-               case RESULT_SUCCESS_WITH_MISSING_INFO:
-               case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       encoded_len = _sat_encode_channel_status_tlv(&(src_tr->channel_status), dst_tr, temp_index);
-                       temp_index += encoded_len;
-                       break;
-               case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
-               case RESULT_BEYOND_ME_CAPABILITIES:
-               case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
-               case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
-               case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
-                       dst_tr[temp_index++] = 1;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       break;
-               case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
-               case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->me_problem_type;
-                       break;
-               case RESULT_BEARER_INDEPENDENT_PROTOCOL_ERROR:
-                       dst_tr[temp_index++] = 2;
-                       dst_tr[temp_index++] = src_tr->result_type;
-                       dst_tr[temp_index++] = src_tr->bip_problem_type;
-                       break;
-               default:
-                       dbg("invalid response value[0x%x] in current TR",src_tr->result_type);
-                       temp_index = 0;
-                       break;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
+       switch (src_tr->result_type) {
+       case RESULT_SUCCESS:
+       case RESULT_SUCCESS_WITH_PARTIAL_COMPREHENSION:
+       case RESULT_SUCCESS_WITH_MISSING_INFO:
+       case RESULT_SUCCESS_BUT_REQUESTED_ICON_NOT_DISPLAYED:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+               encoded_len = _sat_encode_channel_status_tlv(&(src_tr->channel_status), dst_tr, temp_index);
+               temp_index += encoded_len;
+       break;
+
+       case RESULT_PROACTIVE_SESSION_TERMINATED_BY_USER:
+       case RESULT_BEYOND_ME_CAPABILITIES:
+       case RESULT_COMMAND_TYPE_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_DATA_NOT_UNDERSTOOD_BY_ME:
+       case RESULT_COMMAND_NUMBER_NOT_KNOWN_BY_ME:
+       case RESULT_ERROR_REQUIRED_VALUES_ARE_MISSING:
+               dst_tr[temp_index++] = 1;
+               dst_tr[temp_index++] = src_tr->result_type;
+       break;
+
+       case RESULT_ME_UNABLE_TO_PROCESS_COMMAND:
+       case RESULT_NETWORK_UNABLE_TO_PROCESS_COMMAND:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->me_problem_type;
+       break;
+
+       case RESULT_BEARER_INDEPENDENT_PROTOCOL_ERROR:
+               dst_tr[temp_index++] = 2;
+               dst_tr[temp_index++] = src_tr->result_type;
+               dst_tr[temp_index++] = src_tr->bip_problem_type;
+       break;
+
+       default:
+               dbg("invalid response value[0x%x] in current TR", src_tr->result_type);
+               temp_index = 0;
+       break;
        }
 
        return temp_index;
@@ -7257,108 +7591,132 @@ static int _sat_encode_unsupport_command(const struct tel_sat_tr_unsupport_comma
 {
        int temp_index = 0, encoded_len = 0;
 
-       //set command detail info
+       /* set command detail info */
        encoded_len = _sat_encode_command_detail_tlv(&(src_tr->command_detail), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set device identities info
+       /* set device identities info */
        encoded_len = _sat_encode_device_identities_tlv(&(src_tr->device_id), dst_tr, temp_index);
        temp_index += encoded_len;
 
-       //set result info
-       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);;
+       /* set result info */
+       dst_tr[temp_index++] = (b_comprehensive ? (SATK_RESULT_TAG | 0x80) : SATK_RESULT_TAG);
        dst_tr[temp_index++] = 1;
        dst_tr[temp_index++] = src_tr->result_type;
 
        return temp_index;
 }
 
-int tcore_sat_encode_terminal_response(const struct treq_sat_terminal_rsp_data *src_tr, char *dst_tr){
+int tcore_sat_encode_terminal_response(const struct treq_sat_terminal_rsp_data *src_tr, char *dst_tr)
+{
        int tr_len = 0;
 
-       if(!dst_tr)
+       if (!dst_tr)
                return 0;
 
-       switch(src_tr->cmd_type){
-               case SAT_PROATV_CMD_DISPLAY_TEXT:{
-                       tr_len = _sat_encode_display_text(&(src_tr->terminal_rsp_data.display_text), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_GET_INKEY:{
-                       tr_len = _sat_encode_get_inkey(&(src_tr->terminal_rsp_data.get_inkey), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_GET_INPUT:{
-                       tr_len = _sat_encode_get_input(&(src_tr->terminal_rsp_data.get_input), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_MORE_TIME:{
-                       tr_len = _sat_encode_more_time(&(src_tr->terminal_rsp_data.more_time), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_PLAY_TONE:{
-                       tr_len = _sat_encode_play_tone(&(src_tr->terminal_rsp_data.play_tone), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_REFRESH:{
-                       tr_len = _sat_encode_refresh(&(src_tr->terminal_rsp_data.refresh), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_SETUP_MENU:{
-                       tr_len = _sat_encode_setup_menu(&(src_tr->terminal_rsp_data.setup_menu), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_SELECT_ITEM:{
-                       tr_len = _sat_encode_select_item(&(src_tr->terminal_rsp_data.select_item), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_SEND_SMS:{
-                       tr_len = _sat_encode_send_sms(&(src_tr->terminal_rsp_data.send_sms), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_SEND_SS:{
-                       tr_len = _sat_encode_send_ss(&(src_tr->terminal_rsp_data.send_ss), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_SEND_USSD:{
-                       tr_len = _sat_encode_send_ussd(&(src_tr->terminal_rsp_data.send_ussd), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_SETUP_CALL:{
-                       tr_len = _sat_encode_setup_call(&(src_tr->terminal_rsp_data.setup_call), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_PROVIDE_LOCAL_INFO:{
-                       tr_len = _sat_encode_provide_local_info(&(src_tr->terminal_rsp_data.provide_local_info), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_SETUP_EVENT_LIST:{
-                       tr_len = _sat_encode_setup_event_list(&(src_tr->terminal_rsp_data.setup_event_list), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_SETUP_IDLE_MODE_TEXT:{
-                       tr_len = _sat_encode_setup_idle_mode_text(&(src_tr->terminal_rsp_data.setup_idle_mode_text), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_SEND_DTMF:{
-                       tr_len = _sat_encode_send_dtmf(&(src_tr->terminal_rsp_data.send_dtmf), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_LANGUAGE_NOTIFICATION:{
-                       tr_len = _sat_encode_language_notification(&(src_tr->terminal_rsp_data.language_notification), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_LAUNCH_BROWSER:{
-                       tr_len = _sat_encode_launch_browser(&(src_tr->terminal_rsp_data.launch_browser), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_OPEN_CHANNEL:{
-                       tr_len = _sat_encode_open_channel(&(src_tr->terminal_rsp_data.open_channel), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_CLOSE_CHANNEL:{
-                       tr_len = _sat_encode_close_channel(&(src_tr->terminal_rsp_data.close_channel), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_SEND_DATA:{
-                       tr_len = _sat_encode_send_data(&(src_tr->terminal_rsp_data.send_data), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_RECEIVE_DATA:{
-                       tr_len = _sat_encode_receive_data(&(src_tr->terminal_rsp_data.receive_data), dst_tr);
-               }break;
-               case SAT_PROATV_CMD_GET_CHANNEL_STATUS:{
-                       tr_len = _sat_encode_get_channel_status(&(src_tr->terminal_rsp_data.get_channel_status), dst_tr);
-               }break;
-               default:{
-                       tr_len = _sat_encode_unsupport_command(&(src_tr->terminal_rsp_data.unsupport_cmd), dst_tr);
-               }break;
+       switch (src_tr->cmd_type) {
+       case SAT_PROATV_CMD_DISPLAY_TEXT:
+               tr_len = _sat_encode_display_text(&(src_tr->terminal_rsp_data.display_text), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_GET_INKEY:
+               tr_len = _sat_encode_get_inkey(&(src_tr->terminal_rsp_data.get_inkey), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_GET_INPUT:
+               tr_len = _sat_encode_get_input(&(src_tr->terminal_rsp_data.get_input), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_MORE_TIME:
+               tr_len = _sat_encode_more_time(&(src_tr->terminal_rsp_data.more_time), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_PLAY_TONE:
+               tr_len = _sat_encode_play_tone(&(src_tr->terminal_rsp_data.play_tone), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_REFRESH:
+               tr_len = _sat_encode_refresh(&(src_tr->terminal_rsp_data.refresh), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_SETUP_MENU:
+               tr_len = _sat_encode_setup_menu(&(src_tr->terminal_rsp_data.setup_menu), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_SELECT_ITEM:
+               tr_len = _sat_encode_select_item(&(src_tr->terminal_rsp_data.select_item), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_SEND_SMS:
+               tr_len = _sat_encode_send_sms(&(src_tr->terminal_rsp_data.send_sms), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_SEND_SS:
+               tr_len = _sat_encode_send_ss(&(src_tr->terminal_rsp_data.send_ss), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_SEND_USSD:
+               tr_len = _sat_encode_send_ussd(&(src_tr->terminal_rsp_data.send_ussd), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_SETUP_CALL:
+               tr_len = _sat_encode_setup_call(&(src_tr->terminal_rsp_data.setup_call), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_PROVIDE_LOCAL_INFO:
+               tr_len = _sat_encode_provide_local_info(&(src_tr->terminal_rsp_data.provide_local_info), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_SETUP_EVENT_LIST:
+               tr_len = _sat_encode_setup_event_list(&(src_tr->terminal_rsp_data.setup_event_list), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_SETUP_IDLE_MODE_TEXT:
+               tr_len = _sat_encode_setup_idle_mode_text(&(src_tr->terminal_rsp_data.setup_idle_mode_text), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_SEND_DTMF:
+               tr_len = _sat_encode_send_dtmf(&(src_tr->terminal_rsp_data.send_dtmf), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_LANGUAGE_NOTIFICATION:
+               tr_len = _sat_encode_language_notification(&(src_tr->terminal_rsp_data.language_notification), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_LAUNCH_BROWSER:
+               tr_len = _sat_encode_launch_browser(&(src_tr->terminal_rsp_data.launch_browser), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_OPEN_CHANNEL:
+               tr_len = _sat_encode_open_channel(&(src_tr->terminal_rsp_data.open_channel), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_CLOSE_CHANNEL:
+               tr_len = _sat_encode_close_channel(&(src_tr->terminal_rsp_data.close_channel), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_SEND_DATA:
+               tr_len = _sat_encode_send_data(&(src_tr->terminal_rsp_data.send_data), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_RECEIVE_DATA:
+               tr_len = _sat_encode_receive_data(&(src_tr->terminal_rsp_data.receive_data), dst_tr);
+       break;
+
+       case SAT_PROATV_CMD_GET_CHANNEL_STATUS:
+               tr_len = _sat_encode_get_channel_status(&(src_tr->terminal_rsp_data.get_channel_status), dst_tr);
+       break;
+
+       default:
+               tr_len = _sat_encode_unsupport_command(&(src_tr->terminal_rsp_data.unsupport_cmd), dst_tr);
+       break;
        }
 
        return tr_len;
 }
 
 CoreObject *tcore_sat_new(TcorePlugin *p, const char *name,
-               struct tcore_sat_operations *ops, TcoreHal *hal)
+       struct tcore_sat_operations *ops, TcoreHal *hal)
 {
        CoreObject *o = NULL;
        struct private_object_data *po = NULL;
@@ -7376,11 +7734,11 @@ CoreObject *tcore_sat_new(TcorePlugin *p, const char *name,
                return NULL;
        }
 
-       po->ops = ops;
+       /* set ops to default type when core object is created. */
+       po->ops[TCORE_OPS_TYPE_CP] = ops;
 
        tcore_object_set_type(o, CORE_OBJECT_TYPE_SAT);
        tcore_object_link_object(o, po);
-       tcore_object_set_clone_hook(o, _clone_hook);
        tcore_object_set_free_hook(o, _free_hook);
        tcore_object_set_dispatcher(o, _dispatcher);
 
@@ -7394,16 +7752,18 @@ void tcore_sat_free(CoreObject *o)
        tcore_object_free(o);
 }
 
-void tcore_sat_set_ops(CoreObject *o, struct tcore_sat_operations *ops)
+void tcore_sat_set_ops(CoreObject *o, struct tcore_sat_operations *ops, enum tcore_ops_type ops_type)
 {
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK(o, CORE_OBJECT_TYPE_SAT);
+       CORE_OBJECT_VALIDATE_OPS_RETURN(ops_type);
 
        po = (struct private_object_data *)tcore_object_ref_object(o);
        if (!po) {
+               err("po is NULL");
                return;
        }
 
-       po->ops = ops;
+       po->ops[ops_type] = ops;
 }
index ca9b180..68456d3 100644 (file)
 #include <glib.h>
 
 #include "tcore.h"
+#include "internal/tcore_types.h"
 #include "plugin.h"
 #include "queue.h"
 #include "user_request.h"
 #include "core_object.h"
 #include "co_sim.h"
 
+#define SIM_FILE_TYPE_TAG                      0x07
+#define SIM_FCP_TEMPLATE_TAG                   0x62
+#define SIM_FILE_DESCRIPTOR_TAG                0x82
+#define SIM_FILE_IDENTIFIER_TAG                0x83
+#define SIM_PROPRIETARY_INFORMATION_TAG        0xA5
+#define SIM_LIFE_CYCLE_STATUS_TAG              0x8A
+#define SIM_FILE_SIZE_TAG                      0x80
+#define SIM_TOTAL_FILE_SIZE_TAG                0x81
+#define SIM_SHORT_FILE_IDENTIFIER_TAG          0x88
+
+/* USIM file types */
+#define SIM_FTYPE_TRANSPARENT                  0x1
+#define SIM_FTYPE_LINEAR_FIXED                 0x2
+#define SIM_FTYPE_CYCLIC                       0x6
+
+/* GSM file types */
+#define SIM_FTYPE_RFU                          0x0
+#define SIM_FTYPE_MF                           0x1
+#define SIM_FTYPE_DF                           0x2
+#define SIM_FTYPE_EF                           0x4
+
 struct private_object_data {
-       struct tcore_sim_operations *ops;
+       struct tcore_sim_operations *ops[TCORE_OPS_TYPE_MAX];
 
        unsigned char app_list;
        enum tel_sim_type type; /**< Provides the SIM card type*/
@@ -63,25 +85,25 @@ struct private_object_data {
  *    http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/index.html
  *
  */
-static const charmcc_having_3digits_mnc[] = {
-       "302",  // Canada
-       "310", "311", "312", "313", "314", "315", "316",        // United States of America
-       //"334",        // Mexico (uses 3-digits MNC only partially.)
-       "338",  // Jamaica
-       "342",  // Barbados
-       "344",  // Antigua and Barbuda
-       "346",  // Cayman Islands
-       "348",  // British Virgin Islands
-       "365",  // Anguilla
-       "708",  // Honduras (Republic of)
-       //"722",        // Argentine Republic (uses 3-digits MNC only partially.)
-       "732",  // Colombia (Republic of)
+static const char *mcc_having_3digits_mnc[] = {
+       "302",  /* Canada */
+       "310", "311", "312", "313", "314", "315", "316",        /* United States of America */
+       /* "334",*/     /* Mexico (uses 3-digits MNC only partially.) */
+       "338",  /* Jamaica */
+       "342",  /* Barbados */
+       "344",  /* Antigua and Barbuda */
+       "346",  /* Cayman Islands */
+       "348",  /* British Virgin Islands */
+       "365",  /* Anguilla */
+       "708",  /* Honduras (Republic of) */
+       /* "722", */    /* Argentine Republic (uses 3-digits MNC only partially.) */
+       "732",  /* Colombia (Republic of) */
 };
 
-static const charplmn_having_3digits_mnc[] = {
+static const char *plmn_having_3digits_mnc[] = {
        /* Mexico */
-       "334020",       // Telcel
-       "334050",       // Iusacell/Unefon
+       "334020",       /* Telcel */
+       "334050",       /* Iusacell/Unefon */
        /* India */
        "405025", "405026", "405027", "405028", "405029", "405030", "405031", "405032",
        "405033", "405034", "405035", "405036", "405037", "405038", "405039", "405040",
@@ -102,12 +124,12 @@ static const char* plmn_having_3digits_mnc[] = {
        /* Malaysia */
        "502142", "502143", "502145", "502146", "502147", "502148",
        /* Argentina */
-       "722070",       // Movistar AR
-       "722310",       // Claro AR
-       "722341",       // Personal AR
+       "722070",       /* Movistar AR */
+       "722310",       /* Claro AR */
+       "722341",       /* Personal AR */
 };
 
-gboolean tcore_sim_check_plmn_having_3digits_mnc(charplmn)
+gboolean tcore_sim_check_plmn_having_3digits_mnc(char *plmn)
 {
        int num = 0;
        int i = 0;
@@ -127,175 +149,144 @@ gboolean tcore_sim_check_plmn_having_3digits_mnc(char* plmn)
        }
 
        num = G_N_ELEMENTS(plmn_having_3digits_mnc);
-       for (i = 0; i < num; i++) {
-               if (strcmp((const char *)plmn, plmn_having_3digits_mnc[i]) == 0) {
+       for (i = 0; i < num; i++)
+               if (strcmp((const char *)plmn, plmn_having_3digits_mnc[i]) == 0)
                        return TRUE;
-               }
-       }
 
        return FALSE;
 }
 
-static TReturn _dispatcher(CoreObject *o, UserRequest *ur)
+static TReturn _dispatcher(CoreObject *o, UserRequest *ur, enum tcore_ops_type ops_type)
 {
        enum tcore_request_command command;
-       struct private_object_data *po = NULL;
+       struct private_object_data *po = tcore_object_ref_object(o);
+       struct tcore_sim_operations *ops = NULL;
 
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_SIM, TCORE_RETURN_EINVAL);
+       CORE_OBJECT_VALIDATE_OPS_RETURN_VAL(ops_type, TCORE_RETURN_EINVAL);
 
-       po = tcore_object_ref_object(o);
-       if (!po || !po->ops)
-               return TCORE_RETURN_ENOSYS;
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_EINVAL);
+       tcore_check_null_ret_err("ur", ur, TCORE_RETURN_EINVAL);
+
+       ops = po->ops[ops_type];
+       tcore_check_null_ret_err("ops", ops, TCORE_RETURN_FAILURE);
 
        command = tcore_user_request_get_command(ur);
 
        switch (command) {
-               case TREQ_SIM_VERIFY_PINS:
-                       if (!po->ops->verify_pins)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SIM_VERIFY_PINS:
+               tcore_check_null_ret_err("ops->verify_pins",
+                       ops->verify_pins, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->verify_pins(o, ur);
-                       break;
+               return ops->verify_pins(o, ur);
 
-               case TREQ_SIM_VERIFY_PUKS:
-                       if (!po->ops->verify_puks)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SIM_VERIFY_PUKS:
+               tcore_check_null_ret_err("ops->verify_puks",
+                       ops->verify_puks, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->verify_puks(o, ur);
-                       break;
+               return ops->verify_puks(o, ur);
 
-               case TREQ_SIM_CHANGE_PINS:
-                       if (!po->ops->change_pins)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SIM_CHANGE_PINS:
+               tcore_check_null_ret_err("ops->change_pins",
+                       ops->change_pins, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->change_pins(o, ur);
-                       break;
+               return ops->change_pins(o, ur);
 
-               case TREQ_SIM_GET_FACILITY_STATUS:
-                       if (!po->ops->get_facility_status)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SIM_GET_FACILITY_STATUS:
+               tcore_check_null_ret_err("ops->get_facility_status",
+                       ops->get_facility_status, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->get_facility_status(o, ur);
-                       break;
+               return ops->get_facility_status(o, ur);
 
-               case TREQ_SIM_DISABLE_FACILITY:
-                       if (!po->ops->disable_facility)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SIM_DISABLE_FACILITY:
+               tcore_check_null_ret_err("ops->disable_facility",
+                       ops->disable_facility, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->disable_facility(o, ur);
-                       break;
+               return ops->disable_facility(o, ur);
 
-               case TREQ_SIM_ENABLE_FACILITY:
-                       if (!po->ops->enable_facility)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SIM_ENABLE_FACILITY:
+               tcore_check_null_ret_err("ops->enable_facility",
+                       ops->enable_facility, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->enable_facility(o, ur);
-                       break;
+               return ops->enable_facility(o, ur);
 
-               case TREQ_SIM_GET_LOCK_INFO:
-                       if (!po->ops->get_lock_info)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SIM_GET_LOCK_INFO:
+               tcore_check_null_ret_err("ops->get_lock_info",
+                       ops->get_lock_info, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->get_lock_info(o, ur);
-                       break;
+               return ops->get_lock_info(o, ur);
 
-               case TREQ_SIM_TRANSMIT_APDU:
-                       if (!po->ops->transmit_apdu)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SIM_TRANSMIT_APDU:
+               tcore_check_null_ret_err("ops->transmit_apdu",
+                       ops->transmit_apdu, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->transmit_apdu(o, ur);
-                       break;
+               return ops->transmit_apdu(o, ur);
 
-               case TREQ_SIM_GET_ATR:
-                       if (!po->ops->get_atr)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SIM_GET_ATR:
+               tcore_check_null_ret_err("ops->get_atr",
+                       ops->get_atr, TCORE_RETURN_ENOSYS);
 
-                       return po->ops->get_atr(o, ur);
-                       break;
+               return ops->get_atr(o, ur);
 
-               case TREQ_SIM_SET_LANGUAGE:
-               case TREQ_SIM_SET_CALLFORWARDING:
-               case TREQ_SIM_SET_MESSAGEWAITING:
-               case TREQ_SIM_SET_MAILBOX:
+       case TREQ_SIM_SET_LANGUAGE:
+       case TREQ_SIM_SET_CALLFORWARDING:
+       case TREQ_SIM_SET_MESSAGEWAITING:
+       case TREQ_SIM_SET_MAILBOX:
 #if defined TIZEN_GLOBALCONFIG_ENABLE_CSP
-               case TREQ_SIM_SET_CPHS_CSP_INFO:
+       case TREQ_SIM_SET_CPHS_CSP_INFO:
 #endif
-                       if (!po->ops->update_file)
-                               return TCORE_RETURN_ENOSYS;
-
-                       return po->ops->update_file(o, ur);
-                       break;
-
-               case TREQ_SIM_GET_ECC:
-               case TREQ_SIM_GET_LANGUAGE:
-               case TREQ_SIM_GET_ICCID:
-               case TREQ_SIM_GET_MAILBOX:
-               case TREQ_SIM_GET_CALLFORWARDING:
-               case TREQ_SIM_GET_MESSAGEWAITING:
-               case TREQ_SIM_GET_CPHS_INFO:
-               case TREQ_SIM_GET_SERVICE_TABLE:
-               case TREQ_SIM_GET_MSISDN:
-               case TREQ_SIM_GET_SPN:
-               case TREQ_SIM_GET_SPDI:
-               case TREQ_SIM_GET_OPL:
-               case TREQ_SIM_GET_PNN:
-               case TREQ_SIM_GET_CPHS_NETNAME:
-               case TREQ_SIM_GET_OPLMNWACT:
-               case TREQ_SIM_GET_ICON:
-               case TREQ_SIM_GET_IMPI:
-               case TREQ_SIM_GET_IMPU:
-               case TREQ_SIM_GET_GID:
-               case TREQ_SIM_GET_DOMAIN:
-               case TREQ_SIM_GET_PCSCF:
-               case TREQ_SIM_GET_ISIM_SERVICE_TABLE:
-                       if (!po->ops->read_file)
-                               return TCORE_RETURN_ENOSYS;
-
-                       return po->ops->read_file(o, ur);
-                       break;
-
-               case TREQ_SIM_REQ_AUTHENTICATION:
-                       if (!po->ops->req_authentication)
-                               return TCORE_RETURN_ENOSYS;
-
-                       return po->ops->req_authentication(o, ur);
-                       break;
-
-               case TREQ_SIM_SET_POWERSTATE:
-                       if (!po->ops->set_powerstate)
-                               return TCORE_RETURN_ENOSYS;
-
-                       return po->ops->set_powerstate(o, ur);
-                       break;
-
-               default:
-                       warn("unhandled request command[%d]", command);
-                       break;
+               tcore_check_null_ret_err("ops->update_file",
+                       ops->update_file, TCORE_RETURN_ENOSYS);
+
+               return ops->update_file(o, ur);
+
+       case TREQ_SIM_GET_ECC:
+       case TREQ_SIM_GET_LANGUAGE:
+       case TREQ_SIM_GET_ICCID:
+       case TREQ_SIM_GET_MAILBOX:
+       case TREQ_SIM_GET_CALLFORWARDING:
+       case TREQ_SIM_GET_MESSAGEWAITING:
+       case TREQ_SIM_GET_CPHS_INFO:
+       case TREQ_SIM_GET_SERVICE_TABLE:
+       case TREQ_SIM_GET_MSISDN:
+       case TREQ_SIM_GET_SPN:
+       case TREQ_SIM_GET_SPDI:
+       case TREQ_SIM_GET_OPL:
+       case TREQ_SIM_GET_PNN:
+       case TREQ_SIM_GET_CPHS_NETNAME:
+       case TREQ_SIM_GET_OPLMNWACT:
+       case TREQ_SIM_GET_ICON:
+       case TREQ_SIM_GET_IMPI:
+       case TREQ_SIM_GET_IMPU:
+       case TREQ_SIM_GET_GID:
+       case TREQ_SIM_GET_DOMAIN:
+       case TREQ_SIM_GET_PCSCF:
+       case TREQ_SIM_GET_ISIM_SERVICE_TABLE:
+               tcore_check_null_ret_err("ops->read_file",
+                       ops->read_file, TCORE_RETURN_ENOSYS);
+
+               return ops->read_file(o, ur);
+
+       case TREQ_SIM_REQ_AUTHENTICATION:
+               tcore_check_null_ret_err("ops->req_authentication",
+                       ops->req_authentication, TCORE_RETURN_ENOSYS);
+
+               return ops->req_authentication(o, ur);
+
+       case TREQ_SIM_SET_POWERSTATE:
+               tcore_check_null_ret_err("ops->set_powerstate",
+                       ops->set_powerstate, TCORE_RETURN_ENOSYS);
+
+               return ops->set_powerstate(o, ur);
+
+       default:
+               warn("unhandled request command[%d]", command);
+       break;
        }
 
        return TCORE_RETURN_SUCCESS;
 }
 
-static void _clone_hook(CoreObject *src, CoreObject *dest)
-{
-       struct private_object_data *src_po = NULL;
-       struct private_object_data *dest_po = NULL;
-
-       if (!src || !dest)
-               return;
-
-       dest_po = calloc(1, sizeof(struct private_object_data));
-       if (!dest_po) {
-               tcore_object_link_object(dest, NULL);
-               return;
-       }
-
-       src_po = tcore_object_ref_object(src);
-       dest_po->ops = src_po->ops;
-
-       tcore_object_link_object(dest, dest_po);
-}
-
 static void _free_hook(CoreObject *o)
 {
        struct private_object_data *po = NULL;
@@ -306,28 +297,37 @@ static void _free_hook(CoreObject *o)
        if (po) {
                if (po->svct)
                        free(po->svct);
+
                if (po->ecc_list)
                        free(po->ecc_list);
+
                if (po->msisdn_list)
                        free(po->msisdn_list);
+
                if (po->spn)
                        free(po->spn);
+
                if (po->cphs_netname)
                        free(po->cphs_netname);
+
                if (po->iccid)
                        free(po->iccid);
+
                if (po->csp)
                        free(po->csp);
+
                if (po->ist)
                        free(po->ist);
+
                free(po);
                tcore_object_link_object(o, NULL);
        }
 }
 
-static void _reverse(charp_in, int length)
+static void _reverse(char *p_in, int length)
 {
        int i, j = length - 1;
+
        for (i = 0; i < j; i++) {
                int t = p_in[i];
                p_in[i] = p_in[j];
@@ -335,7 +335,7 @@ static void _reverse(char* p_in, int length)
        }
 }
 
-static char* _acitoa(int n, char* str, int b)
+static char *_acitoa(int n, char *str, int b)
 {
        int i = 0;
 
@@ -373,12 +373,12 @@ static char* _acitoa(int n, char* str, int b)
  * @remark
  * @Refer
  */
-static void _digit_to_bcd(char* bcdCode, char* digits, int digitLen)
+static void _digit_to_bcd(char *bcdCode, char *digits, int digitLen)
 {
        int i, j, digit;
        unsigned char higher, lower;
 
-       // 0123456789 -> 1032547698
+       /* 0123456789 -> 1032547698 */
        for (i = 0, j = 0; i < digitLen; i = i + 2, j++) {
                if (digits[i] == '*')
                        digit = 0x0A;
@@ -405,9 +405,9 @@ static void _digit_to_bcd(char* bcdCode, char* digits, int digitLen)
                        else
                                digit = (int) digits[i + 1];
                        higher = digit & 0x0F;
-               } else {
+               } else
                        higher = 0xFF;
-               }
+
                bcdCode[j] = (higher << 4) | lower;
        }
 }
@@ -423,25 +423,25 @@ static void _digit_to_bcd(char* bcdCode, char* digits, int digitLen)
  * @remark
  * @Refer
  */
-static unsigned long _bcd_to_digit(char* digit, char* bcdCode, int bcdLen)
+static unsigned long _bcd_to_digit(char *digit, char *bcdCode, int bcdLen)
 {
        int i, h, l;
        char c[2];
        unsigned char higher, lower;
        unsigned long digitLen = 0;
 
-       // 0123456789 <- 1032547698
-       memset((void*) digit, 0, bcdLen * 2);
+       /* 0123456789 <- 1032547698 */
+       memset((void *)digit, 0, bcdLen * 2);
 
        for (i = 0; i < bcdLen; i++) {
-               higher = (bcdCode[i] >> 4) & 0x0F; // get high nibble
+               higher = (bcdCode[i] >> 4) & 0x0F; /* get high nibble */
 
                if (higher == 0x0A)
-                       higher = '*'; // =0x2A
+                       higher = '*'; /* =0x2A */
                else if (higher == 0x0B)
-                       higher = '#'; // =0x23
+                       higher = '#'; /* =0x23 */
                else if (higher == 0x0C)
-                       higher = 'P'; // =0x70, DTMF Control digit
+                       higher = 'P'; /* =0x70, DTMF Control digit */
                else if (higher == 0x0D)
                        higher = '?';
                else if (higher == 0x0F)
@@ -452,14 +452,14 @@ static unsigned long _bcd_to_digit(char* digit, char* bcdCode, int bcdLen)
                        higher = (char) toupper(*c);
                }
 
-               lower = bcdCode[i] & 0x0F; // get low nibble
+               lower = bcdCode[i] & 0x0F; /* get low nibble */
 
                if (lower == 0x0A)
                        lower = '*';
                else if (lower == 0x0B)
                        lower = '#';
                else if (lower == 0x0C)
-                       lower = 'P'; //DTMF Control digit
+                       lower = 'P'; /* DTMF Control digit */
                else if (lower == 0x0D)
                        lower = '?';
                else if (lower == 0x0F)
@@ -469,11 +469,12 @@ static unsigned long _bcd_to_digit(char* digit, char* bcdCode, int bcdLen)
                        _acitoa(l, c, 16);
                        lower = (char) toupper(*c);
                }
+
                digit[i * 2] = lower;
                digit[i * 2 + 1] = higher;
        }
 
-       digitLen = (unsigned long) strlen(digit);
+       digitLen = (unsigned long)strlen(digit);
        return digitLen;
 }
 
@@ -488,12 +489,12 @@ static unsigned long _bcd_to_digit(char* digit, char* bcdCode, int bcdLen)
  * @remark
  * @Refer
  */
-static unsigned long _get_string(unsigned char* palpha_id, unsigned char* pRecord,     unsigned long alphaIDMaxLen)
+static unsigned long _get_string(unsigned char *palpha_id, unsigned char *pRecord, unsigned long alphaIDMaxLen)
 {
        unsigned long i, alphaIDLen = 0;
-       unsigned char *pAlphaID = (unsigned char*) palpha_id;
+       unsigned char *pAlphaID = (unsigned char *) palpha_id;
 
-       memset((void*) pAlphaID, 0, alphaIDMaxLen);
+       memset((void *)pAlphaID, 0, alphaIDMaxLen);
 
        if (pRecord[0] == 0xFF)
                return alphaIDLen;
@@ -505,6 +506,7 @@ static unsigned long _get_string(unsigned char* palpha_id, unsigned char* pRecor
                pAlphaID[i] = pRecord[i];
                alphaIDLen++;
        }
+
        return alphaIDLen;
 }
 
@@ -519,26 +521,27 @@ static unsigned long _get_string(unsigned char* palpha_id, unsigned char* pRecor
  * @remark
  * @Refer
  */
-static void _set_string(unsigned char* pRecord, unsigned char* palpha_id, unsigned long alphaIDMaxLen)
+static void _set_string(unsigned char *pRecord, unsigned char *palpha_id, unsigned long alphaIDMaxLen)
 {
        unsigned long i;
-       unsigned char* pAlphaID = (unsigned char*) palpha_id;
+       unsigned char *pAlphaID = (unsigned char *) palpha_id;
 
-       memset((void*) pRecord, 0xFF, alphaIDMaxLen);
+       memset((void *) pRecord, 0xFF, alphaIDMaxLen);
 
        for (i = 0; i < alphaIDMaxLen; i++)
                pRecord[i] = pAlphaID[i];
 }
 
-static gboolean _is_empty(unsigned charp_in, int in_length)
+static gboolean _is_empty(unsigned char *p_in, int in_length)
 {
        int i;
        for (i = 0; i < in_length; i++) {
                if (p_in[i] != 0xFF)
                        return FALSE;
        }
+
        dbg("current index has empty data");
-       return TRUE;            // this is empty record.
+       return TRUE; /* this is empty record */
 }
 
 /**
@@ -551,7 +554,7 @@ static gboolean _is_empty(unsigned char* p_in, int in_length)
  * @remark
  * @Refer
  */
-static int _get_valid_bcd_byte(unsigned charpBcdData, int bcdMaxLen)
+static int _get_valid_bcd_byte(unsigned char *pBcdData, int bcdMaxLen)
 {
        int i, bcd_length = 0;
 
@@ -561,6 +564,7 @@ static int _get_valid_bcd_byte(unsigned char* pBcdData, int bcdMaxLen)
 
                bcd_length++;
        }
+
        return bcd_length;
 }
 
@@ -573,19 +577,19 @@ static int _get_valid_bcd_byte(unsigned char* pBcdData, int bcdMaxLen)
  * @param[in]          in_string_len   Contains the input string length
  * @remark
  */
-static int _unpack_7bit28bit(unsigned char* pInString, unsigned int inStringLen, unsigned char * pOutString)
+static int _unpack_7bit28bit(unsigned char *pInString, unsigned int inStringLen, unsigned char *pOutString)
 {
        int i = 0;
        unsigned int pos = 0;
        unsigned short shift = 0;
        int outlen = 0;
-       outlen = (short int) ((inStringLen * 8) / 7);
+       outlen = (short int)((inStringLen * 8) / 7);
 
        for (i = 0; pos < inStringLen; i++, pos++) {
                pOutString[i] = (pInString[pos] << shift) & 0x7F;
 
                if (pos != 0) {
-                       /* except the first byte, a character contains some bits from the previous byte.*/
+                       /* except the first byte, a character contains some bits from the previous byte. */
                        pOutString[i] |= pInString[pos - 1] >> (8 - shift);
                }
 
@@ -600,41 +604,43 @@ static int _unpack_7bit28bit(unsigned char* pInString, unsigned int inStringLen,
                }
        }
 
-       /*If a character is '\r'(13), change it to space(32) */
+       /* If a character is '\r'(13), change it to space(32) */
        for (i = 0; i < outlen; i++)
                if (pOutString[i] == 13) pOutString[i] = 32;
 
        pOutString[outlen] = '\0';
 
-       dbg( "unpack is done with outlen[%d] and array index[%d], out string[%s]", outlen, i, pOutString);
-       return (unsigned int) (i);
+       dbg("unpack is done with outlen[%d] and array index[%d], out string[%s]", outlen, i, pOutString);
+       return (unsigned int)(i);
 }
 
-static int _ucs2_to_utf8(int in_length, unsigned char *in_data, int *out_length,       unsigned char *out_data)
+static int _ucs2_to_utf8(int in_length, unsigned char *in_data, int *out_length, unsigned char *out_data)
 {
        int i, j;
-       i = j = 0;
+
        if (in_length == 0 || in_data == NULL || out_data == NULL) {
-               dbg( "Unicode Decode Failed as text length is 0");
+               dbg("Unicode Decode Failed as text length is 0");
                return FALSE;
        }
 
        if (0 != (in_length % 2)) {
-               dbg( " ##### Unicode decoding failed due to invalid text length [%d]",  in_length);
+               dbg(" ##### Unicode decoding failed due to invalid text length [%d]",
+                       in_length);
                return FALSE;
        }
 
-       for (i = 0; i < in_length; i++) {
+       for (i = 0, j = 0; i < in_length; i++) {
                out_data[i] = in_data[j];
                j = j + 2;
        }
+
        *out_length = (in_length / 2);
        out_data[i] = '\0';
        return TRUE;
 }
 
 static int _decode_cdma_imsi_util(char *imsi, unsigned short *mcc, unsigned char *mnc,
-                                                                                                               unsigned long *min1, unsigned short *min2)
+       unsigned long *min1, unsigned short *min2)
 {
        unsigned short country_code = *mcc;
        unsigned char nw_code = *mnc;
@@ -643,13 +649,13 @@ static int _decode_cdma_imsi_util(char *imsi, unsigned short *mcc, unsigned char
        unsigned short second_three = 0;
        unsigned char thousands = 0;
        unsigned short last_three = 0;
-       unsigned char min_to_digit[] = {'1','2','3','4','5','6','7','8','9','0'};
-       unsigned char bcd_to_num[] = {0xFF,'1','2','3','4','5','6','7','8','9','0',0xFF,0xFF,0xFF,0xFF,0xFF};
+       unsigned char min_to_digit[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
+       unsigned char bcd_to_num[] = {0xFF, '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
        int p_digit = 0;
        int digit = 0;
 
        /* Convert Country code of IMSI */
-       if(country_code <= 999) {
+       if (country_code <= 999) {
                digit = min_to_digit[country_code/100];
                imsi[p_digit++] = digit;
                country_code %= 100;
@@ -666,7 +672,7 @@ static int _decode_cdma_imsi_util(char *imsi, unsigned short *mcc, unsigned char
        }
 
        /* Convert Network code of IMSI */
-       if(nw_code <= 99) {
+       if (nw_code <= 99) {
                digit = min_to_digit[nw_code / 10];
                imsi[p_digit++] = digit;
 
@@ -694,12 +700,12 @@ static int _decode_cdma_imsi_util(char *imsi, unsigned short *mcc, unsigned char
        }
 
        /* Convert Last Seven digits of IMSI */
-    second_three = (imsi_min1 & 0x00FFC000) >> 14;
-    thousands = (imsi_min1 & 0x00003C00) >> 10;
-    last_three = (imsi_min1 & 0x000003FF) >> 0;
+       second_three = (imsi_min1 & 0x00FFC000) >> 14;
+       thousands = (imsi_min1 & 0x00003C00) >> 10;
+       last_three = (imsi_min1 & 0x000003FF) >> 0;
 
-    thousands = bcd_to_num[thousands];
-    if ((thousands != 0xFF) && (second_three <= 999) && (last_three <= 999)) {
+       thousands = bcd_to_num[thousands];
+       if ((thousands != 0xFF) && (second_three <= 999) && (last_three <= 999)) {
                digit = min_to_digit[second_three / 100];
                imsi[p_digit++] = digit;
 
@@ -723,10 +729,11 @@ static int _decode_cdma_imsi_util(char *imsi, unsigned short *mcc, unsigned char
 
                digit = min_to_digit[last_three % 10];
                imsi[p_digit++] = digit;
-    } else {
+       } else {
                err("Invalid IMSI_MIN1 code");
                return -1;
        }
+
        return p_digit;
 }
 
@@ -738,42 +745,40 @@ static int _decode_cdma_imsi_util(char *imsi, unsigned short *mcc, unsigned char
  * @param[in]          in      encoded input string (must be 3 bytes)
  * @remark
  */
-static void _decode_plmn(const unsigned char* in, unsigned char* out)
+static void _decode_plmn(const unsigned char *in, unsigned char *out)
 {
-       unsigned char temp[6 + 1] = {0,};
+       unsigned char temp[6 + 1] = {0, };
        int i;
        unsigned char higher, lower;
 
        for (i = 0; i < 3; i++) {
-               higher = (in[i] >> 4) & 0x0F;   // get high nibble
+               higher = (in[i] >> 4) & 0x0F;   /* get high nibble */
                if (higher < 0x0A) {
-                       // if it is a number
+                       /* if it is a number */
                        temp[i*2] = higher + 0x30;
                } else if (higher == 0x0D) {
-                       // 0x0D (BCD digit) is regarded as wild character by TS 24.008
+                       /* 0x0D (BCD digit) is regarded as wild character by TS 24.008 */
                        temp[i*2] = 'D';
-               } else {
+               } else
                        temp[i*2] = 0x00;
-               }
 
-               lower = in[i] & 0x0F;   // get low nibble
+               lower = in[i] & 0x0F;   /* get low nibble */
                if (lower < 0x0A) {
-                       // if it is a number
+                       /* if it is a number */
                        temp[i*2 + 1] = lower + 0x30;
                } else if (lower == 0x0D) {
-                       // 0x0D (BCD digit) is regarded as wild character by TS 24.008
+                       /* 0x0D (BCD digit) is regarded as wild character by TS 24.008 */
                        temp[i*2 + 1] = 'D';
-               } else {
+               } else
                        temp[i*2 + 1] = 0x00;
-               }
        }
 
-       // according to PLMN digits order by TS 24.008
-       // MCC
+       /* according to PLMN digits order by TS 24.008 */
+       /* MCC */
        out[0] = temp[1];
        out[1] = temp[0];
        out[2] = temp[3];
-       // MNC
+       /* MNC */
        out[3] = temp[5];
        out[4] = temp[4];
        out[5] = temp[2];
@@ -786,15 +791,20 @@ static void _decode_plmn(const unsigned char* in, unsigned char* out)
         * for NA operators (MCC 310 ~ 316),
         * if 6th digit of MNC is 'F' then should be regarded as '0'.
         */
-       if (out[5] == 0x00 &&
-                       strncmp((const char*)out, "31", 2) == 0 &&
-                       ('0' <= out[2] && out[2] <= '6')){
+       if (out[5] == 0x00
+                       && strncmp((const char *)out, "31", 2) == 0
+                       && ('0' <= out[2] && out[2] <= '6')) {
                out[5] = '0';
        }
 }
 
+static inline unsigned short int _swap_bytes16(unsigned short int x)
+{
+       return ((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8);
+}
+
 /**
- * According to ETSI 102.221 ( 3GPP specification refers it ), EF-ICCID is coded by BCD, left justified and padded with 'F'.
+ * According to ETSI 102.221 (3GPP specification refers it), EF-ICCID is coded by BCD, left justified and padded with 'F'.
  * This EF is mandatory and byte length is fixed with 10 bytes. So actual maximum length of ICCID is 20 digits.
  */
 gboolean tcore_sim_decode_iccid(struct tel_sim_iccid *p_out, unsigned char *p_in, int in_length)
@@ -808,11 +818,11 @@ gboolean tcore_sim_decode_iccid(struct tel_sim_iccid *p_out, unsigned char *p_in
        if (in_length == 0 || in_length > 10)
                return FALSE;
 
-       memset((void*) p_out->iccid, 0, SIM_ICCID_LEN_MAX+1);
+       memset((void *)p_out->iccid, 0, SIM_ICCID_LEN_MAX+1);
 
        bcd_byte = _get_valid_bcd_byte(p_in, in_length);
-       char_length = _bcd_to_digit(p_out->iccid, (char*) p_in, bcd_byte);
-       dbg( "bcd byte:[%d] string length:[%d]", bcd_byte, char_length);
+       char_length = _bcd_to_digit(p_out->iccid, (char *) p_in, bcd_byte);
+       dbg("bcd byte:[%d] string length:[%d]", bcd_byte, char_length);
 
        *(p_out->iccid+char_length) = '\0';
 
@@ -826,16 +836,19 @@ gboolean tcore_sim_decode_lp(struct tel_sim_language *p_out, unsigned char *p_in
 {
        int i = 0;
 
-       memset((void*) p_out, 0xFF, sizeof(struct tel_sim_language));
+       memset((void *) p_out, 0xFF, sizeof(struct tel_sim_language));
        p_out->language_count = 0;
 
        if (in_length == 0)
                return FALSE;
+
        /*
-        * Description of problem: language decoding was not correctly done if we used 7layers's test SIM
+        * Description of problem: language decoding was not correctly done if we
+        * used 7layers's test SIM
+        *
         * Patch Description : The tested SIM  at 7layers has 3 language codes like [ff][ff][01].
-        In this case we could not decode 3rd language code.
-        So, the below 2 lines checking the UNSPECIFIED language are commented.
+        In this case we could not decode 3rd language code.
+        So, the below 2 lines checking the UNSPECIFIED language are commented.
         */
 
        if (in_length > SIM_LANG_CNT_MAX)
@@ -852,34 +865,38 @@ gboolean tcore_sim_decode_lp(struct tel_sim_language *p_out, unsigned char *p_in
                        continue;
 
                p_out->language[p_out->language_count] = (enum tel_sim_language_type) p_in[i];
-               dbg( "p_out->language[%d]=[%d] ", i, p_out->language[p_out->language_count]);
+               dbg("p_out->language[%d]=[%d] ", i, p_out->language[p_out->language_count]);
                p_out->language_count++;
        }
-       dbg( "in_length %d, lang_cnt %d ", in_length, p_out->language_count);
+
+       dbg("in_length %d, lang_cnt %d ", in_length, p_out->language_count);
        return TRUE;
 }
 
 /**
  * This function is used to encode EFLP (2G)
  */
-char* tcore_sim_encode_lp( int *out_length, struct tel_sim_language *p_in)
+char *tcore_sim_encode_lp(int *out_length, struct tel_sim_language *p_in)
 {
-    int i = 0;
-    char *tmp_out = NULL;
+       int i = 0;
+       char *tmp_out = NULL;
+
+       if (out_length == NULL || p_in == NULL) {
+               dbg("out_length or p_in is null");
+               return NULL;
+       }
 
-    if ( out_length == NULL || p_in == NULL ){
-        dbg("out_length or p_in is null");
-        return NULL;
-    }
+       tmp_out = (char *)malloc(p_in->language_count);
+       if (!tmp_out)
+               return NULL;
 
-    tmp_out = (char*)malloc(p_in->language_count);
-    memset((void*) tmp_out, 0xff, p_in->language_count);
+       memset((void *) tmp_out, 0xff, p_in->language_count);
 
-    for (i = 0; i < p_in->language_count; i++)
-        tmp_out[i] = p_in->language[i];
+       for (i = 0; i < p_in->language_count; i++)
+               tmp_out[i] = p_in->language[i];
 
-    *out_length = i;
-    return tmp_out;
+       *out_length = i;
+       return tmp_out;
 }
 
 /**
@@ -891,22 +908,24 @@ gboolean tcore_sim_decode_li(enum tel_sim_file_id file_id, struct tel_sim_langua
        unsigned short defaultLi;
        unsigned char tempLi[3] = { 0, 0, 0 };
 
-       memset((void*) p_out, 0xFF, sizeof(struct tel_sim_language));
+       memset((void *)p_out, 0xFF, sizeof(struct tel_sim_language));
        p_out->language_count  = 0;
 
        if (in_length == 0)
                return FALSE;
 
        /*
-        * Description of problem: language decoding was not correctly done if we used 7layers's test SIM
+        * Description of problem: language decoding was not correctly done if we
+        * used 7layers's test SIM
+        *
         * Patch Description : TS31.102 If the EFLI has the value 'FFFF' in its highest priority position,
-        then the preferred language selection shall be the language preference in the EFPL
+        then the preferred language selection shall be the language preference in the EFPL
         */
        if (/*TODO g_sim.CardType == SIM_TYPE_USIM && */(file_id == SIM_EF_USIM_LI || file_id == SIM_EF_LP)) {
                defaultLi = p_in[0];
                defaultLi = ((defaultLi << 8) & 0xFF00) + p_in[1];
 
-               if (defaultLi == 0xFFFF)        // 1st language is default.
+               if (defaultLi == 0xFFFF)        /* 1st language is default. */
                        return FALSE;
        }
 
@@ -916,92 +935,100 @@ gboolean tcore_sim_decode_li(enum tel_sim_file_id file_id, struct tel_sim_langua
        for (i = 0; i < in_length; i++) {
                tempLi[0] = p_in[i++];
                tempLi[1] = p_in[i];
-/*
-                Description of problem: language decoding was not correctly done if we used 7layers's test SIM
-                Patch Description : The tested SIM at specific test lab has 3 language codes like [ff][ff][ff][ff][64][65].
-                In this case we could not decode 3rd language code.
-                So, the below 2 lines checking the UNSPECIFIED language are commented.
-*/
-               if (tempLi[0] == 0xFF || tempLi[1] == 0xFF)  //this is always 2 bytes
+
+               /*
+                * Description of problem: language decoding was not correctly
+                * done if we used 7layers's test SIM
+                *
+                * Patch Description : The tested SIM at specific test lab has
+                * 3 language codes like [ff][ff][ff][ff][64][65].
+                * In this case we could not decode 3rd language code.
+                * So, the below 2 lines checking the UNSPECIFIED language are commented.
+                */
+               if (tempLi[0] == 0xFF || tempLi[1] == 0xFF)  /* this is always 2 bytes */
                        continue;
 
                p_out->language[p_out->language_count] = SIM_LANG_UNSPECIFIED;
 
                if (tempLi[0] == 'e') {
                        switch (tempLi[1]) {
-                               case 'n':
-                                       p_out->language[p_out->language_count] = SIM_LANG_ENGLISH;
-                                       break;
-                               case 's':
-                                       p_out->language[p_out->language_count] = SIM_LANG_SPANISH;
-                                       break;
-                               case 'l':
-                                       p_out->language[p_out->language_count] = SIM_LANG_GREEK;
-                                       break;
-                               default:
-                                       warn("invalid language");
-                                       break;
+                       case 'n':
+                               p_out->language[p_out->language_count] = SIM_LANG_ENGLISH;
+                       break;
+
+                       case 's':
+                               p_out->language[p_out->language_count] = SIM_LANG_SPANISH;
+                       break;
+
+                       case 'l':
+                               p_out->language[p_out->language_count] = SIM_LANG_GREEK;
+                       break;
+
+                       default:
+                               warn("invalid language");
+                       break;
                        }
                } else if (tempLi[0] == 'd') {
                        switch (tempLi[1]) {
-                               case 'e':
-                                       p_out->language[p_out->language_count] = SIM_LANG_GERMAN;
-                                       break;
+                       case 'e':
+                               p_out->language[p_out->language_count] = SIM_LANG_GERMAN;
+                       break;
 
-                               case 'a':
-                                       p_out->language[p_out->language_count] = SIM_LANG_DANISH;
-                                       break;
-                               default:
-                                       warn("invalid language");
-                                       break;
+                       case 'a':
+                               p_out->language[p_out->language_count] = SIM_LANG_DANISH;
+                       break;
+
+                       default:
+                               warn("invalid language");
+                       break;
                        }
-               } else if (tempLi[0] == 'i' && tempLi[1] == 't') {
+               } else if (tempLi[0] == 'i' && tempLi[1] == 't')
                        p_out->language[p_out->language_count] = SIM_LANG_ITALIAN;
-               } else if (tempLi[0] == 'f' && tempLi[1] == 'r') {
+               else if (tempLi[0] == 'f' && tempLi[1] == 'r')
                        p_out->language[p_out->language_count] = SIM_LANG_FRENCH;
-               } else if (tempLi[0] == 'n' && tempLi[1] == 'l') {
+               else if (tempLi[0] == 'n' && tempLi[1] == 'l')
                        p_out->language[p_out->language_count] = SIM_LANG_DUTCH;
-               } else if (tempLi[0] == 's' && tempLi[1] == 'v') {
+               else if (tempLi[0] == 's' && tempLi[1] == 'v')
                        p_out->language[p_out->language_count] = SIM_LANG_SWEDISH;
-               } else if (tempLi[0] == 'f' && tempLi[1] == 'i') {
+               else if (tempLi[0] == 'f' && tempLi[1] == 'i')
                        p_out->language[p_out->language_count] = SIM_LANG_FINNISH;
-               } else if (tempLi[0] == 'n' && tempLi[1] == 'o') {
+               else if (tempLi[0] == 'n' && tempLi[1] == 'o')
                        p_out->language[p_out->language_count] = SIM_LANG_NORWEGIAN;
-               } else if (tempLi[0] == 't' && tempLi[1] == 'r') {
+               else if (tempLi[0] == 't' && tempLi[1] == 'r')
                        p_out->language[p_out->language_count] = SIM_LANG_TURKISH;
-               } else if (tempLi[0] == 'h' && tempLi[1] == 'u') {
+               else if (tempLi[0] == 'h' && tempLi[1] == 'u')
                        p_out->language[p_out->language_count] = SIM_LANG_HUNGARIAN;
-               else if (tempLi[0] == 'p') {
+               else if (tempLi[0] == 'p') {
                        switch (tempLi[1]) {
-                               case 'l':
-                                       p_out->language[p_out->language_count] = SIM_LANG_POLISH;
-                                       break;
-                               case 't':
-                                       p_out->language[p_out->language_count] = SIM_LANG_PORTUGUESE;
-                                       break;
-                               default:
-                                       warn("invalid language");
-                                       break;
+                       case 'l':
+                               p_out->language[p_out->language_count] = SIM_LANG_POLISH;
+                       break;
+
+                       case 't':
+                               p_out->language[p_out->language_count] = SIM_LANG_PORTUGUESE;
+                       break;
+
+                       default:
+                               warn("invalid language");
+                       break;
                        }
-               } else if (tempLi[0] == 'k' && tempLi[1] == 'o') {
+               } else if (tempLi[0] == 'k' && tempLi[1] == 'o')
                        p_out->language[p_out->language_count] = SIM_LANG_KOREAN;
-               } else if (tempLi[0] == 'z' && tempLi[1] == 'h') {
+               else if (tempLi[0] == 'z' && tempLi[1] == 'h')
                        p_out->language[p_out->language_count] = SIM_LANG_CHINESE;
-               } else if (tempLi[0] == 'r' && tempLi[1] == 'u') {
+               else if (tempLi[0] == 'r' && tempLi[1] == 'u')
                        p_out->language[p_out->language_count] = SIM_LANG_RUSSIAN;
-               } else if (tempLi[0] == 'j' && tempLi[1] == 'a') {
+               else if (tempLi[0] == 'j' && tempLi[1] == 'a')
                        p_out->language[p_out->language_count] = SIM_LANG_JAPANESE;
-               }
 
-               dbg( "count %d & Codes %d ", p_out->language_count, p_out->language[p_out->language_count]);
+               dbg("count %d & Codes %d ", p_out->language_count, p_out->language[p_out->language_count]);
                p_out->language_count++;
        }
 
        if (p_out->language_count == 0) {
-               dbg( "p_out->language_count = %d ", p_out->language_count);
+               dbg("p_out->language_count = %d ", p_out->language_count);
                return FALSE;
-       }
-       else {
+       } else {
                return TRUE;
        }
 }
@@ -1009,27 +1036,35 @@ gboolean tcore_sim_decode_li(enum tel_sim_file_id file_id, struct tel_sim_langua
 /**
  * This function is used to encode EFLI (3G)
  */
-char* tcore_sim_encode_li( int *out_length, struct tel_sim_language *p_in)
+char *tcore_sim_encode_li(int *out_length, struct tel_sim_language *p_in)
 {
        int i = 0;
-       char *tmp_out = NULL; 
-       const char *LanguageCode[] = { "de", "en", "it", "fr", "es", "nl", "sv", "da", "pt", "fi", "no", "el",
-                                                                                                       "tr", "hu", "pl", "ko", "zh", "ru", "ja" };
+       char *tmp_out = NULL;
+       const char *LanguageCode[] = {
+               "de", "en", "it", "fr",
+               "es", "nl", "sv", "da",
+               "pt", "fi", "no", "el",
+               "tr", "hu", "pl", "ko",
+               "zh", "ru", "ja"};
+
+       if (out_length == NULL || p_in == NULL) {
+               dbg("out_length or p_in is null");
+               return NULL;
+       }
 
-    if ( out_length == NULL || p_in == NULL ){
-        dbg("out_length or p_in is null");
-        return NULL;
-    }
+       tmp_out = (char *)malloc((p_in->language_count) * 2);
+       if (!tmp_out)
+               return NULL;
 
-    tmp_out = (char*)malloc((p_in->language_count) *2);
-    memset((void*) tmp_out, 0xff, (p_in->language_count)*2);
+       memset((void *)tmp_out, 0xff, (p_in->language_count) * 2);
 
        for (i = 0; i < p_in->language_count; i++) {
                if (p_in->language[i] < SIM_LANG_UNSPECIFIED) {
                        strncpy((char *) &tmp_out[i * 2], LanguageCode[p_in->language[i]], 2);
-                       dbg( "sim_encode_li: p_out[%s]:[%x][%x]", tmp_out, tmp_out[i*2], tmp_out[(i*2)+1]);
+                       dbg("sim_encode_li: p_out[%s]:[%x][%x]", tmp_out, tmp_out[i*2], tmp_out[(i*2)+1]);
                }
        }
+
        *out_length = i*2;
        return tmp_out;
 }
@@ -1045,12 +1080,13 @@ gboolean tcore_sim_decode_imsi(struct tel_sim_imsi *p_out, unsigned char *p_in,
                return FALSE;
 
        /*
-               According to 3GPP specification, the length of raw IMSI data is 9 bytes.
-               first byte is length of IMSI
-               second byte byte has parity nibble, so second byte has one digit of IMSI. other byte has two digit of IMSI
-       */
-       if ((in_length == 0) || (in_length == 0xff) || (4 > in_length) || (9 <in_length)) {
-               dbg("No valid IMSI present to convert - length:[%x]",   in_length);
+        * According to 3GPP specification, the length of raw IMSI data is 9 bytes.
+        * first byte is length of IMSI
+        * second byte byte has parity nibble, so second byte has one digit of IMSI.
+        * other byte has two digit of IMSI
+        */
+       if ((in_length == 0) || (in_length == 0xff) || (4 > in_length) || (9 < in_length)) {
+               dbg("No valid IMSI present to convert - length:[%x]", in_length);
                return FALSE;
        }
 
@@ -1058,9 +1094,9 @@ gboolean tcore_sim_decode_imsi(struct tel_sim_imsi *p_out, unsigned char *p_in,
        for (i = 1; i < in_length; i++) {
                if (i == 1) { /* first byte, ignore lower nibble */
                        imsi_raw[j++] = ((p_in[i] & 0xF0) >> 4) + '0';
-               } else if (i == p_in[0]+1) { /* last byte */
-                       imsi_raw[j++] = (p_in[i] & 0x0F)+ '0';
-                       if (p_in[0]%2) /* count the last one if odd digits */
+               } else if (i == p_in[0] + 1) { /* last byte */
+                       imsi_raw[j++] = (p_in[i] & 0x0F) + '0';
+                       if (p_in[0] % 2) /* count the last one if odd digits */
                                imsi_raw[j++] = ((p_in[i] & 0xF0) >> 4) + '0';
                } else {
                        imsi_raw[j++] = (p_in[i]  & 0x0F) + '0';
@@ -1072,9 +1108,8 @@ gboolean tcore_sim_decode_imsi(struct tel_sim_imsi *p_out, unsigned char *p_in,
        plmn = g_strndup(imsi_raw, 6 + 1);
        if (plmn) {
                plmn[6] = '\0';
-               if(tcore_sim_check_plmn_having_3digits_mnc(plmn)) {
+               if (tcore_sim_check_plmn_having_3digits_mnc(plmn))
                        plmn_digits = 6;
-               }
                g_free(plmn);
        }
 
@@ -1092,7 +1127,7 @@ gboolean tcore_sim_decode_imsi(struct tel_sim_imsi *p_out, unsigned char *p_in,
 
 gboolean tcore_sim_decode_cdma_imsi(struct tel_sim_imsi *p_out, unsigned char *p_in, int in_length)
 {
-       char imsi_raw[16]={0,};
+       char imsi_raw[16] = {0, };
        int digits = 0;
        unsigned short mcc;
        unsigned char mnc;
@@ -1105,18 +1140,18 @@ gboolean tcore_sim_decode_cdma_imsi(struct tel_sim_imsi *p_out, unsigned char *p
                return FALSE;
 
        /*
-       According to 3GPP2 specification, the length of raw IMSI data is 10 bytes.
-               byte    Description
-                  1            Class assignment of IMSI_M
-                2-3    IMSI_M_S2 : MSIN2
-                4-6    IMSI_M_S1 : MSIN1
-                  7            IMSI_M_11_12 : MNC
-                  8            IMSI_M_ADDR_NUM : No of IMSI_M address digits.
-                9-10   MCC_M : MCC
-
-       */
+        * According to 3GPP2 specification, the length of raw IMSI data is 10 bytes.
+        *      byte            Description
+        *-----------------------------------------------------------------
+        *      1               Class assignment of IMSI_M
+        *      2-3             IMSI_M_S2 : MSIN2
+        *      4-6             IMSI_M_S1 : MSIN1
+        *      7               IMSI_M_11_12 : MNC
+        *      8               IMSI_M_ADDR_NUM : No of IMSI_M address digits.
+        *      9-10            MCC_M : MCC
+        */
        if ((in_length == 0) || (in_length == 0xff) || (4 > in_length) || (10 < in_length)) {
-               dbg("No valid IMSI present to convert - length:[%x]",   in_length);
+               dbg("No valid IMSI present to convert - length:[%x]", in_length);
                return FALSE;
        }
 
@@ -1135,9 +1170,9 @@ gboolean tcore_sim_decode_cdma_imsi(struct tel_sim_imsi *p_out, unsigned char *p
        plmn = g_strndup(imsi_raw, 6 + 1);
        if (plmn) {
                plmn[6] = '\0';
-               if(tcore_sim_check_plmn_having_3digits_mnc(plmn)) {
+               if (tcore_sim_check_plmn_having_3digits_mnc(plmn))
                        plmn_digits = 6;
-               }
+
                g_free(plmn);
        }
 
@@ -1156,48 +1191,55 @@ gboolean tcore_sim_decode_cdma_imsi(struct tel_sim_imsi *p_out, unsigned char *p
 gboolean tcore_sim_decode_sst(struct tel_sim_sst *p_sst, unsigned char *p_in, int in_length)
 {
        unsigned char sstByte, rast, mask = 0;
-       char simServiceID = 1;  // set "CHV1 disable function"
+       char simServiceID = 1;  /* set "CHV1 disable function" */
        int i, svc_count;
        char *p_index;
 
-       memset((void*)p_sst, 0, sizeof(struct tel_sim_sst));
+       memset((void *)p_sst, 0, sizeof(struct tel_sim_sst));
 
        if (in_length == 0) {
                err("invalid length. return FALSE.");
                return FALSE;
        }
 
-       // get count of SIM service id. one byte has four service status.
+       /* get count of SIM service id. one byte has four service status. */
        svc_count = in_length * 4;
 
-       /*3GPP 51.011 SST shows 56 kinds of service types. current tel_sim_sst has also 56 elements*/
+       /*
+        * 3GPP 51.011 SST shows 56 kinds of service types.
+        * current tel_sim_sst has also 56 elements
+        */
        if (svc_count > SIM_SST_SERVICE_CNT_MAX) {
                warn("out of range[%d]. cut off the tail.", svc_count);
                svc_count = SIM_SST_SERVICE_CNT_MAX;
        }
 
-       p_index = (char*)p_sst;
+       p_index = (char *)p_sst;
 
        for (i = 0; i < svc_count; i++) {
                sstByte = p_in[(simServiceID - 1) / 4];
                rast = simServiceID - 4 * (simServiceID / 4);
 
                switch (rast) {
-                       case 1:
-                               mask = 0x02;
-                               break;
-                       case 2:
-                               mask = 0x08;
-                               break;
-                       case 3:
-                               mask = 0x20;
-                               break;
-                       case 0:
-                               mask = 0x80;
-                               break;
-                       default:
-                               warn("invalid rast");
-                               break;
+               case 1:
+                       mask = 0x02;
+               break;
+
+               case 2:
+                       mask = 0x08;
+               break;
+
+               case 3:
+                       mask = 0x20;
+               break;
+
+               case 0:
+                       mask = 0x80;
+               break;
+
+               default:
+                       warn("invalid rast");
+               break;
                }
 
                if (sstByte & mask)
@@ -1206,55 +1248,62 @@ gboolean tcore_sim_decode_sst(struct tel_sim_sst *p_sst, unsigned char *p_in, in
                        *p_index = 0;
 
                p_index += sizeof(char);
-               simServiceID++; // next service id
+               simServiceID++; /* next service id */
        }
+
        return TRUE;
 }
 
 gboolean tcore_sim_decode_cdma_st(struct tel_sim_cst *p_cdma_st, unsigned char *p_in, int in_length)
 {
        unsigned char sstByte, rast, mask = 0;
-       char simServiceID = 1;  // set "CHV1 disable function"
+       char simServiceID = 1;  /* set "CHV1 disable function" */
        int i, svc_count;
        char *p_index;
 
-       memset((void*)p_cdma_st, 0, sizeof(struct tel_sim_cst));
+       memset((void *)p_cdma_st, 0, sizeof(struct tel_sim_cst));
 
        if (in_length == 0 || in_length > SIM_CDMA_ST_SERVICE_LEN_MAX)
                return FALSE;
 
-       // get count of SIM service id. one byte has four service status.
+       /* get count of SIM service id. one byte has four service status. */
        svc_count = in_length * 4;
 
-       /*CDMA_ST service is described to 47(1 byte includes 4 service status) in C.S0023 3.4.18.
-           Current tel_sim_cst.serivce.cdma_service has 47 services. so in_length should be under 12 byte. */
+       /*
+        * CDMA_ST service is described to 47(1 byte includes 4 service status) in C.S0023 3.4.18.
+        * Current tel_sim_cst.serivce.cdma_service has 47 services. so in_length should be under 12 byte.
+        */
        if (svc_count > SIM_CDMA_ST_SERVICE_CNT_MAX)
                svc_count = SIM_CDMA_ST_SERVICE_CNT_MAX;
 
        p_cdma_st->cdma_svc_table = SIM_CDMA_SVC_TABLE;
 
-       p_index = (char*)p_cdma_st->service.cdma_service;
+       p_index = (char *)p_cdma_st->service.cdma_service;
 
        for (i = 0; i < svc_count; i++) {
                sstByte = p_in[(simServiceID - 1) / 4];
                rast = simServiceID - 4 * (simServiceID / 4);
 
                switch (rast) {
-                       case 1:
-                               mask = 0x02;
-                               break;
-                       case 2:
-                               mask = 0x08;
-                               break;
-                       case 3:
-                               mask = 0x20;
-                               break;
-                       case 0:
-                               mask = 0x80;
-                               break;
-                       default:
-                               warn("invalid rast");
-                               break;
+               case 1:
+                       mask = 0x02;
+               break;
+
+               case 2:
+                       mask = 0x08;
+               break;
+
+               case 3:
+                       mask = 0x20;
+               break;
+
+               case 0:
+                       mask = 0x80;
+               break;
+
+               default:
+                       warn("invalid rast");
+               break;
                }
 
                if (sstByte & mask)
@@ -1263,8 +1312,9 @@ gboolean tcore_sim_decode_cdma_st(struct tel_sim_cst *p_cdma_st, unsigned char *
                        *p_index = 0;
 
                p_index += sizeof(char);
-               simServiceID++; // next service id
+               simServiceID++; /* next service id */
        }
+
        return TRUE;
 }
 
@@ -1273,27 +1323,30 @@ gboolean tcore_sim_decode_csim_st(struct tel_sim_cst *p_csim_st, unsigned char *
        int i, j;
        char mask;
        char *p_index;
-       memset((void*) p_csim_st, 0, sizeof(struct tel_sim_cst));
+       memset((void *) p_csim_st, 0, sizeof(struct tel_sim_cst));
 
        p_csim_st->cdma_svc_table = SIM_CSIM_SVC_TABLE;
-       p_index = (char*)p_csim_st->service.csim_service;
+       p_index = (char *)p_csim_st->service.csim_service;
 
-       /*CSIM_ST service is described to 41(1 byte includes 8 service status) in C.S0065 5.2.18.
-           Current tel_sim_cst.serivce.csim_service has 41 services. so in_length should be under 6 byte. */
+       /*
+        * CSIM_ST service is described to 41(1 byte includes 8 service status) in C.S0065 5.2.18.
+        * Current tel_sim_cst.serivce.csim_service has 41 services. so in_length should be under 6 byte.
+        */
        if (in_length > SIM_CSIM_ST_SERVICE_LEN_MAX)
                in_length = SIM_CSIM_ST_SERVICE_LEN_MAX;
 
        for (i = 0; i < in_length; i++) {
-               mask = 0x01;    // reset mask to check first bit
+               mask = 0x01;    /* reset mask to check first bit */
 
                for (j = 0; j < 8; j++) {
-                       if (p_in[i] & mask) {
+                       if (p_in[i] & mask)
                                *p_index = 1;
-                       }
+
                        p_index += sizeof(char);
                        mask = mask << 1;
                }
        }
+
        return TRUE;
 }
 
@@ -1312,34 +1365,36 @@ gboolean tcore_sim_decode_spn(struct tel_sim_spn *p_spn, unsigned char *p_in, in
 
                p_spn->spn[i - 1] = p_in[i];
        }
+
        p_spn->spn[i-1] = '\0';
 
-       dbg( "spn:[%s] display condition : [%d]", p_spn->spn, p_spn->display_condition);
+       dbg("spn:[%s] display condition : [%d]", p_spn->spn, p_spn->display_condition);
 
        return TRUE;
 }
 
 gboolean tcore_sim_decode_cdma_spn(struct tel_sim_spn *p_spn, unsigned char *p_in, int in_length)
 {
-       int i=0;
+       int i = 0;
 
        if (in_length == 0)
                return FALSE;
 
        p_spn->display_condition = p_in[0] & 0x1;
 
-       /*Note : Character Encoding (1 byte) and Language Indicator (1 byte)
-           are ignored, will be added later if required by Application */
-
+       /*
+        * Note : Character Encoding (1 byte) and Language Indicator (1 byte)
+        * are ignored, will be added later if required by Application
+        */
        for (i = 3; i < SIM_CDMA_SPN_LEN_MAX + 1; i++) {
                if (p_in[i] == 0xFF)
                        break; /* loop break*/
 
                p_spn->spn[i - 3] = p_in[i];
        }
-       p_spn->spn[i-3] = '\0';
+       p_spn->spn[i - 3] = '\0';
 
-       dbg( "spn:[%s] display condition : [%d]", p_spn->spn, p_spn->display_condition);
+       dbg("spn:[%s] display condition : [%d]", p_spn->spn, p_spn->display_condition);
 
        return TRUE;
 }
@@ -1351,18 +1406,21 @@ gboolean tcore_sim_decode_spdi(struct tel_sim_spdi *p_spdi, unsigned char *p_in,
        if (in_length == 0)
                return FALSE;
 
-       if(p_in[0] == 0xff){
+       if (p_in[0] == 0xff) {
                dbg("file is exist but there is no valid records");
+
                p_spdi->plmn_count = 0;
                memset(p_spdi->list, 0x00, sizeof(unsigned char)*7*SIM_SPDI_PLMN_MAX);
+
                return TRUE;
        }
 
-       //Display info tag('A3')
+       /* Display info tag('A3') */
        if (p_in[0] == 0xA3) {
                total_data_len = p_in[1];
                dbg("total_data_len=[%d]", total_data_len);
-                //PLMN list tag('80')
+
+                /* PLMN list tag('80') */
                if (p_in[2] == 0x80) {
                        p_spdi->plmn_count = p_in[3] / 3;
 
@@ -1376,31 +1434,34 @@ gboolean tcore_sim_decode_spdi(struct tel_sim_spdi *p_spdi, unsigned char *p_in,
 
                        Src_plmn_start_len = 4;
 
-                       dbg( "p_spdi->num_of_plmn_entries[%d]", p_spdi->plmn_count);
+                       dbg("p_spdi->num_of_plmn_entries[%d]", p_spdi->plmn_count);
 
                        for (i = 0; i < p_spdi->plmn_count; i++) {
                                _decode_plmn(&p_in[Src_plmn_start_len], p_spdi->list[i].plmn);
-                               dbg( "SPDI PLMN[%d][%s]", i, p_spdi->list[i].plmn);
+                               dbg("SPDI PLMN[%d][%s]", i, p_spdi->list[i].plmn);
 
                                Src_plmn_start_len = Src_plmn_start_len + 3;
                        }
+
                        return TRUE;
                }
+
                dbg("Current EF-SPDI has invalid data");
                return FALSE;
        }
+
        dbg("Current EF-SPDI has invalid data");
        return FALSE;
 }
 
 gboolean tcore_sim_decode_msisdn(struct tel_sim_msisdn *p_msisdn, unsigned char *p_in, int in_length)
 {
-       int X = 0;      // alpha id max length
+       int X = 0;      /* alpha id max length */
        int alpha_id_length = 0;
        int value_length = 0;
-       int bcd_byte = 0;       // dialing number max length
+       int bcd_byte = 0;       /* dialing number max length */
 
-       memset((void*) p_msisdn, 0, sizeof(struct tel_sim_msisdn));
+       memset((void *) p_msisdn, 0, sizeof(struct tel_sim_msisdn));
 
        if (in_length < 14) {
                err("invalid in_length[%d]", in_length);
@@ -1412,106 +1473,109 @@ gboolean tcore_sim_decode_msisdn(struct tel_sim_msisdn *p_msisdn, unsigned char
                return FALSE;
        }
 
-       X = in_length - 14;     // get alpha id max length
+       X = in_length - 14;     /* get alpha id max length */
 
        if (X != 0) {
                alpha_id_length = X;
                dbg("alpha_id_length[%d]", alpha_id_length);
-               if(alpha_id_length > SIM_XDN_ALPHA_ID_LEN_MAX)
+               if (alpha_id_length > SIM_XDN_ALPHA_ID_LEN_MAX)
                        alpha_id_length = SIM_XDN_ALPHA_ID_LEN_MAX;
 
                value_length =  _get_string((unsigned char *)p_msisdn->name, p_in, alpha_id_length);
                p_msisdn->name[value_length] = '\0';
        }
 
-       // get dialing number length
-       // p_in[X] is BCD length of dialing number length plus TON/NPI 1 bytes.
-       // Convert to digit length and subtract TON/NPI length.
+       /* get dialing number length */
+       /* p_in[X] is BCD length of dialing number length plus TON/NPI 1 bytes. */
+       /* Convert to digit length and subtract TON/NPI length. */
        if (p_in[X] != 0xFF) {
-               dbg( "Dialing number Length %d, BCD length 0x%x ",  (p_in[X] - 1) * 2, p_in[X]);
+               dbg("Dialing number Length %d, BCD length 0x%x ",  (p_in[X] - 1) * 2, p_in[X]);
 
-               // get TON and NPI
+               /* get TON and NPI */
                p_msisdn->ton = (p_in[X + 1] >> 4) & 0x07;
 
-               // get actual dialing number length
+               /* get actual dialing number length */
                bcd_byte = _get_valid_bcd_byte(&p_in[X + 2], SIM_XDN_NUMBER_LEN_MAX / 2);
-               dbg( "bcd_byte[%x]", bcd_byte);
+               dbg("bcd_byte[%x]", bcd_byte);
 
-               // get dialing number/SSC string
-               value_length = _bcd_to_digit((char*) p_msisdn->num, (char*) &p_in[X + 2], bcd_byte); // actual dialing number length in BCD.
+               /* get dialing number/SSC string */
+               value_length = _bcd_to_digit((char *)p_msisdn->num, (char *) &p_in[X + 2], bcd_byte); /* actual dialing number length in BCD. */
                p_msisdn->num[value_length] = '\0';
                p_msisdn->next_record = p_in[X+13];
-               dbg( "p_msisdn->num[%s]", p_msisdn->num);
+               dbg("p_msisdn->num[%s]", p_msisdn->num);
        }
+
        return TRUE;
 }
 
 gboolean tcore_sim_decode_mdn(struct tel_sim_msisdn *p_msisdn, unsigned char *p_in, int in_length)
 {
        int value_length = 0;
-       int bcd_byte = 0;       // dialing number max length
+       int bcd_byte = 0;       /* dialing number max length */
 
-       memset((void*) p_msisdn, 0, sizeof(struct tel_sim_msisdn));
+       memset((void *)p_msisdn, 0, sizeof(struct tel_sim_msisdn));
 
        if (in_length == 0)
                return FALSE;
 
-       if (_is_empty(p_in, in_length) == TRUE) {
+       if (_is_empty(p_in, in_length) == TRUE)
                return FALSE;
-       }
 
-       /*Note : Alpha identifier is not present in EF-MDN file.*/
+       /* Note : Alpha identifier is not present in EF-MDN file. */
        if (p_in[0] != 0xFF) {
-               dbg( "Dialing number Length %d, BCD length 0x%x ",  (p_in[0] - 1) * 2, p_in[0]);
+               dbg("Dialing number Length %d, BCD length 0x%x ",  (p_in[0] - 1) * 2, p_in[0]);
 
-               // get TON and NPI
+               /* get TON and NPI */
                p_msisdn->ton = (p_in[9] >> 4) & 0x07;
 
-               // get actual dialing number length
+               /* get actual dialing number length */
                bcd_byte = _get_valid_bcd_byte(&p_in[1], 8);
-               dbg( "bcd_byte[%x]", bcd_byte);
+               dbg("bcd_byte[%x]", bcd_byte);
 
-               // get dialing number/SSC string
-               value_length = _bcd_to_digit((char*) p_msisdn->num, (char*) &p_in[1], bcd_byte); // actual dialing number length in BCD.
+               /* get dialing number/SSC string */
+               value_length = _bcd_to_digit((char *) p_msisdn->num, (char *) &p_in[1], bcd_byte); /* actual dialing number length in BCD. */
                p_msisdn->num[value_length] = '\0';
-               /*p_msisdn->next_record = p_in[];*/ //Need to check with next_record field
+
+               /*p_msisdn->next_record = p_in[];*/ /* Need to check with next_record field */
                dbg("p_msisdn->num[%s]", p_msisdn->num);
        }
+
        return TRUE;
 }
 
 gboolean tcore_sim_decode_xdn(struct tel_sim_dialing_number *p_xdn, unsigned char *p_in, int in_length)
 {
-       int X;  // alpha id max length
-       int bcd_byte;   // dialing number max length
+       int X;  /* alpha id max length */
+       int bcd_byte;   /* dialing number max length */
 
-       memset((void*) p_xdn, 0, sizeof(struct tel_sim_dialing_number));
+       memset((void *)p_xdn, 0, sizeof(struct tel_sim_dialing_number));
 
        if (in_length == 0)
                return FALSE;
 
-       if (_is_empty(p_in, in_length) == TRUE) {
-               return FALSE;   // this is empty record
-       }
+       if (_is_empty(p_in, in_length) == TRUE)
+               return FALSE;   /* this is empty record */
 
-       X = in_length - 14;     // get alpha id max length
+       X = in_length - 14; /* get alpha id max length */
 
        if (X != 0) {
                _get_string((unsigned char *)p_xdn->alpha_id, p_in, X);
                p_xdn->alpha_id_max_len = X;
        }
 
-       // get dialing number length
-       // p_in[X] is BCD length of dialing number length plus TON/NPI 1 bytes.
-       // Convert to digit length and subtract TON/NPI length.
+       /* get dialing number length */
+       /* p_in[X] is BCD length of dialing number length plus TON/NPI 1 bytes. */
+       /* Convert to digit length and subtract TON/NPI length. */
        if (p_in[X] != 0xFF) {
-               dbg( "Dialing number Length %d, BCD length 0x%x ",      (p_in[X] - 1) * 2, p_in[X]);
+               dbg("Dialing number Length %d, BCD length 0x%x ",
+                       (p_in[X] - 1) * 2, p_in[X]);
 
-/*             if (p_xdn->num_max_len > SIM_XDN_NUMBER_LEN_MAX)        {
+               /*
+               if (p_xdn->num_max_len > SIM_XDN_NUMBER_LEN_MAX) {
 
                         this may be broken record.
                         p_xdn->b_used = FALSE;
-                        memset((void*)p_xdn, 0, sizeof(tapi_sim_dialing_number_info_t));
+                        memset((void *)p_xdn, 0, sizeof(tapi_sim_dialing_number_info_t));
                         return FALSE;
 
                         ADN record cannot have more than 20 digits. Anyway we can restrict this as per 31.102
@@ -1529,45 +1593,51 @@ gboolean tcore_sim_decode_xdn(struct tel_sim_dialing_number *p_xdn, unsigned cha
                                p_xdn->num_max_len = 0;
                        else
                                p_xdn->num_max_len = SIM_XDN_NUMBER_LEN_MAX;
-               }*/
+               }
+               */
 
-               // get TON and NPI
+               /* get TON and NPI */
                p_xdn->ton = (p_in[X + 1] >> 4) & 0x07;
                p_xdn->npi = p_in[X + 1] & 0x0F;
 
-               // get actual dialing number length
+               /* get actual dialing number length */
                bcd_byte = _get_valid_bcd_byte(&p_in[X + 2], SIM_XDN_NUMBER_LEN_MAX / 2);
-               dbg( "bcd_byte[%x]", bcd_byte);
+               dbg("bcd_byte[%x]", bcd_byte);
+
+               /* get dialing number/SSC string */
+               _bcd_to_digit((char *) p_xdn->num, (char *) &p_in[X + 2], bcd_byte); /* actual dialing number length in BCD. */
+               dbg("p_xdn->DiallingNum[%s]", p_xdn->num);
 
-               // get dialing number/SSC string
-               _bcd_to_digit((char*) p_xdn->num, (char*) &p_in[X + 2], bcd_byte); // actual dialing number length in BCD.
-               dbg( "p_xdn->DiallingNum[%s]", p_xdn->num);
-               // get Capability/Configuration id
+               /* get Capability/Configuration id */
                p_xdn->cc_id = p_in[X + 12];
-               // get Extension1 id
+
+               /* get Extension1 id */
                p_xdn->ext1_id = p_in[X + 13];
        }
        return TRUE;
 }
 
-chartcore_sim_encode_xdn(int in_length, struct tel_sim_dialing_number *p_xdn)
+char *tcore_sim_encode_xdn(int in_length, struct tel_sim_dialing_number *p_xdn)
 {
-       int alpha_id_space =0, digit_len =0, str_len = 0;
+       int alpha_id_space = 0, digit_len = 0, str_len = 0;
        char bcdCode[SIM_XDN_NUMBER_LEN_MAX / 2];
-       char * p_out = NULL;
+       char *p_out = NULL;
 
        if (in_length < 14) {
-               dbg("in_length[%d] should be greater than or equal to 14.", in_length)
+               dbg("in_length[%d] should be greater than or equal to 14.", in_length);
                return NULL;
        }
 
        p_out = calloc(1, in_length + 1);
-       memset((void*) p_out, 0xFF, in_length);
+       if (!p_out)
+               return NULL;
+
+       memset((void *)p_out, 0xFF, in_length);
 
-       // get alpha id max length
+       /* get alpha id max length */
        alpha_id_space = in_length - 14;
 
-       // alpha id is too big
+       /* alpha id is too big */
        str_len = strlen(p_xdn->alpha_id);
        if (alpha_id_space < str_len) {
                dbg("SIM space for alpha_id is [%d] but input alpha_id length is [%d]. so we will use [%d] byte",
@@ -1576,88 +1646,93 @@ char* tcore_sim_encode_xdn(int in_length, struct tel_sim_dialing_number *p_xdn)
        }
 
        digit_len = strlen(p_xdn->num);
-       // this is digit length
-       if ( digit_len > SIM_XDN_NUMBER_LEN_MAX) {
+       /* this is digit length */
+       if (digit_len > SIM_XDN_NUMBER_LEN_MAX) {
                dbg("SIM space for number is [%d] but input number length is [%d]. so we will use [%d] byte",
-                               SIM_XDN_NUMBER_LEN_MAX, digit_len, SIM_XDN_NUMBER_LEN_MAX);
+                       SIM_XDN_NUMBER_LEN_MAX, digit_len, SIM_XDN_NUMBER_LEN_MAX);
                digit_len = SIM_XDN_NUMBER_LEN_MAX;
        }
 
        _set_string((unsigned char *)p_out, (unsigned char *)p_xdn->alpha_id, str_len);
 
-       // set length of BCD number/SSC contents
-       // p_xdn->diallingnumLen is maximum digit length. = 20 bytes.
-       // convert to BCD length and add 1 byte.
-       p_out[alpha_id_space] = ( (digit_len + 1) / 2 ) + 1;
+       /* set length of BCD number/SSC contents */
+       /* p_xdn->diallingnumLen is maximum digit length. = 20 bytes. */
+       /* convert to BCD length and add 1 byte. */
+       p_out[alpha_id_space] = ((digit_len + 1) / 2) + 1;
 
-       // set TON and NPI
+       /* set TON and NPI */
        p_out[alpha_id_space + 1] = 0x80;
        p_out[alpha_id_space + 1] |= (p_xdn->ton & 0x07) << 4;
        p_out[alpha_id_space + 1] |= p_xdn->npi & 0x0F;
 
-       // set dialing number/SSC string
-       memset((void*) bcdCode, 0xFF, SIM_XDN_NUMBER_LEN_MAX / 2);
+       /* set dialing number/SSC string */
+       memset((void *) bcdCode, 0xFF, SIM_XDN_NUMBER_LEN_MAX / 2);
 
-       _digit_to_bcd((char*) bcdCode, (char*) p_xdn->num, digit_len);
+       _digit_to_bcd((char *)bcdCode, (char *)p_xdn->num, digit_len);
 
-       memcpy((void*) &p_out[alpha_id_space + 2], bcdCode, SIM_XDN_NUMBER_LEN_MAX / 2);
+       memcpy((void *)&p_out[alpha_id_space + 2], bcdCode, SIM_XDN_NUMBER_LEN_MAX / 2);
 
-       // set Capability/Configuration Identifier
+       /* set Capability/Configuration Identifier */
        if (p_xdn->cc_id == 0x00)
                p_out[alpha_id_space + 12] = 0xff;
        else
-               p_out[alpha_id_space + 12] = (unsigned char) p_xdn->cc_id;
-       // set extension1 record Identifier
+               p_out[alpha_id_space + 12] = (unsigned char)p_xdn->cc_id;
+
+       /* set extension1 record Identifier */
        if (p_xdn->ext1_id == 0x00)
                p_out[alpha_id_space + 13] = 0xff;
        else
-               p_out[alpha_id_space + 13] = (unsigned char) p_xdn->ext1_id;
+               p_out[alpha_id_space + 13] = (unsigned char)p_xdn->ext1_id;
 
        return p_out;
 }
 
 gboolean tcore_sim_decode_ecc(struct tel_sim_ecc_list *p_ecc, unsigned char *p_in, int in_length)
 {
-       int bcd_byte;   // dialing number max length
+       int bcd_byte;   /* dialing number max length */
        int i;
        int valid_ecc_length;
-       memset((void*)p_ecc, 0x00, sizeof(struct tel_sim_ecc_list));
 
-       if(in_length%3 != 0) {
+       memset((void *)p_ecc, 0x00, sizeof(struct tel_sim_ecc_list));
+
+       if (in_length % 3 != 0) {
                dbg("error - invalid data length");
                return FALSE;
        }
 
-       for(i=0; i < in_length/3; i++){
-               //get the BCD length of the ECC
-               bcd_byte = _get_valid_bcd_byte((unsigned char*) p_in+(i*3), 3);
-               if(bcd_byte != 0) {
+       for (i = 0; i < in_length / 3; i++) {
+               /* get the BCD length of the ECC */
+               bcd_byte = _get_valid_bcd_byte((unsigned char *) p_in+(i*3), 3);
+               if (bcd_byte != 0) {
                        valid_ecc_length = _bcd_to_digit(p_ecc->ecc[p_ecc->ecc_count].ecc_num, (char *)p_in+(i*3), bcd_byte);
                        p_ecc->ecc[p_ecc->ecc_count].ecc_num[valid_ecc_length] = '\0';
                        p_ecc->ecc_count++;
                }
        }
+
        return TRUE;
 }
 
 gboolean tcore_sim_decode_ext(struct tel_sim_ext *p_ext, unsigned char *p_in, int in_length)
 {
-       int bcd_byte;   // dialing number max length
+       int bcd_byte;   /* dialing number max length */
        gboolean res = FALSE;
-       memset((void*)p_ext, 0x00, sizeof(struct tel_sim_ext));
 
-       if(*p_in & 0x01) {
+       memset((void *)p_ext, 0x00, sizeof(struct tel_sim_ext));
+
+       if (*p_in & 0x01) {
                dbg("Record type - Called Party Subaddress - NOT SUPPORTED");
-       } else if(*p_in & 0x02) {
+       } else if (*p_in & 0x02) {
                dbg("Record type - Additional data");
                bcd_byte = _get_valid_bcd_byte(&p_in[2], SIM_XDN_NUMBER_LEN_MAX / 2);
-               p_ext->ext_len = _bcd_to_digit((char*) p_ext->ext, (char*) &p_in[2], bcd_byte); // actual dialing number length in BCD.
+               p_ext->ext_len = _bcd_to_digit((char *) p_ext->ext, (char *) &p_in[2], bcd_byte); /* actual dialing number length in BCD. */
                p_ext->next_record = p_in[12];
-               dbg( "Dialing number Length[%d]", p_ext->ext_len);
+               dbg("Dialing number Length[%d]", p_ext->ext_len);
                res = TRUE;
        } else {
                dbg("Record type - Invalid");
        }
+
        return res;
 }
 
@@ -1666,8 +1741,9 @@ gboolean tcore_sim_decode_ust(struct tel_sim_ust *p_ust, unsigned char *p_in, in
        int i, j;
        char mask;
        char *p_index;
-       memset((void*) p_ust, 0, sizeof(struct tel_sim_ust));
-       p_index = (char*)p_ust;
+
+       memset((void *)p_ust, 0, sizeof(struct tel_sim_ust));
+       p_index = (char *)p_ust;
 
        if (in_length == 0) {
                err("invalid length. return FALSE.");
@@ -1684,16 +1760,17 @@ gboolean tcore_sim_decode_ust(struct tel_sim_ust *p_ust, unsigned char *p_in, in
        }
 
        for (i = 0; i < in_length; i++) {
-               mask = 0x01;    // reset mast to check first bit
+               mask = 0x01;    /* reset mast to check first bit */
 
                for (j = 0; j < 8; j++) {
-                       if (p_in[i] & mask) {
+                       if (p_in[i] & mask)
                                *p_index = 1;
-                       }
+
                        p_index += sizeof(char);
                        mask = mask << 1;
                }
        }
+
        return TRUE;
 }
 
@@ -1702,6 +1779,7 @@ gboolean tcore_sim_decode_ist(struct tel_sim_ist *p_ist, unsigned char *p_in, in
        int i, j;
        char mask;
        char *p_index;
+
        memset((void *)p_ist, 0, sizeof(struct tel_sim_ist));
        p_index = (char *)p_ist;
 
@@ -1716,33 +1794,36 @@ gboolean tcore_sim_decode_ist(struct tel_sim_ist *p_ist, unsigned char *p_in, in
                mask = 0x01; /* reset mast to check first bit */
 
                for (j = 0; j < 8; j++) {
-                       if (p_in[i] & mask) {
+                       if (p_in[i] & mask)
                                *p_index = 1;
-                       }
+
                        p_index += sizeof(char);
                        mask = mask << 1;
                }
        }
+
        return TRUE;
 }
 
 gboolean tcore_sim_decode_est(struct tel_sim_est *p_est, unsigned char *p_in, int in_length)
 {
-       memset((void*) p_est, 0, sizeof(struct tel_sim_est));
+       memset((void *)p_est, 0, sizeof(struct tel_sim_est));
 
        if (*p_in & 0x01)
                p_est->bFdnEnabled = TRUE;
+
        if (*p_in & 0x02)
                p_est->bBdnEnabled = TRUE;
+
        if (*p_in & 0x04)
                p_est->bAclEnabled = TRUE;
 
        return TRUE;
 }
 
-gboolean tcore_sim_decode_uecc(struct tel_sim_ecc *p_ecc, unsigned charp_in, int in_length)
+gboolean tcore_sim_decode_uecc(struct tel_sim_ecc *p_ecc, unsigned char *p_in, int in_length)
 {
-       int bcd_byte;   // dialing number max length
+       int bcd_byte;   /* dialing number max length */
        unsigned char eccServiceCategory;
 
        if (_is_empty(p_in, in_length) == TRUE) {
@@ -1750,52 +1831,51 @@ gboolean tcore_sim_decode_uecc(struct tel_sim_ecc *p_ecc, unsigned char* p_in, i
                return FALSE;
        }
 
-       //get the BCD length of the ECC
+       /* get the BCD length of the ECC */
        bcd_byte = _get_valid_bcd_byte(&p_in[0], SIM_ECC_BYTE_LEN_MAX);
 
-       //get the ECC codes in digits and the length as well
-       _bcd_to_digit((char*) p_ecc->ecc_num, (char*) &p_in[0], bcd_byte);
+       /* get the ECC codes in digits and the length as well */
+       _bcd_to_digit((char *) p_ecc->ecc_num, (char *)&p_in[0], bcd_byte);
 
-       //get the alpha identifier of ECC (
-       _get_string((unsigned char*) p_ecc->ecc_string, (unsigned char*) &p_in[3], in_length - 3);
+       /* get the alpha identifier of ECC */
+       _get_string((unsigned char *) p_ecc->ecc_string, (unsigned char *)&p_in[3], in_length - 3);
 
        eccServiceCategory = p_in[in_length - 1];
 
        /*
-        Assign the service category
-        3GPP TS24.008 Emergency Service Category Value.
-        Bit 8,7,6 are spare, 5~1 bit is used.
-        The meaning of the Emergency Category Value is derived from the following settings
-        (see 3GPP TS 22.101 clause 10):
-        Bit 1  Police 0x01
-        Bit 2  Ambulance 0x02
-        Bit 3  Fire Brigade 0x04
-        Bit 4  Marine Guard 0x08
-        Bit 5  Mountain Rescue 0x10
-        Bit 6  manually initiated eCall
-        Bit 7  automatically initiated eCall
-        Bit 8  is spare and set to "0"
+        Assign the service category
+        3GPP TS24.008 Emergency Service Category Value.
+        * Bit 8, 7, 6 are spare, 5~1 bit is used.
+        The meaning of the Emergency Category Value is derived from the following settings
+        (see 3GPP TS 22.101 clause 10):
+        * Bit 1        Police 0x01
+        * Bit 2        Ambulance 0x02
+        * Bit 3        Fire Brigade 0x04
+        * Bit 4        Marine Guard 0x08
+        * Bit 5        Mountain Rescue 0x10
+        * Bit 6        manually initiated eCall
+        * Bit 7        automatically initiated eCall
+        * Bit 8        is spare and set to "0"
         */
 
-       if (eccServiceCategory == 0xFF) {       // if category vaule is unused (unchecked) then just return 0xff
+       if (eccServiceCategory == 0xFF) /* if category vaule is unused (unchecked) then just return 0xff */
                p_ecc->ecc_category = eccServiceCategory;
-       } else {
-               p_ecc->ecc_category = eccServiceCategory & 0x1F;        // Check for the first 5 bits
-       }
+       else
+               p_ecc->ecc_category = eccServiceCategory & 0x1F; /* Check for the first 5 bits */
 
        return TRUE;
 }
 
-gboolean tcore_sim_decode_gid( struct tel_sim_gid *p_gid, unsigned char* p_in, int in_length)
+gboolean tcore_sim_decode_gid(struct tel_sim_gid *p_gid, unsigned char *p_in, int in_length)
 {
        int i;
 
-       memset((void*) p_gid, 0, sizeof(struct tel_sim_gid ));
+       memset((void *) p_gid, 0, sizeof(struct tel_sim_gid));
 
        if (in_length == 0)
                return FALSE;
 
-/*regarding 31.102, EF-GID data byte is not defined. currently 10.*/
+       /* regarding 31.102, EF-GID data byte is not defined. currently 10. */
        if (in_length >= SIM_GROUP_IDENTIFIER_LEN_MAX)
                in_length = SIM_GROUP_IDENTIFIER_LEN_MAX;
 
@@ -1806,6 +1886,7 @@ gboolean tcore_sim_decode_gid( struct tel_sim_gid *p_gid, unsigned char* p_in, i
                p_gid->szGroupIdentifier[i] = p_in[i];
                p_gid->GroupIdentifierLen++;
        }
+
        return TRUE;
 }
 
@@ -1815,32 +1896,33 @@ gboolean tcore_sim_decode_mbi(struct tel_sim_mbi *p_mbi, unsigned char *p_in, in
        if (in_length == 0 || in_length > SIM_MAIL_BOX_IDENTIFIER_LEN_MAX)
                return FALSE;
 
-       if ( _is_empty(p_in, in_length) == TRUE) {
-               return FALSE; // this is empty record
-       }
+       if (_is_empty(p_in, in_length) == TRUE)
+               return FALSE; /* this is empty record */
 
        p_mbi->voice_index = p_in[0];
        p_mbi->fax_index = p_in[1];
        p_mbi->email_index = p_in[2];
        p_mbi->other_index = p_in[3];
 
-       // 5th byte is optional
+       /* 5th byte is optional */
        if (in_length == 5)
                p_mbi->video_index = p_in[4];
 
        return TRUE;
 }
 
-chartcore_sim_encode_mbi(const struct tel_sim_mbi *p_mbi, int in_length)
+char *tcore_sim_encode_mbi(const struct tel_sim_mbi *p_mbi, int in_length)
 {
        char *p_out = NULL;
 
        if (in_length < 4) {
-               dbg("in_length[%d] should be greater than or equal to 4.", in_length)
+               dbg("in_length[%d] should be greater than or equal to 4.", in_length);
                return NULL;
        }
 
        p_out = calloc(1, in_length);
+       if (!p_out)
+               return NULL;
 
        p_out[0] = p_mbi->voice_index;
        p_out[1] = p_mbi->fax_index;
@@ -1858,23 +1940,21 @@ gboolean tcore_sim_decode_cff(struct tel_sim_cphs_cf *p_cff, unsigned char *p_in
        if (in_length == 0)
                return FALSE;
 
-       dbg( "flag(0)=%x, packetlen=%d ", (unsigned int)p_in[0], in_length);
-       dbg( "flag(1)=%x", p_in[1]);
+       dbg("flag(0)=%x, packetlen=%d ", (unsigned int)p_in[0], in_length);
+       dbg("flag(1)=%x", p_in[1]);
 
-       if ((p_in[0] & 0x0F) == 0x0A) {
+       if ((p_in[0] & 0x0F) == 0x0A)
                p_cff->b_line1 = TRUE;
-       }
-       if ((p_in[0] & 0xF0) == 0xA0) {
+
+       if ((p_in[0] & 0xF0) == 0xA0)
                p_cff->b_line2 = TRUE;
-       }
 
        if (in_length > 1) {
-               if ((p_in[1] & 0x0F) == 0x0A) {
+               if ((p_in[1] & 0x0F) == 0x0A)
                        p_cff->b_fax = TRUE;
-               }
-               if ((p_in[1] & 0xF0) == 0xA0) {
+
+               if ((p_in[1] & 0xF0) == 0xA0)
                        p_cff->b_data = TRUE;
-               }
        }
 
        dbg("Line1 = %d, line2 = %d, Fax = %d, Data = %d ",
@@ -1885,34 +1965,34 @@ gboolean tcore_sim_decode_cff(struct tel_sim_cphs_cf *p_cff, unsigned char *p_in
        return TRUE;
 }
 
-chartcore_sim_encode_cff(const struct tel_sim_cphs_cf *cff, int in_length)
+char *tcore_sim_encode_cff(const struct tel_sim_cphs_cf *cff, int in_length)
 {
        int i, j = 0;
        char *p_out = NULL;
-       unsigned char* pTemp = (unsigned char*) cff;
+       unsigned char *pTemp = (unsigned char *) cff;
        unsigned char present = 0x0A;
        unsigned char absent = 0x05;
 
        if (in_length < SIM_CPHS_CALL_FORWARDING_LEN_MIN) {
-               err("in_length[%d] is smaller than SIM_CPHS_CALL_FORWARDING_LEN_MIN[%d]", in_length, SIM_CPHS_CALL_FORWARDING_LEN_MIN);
+               err("in_length[%d] is smaller than SIM_CPHS_CALL_FORWARDING_LEN_MIN[%d]",
+                       in_length, SIM_CPHS_CALL_FORWARDING_LEN_MIN);
                return NULL;
        }
 
        p_out =  calloc(1, SIM_CPHS_CALL_FORWARDING_LEN_MIN+1);
-       if (!p_out) {
+       if (!p_out)
                return NULL;
-       }
 
        for (i = 0; i < SIM_CPHS_CALL_FORWARDING_LEN_MIN; i++) {
                present = 0x0A;
                absent = 0x05;
 
                for (j = 0; j < 2; j++) {
-                       if (*pTemp) {
+                       if (*pTemp)
                                p_out[i] = p_out[i] | present;
-                       } else {
+                       else
                                p_out[i] = p_out[i] | absent;
-                       }
+
                        pTemp += sizeof(gboolean);
                        present = present << 4;
                        absent = absent << 4;
@@ -1932,7 +2012,7 @@ gboolean tcore_sim_decode_csp(struct tel_sim_cphs_csp *p_csp, unsigned char *p_i
        if (in_length == 0)
                return FALSE;
 
-       memset((void*) p_csp, 0, sizeof(struct tel_sim_cphs_csp));
+       memset((void *) p_csp, 0, sizeof(struct tel_sim_cphs_csp));
 
        /* current telephony supports 22 byte cphs-csp data. 18 byte is mandatory, the other is optional. */
        for (i = 0, j = 0; i < SIM_CPHS_CSP_LEN_MAX && j < SIM_CPHS_CSP_ENTRY_CNT_MAX; i++, j++) {
@@ -1941,375 +2021,429 @@ gboolean tcore_sim_decode_csp(struct tel_sim_cphs_csp *p_csp, unsigned char *p_i
                mask = 0x80;
 
                switch (p_csp->service_profile_entry[j].customer_service_group) {
-                       case 0x01:
-                               for (k = 0; k < 5; k++) {
-                                       switch (byteSignificance & mask) {
-                                               case 0x80:
-                                                       p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_unconditional = TRUE;
-                                                       break;
-                                               case 0x40:
-                                                       p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_on_user_busy = TRUE;
-                                                       break;
-                                               case 0x20:
-                                                       p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_on_no_reply = TRUE;
-                                                       break;
-                                               case 0x10:
-                                                       p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_on_user_not_reachable = TRUE;
-                                                       break;
-                                               case 0x08:
-                                                       p_csp->service_profile_entry[j].service.call_offering.b_call_transfer = TRUE;
-                                                       break;
-                                               default:
-                                                       break;
-                                       }
-                                       mask = mask >> 1;
-                               }
+               case 0x01:
+                       for (k = 0; k < 5; k++) {
+                               switch (byteSignificance & mask) {
+                               case 0x80:
+                                       p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_unconditional = TRUE;
                                break;
 
-                       case 0x02:
-                               for (k = 0; k < 5; k++) {
-                                       switch (byteSignificance & mask) {
-                                               case 0x80:
-                                                       p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_all_outgoing_calls = TRUE;
-                                                       break;
-                                               case 0x40:
-                                                       p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_outgoing_international_calls = TRUE;
-                                                       break;
-                                               case 0x20:
-                                                       p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_outgoing_international_calls_except_hplmn = TRUE;
-                                                       break;
-                                               case 0x10:
-                                                       p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_all_incoming_calls_roaming_outside_hplmn = TRUE;
-                                                       break;
-                                               case 0x08:
-                                                       p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_incoming_calls_when_roaming = TRUE;
-                                                       break;
-                                               default:
-                                                       break;
-                                       }
-                                       mask = mask >> 1;
-                               }
+                               case 0x40:
+                                       p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_on_user_busy = TRUE;
                                break;
 
-                       case 0x03:
-                               for (k = 0; k < 5; k++) {
-                                       switch (byteSignificance & mask) {
-                                               case 0x80:
-                                                       p_csp->service_profile_entry[j].service.other_supp_services.b_multi_party_service = TRUE;
-                                                       break;
-                                               case 0x40:
-                                                       p_csp->service_profile_entry[j].service.other_supp_services.b_closed_user_group = TRUE;
-                                                       break;
-                                               case 0x20:
-                                                       p_csp->service_profile_entry[j].service.other_supp_services.b_advice_of_charge = TRUE;
-                                                       break;
-                                               case 0x10:
-                                                       p_csp->service_profile_entry[j].service.other_supp_services.b_preferential_closed_user_group = TRUE;
-                                                       break;
-                                               case 0x08:
-                                                       p_csp->service_profile_entry[j].service.other_supp_services.b_closed_user_group_outgoing_access = TRUE;
-                                                       break;
-                                               default:
-                                                       break;
-                                       }
-                                       mask = mask >> 1;
-                               }
+                               case 0x20:
+                                       p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_on_no_reply = TRUE;
                                break;
 
-                       case 0x04:
-                               for (k = 0; k < 4; k++) {
-                                       switch (byteSignificance & mask) {
-                                               case 0x80:
-                                                       p_csp->service_profile_entry[j].service.call_complete.b_call_hold = TRUE;
-                                                       break;
-                                               case 0x40:
-                                                       p_csp->service_profile_entry[j].service.call_complete.b_call_waiting = TRUE;
-                                                       break;
-                                               case 0x20:
-                                                       p_csp->service_profile_entry[j].service.call_complete.b_completion_of_call_to_busy_subscriber = TRUE;
-                                                       break;
-                                               case 0x10:
-                                                       p_csp->service_profile_entry[j].service.call_complete.b_user_user_signalling = TRUE;
-                                                       break;
-                                               default:
-                                                       break;
-                                       }
-                                       mask = mask >> 1;
-                               }
+                               case 0x10:
+                                       p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_on_user_not_reachable = TRUE;
                                break;
 
-                       case 0x05:
-                               for (k = 0; k < 7; k++) {
-                                       switch (byteSignificance & mask) {
-                                               case 0x80:
-                                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_mobile_terminated = TRUE;
-                                                       break;
-                                               case 0x40:
-                                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_mobile_originated = TRUE;
-                                                       break;
-                                               case 0x20:
-                                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_cell_broadcast = TRUE;
-                                                       break;
-                                               case 0x10:
-                                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_reply_path = TRUE;
-                                                       break;
-                                               case 0x08:
-                                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_delivery_conf = TRUE;
-                                                       break;
-                                               case 0x04:
-                                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_protocol_identifier = TRUE;
-                                                       break;
-                                               case 0x02:
-                                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_validity_period = TRUE;
-                                                       break;
-                                               default:
-                                                       break;
-                                       }
-                                       mask = mask >> 1;
-                               }
+                               case 0x08:
+                                       p_csp->service_profile_entry[j].service.call_offering.b_call_transfer = TRUE;
                                break;
 
-                       case 0x06:
-                               for (k = 0; k < 1; k++) {
-                                       switch (byteSignificance & mask) {
-                                               case 0x80:
-                                                       p_csp->service_profile_entry[j].service.cphs_teleservices.b_alternative_line_service =  TRUE;
-                                                       break;
-                                               default:
-                                                       break;
-                                       }
-                                       mask = mask >> 1;
+                               default:
+                               break;
                                }
+                               mask = mask >> 1;
+                       }
+               break;
+
+               case 0x02:
+                       for (k = 0; k < 5; k++) {
+                               switch (byteSignificance & mask) {
+                               case 0x80:
+                                       p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_all_outgoing_calls = TRUE;
                                break;
 
-                       case 0x07:
-                               for (k = 0; k < 1; k++) {
-                                       switch (byteSignificance & mask) {
-                                               case 0x80:
-                                                       p_csp->service_profile_entry[j].service.cphs_features.b_string_service_table = TRUE;
-                                                       break;
-                                               default:
-                                                       break;
-                                       }
-                                       mask = mask >> 1;
-                               }
+                               case 0x40:
+                                       p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_outgoing_international_calls = TRUE;
                                break;
 
-                       case 0x08:
-                               for (k = 0; k < 8; k++) {
-                                       switch (byteSignificance & mask) {
-                                               case 0x80:
-                                                       p_csp->service_profile_entry[j].service.number_identifiers.b_calling_line_identification_present = TRUE;
-                                                       break;
-                                               case 0x20:
-                                                       p_csp->service_profile_entry[j].service.number_identifiers.b_connected_line_identification_restrict = TRUE;
-                                                       break;
-                                               case 0x10:
-                                                       p_csp->service_profile_entry[j].service.number_identifiers.b_connected_line_identification_present = TRUE;
-                                                       break;
-                                               case 0x08:
-                                                       p_csp->service_profile_entry[j].service.number_identifiers.b_malicious_call_identifier = TRUE;
-                                                       break;
-                                               case 0x02:
-                                                       p_csp->service_profile_entry[j].service.number_identifiers.b_calling_line_identification_send = TRUE;
-                                                       break;
-                                               case 0x01:
-                                                       p_csp->service_profile_entry[j].service.number_identifiers.b_calling_line_identification_block = TRUE;
-                                                       break;
-                                               default:
-                                                       break;
-                                       }
-                                       mask = mask >> 1;
-                               }
+                               case 0x20:
+                                       p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_outgoing_international_calls_except_hplmn = TRUE;
                                break;
 
-                       case 0x09:
-                               for (k = 0; k < 6; k++) {
-                                       switch (byteSignificance & mask) {
-                                               case 0x80:
-                                                       p_csp->service_profile_entry[j].service.phase_services.b_menu_for_gprs = TRUE;
-                                                       break;
-                                               case 0x40:
-                                                       p_csp->service_profile_entry[j].service.phase_services.b_menu_for_high_speed_csd = TRUE;
-                                                       break;
-                                               case 0x20:
-                                                       p_csp->service_profile_entry[j].service.phase_services.b_menu_for_voice_group_call = TRUE;
-                                                       break;
-                                               case 0x10:
-                                                       p_csp->service_profile_entry[j].service.phase_services.b_menu_for_voice_broadcast_service = TRUE;
-                                                       break;
-                                               case 0x08:
-                                                       p_csp->service_profile_entry[j].service.phase_services.b_menu_for_multiple_subscriber_profile = TRUE;
-                                                       break;
-                                               case 0x04:
-                                                       p_csp->service_profile_entry[j].service.phase_services.b_menu_for_multiple_band = TRUE;
-                                                       break;
-                                               default:
-                                                       break;
-                                       }
-                                       mask = mask >> 1;
-                               }
+                               case 0x10:
+                                       p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_all_incoming_calls_roaming_outside_hplmn = TRUE;
                                break;
 
-                       case 0xC0:
-                               for (k = 0; k < 8; k++) {
-                                       switch (byteSignificance & mask) {
-                                               case 0x80:
-                                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_manual_selection = TRUE;
-                                                       break;
-                                               case 0x40:
-                                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_voice_mail = TRUE;
-                                                       break;
-                                               case 0x20:
-                                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_mo_sms_and_paging = TRUE;
-                                                       break;
-                                               case 0x10:
-                                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_mo_sms_with_emial_type = TRUE;
-                                                       break;
-                                               case 0x08:
-                                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_fax_calls = TRUE;
-                                                       break;
-                                               case 0x04:
-                                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_data_calls = TRUE;
-                                                       break;
-                                               case 0x01:
-                                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_change_language = TRUE;
-                                                       break;
-                                               default:
-                                                       break;
-                                       }
-                                       mask = mask >> 1;
-                               }
+                               case 0x08:
+                                       p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_incoming_calls_when_roaming = TRUE;
                                break;
 
-                       case 0xD5:
-                               for (k = 0; k < 8; k++) {
-                                       switch (byteSignificance & mask) {
-                                               case 0x80:
-                                               case 0x40:
-                                               case 0x20:
-                                               case 0x10:
-                                               case 0x08:
-                                               case 0x04:
-                                               case 0x02:
-                                               case 0x01:
-                                                       p_csp->service_profile_entry[j].service.information_numbers.b_information_numbers = TRUE;
-                                                       break;
-                                               default:
-                                                       break;
-                                       }
-                                       mask = mask >> 1;
+                               default:
+                               break;
                                }
+                               mask = mask >> 1;
+                       }
+               break;
+
+               case 0x03:
+                       for (k = 0; k < 5; k++) {
+                               switch (byteSignificance & mask) {
+                               case 0x80:
+                                       p_csp->service_profile_entry[j].service.other_supp_services.b_multi_party_service = TRUE;
                                break;
 
-                       default:
+                               case 0x40:
+                                       p_csp->service_profile_entry[j].service.other_supp_services.b_closed_user_group = TRUE;
                                break;
-               }
-       }
-       return TRUE;
-}
 
-gboolean tcore_sim_encode_csp(unsigned char *p_out, int out_length, struct tel_sim_cphs_csp *p_csp)
-{
-       unsigned char i, j = 0;
+                               case 0x20:
+                                       p_csp->service_profile_entry[j].service.other_supp_services.b_advice_of_charge = TRUE;
+                               break;
 
-       if (out_length == 0)
-               return FALSE;
+                               case 0x10:
+                                       p_csp->service_profile_entry[j].service.other_supp_services.b_preferential_closed_user_group = TRUE;
+                               break;
 
-       memset((void*) p_out, 0xFF, out_length);
+                               case 0x08:
+                                       p_csp->service_profile_entry[j].service.other_supp_services.b_closed_user_group_outgoing_access = TRUE;
+                               break;
 
-/* current telephony supports 22 byte cphs-csp data. 18 byte is mandatory, the other is optional.*/
-       for (i = 0, j = 0; i < SIM_CPHS_CSP_LEN_MAX && j < SIM_CPHS_CSP_ENTRY_CNT_MAX; i++, j++) {
-               p_out[i] = (unsigned char) p_csp->service_profile_entry[j].customer_service_group;
-               switch (p_out[i]) {
-                       case 0x01:
-                               p_out[++i] =    (((unsigned char) p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_unconditional) << 7)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_on_user_busy) << 6)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_on_no_reply) << 5)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_on_user_not_reachable) << 4)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.call_offering.b_call_transfer) << 3);
+                               default:
                                break;
+                               }
+                               mask = mask >> 1;
+                       }
+               break;
 
-                       case 0x02:
-                               p_out[++i] =    (((unsigned char) p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_all_outgoing_calls) << 7)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_outgoing_international_calls) << 6)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_outgoing_international_calls_except_hplmn) << 5)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_all_incoming_calls_roaming_outside_hplmn) << 4)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_incoming_calls_when_roaming) << 3);
+               case 0x04:
+                       for (k = 0; k < 4; k++) {
+                               switch (byteSignificance & mask) {
+                               case 0x80:
+                                       p_csp->service_profile_entry[j].service.call_complete.b_call_hold = TRUE;
                                break;
 
-                       case 0x03:
-                               p_out[++i] =    (((unsigned char) p_csp->service_profile_entry[j].service.other_supp_services.b_multi_party_service) << 7)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.other_supp_services.b_closed_user_group) << 6)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.other_supp_services.b_advice_of_charge) << 5)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.other_supp_services.b_preferential_closed_user_group) << 4)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.other_supp_services.b_closed_user_group_outgoing_access) << 3);
+                               case 0x40:
+                                       p_csp->service_profile_entry[j].service.call_complete.b_call_waiting = TRUE;
                                break;
 
-                       case 0x04:
-                               p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.call_complete.b_call_hold) << 7)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.call_complete.b_call_waiting) << 6)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.call_complete.b_completion_of_call_to_busy_subscriber) << 5)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.call_complete.b_user_user_signalling) << 4);
+                               case 0x20:
+                                       p_csp->service_profile_entry[j].service.call_complete.b_completion_of_call_to_busy_subscriber = TRUE;
                                break;
 
-                       case 0x05:
-                               p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_mobile_terminated) << 7)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_mobile_originated) << 6)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_cell_broadcast) << 5)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_reply_path) << 4)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_delivery_conf) << 3)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_protocol_identifier) << 2)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_validity_period) << 1);
+                               case 0x10:
+                                       p_csp->service_profile_entry[j].service.call_complete.b_user_user_signalling = TRUE;
                                break;
 
-                       case 0x06:
-                               p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.cphs_teleservices.b_alternative_line_service) << 7);
+                               default:
                                break;
+                               }
+                               mask = mask >> 1;
+                       }
+               break;
 
-                       case 0x07:
-                               p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.cphs_features.b_string_service_table) << 7);
+               case 0x05:
+                       for (k = 0; k < 7; k++) {
+                               switch (byteSignificance & mask) {
+                               case 0x80:
+                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_mobile_terminated = TRUE;
                                break;
 
-                       case 0x08:
-                               p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.number_identifiers.b_calling_line_identification_present) << 7)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.number_identifiers.b_connected_line_identification_restrict) << 5)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.number_identifiers.b_connected_line_identification_present) << 4)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.number_identifiers.b_malicious_call_identifier) << 3)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.number_identifiers.b_calling_line_identification_send) << 1)
-                                                               + ((unsigned char) p_csp->service_profile_entry[j].service.number_identifiers.b_calling_line_identification_block);
+                               case 0x40:
+                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_mobile_originated = TRUE;
                                break;
 
-                       case 0x09:
-                               p_out[++i] =    (((unsigned char) p_csp->service_profile_entry[j].service.phase_services.b_menu_for_gprs) << 7)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.phase_services.b_menu_for_high_speed_csd) << 6)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.phase_services.b_menu_for_voice_group_call) << 5)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.phase_services.b_menu_for_voice_broadcast_service) << 4)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.phase_services.b_menu_for_multiple_subscriber_profile) << 3)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.phase_services.b_menu_for_multiple_band) << 2);
+                               case 0x20:
+                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_cell_broadcast = TRUE;
                                break;
 
-                       case 0xC0:
-                               p_out[++i] =    (((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_manual_selection) << 7)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_voice_mail) << 6)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_mo_sms_and_paging) << 5)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_mo_sms_with_emial_type) << 4)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_fax_calls) << 3)
-                                                               + (((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_data_calls) << 2)
-                                                               + ((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_change_language);
+                               case 0x10:
+                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_reply_path = TRUE;
                                break;
 
-                       case 0xD5:
-                               if (p_csp->service_profile_entry[j].service.information_numbers.b_information_numbers)
-                                       p_out[++i] = 0xFF;
-                               else
-                                       p_out[++i] = 0x00;
+                               case 0x08:
+                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_delivery_conf = TRUE;
                                break;
 
-                       default:
+                               case 0x04:
+                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_protocol_identifier = TRUE;
                                break;
+
+                               case 0x02:
+                                       p_csp->service_profile_entry[j].service.teleservices.b_short_message_validity_period = TRUE;
+                               break;
+
+                               default:
+                               break;
+                               }
+                               mask = mask >> 1;
+                       }
+               break;
+
+               case 0x06:
+                       for (k = 0; k < 1; k++) {
+                               switch (byteSignificance & mask) {
+                               case 0x80:
+                                       p_csp->service_profile_entry[j].service.cphs_teleservices.b_alternative_line_service =  TRUE;
+                               break;
+
+                               default:
+                               break;
+                               }
+                               mask = mask >> 1;
+                       }
+               break;
+
+               case 0x07:
+                       for (k = 0; k < 1; k++) {
+                               switch (byteSignificance & mask) {
+                               case 0x80:
+                                       p_csp->service_profile_entry[j].service.cphs_features.b_string_service_table = TRUE;
+                               break;
+
+                               default:
+                               break;
+                               }
+                               mask = mask >> 1;
+                       }
+               break;
+
+               case 0x08:
+                       for (k = 0; k < 8; k++) {
+                               switch (byteSignificance & mask) {
+                               case 0x80:
+                                       p_csp->service_profile_entry[j].service.number_identifiers.b_calling_line_identification_present = TRUE;
+                               break;
+
+                               case 0x20:
+                                       p_csp->service_profile_entry[j].service.number_identifiers.b_connected_line_identification_restrict = TRUE;
+                               break;
+
+                               case 0x10:
+                                       p_csp->service_profile_entry[j].service.number_identifiers.b_connected_line_identification_present = TRUE;
+                               break;
+
+                               case 0x08:
+                                       p_csp->service_profile_entry[j].service.number_identifiers.b_malicious_call_identifier = TRUE;
+                               break;
+
+                               case 0x02:
+                                       p_csp->service_profile_entry[j].service.number_identifiers.b_calling_line_identification_send = TRUE;
+                               break;
+
+                               case 0x01:
+                                       p_csp->service_profile_entry[j].service.number_identifiers.b_calling_line_identification_block = TRUE;
+                               break;
+
+                               default:
+                               break;
+                               }
+                               mask = mask >> 1;
+                       }
+               break;
+
+               case 0x09:
+                       for (k = 0; k < 6; k++) {
+                               switch (byteSignificance & mask) {
+                               case 0x80:
+                                       p_csp->service_profile_entry[j].service.phase_services.b_menu_for_gprs = TRUE;
+                               break;
+
+                               case 0x40:
+                                       p_csp->service_profile_entry[j].service.phase_services.b_menu_for_high_speed_csd = TRUE;
+                               break;
+
+                               case 0x20:
+                                       p_csp->service_profile_entry[j].service.phase_services.b_menu_for_voice_group_call = TRUE;
+                               break;
+
+                               case 0x10:
+                                       p_csp->service_profile_entry[j].service.phase_services.b_menu_for_voice_broadcast_service = TRUE;
+                               break;
+
+                               case 0x08:
+                                       p_csp->service_profile_entry[j].service.phase_services.b_menu_for_multiple_subscriber_profile = TRUE;
+                               break;
+
+                               case 0x04:
+                                       p_csp->service_profile_entry[j].service.phase_services.b_menu_for_multiple_band = TRUE;
+                               break;
+
+                               default:
+                               break;
+                               }
+                               mask = mask >> 1;
+                       }
+               break;
+
+               case 0xC0:
+                       for (k = 0; k < 8; k++) {
+                               switch (byteSignificance & mask) {
+                               case 0x80:
+                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_manual_selection = TRUE;
+                               break;
+
+                               case 0x40:
+                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_voice_mail = TRUE;
+                               break;
+
+                               case 0x20:
+                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_mo_sms_and_paging = TRUE;
+                               break;
+
+                               case 0x10:
+                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_mo_sms_with_emial_type = TRUE;
+                               break;
+
+                               case 0x08:
+                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_fax_calls = TRUE;
+                               break;
+
+                               case 0x04:
+                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_data_calls = TRUE;
+                               break;
+
+                               case 0x01:
+                                       p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_change_language = TRUE;
+                               break;
+
+                               default:
+                               break;
+                               }
+                               mask = mask >> 1;
+                       }
+               break;
+
+               case 0xD5:
+                       for (k = 0; k < 8; k++) {
+                               switch (byteSignificance & mask) {
+                               case 0x80:
+                               case 0x40:
+                               case 0x20:
+                               case 0x10:
+                               case 0x08:
+                               case 0x04:
+                               case 0x02:
+                               case 0x01:
+                                       p_csp->service_profile_entry[j].service.information_numbers.b_information_numbers = TRUE;
+                               break;
+
+                               default:
+                               break;
+                               }
+                               mask = mask >> 1;
+                       }
+               break;
+
+               default:
+               break;
+               }
+       }
+       return TRUE;
+}
+
+gboolean tcore_sim_encode_csp(unsigned char *p_out, int out_length, struct tel_sim_cphs_csp *p_csp)
+{
+       unsigned char i, j = 0;
+
+       if (out_length == 0)
+               return FALSE;
+
+       memset((void *) p_out, 0xFF, out_length);
+
+       /*
+        * current telephony supports 22 byte cphs-csp data.
+        * 18 byte is mandatory, the other is optional.
+        */
+       for (i = 0, j = 0;
+                       i < SIM_CPHS_CSP_LEN_MAX && j < SIM_CPHS_CSP_ENTRY_CNT_MAX;
+                       i++, j++) {
+               p_out[i] = (unsigned char) p_csp->service_profile_entry[j].customer_service_group;
+               switch (p_out[i]) {
+               case 0x01:
+                       p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_unconditional) << 7)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_on_user_busy) << 6)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_on_no_reply) << 5)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.call_offering.b_call_forwarding_on_user_not_reachable) << 4)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.call_offering.b_call_transfer) << 3);
+               break;
+
+               case 0x02:
+                       p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_all_outgoing_calls) << 7)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_outgoing_international_calls) << 6)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_outgoing_international_calls_except_hplmn) << 5)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_all_incoming_calls_roaming_outside_hplmn) << 4)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.call_restriction.b_barring_of_incoming_calls_when_roaming) << 3);
+               break;
+
+               case 0x03:
+                       p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.other_supp_services.b_multi_party_service) << 7)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.other_supp_services.b_closed_user_group) << 6)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.other_supp_services.b_advice_of_charge) << 5)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.other_supp_services.b_preferential_closed_user_group) << 4)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.other_supp_services.b_closed_user_group_outgoing_access) << 3);
+               break;
+
+               case 0x04:
+                       p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.call_complete.b_call_hold) << 7)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.call_complete.b_call_waiting) << 6)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.call_complete.b_completion_of_call_to_busy_subscriber) << 5)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.call_complete.b_user_user_signalling) << 4);
+               break;
+
+               case 0x05:
+                       p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_mobile_terminated) << 7)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_mobile_originated) << 6)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_cell_broadcast) << 5)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_reply_path) << 4)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_delivery_conf) << 3)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_protocol_identifier) << 2)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.teleservices.b_short_message_validity_period) << 1);
+               break;
+
+               case 0x06:
+                       p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.cphs_teleservices.b_alternative_line_service) << 7);
+               break;
+
+               case 0x07:
+                       p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.cphs_features.b_string_service_table) << 7);
+               break;
+
+               case 0x08:
+                       p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.number_identifiers.b_calling_line_identification_present) << 7)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.number_identifiers.b_connected_line_identification_restrict) << 5)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.number_identifiers.b_connected_line_identification_present) << 4)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.number_identifiers.b_malicious_call_identifier) << 3)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.number_identifiers.b_calling_line_identification_send) << 1)
+                                       + ((unsigned char) p_csp->service_profile_entry[j].service.number_identifiers.b_calling_line_identification_block);
+               break;
+
+               case 0x09:
+                       p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.phase_services.b_menu_for_gprs) << 7)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.phase_services.b_menu_for_high_speed_csd) << 6)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.phase_services.b_menu_for_voice_group_call) << 5)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.phase_services.b_menu_for_voice_broadcast_service) << 4)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.phase_services.b_menu_for_multiple_subscriber_profile) << 3)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.phase_services.b_menu_for_multiple_band) << 2);
+               break;
+
+               case 0xC0:
+                       p_out[++i] = (((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_manual_selection) << 7)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_voice_mail) << 6)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_mo_sms_and_paging) << 5)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_mo_sms_with_emial_type) << 4)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_fax_calls) << 3)
+                                       + (((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_data_calls) << 2)
+                                       + ((unsigned char) p_csp->service_profile_entry[j].service.value_added_services.b_restrict_menu_for_change_language);
+               break;
+
+               case 0xD5:
+                       if (p_csp->service_profile_entry[j].service.information_numbers.b_information_numbers)
+                               p_out[++i] = 0xFF;
+                       else
+                               p_out[++i] = 0x00;
+               break;
+
+               default:
+               break;
                }
        }
+
        return TRUE;
 }
 
@@ -2322,31 +2456,36 @@ gboolean tcore_sim_decode_mwis(struct tel_sim_mw *pMwis, unsigned char *p_in, in
        if (in_length == 0)
                return FALSE;
 
-       memset((void*) pMwis, 0, sizeof(struct tel_sim_mw));
+       memset((void *) pMwis, 0, sizeof(struct tel_sim_mw));
 
-       type = p_in[0];  //0x07
+       type = p_in[0];  /* 0x07 */
 
        if (type) {
                for (i = 0; i < 5; i++) {
                        switch (type & mask) {
-                               case 0x01:
-                                       pMwis->indicator_status = pMwis->indicator_status | SIM_MWIS_VOICE;
-                                       break;
-                               case 0x02:
-                                       pMwis->indicator_status = pMwis->indicator_status | SIM_MWIS_FAX;
-                                       break;
-                               case 0x04:
-                                       pMwis->indicator_status = pMwis->indicator_status | SIM_MWIS_EMAIL;
-                                       break;
-                               case 0x08:
-                                       pMwis->indicator_status = pMwis->indicator_status | SIM_MWIS_OTHER;
-                                       break;
-                               case 0x10:
-                                       pMwis->indicator_status = pMwis->indicator_status | SIM_MWIS_VIDEO;
-                                       break;
-                               default:
-                                       pMwis->indicator_status = pMwis->indicator_status | SIM_MWIS_NONE;
-                                       break;
+                       case 0x01:
+                               pMwis->indicator_status = pMwis->indicator_status | SIM_MWIS_VOICE;
+                       break;
+
+                       case 0x02:
+                               pMwis->indicator_status = pMwis->indicator_status | SIM_MWIS_FAX;
+                       break;
+
+                       case 0x04:
+                               pMwis->indicator_status = pMwis->indicator_status | SIM_MWIS_EMAIL;
+                       break;
+
+                       case 0x08:
+                               pMwis->indicator_status = pMwis->indicator_status | SIM_MWIS_OTHER;
+                       break;
+
+                       case 0x10:
+                               pMwis->indicator_status = pMwis->indicator_status | SIM_MWIS_VIDEO;
+                       break;
+
+                       default:
+                               pMwis->indicator_status = pMwis->indicator_status | SIM_MWIS_NONE;
+                       break;
                        }
                        mask = mask << 1;
                }
@@ -2359,52 +2498,60 @@ gboolean tcore_sim_decode_mwis(struct tel_sim_mw *pMwis, unsigned char *p_in, in
                if (in_length == 6)
                        pMwis->video_count = p_in[5];
        }
+
        return TRUE;
 }
 
-char* tcore_sim_encode_mwis( int *out_length, const struct tel_sim_mw *pMwis, int in_length)
+char *tcore_sim_encode_mwis(int *out_length, const struct tel_sim_mw *pMwis, int in_length)
 {
        char *p_out = NULL;
        int i = 0;
        int encoded_size = 0;
 
        if (out_length == 0)
-               return FALSE;
+               return NULL;
 
        /*
         * by 3GPP spec (31.102),
         * EF-MWIS record length should be <= 6. (5 or 6)
         */
-       if (in_length > 6) {
+       if (in_length > 6)
                encoded_size = 6;
-       } else {
+       else
                encoded_size = in_length;
-       }
 
        p_out = calloc(1, encoded_size);
+       if (!p_out)
+               return NULL;
 
-       for(i = 0; i < encoded_size; i++) {
+       for (i = 0; i < encoded_size; i++) {
                switch (i) {
                case 0:
                        p_out[0] = (unsigned char) pMwis->indicator_status;
-                       break;
+               break;
+
                case 1:
                        p_out[1] = pMwis->voice_count;
-                       break;
+               break;
+
                case 2:
                        p_out[2] = pMwis->fax_count;
-                       break;
+               break;
+
                case 3:
                        p_out[3] = pMwis->email_count;
-                       break;
+               break;
+
                case 4:
                        p_out[4] = pMwis->other_count;
-                       break;
+               break;
+
                case 5:
                        p_out[5] = pMwis->video_count;
-                       break;
+               break;
+
                default:
-                       break;
+               break;
                }
        }
 
@@ -2412,27 +2559,27 @@ char* tcore_sim_encode_mwis( int *out_length, const struct tel_sim_mw *pMwis, in
        return p_out;
 }
 
-gboolean tcore_sim_decode_vmwf(struct tel_sim_cphs_mw *p_vmwf, unsigned charp_in, unsigned long in_length)
+gboolean tcore_sim_decode_vmwf(struct tel_sim_cphs_mw *p_vmwf, unsigned char *p_in, unsigned long in_length)
 {
        int i, j = 0;
-       unsigned char* pTemp = (unsigned char*) p_vmwf;
+       unsigned char *pTemp = (unsigned char *) p_vmwf;
        unsigned char mask = 0x0F;
        unsigned char voiceMsgFlg = 0;
 
-       if (in_length == 0){
+       if (in_length == 0) {
                dbg("fail - input length is zero");
                return FALSE;
        }
 
-/*     current telephony supports 2 byte cphs-vmwf data*/
+       /* current telephony supports 2 byte cphs-vmwf data */
        for (i = 0; i < SIM_CPHS_VMWF_LEN_MAX; i++) {
                voiceMsgFlg = p_in[i];
                for (j = 0; j < 2; j++) {
-                       if ((voiceMsgFlg & mask) == 0x0A) {
-                               *pTemp = 1;  //TRUE
-                       } else if ((voiceMsgFlg & mask) == 0x05) {
-                               *pTemp = 0;  // FALSE
-                       }
+                       if ((voiceMsgFlg & mask) == 0x0A)
+                               *pTemp = 1;  /* TRUE */
+                       else if ((voiceMsgFlg & mask) == 0x05)
+                               *pTemp = 0;  /* FALSE */
+
                        pTemp += sizeof(gboolean);
                        voiceMsgFlg = voiceMsgFlg >> 4;
                }
@@ -2440,11 +2587,11 @@ gboolean tcore_sim_decode_vmwf(struct tel_sim_cphs_mw *p_vmwf,  unsigned char* p_
        return TRUE;
 }
 
-chartcore_sim_encode_vmwf(int *out_length, const struct tel_sim_cphs_mw *p_vmwf, int in_length)
+char *tcore_sim_encode_vmwf(int *out_length, const struct tel_sim_cphs_mw *p_vmwf, int in_length)
 {
        int i, j = 0;
        char *p_out = NULL;
-       unsigned char* pTemp = (unsigned char*) p_vmwf;
+       unsigned char *pTemp = (unsigned char *) p_vmwf;
        unsigned char present = 0x0A;
        unsigned char absent = 0x05;
 
@@ -2452,6 +2599,8 @@ char* tcore_sim_encode_vmwf(int *out_length, const struct tel_sim_cphs_mw *p_vmw
                return NULL;
 
        p_out = calloc(1, in_length);
+       if (!p_out)
+               return NULL;
 
        for (i = 0; i < in_length; i++) {
                present = 0x0A;
@@ -2461,45 +2610,45 @@ char* tcore_sim_encode_vmwf(int *out_length, const struct tel_sim_cphs_mw *p_vmw
 
                for (j = 0; j < 2; j++) {
                        if (*pTemp)
-                               p_out[i] = p_out[i] | present;  //TRUE
+                               p_out[i] = p_out[i] | present;  /* TRUE */
                        else
-                               p_out[i] = p_out[i] | absent;  //TRUE
+                               p_out[i] = p_out[i] | absent;  /* TRUE */
 
                        pTemp += sizeof(gboolean);
                        present = present << 4;
                        absent = absent << 4;
                }
        }
+
        *out_length = in_length;
        return p_out;
 }
 
-gboolean tcore_sim_decode_ons(unsigned char* p_out,unsigned  char* p_in, int in_length)
+gboolean tcore_sim_decode_ons(unsigned char *p_out, unsigned  char *p_in, int in_length)
 {
        int length;
-       memset((void*) p_out, 0, SIM_CPHS_OPERATOR_NAME_LEN_MAX+1);
+       memset((void *) p_out, 0, SIM_CPHS_OPERATOR_NAME_LEN_MAX+1);
 
        if (in_length == 0)
                return FALSE;
 
-       if (_is_empty(p_in, in_length) == TRUE) {
+       if (_is_empty(p_in, in_length) == TRUE)
                return FALSE;
-       }
 
-       /* current telephony supports 25 byte cphs-operator name string.*/
+       /* current telephony supports 25 byte cphs-operator name string. */
        if (in_length >= SIM_CPHS_OPERATOR_NAME_LEN_MAX)
                in_length = SIM_CPHS_OPERATOR_NAME_LEN_MAX;
 
        length = _get_string(p_out, p_in, in_length);
        p_out[length] = '\0';
-       dbg( "Operator Name is (%s) & Length (%d) ",    p_out, length);
+       dbg("Operator Name is (%s) & Length (%d) ", p_out, length);
 
        return TRUE;
 }
 
 gboolean tcore_sim_decode_cfis(struct tel_sim_cfis *p_cfis, unsigned char *p_in, int in_length)
 {
-       int bcd_byte;   // dialing number max length
+       int bcd_byte;   /* dialing number max length */
        int digit_len;
        int i = 0;
        if (in_length == 0)
@@ -2507,37 +2656,37 @@ gboolean tcore_sim_decode_cfis(struct tel_sim_cfis *p_cfis, unsigned char *p_in,
 
        if (_is_empty(p_in, in_length) == TRUE) {
                dbg("empty record. all data is set 0xff");
-               return TRUE;    // this is empty record
+               return TRUE;    /* this is empty record */
        }
 
        p_cfis->msp_num = p_in[i++];
        p_cfis->cfu_status = p_in[i++];
 
-       // get TON and NPI
+       /* get TON and NPI */
        p_cfis->ton = (p_in[++i] >> 4) & 0x07;
        p_cfis->npi = p_in[i++] & 0x0F;
 
-       // get actual dialing number length
+       /* get actual dialing number length */
        /* current telephony supports 20 byte dialing number format. */
        bcd_byte = _get_valid_bcd_byte(&p_in[i], SIM_XDN_NUMBER_LEN_MAX / 2);
 
-       // get dialing number/SSC string
-       digit_len = _bcd_to_digit((char*) p_cfis->cfu_num, (char*) &p_in[i], bcd_byte); // actual dialing number length in BCD.
-       dbg( "Dialing number Length[%d]", digit_len);
+       /* get dialing number/SSC string */
+       digit_len = _bcd_to_digit((char *) p_cfis->cfu_num, (char *) &p_in[i], bcd_byte); /* actual dialing number length in BCD. */
+       dbg("Dialing number Length[%d]", digit_len);
 
        i = i + SIM_XDN_NUMBER_LEN_MAX / 2;
 
-       // get Capability/Configuration id
+       /* get Capability/Configuration id */
        p_cfis->cc2_id = p_in[i++];
 
-       // get Extension1 id
+       /* get Extension1 id */
        p_cfis->ext7_id = p_in[i];
 
-       dbg( "MspNumber 0x%x", p_cfis->msp_num);
-       dbg( "Status 0x%x", p_cfis->cfu_status);
-       dbg( "TypeOfNumber %d", p_cfis->ton);
-       dbg( "NumberingPlanIdent %d", p_cfis->npi);
-       dbg( "Dialing number[%s]", p_cfis->cfu_num);
+       dbg("MspNumber 0x%x", p_cfis->msp_num);
+       dbg("Status 0x%x", p_cfis->cfu_status);
+       dbg("TypeOfNumber %d", p_cfis->ton);
+       dbg("NumberingPlanIdent %d", p_cfis->npi);
+       dbg("Dialing number[%s]", p_cfis->cfu_num);
 
        return TRUE;
 }
@@ -2546,27 +2695,26 @@ gboolean tcore_sim_decode_img(struct tel_sim_img *p_out, unsigned char *p_in, in
 {
        int i = 1;
 
-       dbg( "Func Entrance");
+       dbg("Func Entrance");
 
-       if ((NULL == p_out) || (NULL == p_in)) {
+       if ((NULL == p_out) || (NULL == p_in))
                return FALSE;
-       }
 
        if ((in_length == 0) || (in_length == 0xff) || (10 > in_length)) {
-               dbg("No valid IMG data present - length:[%x]",  in_length);
+               dbg("No valid IMG data present - length:[%x]", in_length);
                return FALSE;
        }
 
        if (_is_empty(p_in, in_length) == TRUE) {
                dbg("empty record. all data is set 0xff");
-               return FALSE;   // this is empty record
+               return FALSE;   /* this is empty record */
        }
 
-       /*We are trying to decode only the 1st valid image data property and ignoring other for time being*/
+       /* We are trying to decode only the 1st valid image data property and ignoring other for time being */
        p_out->width = p_in[i++];
        p_out->height = p_in[i++];
        p_out->ics = p_in[i++];
-       p_out->iidf_fileid =  (*(p_in+4) << 8) | (*(p_in+5) & 0x00ff);/*index is 4 and 5 because the 1st byte is number of actual image instance*/
+       p_out->iidf_fileid =  (*(p_in+4) << 8) | (*(p_in+5) & 0x00ff); /*index is 4 and 5 because the 1st byte is number of actual image instance */
        p_out->offset =  (*(p_in+6) << 8) | (*(p_in+7) & 0x00ff);
        p_out->length =  (*(p_in+8) << 8) | (*(p_in+9) & 0x00ff);
 
@@ -2588,15 +2736,13 @@ gboolean tcore_sim_decode_isim_impi(struct tel_sim_impi *p_out, unsigned char *p
                err("tag[0x%x] should be 0x80. return FALSE.", tag);
                return FALSE;
        }
+
        len = p_in[1];
 
-       if (in_length < len + 2) {
+       if (in_length < len + 2)
                err("invalid length. in_length[%d] < TLV_len[%d] + 2", in_length, len);
-       }
 
-       p_out->impi = calloc(1, len + 1);
-
-       memcpy(p_out->impi, &p_in[2], len);
+       p_out->impi = g_memdup(&p_in[2], len);
 
        return TRUE;
 }
@@ -2613,15 +2759,13 @@ gboolean tcore_sim_decode_isim_domain(struct tel_sim_domain *p_out, unsigned cha
                err("tag[0x%x] should be 0x80. return FALSE.", tag);
                return FALSE;
        }
+
        len = p_in[1];
 
-       if (in_length < len + 2) {
+       if (in_length < len + 2)
                err("invalid length. in_length[%d] < TLV_len[%d] + 2", in_length, len);
-       }
-
-       p_out->domain = calloc(1, len + 1);
 
-       memcpy(p_out->domain, &p_in[2], len);
+       p_out->domain = g_memdup(&p_in[2], len);
 
        return TRUE;
 }
@@ -2641,13 +2785,10 @@ gboolean tcore_sim_decode_isim_impu(struct tel_sim_impu *p_out, unsigned char *p
 
        len = p_in[1];
 
-       if (in_length < len + 2) {
+       if (in_length < len + 2)
                err("invalid length. in_length[%d] < TLV_len[%d] + 2", in_length, len);
-       }
-
-       p_out->impu = calloc(1, len + 1);
 
-       memcpy(p_out->impu, &p_in[2], len);
+       p_out->impu = g_memdup(&p_in[2], len);
 
        return TRUE;
 }
@@ -2664,14 +2805,14 @@ gboolean tcore_sim_decode_isim_pcscf(struct tel_sim_pcscf *p_out, unsigned char
                err("tag[0x%x] should be 0x80. return FALSE.", tag);
                return FALSE;
        }
-       /*P-CSCF Address length */
+
+       /* P-CSCF Address length */
        len = p_in[1];
 
-       if (in_length < len + 2) {
+       if (in_length < len + 2)
                err("invalid length. in_length[%d] < TLV_len[%d] + 2", in_length, len);
-       }
 
-       /*P-CSCF Address type */
+       /* P-CSCF Address type */
        if (p_in[2] == 0x00)
                p_out->type = SIM_PCSCF_TYPE_FQDN;
        else if (p_in[2] == 0x01)
@@ -2679,58 +2820,60 @@ gboolean tcore_sim_decode_isim_pcscf(struct tel_sim_pcscf *p_out, unsigned char
        else if (p_in[2] == 0x02)
                p_out->type = SIM_PCSCF_TYPE_IPV6;
 
-       /* If P-CSCF Address type is "00" (FQDN), then address shall be encoded to
-         * an octet string according to UTF-8 encoding rules.
-        *  So, no need to convert it to UTF-8.
-         */
+       /*
+        * If P-CSCF Address type is "00" (FQDN), then address shall be
+        * encoded to an octet string according to UTF-8 encoding rules.
+        * So, no need to convert it to UTF-8.
+        */
        if (p_out->type == SIM_PCSCF_TYPE_FQDN) {
-               p_out->pcscf = calloc(1, len);
-               memcpy(p_out->pcscf, &p_in[3], len - 1);
+               p_out->pcscf = g_memdup(&p_in[3], len - 1);
        } else {
-               unsigned char buf[255] = {0,};
+               unsigned char buf[255] = {0, };
                unsigned short buf_len;
                gboolean ret = FALSE;
 
                ret = tcore_util_convert_string_to_utf8(buf, &buf_len, ALPHABET_FORMAT_SMS_DEFAULT,
                                                (const unsigned char *)&p_in[3], len - 1);
-               if (ret) {
-                       p_out->pcscf = calloc(1, buf_len + 1);
-                       memcpy(p_out->pcscf, buf, buf_len);
-               }
+               if (ret)
+                       p_out->pcscf = g_memdup(buf, buf_len);
        }
 
        return TRUE;
 }
 
-chartcore_sim_encode_cfis(int *out_length, const struct tel_sim_cfis *p_cfis)
+char *tcore_sim_encode_cfis(int *out_length, const struct tel_sim_cfis *p_cfis)
 {
        char *encoded_o = NULL;
        char bcd[10];
 
-       encoded_o = calloc(1, 16); // EF-CFIS record length is 16
+       encoded_o = calloc(1, 16); /* EF-CFIS record length is 16 */
+       if (!encoded_o)
+               return NULL;
+
        memset(bcd, 0xff, 10);
 
        /*
-        Bytes  Description                                                     M/O             Length
-        1              MSP number                                                      M               1 byte
-        2              CFU indicator status                                    M               1 byte
-        3              Length of BCD number                                    M               1 byte
-        4              TON and NPI                                                     M               1 byte
-        5 to 14        Dialing Number                                          M               10 bytes. unused byte should be set with 'F'
-        15             Capability/Configuration2 Record Identifier     M               1 byte
-        16             Extension 7 Record Identifier                           M               1 byte
-        */
+       * Bytes         Description                             M/O     Length
+       *----------------------------------------------------------------------------------------
+       *    1          MSP number                              M       1 byte
+       *    2          CFU indicator status                    M       1 byte
+       *    3          Length of BCD number                    M       1 byte
+       *    4          TON and NPI                             M       1 byte
+       * 5 to 14               Dialing Number                          M       10 bytes. unused byte should be set with 'F'
+       *   15          Capability/Configuration2 Record Identifier     M       1 byte
+       *   16          Extension 7 Record Identifier                   M       1 byte
+       */
        encoded_o[0] = p_cfis->msp_num;
        encoded_o[1] = p_cfis->cfu_status;
 
-       encoded_o[2] = (strlen(p_cfis->cfu_num) +1) /2;
+       encoded_o[2] = (strlen(p_cfis->cfu_num) + 1)  / 2;
 
-       // set TON and NPI
+       /* set TON and NPI */
        encoded_o[3] = 0x80;
        encoded_o[3] |= (p_cfis->ton & 0x07) << 4;
        encoded_o[3] |= p_cfis->npi & 0x0F;
 
-       _digit_to_bcd(bcd, (char*)&p_cfis->cfu_num, strlen(p_cfis->cfu_num));
+       _digit_to_bcd(bcd, (char *)&p_cfis->cfu_num, strlen(p_cfis->cfu_num));
        memcpy(&encoded_o[4], bcd, 10);
 
        encoded_o[14] = p_cfis->cc2_id;
@@ -2745,19 +2888,20 @@ gboolean tcore_sim_decode_dynamic_flag(struct tel_sim_cphs_dflag *p_df, unsigned
        if (in_length == 0)
                return FALSE;
 
-       memset((void*) p_df, 0, sizeof(struct tel_sim_cphs_dflag));
+       memset((void *)p_df, 0, sizeof(struct tel_sim_cphs_dflag));
 
        switch (p_in[0] & 0x01) {
-               case 0x00:
-                       p_df->DynamicFlags = SIM_DYNAMIC_FLAGS_LINE2;
-                       break;
+       case 0x00:
+               p_df->DynamicFlags = SIM_DYNAMIC_FLAGS_LINE2;
+       break;
 
-               case 0x01:
-                       p_df->DynamicFlags = SIM_DYNAMIC_FLAGS_LINE1;
-                       break;
-               default:
-                       warn("invalid input");
-                       break;                  
+       case 0x01:
+               p_df->DynamicFlags = SIM_DYNAMIC_FLAGS_LINE1;
+       break;
+
+       default:
+               warn("invalid input");
+       break;
        }
 
        return TRUE;
@@ -2768,19 +2912,20 @@ gboolean tcore_sim_decode_dynamic2_flag(struct tel_sim_cphs_dflag2 *p_d2f, unsig
        if (in_length == 0)
                return FALSE;
 
-       memset((void*) p_d2f, 0, sizeof(struct tel_sim_cphs_dflag2));
+       memset((void *) p_d2f, 0, sizeof(struct tel_sim_cphs_dflag2));
 
        switch (p_in[0] & 0x01) {
-               case 0x00:
-                       p_d2f->Dynamic2Flag = SIM_PIN2_ACCESSIBLE_FLAGS_UNLOCKED;
-                       break;
+       case 0x00:
+               p_d2f->Dynamic2Flag = SIM_PIN2_ACCESSIBLE_FLAGS_UNLOCKED;
+       break;
 
-               case 0x01:
-                       p_d2f->Dynamic2Flag = SIM_PIN2_ACCESSIBLE_FLAGS_LOCKED;
-                       break;
-               default:
-                       warn("invalid input");
-                       break;                  
+       case 0x01:
+               p_d2f->Dynamic2Flag = SIM_PIN2_ACCESSIBLE_FLAGS_LOCKED;
+       break;
+
+       default:
+               warn("invalid input");
+       break;
        }
 
        return TRUE;
@@ -2791,8 +2936,9 @@ gboolean tcore_sim_encode_dynamic_flag(char *p_out, int out_length, struct tel_s
        if (out_length == 0 || out_length > 1)
                return FALSE;
 
-       memset((void*) p_out, 0xFF, out_length);
+       memset((void *)p_out, 0xFF, out_length);
        p_out[0] = p_df->DynamicFlags;
+
        return TRUE;
 }
 
@@ -2801,8 +2947,9 @@ gboolean tcore_sim_encode_dynamic2_flag(char *p_out, int out_length, struct tel_
        if (out_length == 0 || out_length > 1)
                return FALSE;
 
-       memset((void*) p_out, 0xFF, out_length);
+       memset((void *)p_out, 0xFF, out_length);
        p_out[0] = p_d2f->Dynamic2Flag;
+
        return TRUE;
 }
 
@@ -2810,42 +2957,45 @@ gboolean tcore_sim_decode_cphs_info(struct tel_sim_cphs_info *pCphsInfo, unsigne
 {
        int i, j = 0;
        unsigned char mask = 0x03;
-       unsigned char* pTemp = (unsigned char*) &pCphsInfo->CphsServiceTable;
+       unsigned char *pTemp = (unsigned char *) &pCphsInfo->CphsServiceTable;
 
-       memset((void*) pCphsInfo, 0, sizeof(struct tel_sim_cphs_info));
+       memset((void *)pCphsInfo, 0, sizeof(struct tel_sim_cphs_info));
 
        if (in_length == 0)
                return FALSE;
 
-        /*CPHS info EF has 3 bytes data.*/
+        /* CPHS info EF has 3 bytes data. */
        if (in_length >= SIM_CPHS_INFO_LEN_MAX)
                in_length = SIM_CPHS_INFO_LEN_MAX;
 
        switch (p_in[0]) {
-               case 0x01:
-                       pCphsInfo->CphsPhase = SIM_CPHS_PHASE1;
-                       break;
-               case 0x02:
-                       pCphsInfo->CphsPhase = SIM_CPHS_PHASE2;
-                       break;
-               default:
-                       pCphsInfo->CphsPhase = SIM_CPHS_PHASE_RFU;
-                       break;
+       case 0x01:
+               pCphsInfo->CphsPhase = SIM_CPHS_PHASE1;
+       break;
+
+       case 0x02:
+               pCphsInfo->CphsPhase = SIM_CPHS_PHASE2;
+       break;
+
+       default:
+               pCphsInfo->CphsPhase = SIM_CPHS_PHASE_RFU;
+       break;
        }
 
-       dbg( "Cphs Phase %d \n", pCphsInfo->CphsPhase);
+       dbg("Cphs Phase %d \n", pCphsInfo->CphsPhase);
 
-       for (i = 1; i < in_length; i++) { //CPHS SST is only 2 bytes
-               mask = 0x03;    // reset mast to check first bit
+       for (i = 1; i < in_length; i++) { /* CPHS SST is only 2 bytes */
+               mask = 0x03;    /* reset mast to check first bit */
                for (j = 0; j < 4; j++) {
-                       if (p_in[i] & mask) {
+                       if (p_in[i] & mask)
                                *pTemp = 1;
-                       }
-                       dbg( "Byte (%d), service (%d) ", i+1, *pTemp);
+
+                       dbg("Byte (%d), service (%d) ", i + 1, *pTemp);
                        pTemp += sizeof(gboolean);
                        mask = mask << 2;
                }
        }
+
        return TRUE;
 }
 
@@ -2855,42 +3005,40 @@ gboolean tcore_sim_decode_short_ons(unsigned char *p_out, unsigned char *p_in, i
 
        memset(p_out, 0x00, SIM_CPHS_OPERATOR_NAME_SHORT_FORM_LEN_MAX+1);
 
-       if (_is_empty(p_in, in_length) == TRUE){
-               return FALSE;   // this is empty record
-       }
+       if (_is_empty(p_in, in_length) == TRUE)
+               return FALSE;   /* this is empty record */
 
-       /*CPHS specification shows current EF include 10 bytes */
+       /* CPHS specification shows current EF include 10 bytes */
        if (in_length == 0)
                return FALSE;
 
-       if(in_length > SIM_CPHS_OPERATOR_NAME_SHORT_FORM_LEN_MAX)
+       if (in_length > SIM_CPHS_OPERATOR_NAME_SHORT_FORM_LEN_MAX)
                in_length = SIM_CPHS_OPERATOR_NAME_SHORT_FORM_LEN_MAX;
 
-       length = _get_string( p_out, p_in, in_length );
+       length = _get_string(p_out, p_in, in_length);
        p_out[length] = '\0';
-       dbg( "Operator short Name is (%s) &  length (%d)", p_out, length);
+       dbg("Operator short Name is (%s) &  length (%d)", p_out, length);
+
        return TRUE;
 }
 
-gboolean tcore_sim_decode_information_number(struct tel_sim_cphs_info_number *p_info, unsigned charp_in, int in_length)
+gboolean tcore_sim_decode_information_number(struct tel_sim_cphs_info_number *p_info, unsigned char *p_in, int in_length)
 {
        int i;
 
        if (in_length == 0)
                return FALSE;
 
-       for (i = 0; i < in_length; i++) {
-               dbg( " \t0x%04X.", p_in[i]);
-       }
+       for (i = 0; i < in_length; i++)
+               dbg(" \t0x%04X.", p_in[i]);
 
-       if (_is_empty(p_in, in_length) == TRUE) {
-               return FALSE;   // this is empty record
-       }
+       if (_is_empty(p_in, in_length) == TRUE)
+               return FALSE;   /* this is empty record */
 
        p_info->AlphaIdLength = p_in[0];
 
        if (p_in[1] & 0x0F)
-               p_info->IndexLevelIndicator =   (enum tel_sim_cphs_index_level) (p_in[1] & 0x0F);
+               p_info->IndexLevelIndicator = (enum tel_sim_cphs_index_level)(p_in[1] & 0x0F);
 
        if (p_in[1] & 0x10)
                p_info->PremiumServiceIndicator = TRUE;
@@ -2898,15 +3046,18 @@ gboolean tcore_sim_decode_information_number(struct tel_sim_cphs_info_number *p_
        if (p_in[1] & 0x20)
                p_info->PremiumServiceIndicator = TRUE;
 
-       _get_string(p_info->Alpha_id, &p_in[2], p_info->AlphaIdLength);
+       _get_string(p_info->Alpha_id, &p_in[2], p_info->AlphaIdLength);
 
        p_info->DiallingnumLength = p_in[2 + p_info->AlphaIdLength] * 2;
        p_info->TypeOfNumber = (p_in[3 + p_info->AlphaIdLength] >> 4) & 0x07;
-       p_info->NumberingPlanIdentity = p_in[3 + p_info->AlphaIdLength] & 0x0F;
+       p_info->NumberingPlanIdentity = p_in[3 + p_info->AlphaIdLength] & 0x0F;
 
-       // get dialing number/SSC string
-       _bcd_to_digit((char*) p_info->DiallingnumLength, (char*) &p_in[4 + p_info->AlphaIdLength],      p_info->DiallingnumLength / 2); // actual dialing number length in BCD.
-       // get Extension1 id
+       /* get dialing number/SSC string */
+       _bcd_to_digit((char *)p_info->DiallingnumLength,
+               (char *)&p_in[4 + p_info->AlphaIdLength],
+               p_info->DiallingnumLength / 2); /* actual dialing number length in BCD. */
+
+       /* get Extension1 id */
        p_info->Ext1RecordId = p_in[4 + p_info->AlphaIdLength + p_info->DiallingnumLength / 2];
 
        return TRUE;
@@ -2916,167 +3067,563 @@ gboolean tcore_sim_decode_opl(struct tel_sim_opl *p_opl, unsigned char *p_in, in
 {
        if (_is_empty(p_in, in_length) == TRUE) {
                memset(p_opl, 0x00, sizeof(struct tel_sim_opl));
-               return FALSE;   // this is empty record
+               return FALSE; /* this is empty record */
        }
 
        _decode_plmn(p_in, p_opl->plmn);
-       dbg( " PLMN Code[%s]", p_opl->plmn);
+       dbg(" PLMN Code[%s]", p_opl->plmn);
 
        p_opl->lac_from = (*(p_in+3) << 8) | (*(p_in+4) & 0x00ff);
-       dbg( " Start value of the LAC range[%x]",       p_opl->lac_from);
+       dbg(" Start value of the LAC range[%x]", p_opl->lac_from);
 
        p_opl->lac_to = (*(p_in+5) << 8) | (*(p_in+6) & 0x00ff);
-       dbg( " End value of the LAC range[%x]", p_opl->lac_to);
+       dbg(" End value of the LAC range[%x]", p_opl->lac_to);
 
        p_opl->rec_identifier = p_in[7];
-       dbg( " PNN Record identifier[%x]", p_opl->rec_identifier);
+       dbg(" PNN Record identifier[%x]", p_opl->rec_identifier);
 
        return TRUE;
 }
 
-gboolean tcore_sim_decode_pnn(struct tel_sim_pnn *p_pnn, unsigned charp_in, int in_length)
+gboolean tcore_sim_decode_pnn(struct tel_sim_pnn *p_pnn, unsigned char *p_in, int in_length)
 {
        int f_name_len = 0, s_name_len = 0;
        int cvt_leng = 0, s_name_base = 0;
 
        if (_is_empty(p_in, in_length) == TRUE) {
                memset(p_pnn, 0x00, sizeof(struct tel_sim_pnn));
-               return FALSE;   // this is empty record
+               return FALSE;   /* this is empty record */
        }
 
-       /*Full name for network IEI(Information Element Identifier),0x43*/
+       /* Full name for network IEI(Information Element Identifier), 0x43 */
        if (p_in[0] == 0x43) {
-               dbg( " Full name of network IEI exist");
-               //f_name_part includes information byte.
+               dbg(" Full name of network IEI exist");
+               /* f_name_part includes information byte. */
                f_name_len =  (int)p_in[1] - 1;
 
-               /* 3rd byte information element(according to TS 24.008 for Network Name)
-                8 :ext1
-                7 6 5 : coding scheme
-                4 : Add CI
-                3 2 1 : number of spare bits in last octet
-
-                Coding Scheme (octet 3, bits 5-7)
-                0      0       0               Cell Broadcast data coding scheme, GSM default alphabet, language unspecified, defined in 3GPP TS 23.038 [8b]
-                0      0       1               UCS2 (16 bit) [72]
-                0      1       0               to      reserved
-                1      1       1               to      reserved
+               /*
+                * 3rd byte information element(according to TS 24.008 for Network Name)
+                * 8 :ext1
+                * 7 6 5 : coding scheme
+                * 4 : Add CI
+                * 3 2 1 : number of spare bits in last octet
+                *
+                * Coding Scheme (octet 3, bits 5-7)
+                * 0    0       0               Cell Broadcast data coding scheme, GSM default alphabet, language unspecified, defined in 3GPP TS 23.038 [8b]
+                * 0    0       1               UCS2 (16 bit) [72]
+                * 0    1       0               to      reserved
+                * 1    1       1               to      reserved
                 */
                if ((p_in[2] & 0x70) >> 4 == 0) {
-                       dbg( "DCS:GSM7");
-                       // In case of GSM7, 35byte packing data will be converted 40 bytes unpacking string.
+                       dbg("DCS:GSM7");
+
+                       /*
+                        * In case of GSM7, 35byte packing data will be
+                        * converted 40 bytes unpacking string.
+                        */
                        if (f_name_len > (SIM_NW_FULL_NAME_LEN_MAX * 7) / 8)
                                f_name_len = (SIM_NW_FULL_NAME_LEN_MAX * 7) / 8;
 
-                       _unpack_7bit28bit(p_in + 3, f_name_len, (unsigned char *) (p_pnn->full_name));
+                       _unpack_7bit28bit(p_in + 3,
+                               f_name_len, (unsigned char *)(p_pnn->full_name));
                } else if ((p_in[2] & 0x70) >> 4 == 1) {
-                       dbg( "DCS:UCS2");
+                       dbg("DCS:UCS2");
+
                        /* current telephony supports 40 bytes network name string */
                        if (f_name_len > SIM_NW_FULL_NAME_LEN_MAX)
                                f_name_len = SIM_NW_FULL_NAME_LEN_MAX;
 
-                       _ucs2_to_utf8(f_name_len, p_in + 3, (int*) &cvt_leng, (unsigned char *) (p_pnn->full_name));
+                       _ucs2_to_utf8(f_name_len, p_in + 3,
+                               (int *)&cvt_leng, (unsigned char *)(p_pnn->full_name));
                } else {
-                       dbg( "DCS:unknown");
+                       dbg("DCS:unknown");
+
                        return FALSE;
                }
-               dbg( " Full name of network contents[%s]", p_pnn->full_name);
 
-               s_name_base = (int)p_in[1] +2;
-               dbg( " short name base byte [0x%02x]", s_name_base);
+               dbg(" Full name of network contents[%s]", p_pnn->full_name);
+
+               s_name_base = (int)p_in[1] + 2;
+               dbg(" short name base byte [0x%02x]", s_name_base);
 
-               /*Short Name for network IEI(Information Element Identifier), 0x45*/
+               /* Short Name for network IEI(Information Element Identifier), 0x45 */
                if (p_in[s_name_base] == 0x45) {
-                       dbg( " Short name of network IEI exist");
-                       //s_name_part includes information byte.
-                       s_name_len = p_in[s_name_base +1] -1;
+                       dbg(" Short name of network IEI exist");
+
+                       /* s_name_part includes information byte. */
+                       s_name_len = p_in[s_name_base + 1] - 1;
 
                        if ((p_in[s_name_base + 2] & 0x70) >> 4 == 0) {
-                               dbg( "DCS:GSM7");
-                               // In case of GSM7, 35byte packing data will be converted 40 bytes unpacking string.
+                               dbg("DCS:GSM7");
+
+                               /*
+                                * In case of GSM7, 35byte packing data
+                                * will be converted 40 bytes unpacking string.
+                                */
                                if (s_name_len > (SIM_NW_FULL_NAME_LEN_MAX * 7) / 8)
                                        s_name_len = (SIM_NW_FULL_NAME_LEN_MAX * 7) / 8;
 
-                               _unpack_7bit28bit(p_in + s_name_base + 3, s_name_len, (unsigned char *) (p_pnn->short_name));
-                       } else if ((p_in[s_name_base +2] & 0x70) >> 4 == 1) {
-                               dbg( "DCS:UCS2");
+                               _unpack_7bit28bit(p_in + s_name_base + 3,
+                                       s_name_len, (unsigned char *)(p_pnn->short_name));
+                       } else if ((p_in[s_name_base + 2] & 0x70) >> 4 == 1) {
+                               dbg("DCS:UCS2");
+
                                if (s_name_len > SIM_NW_FULL_NAME_LEN_MAX)
                                        s_name_len = SIM_NW_FULL_NAME_LEN_MAX;
 
-                               _ucs2_to_utf8(s_name_len, p_in + s_name_base+ 3, (int*) &cvt_leng, (unsigned char *) (p_pnn->short_name));
+                               _ucs2_to_utf8(s_name_len, p_in + s_name_base + 3,
+                                       (int *)&cvt_leng, (unsigned char *)(p_pnn->short_name));
                        } else {
-                               dbg( "DCS:unknown");
+                               dbg("DCS:unknown");
+
                                return FALSE;
                        }
-                       dbg( " Short name of network contents[%s]", p_pnn->short_name);
+
+                       dbg(" Short name of network contents[%s]", p_pnn->short_name);
                }
+
                return TRUE;
        }
+
        return FALSE;
 }
 
 gboolean tcore_sim_decode_oplmnwact(struct tel_sim_oplmnwact_list *p_list, unsigned char *p_in, int in_length)
 {
        unsigned long m = 0;
-//unsigned long k, j, m = 0;
-//     unsigned char mask = 0x00;
 
-       //current raw data can include invalid OPLMN data(ex: ff ff ff 00 00). so we can`t decide the number of OPLMN records directly.
+       /*
+        * current raw data can include invalid OPLMN data(ex: ff ff ff 00 00).
+        * so we can`t decide the number of OPLMN records directly.
+        */
        int rawOplmnWactCount = 0;
        int i = 0;
 
-       memset((void*) p_list, 0, sizeof(struct tel_sim_oplmnwact_list));
+       memset((void *)p_list, 0, sizeof(struct tel_sim_oplmnwact_list));
 
        rawOplmnWactCount = in_length / 5;
 
-       dbg( "rawOplmnWactCount[%d]", rawOplmnWactCount);
+       dbg("rawOplmnWactCount[%d]", rawOplmnWactCount);
 
        for (i = 0; i < rawOplmnWactCount; i++) {
-
-               //Regarding current IPC data, even if there`s no OPLMN value, IPC data is sending with 'ff ff ff 00 00'. so we should check for validation.
+               /*
+                * Regarding current IPC data, even if there`s no OPLMN value,
+                * IPC data is sending with 'ff ff ff 00 00'. so we should check for validation.
+                */
                if (p_in[m] == 0xff) {
                        p_list->opwa_count = m / 5;
-                       dbg("OPLMN(MCC+MNC) value is not found at p_in[m]=[%lu].So OPLMN count is [%d]", m, p_list->opwa_count);
+                       dbg("OPLMN(MCC+MNC) value is not found at p_in[m]=[%lu].So OPLMN count is [%d]",
+                               m, p_list->opwa_count);
                        return TRUE;
                }
 
                _decode_plmn(&p_in[m], p_list->opwa[i].plmn);
-               dbg( "[%d] OPLMN PLMN Code[%s]", i, p_list->opwa[i].plmn);
+               dbg("[%d] OPLMN PLMN Code[%s]", i, p_list->opwa[i].plmn);
 
-               if(p_in[m+3] & 0x80)
+               if (p_in[m+3] & 0x80)
                        p_list->opwa[i].b_umts = 1;
 
-               if(p_in[m+4] & 0x80)
+               if (p_in[m+4] & 0x80)
                        p_list->opwa[i].b_gsm = 1;
 
                m = m + 5;
        }
 
        p_list->opwa_count = rawOplmnWactCount;
-       dbg( "OPLMN count is p_list->opwa_count[%d]", p_list->opwa_count);
+       dbg("OPLMN count is p_list->opwa_count[%d]", p_list->opwa_count);
 
        return TRUE;
 }
 
+gboolean tcore_sim_decode_ef_info(struct tcore_sim_ef_info *p_ef_info, CoreObject *o, char *p_in, int in_length)
+{
+       unsigned short arr_file_id = 0;
+       char *record_data = NULL;
+       unsigned char file_type_tag = SIM_FILE_TYPE_TAG;
+       unsigned char *ptr_data;
+       unsigned char file_id_len = 0;
+       gboolean ret = FALSE;
+
+       if (!p_ef_info) {
+               err("output parameter is null");
+               return ret;
+       }
+
+       if (_is_empty((unsigned char *)p_in, in_length) == TRUE) {
+               memset(p_ef_info, 0x00, sizeof(struct tcore_sim_ef_info));
+               return ret;     /* Empty record */
+       }
+
+       record_data = tcore_util_convert_hexstring_to_bytes(p_in);
+       if (!record_data) {
+               err("tcore_util_convert_hexstring_to_bytes Failed!!");
+               return ret;
+       }
+       tcore_util_hex_dump("   ", strlen(p_in) / 2, record_data);
+
+       ptr_data = (unsigned char *)record_data;
+       switch (tcore_sim_get_type(o)) {
+       case SIM_TYPE_USIM: {
+               /*
+                * ETSI TS 102 221 v7.9.0
+                * - Response Data
+                * '62' FCP template tag
+                * - Response for an EF
+                * '82' M       File Descriptor
+                * '83' M       File Identifier
+                * 'A5' O       Proprietary information
+                * '8A' M       Life Cycle Status Integer
+                * '8B', '8C' or 'AB' C1        Security attributes
+                * '80' M       File size
+                * '81' O       Total file size
+                * '88' O       Short File Identifier (SFI)
+                */
+
+               /* FCP template tag - File Control Parameters tag*/
+               if (*ptr_data == SIM_FCP_TEMPLATE_TAG) {
+                       /* parse complete FCP tag. increment to next byte*/
+                       ptr_data++;
+
+                       dbg("tag_len: %02x", *ptr_data++);
+                       /* FCP file descriptor - file type, accessibility, DF, ADF etc*/
+                       if (*ptr_data == SIM_FILE_DESCRIPTOR_TAG) {
+                               /* increment to next byte */
+                               ptr_data++;
+
+                               /* 2 or 5 value*/
+                               ptr_data++;
+
+                                /* consider only last 3 bits*/
+                               file_type_tag = file_type_tag & (*ptr_data);
+                               dbg("File Type Tag: %02x", file_type_tag);
+
+                               switch (file_type_tag) {
+                               case SIM_FTYPE_TRANSPARENT:
+                                       dbg("FileType: [Transparent file type]");
+                                       p_ef_info->file_type = SIM_FTYPE_TRANSPARENT;
+
+                                       /* increment to next byte */
+                                       ptr_data++;
+
+                                       /* increment to next byte */
+                                       ptr_data++;
+                               break;
+
+                               case SIM_FTYPE_LINEAR_FIXED:
+                                       dbg("FileType: [Linear fixed file type]");
+                                       /* increment to next byte */
+                                       ptr_data++;
+
+                                       /* data coding byte - value 21 */
+                                       ptr_data++;
+
+                                       /* 2bytes */
+                                       memcpy(&p_ef_info->record_length, ptr_data, 2);
+
+                                       /* swap bytes */
+                                       p_ef_info->record_length = _swap_bytes16(p_ef_info->record_length);
+                                       ptr_data = ptr_data + 2;
+                                       p_ef_info->number_of_records = *ptr_data++;
+
+                                       /* Data lossy conversation from enum (int) to unsigned char */
+                                       p_ef_info->file_type = SIM_FTYPE_LINEAR_FIXED;
+                               break;
+
+                               case SIM_FTYPE_CYCLIC:
+                                       dbg("FileType: [Cyclic fixed file type]");
+                                       /* increment to next byte */
+                                       ptr_data++;
+
+                                       /* data coding byte - value 21 */
+                                       ptr_data++;
+
+                                       /* 2bytes */
+                                       memcpy(&p_ef_info->record_length, ptr_data, 2);
+
+                                       /* swap bytes */
+                                       p_ef_info->record_length = _swap_bytes16(p_ef_info->record_length);
+                                       ptr_data = ptr_data + 2;
+                                       p_ef_info->number_of_records = *ptr_data++;
+                                       p_ef_info->file_type = SIM_FTYPE_CYCLIC;
+
+                                       break;
+
+                               default:
+                                       err("Unhandled File Type [0x%x]", *ptr_data);
+                               break;
+                               }
+                       } else {
+                               err("INVALID FCP received[0x%x] - Debug!", *ptr_data);
+                               goto EXIT;
+                       }
+
+                       /* File identifier - file id */ /* 0x84, 0x85, 0x86 etc are currently ignored and not handled */
+                       if (*ptr_data == SIM_FILE_IDENTIFIER_TAG) {
+                               /* increment to next byte */
+                               ptr_data++;
+                               file_id_len = *ptr_data++;
+                               dbg("File ID length: %02x", file_id_len);
+
+                               memcpy(&p_ef_info->file_id, ptr_data, file_id_len);
+                               dbg("File ID: %x", p_ef_info->file_id);
+
+                               /* swap bytes */
+                               p_ef_info->file_id = _swap_bytes16(p_ef_info->file_id);
+
+                               ptr_data = ptr_data + 2;
+                       } else {
+                               err("INVALID FCP received[0x%x] - Debug!", *ptr_data);
+                               goto EXIT;
+                       }
+
+                       /* proprietary information */
+                       if (*ptr_data == SIM_PROPRIETARY_INFORMATION_TAG) {
+                               unsigned short prop_len;
+                               /* increment to next byte */
+                               ptr_data++;
+
+                               /* length */
+                               prop_len = *ptr_data;
+                               dbg("prop_len: %02x", prop_len);
+
+                               /* skip data */
+                               ptr_data = ptr_data + prop_len + 1;
+                       } else {
+                               err("INVALID FCP received[0x%x] - Debug!", *ptr_data);
+                       }
+
+                       /* life cycle status integer [8A][length:0x01][status]*/
+                       /*
+                        * status info b8~b1
+                        * 00000000 : No information given
+                        * 00000001 : creation state
+                        * 00000011 : initialization state
+                        * 000001-1 : operation state -activated
+                        * 000001-0 : operation state -deactivated
+                        * 000011-- : Termination state
+                        * b8~b5 !=0, b4~b1=X : Proprietary
+                        * Any other value : RFU
+                        */
+                       if (*ptr_data == SIM_LIFE_CYCLE_STATUS_TAG) {
+                               /* increment to next byte */
+                               ptr_data++;
+
+                               /* length - value 1 */
+                               ptr_data++;
+
+                               switch (*ptr_data) {
+                               case 0x04:
+                               case 0x06:
+                                       dbg("Operation state - Deactivated");
+                                       ptr_data++;
+                               break;
+
+                               case 0x05:
+                               case 0x07:
+                                       dbg("Operation state - Activated");
+                                       ptr_data++;
+                               break;
+
+                               default:
+                                       dbg("DEBUG! LIFE CYCLE STATUS =[0x%x]", *ptr_data);
+                                       ptr_data++;
+                               break;
+                               }
+                       }
+
+                       /* related to security attributes : currently not handled*/
+                       if (*ptr_data == 0x86 || *ptr_data == 0x8B || *ptr_data == 0x8C || *ptr_data == 0xAB) {
+                               /* increment to next byte */
+                               ptr_data++;
+
+                               /* if tag length is 3 */
+                               if (*ptr_data == 0x03) {
+                                       /* increment to next byte */
+                                       ptr_data++;
+
+                                       /* EFARR file id */
+                                       memcpy(&arr_file_id, ptr_data, 2);
+
+                                       /* swap byes */
+                                       arr_file_id = _swap_bytes16(arr_file_id);
+                                       ptr_data = ptr_data + 2;
+                                       ptr_data++;
+                               } else {
+                                       /* if tag length is not 3 */
+                                       /* ignoring bytes       */
+                                       dbg("Useless security attributes, so jump to next tag");
+                                       ptr_data = ptr_data + (*ptr_data + 1);
+                               }
+                       } else {
+                               err("INVALID FCP received[0x%x] - Debug!", *ptr_data);
+                               goto EXIT;
+                       }
+
+                       /* file size excluding structural info*/
+                       if (*ptr_data == SIM_FILE_SIZE_TAG) {
+                               /*
+                                * for EF file size is body of file and for Linear or cyclic it is
+                                * number of recXsizeof(one record)
+                                */
+                               /* increment to next byte */
+                               ptr_data++;
+
+                               /* length is 1 byte - value is 2 bytes or more */
+                               ptr_data++;
+                               memcpy(&p_ef_info->file_size, ptr_data, 2);
+
+                               /* swap bytes */
+                               p_ef_info->file_size = _swap_bytes16(p_ef_info->file_size);
+                               ptr_data = ptr_data + 2;
+                       } else {
+                               err("INVALID FCP received[0x%x] - Debug!", *ptr_data);
+                               goto EXIT;
+                       }
+
+                       /* total file size including structural info*/
+                       if (*ptr_data == SIM_TOTAL_FILE_SIZE_TAG) {
+                               /* increment to next byte */
+                               ptr_data++;
+                               /* ignored bytes */
+                               ptr_data = ptr_data + 3;
+                       } else {
+                               err("INVALID FCP received[0x%x] - Debug!", *ptr_data);
+                               /* 0x81 is optional tag?? check out! so do not return -1 from here! */
+                       }
+
+                       /*short file identifier ignored*/
+                       if (*ptr_data == SIM_SHORT_FILE_IDENTIFIER_TAG) {
+                               dbg("0x88: Do Nothing");
+                               /* DO NOTHING */
+                       }
+               } else {
+                       err("INVALID FCP received[0x%x] - Debug!", *ptr_data);
+                       goto EXIT;
+               }
+       }
+       break;
+       case SIM_TYPE_GSM: {
+               /*Ignore RFU byte1 and byte2 */
+               ptr_data++;
+               ptr_data++;
+
+               /* file size */
+               memcpy(&p_ef_info->file_size, ptr_data, 2);
+
+               /* swap bytes */
+               p_ef_info->file_size = _swap_bytes16(p_ef_info->file_size);
+
+               /* parsed file size */
+               ptr_data = ptr_data + 2;
+
+               /* file id */
+               memcpy(&p_ef_info->file_id, ptr_data, 2);
+               p_ef_info->file_id = _swap_bytes16(p_ef_info->file_id);
+               ptr_data = ptr_data + 2;
+
+               /* save file type - transparent, linear fixed or cyclic */
+               file_type_tag = (*(ptr_data + 7));
+
+               switch (*ptr_data) {
+               case SIM_FTYPE_RFU:
+                       /* RFU file type */
+                       dbg("RFU file type- not handled - Debug!");
+               break;
+
+               case SIM_FTYPE_MF:
+                       /* MF file type */
+                       dbg("MF file type - not handled - Debug!");
+               break;
+
+               case SIM_FTYPE_DF:
+                       /* DF file type */
+                       dbg("DF file type - not handled - Debug!");
+               break;
+
+               case SIM_FTYPE_EF:
+                       /* EF file type */
+                       dbg("EF file type tag[%d] ", file_type_tag);
+                       /* increment to next byte */
+                       ptr_data++;
+
+                       if (file_type_tag == 0x00 || file_type_tag == 0x01) {
+                               /* increament to next byte as this byte is RFU */
+                               ptr_data++;
+                               p_ef_info->file_type = (file_type_tag == 0x00) ? SIM_FTYPE_TRANSPARENT : SIM_FTYPE_LINEAR_FIXED;
+                       } else {
+                               /* increment to next byte */
+                               ptr_data++;
+
+                               /* For a cyclic EF all bits except bit 7 are RFU; b7=1 indicates that */
+                               /* the INCREASE command is allowed on the selected cyclic file. */
+                               p_ef_info->file_type = SIM_FTYPE_CYCLIC;
+                       }
+
+                       /* bytes 9 to 11 give SIM file access conditions */
+                       ptr_data++;
+
+                       /* byte 10 has one nibble that is RF U and another for INCREASE which is not used currently */
+                       ptr_data++;
+
+                       /* byte 11 is invalidate and rehabilate nibbles */
+                       ptr_data++;
+
+                       /* byte 12 - file status */
+                       ptr_data++;
+
+                       /* byte 13 - GSM specific data */
+                       ptr_data++;
+
+                       /* byte 14 - structure of EF - transparent or linear or cyclic , already saved above */
+                       ptr_data++;
+
+                       /* byte 15 - length of record for linear and cyclic , for transparent it is set to 0x00. */
+                       p_ef_info->record_length = *ptr_data;
+                       if (p_ef_info->record_length != 0)
+                               p_ef_info->number_of_records = (p_ef_info->file_size / p_ef_info->record_length);
+               break;
+
+               default:
+                       err("Unhandled file type[0x%x]", *ptr_data);
+               break;
+               }
+       }
+       break;
+       default:
+               err("Unknown SIM type [%d]", tcore_sim_get_type(o));
+       break;
+       }
+
+       ret = TRUE;
+
+EXIT:
+       g_free(record_data);
+       return ret;
+}
+
 enum tel_sim_status tcore_sim_get_status(CoreObject *o)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return -1;
        }
+
        return po->sim_status;
 }
 
 gboolean tcore_sim_set_status(CoreObject *o, enum tel_sim_status status)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return FALSE;
        }
+
        po->sim_status = status;
 
        return TRUE;
@@ -3085,11 +3632,13 @@ gboolean tcore_sim_set_status(CoreObject *o, enum tel_sim_status status)
 gboolean tcore_sim_get_identification(CoreObject *o)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return -1;
        }
+
        return po->b_sim_changed;
 }
 
@@ -3109,56 +3658,63 @@ gboolean tcore_sim_set_identification(CoreObject *o, gboolean b_changed)
 enum tel_sim_type tcore_sim_get_type(CoreObject *o)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return -1;
        }
+
        return po->type;
 }
 
 gboolean tcore_sim_set_type(CoreObject *o, enum tel_sim_type type)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return FALSE;
        }
+
        po->type = type;
+
        return TRUE;
 }
 
-struct tel_sim_imsitcore_sim_get_imsi(CoreObject *o)
+struct tel_sim_imsi *tcore_sim_get_imsi(CoreObject *o)
 {
-       struct tel_sim_imsi *tmp_imsi;
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return NULL;
        }
-       tmp_imsi =  calloc(1, sizeof(struct tel_sim_imsi));
-       memcpy(tmp_imsi, &po->imsi, sizeof(struct tel_sim_imsi));
-       return tmp_imsi;
+
+       return g_memdup(&po->imsi, sizeof(struct tel_sim_imsi));
 }
 
 gboolean tcore_sim_set_imsi(CoreObject *o, const struct tel_sim_imsi *imsi)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return FALSE;
        }
+
        memcpy(&po->imsi, imsi, sizeof(struct tel_sim_imsi));
+
        return TRUE;
 }
 
-struct tel_sim_msisdn_listtcore_sim_get_msisdn_list(CoreObject *o)
+struct tel_sim_msisdn_list *tcore_sim_get_msisdn_list(CoreObject *o)
 {
-       struct tel_sim_msisdn_list *tmp_msisdn_list;
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
@@ -3167,43 +3723,39 @@ struct tel_sim_msisdn_list* tcore_sim_get_msisdn_list(CoreObject *o)
                dbg("po->msisdn_list is NULL");
                return NULL;
        }
-       tmp_msisdn_list =  calloc(1, sizeof(struct tel_sim_msisdn_list));
-       memcpy(tmp_msisdn_list, po->msisdn_list, sizeof(struct tel_sim_msisdn_list));
-       return tmp_msisdn_list;
+
+       return g_memdup(po->msisdn_list, sizeof(struct tel_sim_msisdn_list));
 }
 
 gboolean tcore_sim_set_msisdn_list(CoreObject *o, const struct tel_sim_msisdn_list *msisdn_list)
 {
-       struct tel_sim_msisdn_list *empty_msisdn_list = NULL;
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return FALSE;
        }
-       if (!msisdn_list) {
-               empty_msisdn_list = calloc(1, sizeof(struct tel_sim_msisdn_list));
-               msisdn_list = empty_msisdn_list;
-       }
 
-       if (po->msisdn_list) {
-               memcpy(po->msisdn_list, msisdn_list, sizeof(struct tel_sim_msisdn_list));
+        if (po->msisdn_list) {
+               if (msisdn_list)
+                       memcpy(po->msisdn_list, msisdn_list, sizeof(struct tel_sim_msisdn_list));
+               else
+                       memset(po->msisdn_list, 0x0, sizeof(struct tel_sim_msisdn_list));
        } else {
-               struct tel_sim_msisdn_list *tmp_msisdn_list = NULL;
-               tmp_msisdn_list =  calloc(1, sizeof(struct tel_sim_msisdn_list));
-               memcpy(tmp_msisdn_list, msisdn_list, sizeof(struct tel_sim_msisdn_list));
-               po->msisdn_list = tmp_msisdn_list;
+               if (msisdn_list)
+                       po->msisdn_list = g_memdup(msisdn_list, sizeof(struct tel_sim_msisdn_list));
+               else
+                       po->msisdn_list = g_malloc0(sizeof(struct tel_sim_msisdn_list));
        }
 
-       if (empty_msisdn_list)
-               free(empty_msisdn_list);
-
        return TRUE;
 }
 
 enum tcore_return tcore_sim_delete_msisdn_list(CoreObject *o)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
@@ -3218,10 +3770,10 @@ enum tcore_return tcore_sim_delete_msisdn_list(CoreObject *o)
        return TCORE_RETURN_SUCCESS;
 }
 
-struct tel_sim_service_tabletcore_sim_get_service_table(CoreObject *o)
+struct tel_sim_service_table *tcore_sim_get_service_table(CoreObject *o)
 {
-       struct tel_sim_service_table *tmp_svct;
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
@@ -3230,43 +3782,39 @@ struct tel_sim_service_table* tcore_sim_get_service_table(CoreObject *o)
                dbg("po->svct is NULL.");
                return NULL;
        }
-       tmp_svct =  calloc(1, sizeof(struct tel_sim_service_table));
-       memcpy(tmp_svct, po->svct, sizeof(struct tel_sim_service_table));
-       return tmp_svct;
+
+       return g_memdup(po->svct, sizeof(struct tel_sim_service_table));
 }
 
 gboolean tcore_sim_set_service_table(CoreObject *o, const struct tel_sim_service_table *svct)
 {
        struct private_object_data *po = NULL;
-       struct tel_sim_service_table *empty_svct = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return FALSE;
        }
-       if (!svct) {
-               empty_svct = calloc(1, sizeof(struct tel_sim_service_table));
-               svct = empty_svct;
-       }
 
-       if (po->svct) {
-               memcpy(po->svct, svct, sizeof(struct tel_sim_service_table));
+        if (po->svct) {
+               if (svct)
+                       memcpy(po->svct, svct, sizeof(struct tel_sim_service_table));
+               else
+                       memset(po->svct, 0x0, sizeof(struct tel_sim_service_table));
        } else {
-               struct tel_sim_service_table *tmp_svct = NULL;
-               tmp_svct =  calloc(1, sizeof(struct tel_sim_service_table));
-               memcpy(tmp_svct, svct, sizeof(struct tel_sim_service_table));
-               po->svct = tmp_svct;
+               if (svct)
+                       po->svct = g_memdup(svct, sizeof(struct tel_sim_service_table));
+               else
+                       po->svct = g_malloc0(sizeof(struct tel_sim_service_table));
        }
 
-       if(empty_svct)
-               free(empty_svct);
-
        return TRUE;
 }
 
 enum tcore_return tcore_sim_delete_service_table(CoreObject *o)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
@@ -3281,30 +3829,36 @@ enum tcore_return tcore_sim_delete_service_table(CoreObject *o)
        return TCORE_RETURN_SUCCESS;
 }
 
-gboolean tcore_sim_get_cphs_status(CoreObject *o){
+gboolean tcore_sim_get_cphs_status(CoreObject *o)
+{
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return FALSE;
        }
+
        return po->b_cphs;
 }
 
-gboolean tcore_sim_set_cphs_status(CoreObject *o, gboolean b_support){
+gboolean tcore_sim_set_cphs_status(CoreObject *o, gboolean b_support)
+{
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return FALSE;
        }
+
        po->b_cphs = b_support;
+
        return TRUE;
 }
 
-struct tel_sim_cphs_csptcore_sim_get_csp(CoreObject *o)
+struct tel_sim_cphs_csp *tcore_sim_get_csp(CoreObject *o)
 {
-       struct tel_sim_cphs_csp *tmp_csp;
        struct private_object_data *po = NULL;
 
        po = tcore_object_ref_object(o);
@@ -3315,18 +3869,12 @@ struct tel_sim_cphs_csp* tcore_sim_get_csp(CoreObject *o)
                dbg("po->csp is NULL");
                return NULL;
        }
-       tmp_csp =  calloc(1, sizeof(struct tel_sim_cphs_csp));
-       if (!tmp_csp) {
-               err("memory allocation failed");
-               return NULL;
-       }
-       memcpy(tmp_csp, po->csp, sizeof(struct tel_sim_cphs_csp));
-       return tmp_csp;
+
+       return g_memdup(po->csp, sizeof(struct tel_sim_cphs_csp));
 }
 
 gboolean tcore_sim_set_csp(CoreObject *o, const struct tel_sim_cphs_csp *csp)
 {
-       struct tel_sim_cphs_csp *empty_csp = NULL;
        struct private_object_data *po = NULL;
 
        po = tcore_object_ref_object(o);
@@ -3334,22 +3882,18 @@ gboolean tcore_sim_set_csp(CoreObject *o, const struct tel_sim_cphs_csp *csp)
                dbg("po access fail");
                return FALSE;
        }
-       if (!csp) {
-               empty_csp = calloc(1, sizeof(struct tel_sim_cphs_csp));
-               csp = empty_csp;
-       }
 
-       if (!(po->csp)) {
-               po->csp =  calloc(1, sizeof(struct tel_sim_cphs_csp));
-               if (!(po->csp)) {
-                       err("memory allocation failed");
-                       free(empty_csp);
-                       return FALSE;
-               }
+        if (po->csp) {
+               if (csp)
+                       memcpy(po->csp, csp, sizeof(struct tel_sim_cphs_csp));
+               else
+                       memset(po->csp, 0x0, sizeof(struct tel_sim_cphs_csp));
+       } else {
+               if (csp)
+                       po->csp = g_memdup(csp, sizeof(struct tel_sim_cphs_csp));
+               else
+                       po->csp = g_malloc0(sizeof(struct tel_sim_cphs_csp));
        }
-       memcpy(po->csp, csp, sizeof(struct tel_sim_cphs_csp));
-       if (empty_csp)
-               free(empty_csp);
 
        return TRUE;
 }
@@ -3372,10 +3916,10 @@ gboolean tcore_sim_delete_csp(CoreObject *o)
        return TRUE;
 }
 
-struct tel_sim_ecc_listtcore_sim_get_ecc_list(CoreObject *o)
+struct tel_sim_ecc_list *tcore_sim_get_ecc_list(CoreObject *o)
 {
-       struct tel_sim_ecc_list *tmp_ecc_list;
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
@@ -3384,43 +3928,39 @@ struct tel_sim_ecc_list* tcore_sim_get_ecc_list(CoreObject *o)
                dbg("po->ecc_list is NULL");
                return NULL;
        }
-       tmp_ecc_list =  calloc(1, sizeof(struct tel_sim_ecc_list));
-       memcpy(tmp_ecc_list, po->ecc_list, sizeof(struct tel_sim_ecc_list));
-       return tmp_ecc_list;
+
+       return g_memdup(po->ecc_list, sizeof(struct tel_sim_ecc_list));
 }
 
 gboolean tcore_sim_set_ecc_list(CoreObject *o, const struct tel_sim_ecc_list *ecc_list)
 {
-       struct tel_sim_ecc_list *empty_ecc_list = NULL;
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return FALSE;
        }
-       if (!ecc_list) {
-               empty_ecc_list = calloc(1, sizeof(struct tel_sim_ecc_list));
-               ecc_list = empty_ecc_list;
-       }
 
-       if (po->ecc_list) {
-               memcpy(po->ecc_list, ecc_list, sizeof(struct tel_sim_ecc_list));
+        if (po->ecc_list) {
+               if (ecc_list)
+                       memcpy(po->ecc_list, ecc_list, sizeof(struct tel_sim_ecc_list));
+               else
+                       memset(po->ecc_list, 0x0, sizeof(struct tel_sim_ecc_list));
        } else {
-               struct tel_sim_ecc_list *tmp_ecc_list = NULL;
-               tmp_ecc_list =  calloc(1, sizeof(struct tel_sim_ecc_list));
-               memcpy(tmp_ecc_list, ecc_list, sizeof(struct tel_sim_ecc_list));
-               po->ecc_list = tmp_ecc_list;
+               if (ecc_list)
+                       po->ecc_list = g_memdup(ecc_list, sizeof(struct tel_sim_ecc_list));
+               else
+                       po->ecc_list = g_malloc0(sizeof(struct tel_sim_ecc_list));
        }
 
-       if (empty_ecc_list)
-               free(empty_ecc_list);
-
        return TRUE;
 }
 
 enum tcore_return tcore_sim_delete_ecc_list(CoreObject *o)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
@@ -3435,10 +3975,10 @@ enum tcore_return tcore_sim_delete_ecc_list(CoreObject *o)
        return TCORE_RETURN_SUCCESS;
 }
 
-struct tel_sim_spntcore_sim_get_spn(CoreObject *o)
+struct tel_sim_spn *tcore_sim_get_spn(CoreObject *o)
 {
-       struct tel_sim_spn *tmp_spn;
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
@@ -3447,43 +3987,39 @@ struct tel_sim_spn* tcore_sim_get_spn(CoreObject *o)
                dbg("po->spn is NULL");
                return NULL;
        }
-       tmp_spn =  calloc(1, sizeof(struct tel_sim_spn));
-       memcpy(tmp_spn, po->spn, sizeof(struct tel_sim_spn));
-       return tmp_spn;
+
+       return g_memdup(po->spn, sizeof(struct tel_sim_spn));
 }
 
 gboolean tcore_sim_set_spn(CoreObject *o, const struct tel_sim_spn *spn)
 {
-       struct tel_sim_spn *empty_spn = NULL;
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return FALSE;
        }
-       if (!spn) {
-               empty_spn = calloc(1, sizeof(struct tel_sim_spn));
-               spn = empty_spn;
-       }
 
-       if (po->spn) {
-               memcpy(po->spn, spn, sizeof(struct tel_sim_spn));
+        if (po->spn) {
+               if (spn)
+                       memcpy(po->spn, spn, sizeof(struct tel_sim_spn));
+               else
+                       memset(po->spn, 0x0, sizeof(struct tel_sim_spn));
        } else {
-               struct tel_sim_spn *tmp_spn = NULL;
-               tmp_spn =  calloc(1, sizeof(struct tel_sim_spn));
-               memcpy(tmp_spn, spn, sizeof(struct tel_sim_spn));
-               po->spn = tmp_spn;
+               if (spn)
+                       po->spn = g_memdup(spn, sizeof(struct tel_sim_spn));
+               else
+                       po->spn = g_malloc0(sizeof(struct tel_sim_spn));
        }
 
-       if (empty_spn)
-               free(empty_spn);
-
        return TRUE;
 }
 
 enum tcore_return tcore_sim_delete_spn(CoreObject *o)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
@@ -3498,10 +4034,10 @@ enum tcore_return tcore_sim_delete_spn(CoreObject *o)
        return TCORE_RETURN_SUCCESS;
 }
 
-struct tel_sim_cphs_netnametcore_sim_get_cphs_netname(CoreObject *o)
+struct tel_sim_cphs_netname *tcore_sim_get_cphs_netname(CoreObject *o)
 {
-       struct tel_sim_cphs_netname *tmp_cphs_netname;
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
@@ -3510,43 +4046,39 @@ struct tel_sim_cphs_netname* tcore_sim_get_cphs_netname(CoreObject *o)
                dbg("po->cphs_netname is NULL");
                return NULL;
        }
-       tmp_cphs_netname =  calloc(1, sizeof(struct tel_sim_cphs_netname));
-       memcpy(tmp_cphs_netname, po->cphs_netname, sizeof(struct tel_sim_cphs_netname));
-       return tmp_cphs_netname;
+
+       return g_memdup(po->cphs_netname, sizeof(struct tel_sim_cphs_netname));
 }
 
 gboolean tcore_sim_set_cphs_netname(CoreObject *o, const struct tel_sim_cphs_netname *cphs_netname)
 {
-       struct tel_sim_cphs_netname *empty_cphs_netname = NULL;
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return FALSE;
        }
-       if (!cphs_netname) {
-               empty_cphs_netname = calloc(1, sizeof(struct tel_sim_cphs_netname));
-               cphs_netname = empty_cphs_netname;
-       }
 
-       if (po->cphs_netname) {
-               memcpy(po->cphs_netname, cphs_netname, sizeof(struct tel_sim_cphs_netname));
+        if (po->cphs_netname) {
+               if (cphs_netname)
+                       memcpy(po->cphs_netname, cphs_netname, sizeof(struct tel_sim_cphs_netname));
+               else
+                       memset(po->cphs_netname, 0x0, sizeof(struct tel_sim_cphs_netname));
        } else {
-               struct tel_sim_cphs_netname *tmp_cphs_netname = NULL;
-               tmp_cphs_netname =  calloc(1, sizeof(struct tel_sim_cphs_netname));
-               memcpy(tmp_cphs_netname, cphs_netname, sizeof(struct tel_sim_cphs_netname));
-               po->cphs_netname = tmp_cphs_netname;
+               if (cphs_netname)
+                       po->cphs_netname = g_memdup(cphs_netname, sizeof(struct tel_sim_cphs_netname));
+               else
+                       po->cphs_netname = g_malloc0(sizeof(struct tel_sim_cphs_netname));
        }
 
-       if (empty_cphs_netname)
-               free(empty_cphs_netname);
-
        return TRUE;
 }
 
 enum tcore_return tcore_sim_delete_cphs_netname(CoreObject *o)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
@@ -3561,10 +4093,10 @@ enum tcore_return tcore_sim_delete_cphs_netname(CoreObject *o)
        return TCORE_RETURN_SUCCESS;
 }
 
-struct tel_sim_iccidtcore_sim_get_iccid(CoreObject *o)
+struct tel_sim_iccid *tcore_sim_get_iccid(CoreObject *o)
 {
-       struct tel_sim_iccid *tmp_iccid;
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
@@ -3573,43 +4105,39 @@ struct tel_sim_iccid* tcore_sim_get_iccid(CoreObject *o)
                dbg("po->iccid is NULL");
                return NULL;
        }
-       tmp_iccid =  calloc(1, sizeof(struct tel_sim_iccid));
-       memcpy(tmp_iccid, po->iccid, sizeof(struct tel_sim_iccid));
-       return tmp_iccid;
+
+       return g_memdup(po->iccid, sizeof(struct tel_sim_iccid));
 }
 
 gboolean tcore_sim_set_iccid(CoreObject *o, const struct tel_sim_iccid *iccid)
 {
-       struct tel_sim_iccid *empty_iccid = NULL;
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return FALSE;
        }
-       if (!iccid) {
-               empty_iccid = calloc(1, sizeof(struct tel_sim_iccid));
-               iccid = empty_iccid;
-       }
 
-       if (po->iccid) {
-               memcpy(po->iccid, iccid, sizeof(struct tel_sim_iccid));
+        if (po->iccid) {
+               if (iccid)
+                       memcpy(po->iccid, iccid, sizeof(struct tel_sim_iccid));
+               else
+                       memset(po->iccid, 0x0, sizeof(struct tel_sim_iccid));
        } else {
-               struct tel_sim_iccid *tmp_iccid = NULL;
-               tmp_iccid =  calloc(1, sizeof(struct tel_sim_iccid));
-               memcpy(tmp_iccid, iccid, sizeof(struct tel_sim_iccid));
-               po->iccid = tmp_iccid;
+               if (iccid)
+                       po->iccid = g_memdup(iccid, sizeof(struct tel_sim_iccid));
+               else
+                       po->iccid = g_malloc0(sizeof(struct tel_sim_iccid));
        }
 
-       if (empty_iccid)
-               free(empty_iccid);
-
        return TRUE;
 }
 
 enum tcore_return tcore_sim_delete_iccid(CoreObject *o)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
@@ -3627,23 +4155,28 @@ enum tcore_return tcore_sim_delete_iccid(CoreObject *o)
 gboolean tcore_sim_link_userdata(CoreObject *o, void *userdata)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return FALSE;
        }
+
        po->userdata = userdata;
+
        return TRUE;
 }
 
-voidtcore_sim_ref_userdata(CoreObject *o)
+void *tcore_sim_ref_userdata(CoreObject *o)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po || !po->userdata) {
                dbg("po access fail");
                return NULL;
        }
+
        return po->userdata;
 }
 
@@ -3651,32 +4184,38 @@ static void tcore_sim_initialize_context(CoreObject *o)
 {
        struct tcore_sim_operations *tmp_ops = NULL;
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                dbg("po access fail");
                return;
        }
 
-       tmp_ops = po->ops;
+       /* set ops to default type when core object is created. */
+       tmp_ops = po->ops[TCORE_OPS_TYPE_CP];
+
        memset(po, 0x00, sizeof(struct private_object_data));
-       po->ops = tmp_ops;
+       po->ops[TCORE_OPS_TYPE_CP] = tmp_ops;
        po->sim_status = SIM_STATUS_UNKNOWN;
 }
 
 unsigned char tcore_sim_get_app_list(CoreObject *o)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                err("po access fail");
                return 0;
        }
+
        return po->app_list;
 }
 
 gboolean tcore_sim_set_app_list(CoreObject *o, unsigned char app_list)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                err("po access fail");
@@ -3684,47 +4223,48 @@ gboolean tcore_sim_set_app_list(CoreObject *o, unsigned char app_list)
        }
 
        po->app_list = app_list;
+
        return TRUE;
 }
 
 struct tel_sim_ist *tcore_sim_get_isim_service_table(CoreObject *o)
 {
        struct private_object_data *po = NULL;
-       struct tel_sim_ist *ist;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                err("po access fail");
                return NULL;
        }
+
        if (!po->ist) {
                err("po->ist is NULL");
                return NULL;
        }
 
-       ist = calloc(1, sizeof(struct tel_sim_ist));
-       memcpy(ist, po->ist, sizeof(struct tel_sim_ist));
-       return ist;
+       return g_memdup(po->ist, sizeof(struct tel_sim_ist));
 }
 
 gboolean tcore_sim_set_isim_service_table(CoreObject *o, struct tel_sim_ist *ist)
 {
        struct private_object_data *po = NULL;
+
        po = tcore_object_ref_object(o);
        if (!po) {
                err("po access fail");
                return FALSE;
        }
+
        if (!ist) {
                err("ist is NULL");
                return FALSE;
        }
 
-       if (po->ist) {
-               memcpy(po->ist, ist, sizeof(struct tel_sim_ist));
-       } else {
-               po->ist = calloc(1, sizeof(struct tel_sim_ist));
+       if (po->ist)
                memcpy(po->ist, ist, sizeof(struct tel_sim_ist));
-       }
+       else
+               po->ist = g_memdup(ist, sizeof(struct tel_sim_ist));
+
        return TRUE;
 }
 
@@ -3764,12 +4304,12 @@ CoreObject *tcore_sim_new(TcorePlugin *p, const char *name,
                return NULL;
        }
 
-       po->ops = ops;
+       /* set ops to default type when core object is created. */
+       po->ops[TCORE_OPS_TYPE_CP] = ops;
 
        tcore_object_set_type(o, CORE_OBJECT_TYPE_SIM);
        tcore_object_link_object(o, po);
        tcore_object_set_free_hook(o, _free_hook);
-       tcore_object_set_clone_hook(o, _clone_hook);
        tcore_object_set_dispatcher(o, _dispatcher);
 
        tcore_sim_initialize_context(o);
@@ -3783,16 +4323,18 @@ void tcore_sim_free(CoreObject *o)
        tcore_object_free(o);
 }
 
-void tcore_sim_set_ops(CoreObject *o, struct tcore_sim_operations *ops)
+void tcore_sim_set_ops(CoreObject *o, struct tcore_sim_operations *ops, enum tcore_ops_type ops_type)
 {
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK(o, CORE_OBJECT_TYPE_SIM);
+       CORE_OBJECT_VALIDATE_OPS_RETURN(ops_type);
 
        po = (struct private_object_data *)tcore_object_ref_object(o);
        if (!po) {
+               err("po is NULL");
                return;
        }
 
-       po->ops = ops;
+       po->ops[ops_type] = ops;
 }
index 60a5433..9601377 100644 (file)
 #include <glib.h>
 
 #include "tcore.h"
+#include "internal/tcore_types.h"
 #include "plugin.h"
 #include "user_request.h"
 #include "co_sms.h"
 
 struct private_object_data {
-       struct tcore_sms_operations *ops;
+       struct tcore_sms_operations *ops[TCORE_OPS_TYPE_MAX];
        enum telephony_sms_ready_status SmsReadyStatus;
 };
 
-int _tcore_util_sms_encode_smsParameters(const struct telephony_sms_Params *incoming, unsigned char *data, int SMSPRecordLen)
+int _tcore_util_sms_encode_smsParameters(const struct telephony_sms_Params *incoming,
+       unsigned char *data, int SMSPRecordLen)
 {
        struct telephony_sms_Params *smsParams =  (struct telephony_sms_Params *)incoming;
        unsigned int nPIDIndex = 0;
        unsigned char nOffset = 0;
 
-       if(incoming == NULL || data == NULL)
+       if (incoming == NULL || data == NULL)
                return FALSE;
 
-       memset(data, 0xff, SMSPRecordLen);//pSmsParam->RecordLen);
+       memset(data, 0xff, SMSPRecordLen);
 
        dbg(" Record index = %d", (int) smsParams->recordIndex);
        dbg(" Alpha ID Len = %d", (int) smsParams->alphaIdLen);
-       dbg(" Record Length : %d", SMSPRecordLen);//pSmsParam->RecordLen);
+       dbg(" Record Length : %d", SMSPRecordLen);
 
-       if (SMSPRecordLen/*pSmsParam->RecordLen*/>= nDefaultSMSPWithoutAlphaId) {
-               nPIDIndex = SMSPRecordLen
-                               /*pSmsParam->RecordLen*/- nDefaultSMSPWithoutAlphaId;
-       }
+       if (SMSPRecordLen/*pSmsParam->RecordLen*/>= nDefaultSMSPWithoutAlphaId)
+               nPIDIndex = SMSPRecordLen /*pSmsParam->RecordLen*/- nDefaultSMSPWithoutAlphaId;
 
-       //dongil01.park(2008/12/27) - Check Point
-       memcpy(data, smsParams->szAlphaId, (int) nPIDIndex/*pSmsParam->AlphaIdLen*/);
+       /* dongil01.park(2008/12/27) - Check Point */
+       memcpy(data, smsParams->szAlphaId, (int)nPIDIndex/*pSmsParam->AlphaIdLen*/);
 
        dbg(" Alpha ID : %s", smsParams->szAlphaId);
        dbg(" nPIDIndex = %d", nPIDIndex);
 
        data[nPIDIndex] = smsParams->paramIndicator;
 
-       dbg(" Param Indicator = %02x",  smsParams->paramIndicator);
+       dbg(" Param Indicator = %02x", smsParams->paramIndicator);
 
        if ((smsParams->paramIndicator & SMSPValidDestAddr) == 0x00) {
                nOffset = nDestAddrOffset;
@@ -75,8 +75,7 @@ int _tcore_util_sms_encode_smsParameters(const struct telephony_sms_Params *inco
                dbg(" nextIndex = %d", nPIDIndex);
        }
 
-       if( (smsParams->paramIndicator & SMSPValidSvcAddr) == 0x00 )
-       {
+       if ((smsParams->paramIndicator & SMSPValidSvcAddr) == 0x00) {
                dbg("TON [%d] / NPI [%d]", smsParams->tpSvcCntrAddr.typeOfNum, smsParams->tpSvcCntrAddr.numPlanId);
 
                nOffset = nSCAAddrOffset;
@@ -119,17 +118,16 @@ int _tcore_util_sms_encode_smsParameters(const struct telephony_sms_Params *inco
 
 }
 
-void tcore_util_sms_semioctet_to_octect(int* nScLength) {
-       if (*nScLength % 2) {
+void tcore_util_sms_semioctet_to_octect(int *nScLength)
+{
+       if (*nScLength % 2)
                *nScLength = (*nScLength / 2) + 1;
-       } else {
+       else
                *nScLength = *nScLength / 2;
-       }
-
-       return;
 }
 
-int tcore_util_sms_decode_smsParameters(uint8_t *incoming, uint32_t length, struct telephony_sms_Params *params)
+int tcore_util_sms_decode_smsParameters(uint8_t *incoming, uint32_t length,
+       struct telephony_sms_Params *params)
 {
        int alpha_id_len = 0;
        int i = 0;
@@ -137,22 +135,17 @@ int tcore_util_sms_decode_smsParameters(uint8_t *incoming, uint32_t length, stru
 
        dbg(" RecordLen = %d", length);
 
-       if(incoming == NULL || params == NULL)
+       if (incoming == NULL || params == NULL)
                return FALSE;
 
-       alpha_id_len = length -SMS_SMSP_PARAMS_MAX_LEN;
+       alpha_id_len = length - SMS_SMSP_PARAMS_MAX_LEN;
 
-       if ( alpha_id_len > 0 )
-       {
-               if(alpha_id_len > SMS_SMSP_ALPHA_ID_LEN_MAX)
-               {
+       if (alpha_id_len > 0) {
+               if (alpha_id_len > SMS_SMSP_ALPHA_ID_LEN_MAX)
                        alpha_id_len = SMS_SMSP_ALPHA_ID_LEN_MAX;
-               }
 
-               for( i=0 ; i < alpha_id_len ; i++)
-               {
-                       if( 0xff == incoming[i])
-                       {
+               for (i = 0 ; i < alpha_id_len ; i++) {
+                       if (0xff == incoming[i]) {
                                dbg(" found");
                                break;
                        }
@@ -164,367 +157,287 @@ int tcore_util_sms_decode_smsParameters(uint8_t *incoming, uint32_t length, stru
 
                dbg(" Alpha id length = %d", i);
 
-       }
-       else
-       {
+       } else {
                params->alphaIdLen = 0;
                dbg(" Alpha id length is zero");
        }
 
-       //dongil01.park - start parse from here.
+       /* dongil01.park - start parse from here. */
        params->paramIndicator = incoming[alpha_id_len];
 
        dbg(" Param Indicator = %02x", params->paramIndicator);
 
-       //dongil01.park(2008/12/26) - DestAddr
-       if( (params->paramIndicator & SMSPValidDestAddr) == 0)
-       {
+       /* dongil01.park(2008/12/26) - DestAddr */
+       if ((params->paramIndicator & SMSPValidDestAddr) == 0) {
                nOffset = nDestAddrOffset;
 
-               if( 0x00 == incoming[alpha_id_len + nOffset] || 0xff == incoming[alpha_id_len + nOffset])
-               {
+               if (0x00 == incoming[alpha_id_len + nOffset] || 0xff == incoming[alpha_id_len + nOffset]) {
                        params->tpDestAddr.dialNumLen = 0;
 
                        dbg("DestAddr Length is 0");
-               }
-               else
-               {
-                       if ( 0 < (int)incoming[alpha_id_len + nOffset] )
-                       {
-                               params->tpDestAddr.dialNumLen = (int)(incoming[alpha_id_len + nOffset] - 1 );
-
-                               if(params->tpDestAddr.dialNumLen > SMS_SMSP_ADDRESS_LEN)
-                                       params->tpDestAddr.dialNumLen = SMS_SMSP_ADDRESS_LEN;
-                       }
-                       else
-                       {
+               } else {
+                       if (0 < (int)incoming[alpha_id_len + nOffset]) {
+                               params->tpDestAddr.dialNumLen = (int)(incoming[alpha_id_len + nOffset] - 1);
+
+                               if (params->tpDestAddr.dialNumLen > SMS_SMSP_ADDRESS_LEN)
+                                       params->tpDestAddr.dialNumLen = SMS_SMSP_ADDRESS_LEN;
+                       } else {
                                params->tpDestAddr.dialNumLen = 0;
                        }
 
-                       params->tpDestAddr.numPlanId= incoming[alpha_id_len + (++nOffset)] & 0x0f ;
-                       params->tpDestAddr.typeOfNum= (incoming[alpha_id_len + nOffset] & 0x70 )>>4 ;
-
-                       memcpy( params->tpDestAddr.diallingNum, &incoming[alpha_id_len + (++nOffset)], (params->tpDestAddr.dialNumLen)) ;
+                       params->tpDestAddr.numPlanId = incoming[alpha_id_len + (++nOffset)] & 0x0f ;
+                       params->tpDestAddr.typeOfNum = (incoming[alpha_id_len + nOffset] & 0x70)>>4 ;
 
-                       dbg("Dest TON is %d",params->tpDestAddr.typeOfNum);
-                       dbg("Dest NPI is %d",params->tpDestAddr.numPlanId);
-                       dbg("Dest Length = %d",params->tpDestAddr.dialNumLen);
-                       dbg("Dest Addr = %s",params->tpDestAddr.diallingNum);
+                       memcpy(params->tpDestAddr.diallingNum, &incoming[alpha_id_len + (++nOffset)], (params->tpDestAddr.dialNumLen)) ;
 
+                       dbg("Dest TON is %d", params->tpDestAddr.typeOfNum);
+                       dbg("Dest NPI is %d", params->tpDestAddr.numPlanId);
+                       dbg("Dest Length = %d", params->tpDestAddr.dialNumLen);
+                       dbg("Dest Addr = %s", params->tpDestAddr.diallingNum);
                }
        }
 
-       //dongil01.park(2008/12/26) - SvcAddr
-       if( (params->paramIndicator & SMSPValidSvcAddr) == 0)
-       {
+       /* dongil01.park(2008/12/26) - SvcAddr */
+       if ((params->paramIndicator & SMSPValidSvcAddr) == 0) {
                nOffset = nSCAAddrOffset;
 
-               if( 0x00 == (int)incoming[alpha_id_len + nOffset] || 0xff == (int)incoming[alpha_id_len + nOffset] )
-               {
+               if (0x00 == (int)incoming[alpha_id_len + nOffset] || 0xff == (int)incoming[alpha_id_len + nOffset]) {
                        params->tpSvcCntrAddr.dialNumLen = 0;
 
                        dbg(" SCAddr Length is 0");
-               }
-               else
-               {
-                       if ( 0 < (int)incoming[alpha_id_len + nOffset]  )
-                       {
+               } else {
+                       if (0 < (int)incoming[alpha_id_len + nOffset]) {
                                params->tpSvcCntrAddr.dialNumLen = (int)(incoming[alpha_id_len + nOffset] - 1);
 
-                               if(params->tpSvcCntrAddr.dialNumLen > SMS_SMSP_ADDRESS_LEN)
-                                       params->tpSvcCntrAddr.dialNumLen = SMS_SMSP_ADDRESS_LEN;
+                               if (params->tpSvcCntrAddr.dialNumLen > SMS_SMSP_ADDRESS_LEN)
+                                       params->tpSvcCntrAddr.dialNumLen = SMS_SMSP_ADDRESS_LEN;
 
-                               params->tpSvcCntrAddr.numPlanId= incoming[alpha_id_len + (++nOffset)] & 0x0f ;
-                               params->tpSvcCntrAddr.typeOfNum= (incoming[alpha_id_len + nOffset] & 0x70) >>4 ;
+                               params->tpSvcCntrAddr.numPlanId = incoming[alpha_id_len + (++nOffset)] & 0x0f ;
+                               params->tpSvcCntrAddr.typeOfNum = (incoming[alpha_id_len + nOffset] & 0x70) >> 4;
 
-                               memcpy( params->tpSvcCntrAddr.diallingNum, &incoming[alpha_id_len + (++nOffset)], (params->tpSvcCntrAddr.dialNumLen));
+                               memcpy(params->tpSvcCntrAddr.diallingNum, &incoming[alpha_id_len + (++nOffset)], (params->tpSvcCntrAddr.dialNumLen));
 
-                               dbg("SCAddr Length = %d ",params->tpSvcCntrAddr.dialNumLen);
-                               dbg("SCAddr TON is %d",params->tpSvcCntrAddr.typeOfNum);
-                               dbg("SCAddr NPI is %d",params->tpSvcCntrAddr.numPlanId);
+                               dbg("SCAddr Length = %d ", params->tpSvcCntrAddr.dialNumLen);
+                               dbg("SCAddr TON is %d", params->tpSvcCntrAddr.typeOfNum);
+                               dbg("SCAddr NPI is %d", params->tpSvcCntrAddr.numPlanId);
 
-                               for( i = 0 ; i < (int)params->tpSvcCntrAddr.dialNumLen ; i ++)
-                                       dbg("SCAddr = %d [%02x]",i,params->tpSvcCntrAddr.diallingNum[i]);
-                       }
-                       else
-                       {
+                               for (i = 0 ; i < (int)params->tpSvcCntrAddr.dialNumLen ; i++)
+                                       dbg("SCAddr = %d [%02x]", i, params->tpSvcCntrAddr.diallingNum[i]);
+                       } else
                                params->tpSvcCntrAddr.dialNumLen = 0;
-                       }
                }
-       }
-       else if ( (0x00 < (int)incoming[alpha_id_len +nSCAAddrOffset] && (int)incoming[alpha_id_len +nSCAAddrOffset] <= 12 )
-                       || 0xff != (int)incoming[alpha_id_len +nSCAAddrOffset])
-       {
+       } else if ((0x00 < (int)incoming[alpha_id_len + nSCAAddrOffset]
+                       && (int)incoming[alpha_id_len + nSCAAddrOffset] <= 12)
+                       || 0xff != (int)incoming[alpha_id_len + nSCAAddrOffset]) {
                nOffset = nSCAAddrOffset;
 
-               if( 0x00 == (int)incoming[alpha_id_len + nOffset] || 0xff == (int)incoming[alpha_id_len + nOffset] )
-               {
+               if (0x00 == (int)incoming[alpha_id_len + nOffset] || 0xff == (int)incoming[alpha_id_len + nOffset]) {
                        params->tpSvcCntrAddr.dialNumLen = 0;
                        dbg("SCAddr Length is 0");
-               }
-               else
-               {
+               } else {
 
-                       if ( 0 < (int)incoming[alpha_id_len + nOffset]  )
-                       {
+                       if (0 < (int)incoming[alpha_id_len + nOffset]) {
                                params->tpSvcCntrAddr.dialNumLen = (int)(incoming[alpha_id_len + nOffset] - 1);
 
-                               params->tpSvcCntrAddr.dialNumLen = incoming[alpha_id_len + nOffset] -1;
+                               params->tpSvcCntrAddr.dialNumLen = incoming[alpha_id_len + nOffset] - 1;
 
-                               if(params->tpSvcCntrAddr.dialNumLen > SMS_SMSP_ADDRESS_LEN)
-                                       params->tpSvcCntrAddr.dialNumLen = SMS_SMSP_ADDRESS_LEN;
+                               if (params->tpSvcCntrAddr.dialNumLen > SMS_SMSP_ADDRESS_LEN)
+                                       params->tpSvcCntrAddr.dialNumLen = SMS_SMSP_ADDRESS_LEN;
 
-                               params->tpSvcCntrAddr.numPlanId= incoming[alpha_id_len + (++nOffset)] & 0x0f ;
-                               params->tpSvcCntrAddr.typeOfNum= (incoming[alpha_id_len + nOffset] & 0x70) >>4 ;
+                               params->tpSvcCntrAddr.numPlanId = incoming[alpha_id_len + (++nOffset)] & 0x0f ;
+                               params->tpSvcCntrAddr.typeOfNum = (incoming[alpha_id_len + nOffset] & 0x70) >> 4;
 
-                               memcpy( params->tpSvcCntrAddr.diallingNum, &incoming[alpha_id_len + (++nOffset)],
-                                               (params->tpSvcCntrAddr.dialNumLen)) ;
+                               memcpy(params->tpSvcCntrAddr.diallingNum, &incoming[alpha_id_len + (++nOffset)],
+                               (params->tpSvcCntrAddr.dialNumLen)) ;
 
-                               dbg("SCAddr Length = %d ",params->tpSvcCntrAddr.dialNumLen);
-                               dbg("SCAddr TON is %d",params->tpSvcCntrAddr.typeOfNum);
-                               dbg("SCAddr NPI is %d",params->tpSvcCntrAddr.numPlanId);
+                               dbg("SCAddr Length = %d ", params->tpSvcCntrAddr.dialNumLen);
+                               dbg("SCAddr TON is %d", params->tpSvcCntrAddr.typeOfNum);
+                               dbg("SCAddr NPI is %d", params->tpSvcCntrAddr.numPlanId);
 
-                               for( i = 0 ; i < (int)params->tpSvcCntrAddr.dialNumLen ; i ++)
-                                       dbg("SCAddr = %d [%02x]",i,params->tpSvcCntrAddr.diallingNum[i]);
-                       }
-                       else
-                       {
+                               for (i = 0 ; i < (int)params->tpSvcCntrAddr.dialNumLen ; i++)
+                                       dbg("SCAddr = %d [%02x]", i, params->tpSvcCntrAddr.diallingNum[i]);
+                       } else
                                params->tpSvcCntrAddr.dialNumLen = 0;
-                       }
                }
 
        }
 
-       if( (params->paramIndicator & SMSPValidPID) == 0 &&     (alpha_id_len + nPIDOffset) < SMS_MAX_EFSMSP_RECORD_LENGTH)
-       {
+       if ((params->paramIndicator & SMSPValidPID) == 0
+                       && (alpha_id_len + nPIDOffset) < SMS_MAX_EFSMSP_RECORD_LENGTH)
                params->tpProtocolId = incoming[alpha_id_len + nPIDOffset];
-       }
-       if( (params->paramIndicator & SMSPValidDCS) == 0 && (alpha_id_len + nDCSOffset) < SMS_MAX_EFSMSP_RECORD_LENGTH)
-       {
+
+       if ((params->paramIndicator & SMSPValidDCS) == 0
+                       && (alpha_id_len + nDCSOffset) < SMS_MAX_EFSMSP_RECORD_LENGTH)
                params->tpDataCodingScheme = incoming[alpha_id_len + nDCSOffset];
-       }
-       if( (params->paramIndicator & SMSPValidVP) == 0 && (alpha_id_len + nVPOffset) < SMS_MAX_EFSMSP_RECORD_LENGTH)
-       {
+
+       if ((params->paramIndicator & SMSPValidVP) == 0
+                       && (alpha_id_len + nVPOffset) < SMS_MAX_EFSMSP_RECORD_LENGTH)
                params->tpValidityPeriod = incoming[alpha_id_len + nVPOffset];
-       }
 
-       dbg(" Alpha Id(Len) = %d",(int)params->alphaIdLen);
+       dbg(" Alpha Id(Len) = %d", (int)params->alphaIdLen);
 
-       for (i=0; i< (int)params->alphaIdLen ; i++)
-       {
-               dbg(" Alpha Id = [%d] [%c]",i,params->szAlphaId[i]);
-       }
-       dbg(" PID = %d",params->tpProtocolId);
-       dbg(" DCS = %d",params->tpDataCodingScheme);
-       dbg(" VP = %d",params->tpValidityPeriod);
+       for (i = 0; i < (int)params->alphaIdLen ; i++)
+               dbg(" Alpha Id = [%d] [%c]", i, params->szAlphaId[i]);
+
+       dbg(" PID = %d", params->tpProtocolId);
+       dbg(" DCS = %d", params->tpDataCodingScheme);
+       dbg(" VP = %d", params->tpValidityPeriod);
 
        return TRUE;
 }
 
 
-static TReturn _dispatcher(CoreObject *o, UserRequest *ur)
+static TReturn _dispatcher(CoreObject *o, UserRequest *ur, enum tcore_ops_type ops_type)
 {
        enum tcore_request_command command;
-       struct private_object_data *po = NULL;
+       struct private_object_data *po = tcore_object_ref_object(o);
+       struct tcore_sms_operations *ops = NULL;
        TReturn rtn = TCORE_RETURN_SUCCESS;
 
        CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_SMS, TCORE_RETURN_EINVAL);
+       CORE_OBJECT_VALIDATE_OPS_RETURN_VAL(ops_type, TCORE_RETURN_EINVAL);
 
-       po = tcore_object_ref_object(o);
-       if (!po || !po->ops) {
-               dbg("[tcore_SMS] ERR: private_object is NULL or ops is NULL");
-               return TCORE_RETURN_ENOSYS;
-       }
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_EINVAL);
+       tcore_check_null_ret_err("ur", ur, TCORE_RETURN_EINVAL);
 
-       if(po->SmsReadyStatus == SMS_READY_STATUS_NONE) {
+       if (po->SmsReadyStatus == SMS_READY_STATUS_NONE) {
                dbg("[tcore_SMS] DEVICE_NOT_READY");
                return TCORE_RETURN_ENOSYS; /* TAPI_API_NETTEXT_DEVICE_NOT_READY */
        }
 
+       ops = po->ops[ops_type];
+       tcore_check_null_ret_err("ops", ops, TCORE_RETURN_FAILURE);
+
        command = tcore_user_request_get_command(ur);
        switch (command) {
-               case TREQ_SMS_SEND_UMTS_MSG:
-                       if (!po->ops->send_umts_msg)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->send_umts_msg is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_SEND_UMTS_MSG:
+               tcore_check_null_ret_err("ops->send_umts_msg",
+                       ops->send_umts_msg, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->send_umts_msg(o, ur);
+               rtn = ops->send_umts_msg(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_READ_MSG:
-                       if (!po->ops->read_msg)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->read_msg is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_READ_MSG:
+               tcore_check_null_ret_err("ops->connect",
+                       ops->read_msg, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->read_msg(o, ur);
+               rtn = ops->read_msg(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_SAVE_MSG:
-                       if (!po->ops->save_msg)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->save_msg is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_SAVE_MSG:
+               tcore_check_null_ret_err("ops->save_msg",
+                       ops->save_msg, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->save_msg(o, ur);
+               rtn = ops->save_msg(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_DELETE_MSG:
-                       if (!po->ops->delete_msg)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->delete_msg is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_DELETE_MSG:
+               tcore_check_null_ret_err("ops->delete_msg",
+                       ops->delete_msg, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->delete_msg(o, ur);
+               rtn = ops->delete_msg(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_GET_COUNT:
-                       if (!po->ops->get_storedMsgCnt)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->get_storedMsgCnt is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_GET_COUNT:
+               tcore_check_null_ret_err("ops->get_storedMsgCnt",
+                       ops->get_storedMsgCnt, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->get_storedMsgCnt(o, ur);
+               rtn = ops->get_storedMsgCnt(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_GET_SCA:
-                       if (!po->ops->get_sca)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->get_sca is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_GET_SCA:
+               tcore_check_null_ret_err("ops->get_sca",
+                       ops->get_sca, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->get_sca(o, ur);
+               rtn = ops->get_sca(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_SET_SCA:
-                       if (!po->ops->set_sca)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->set_sca is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_SET_SCA:
+               tcore_check_null_ret_err("ops->set_sca",
+                       ops->set_sca, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->set_sca(o, ur);
+               rtn = ops->set_sca(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_GET_CB_CONFIG:
-                       if (!po->ops->get_cb_config)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->get_cb_config is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_GET_CB_CONFIG:
+               tcore_check_null_ret_err("ops->get_cb_config",
+                       ops->get_cb_config, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->get_cb_config(o, ur);
+               rtn = ops->get_cb_config(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_SET_CB_CONFIG:
-                       if (!po->ops->set_cb_config)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->set_cb_config is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_SET_CB_CONFIG:
+               tcore_check_null_ret_err("ops->set_cb_config",
+                       ops->set_cb_config, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->set_cb_config(o, ur);
+               rtn = ops->set_cb_config(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_SET_MEM_STATUS:
-                       if (!po->ops->set_mem_status)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->set_mem_status is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_SET_MEM_STATUS:
+               tcore_check_null_ret_err("ops->set_mem_status",
+                       ops->set_mem_status, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->set_mem_status(o, ur);
+               rtn = ops->set_mem_status(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_GET_PREF_BEARER:
-                       if (!po->ops->get_pref_brearer)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->get_pref_brearer is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_GET_PREF_BEARER:
+               tcore_check_null_ret_err("ops->get_pref_brearer",
+                       ops->get_pref_brearer, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->get_pref_brearer(o, ur);
+               rtn = ops->get_pref_brearer(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_SET_PREF_BEARER:
-                       if (!po->ops->set_pref_brearer)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->get_pref_brearer is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_SET_PREF_BEARER:
+               tcore_check_null_ret_err("ops->set_pref_brearer",
+                       ops->set_pref_brearer, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->set_pref_brearer(o, ur);
+               rtn = ops->set_pref_brearer(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_SET_DELIVERY_REPORT:
-                       if (!po->ops->set_delivery_report)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->set_delivery_report is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_SET_DELIVERY_REPORT:
+               tcore_check_null_ret_err("ops->set_delivery_report",
+                       ops->set_delivery_report, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->set_delivery_report(o, ur);
+               rtn = ops->set_delivery_report(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_SET_MSG_STATUS:
-                       if (!po->ops->set_msg_status)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->set_msg_status is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_SET_MSG_STATUS:
+               tcore_check_null_ret_err("ops->set_msg_status",
+                       ops->set_msg_status, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->set_msg_status(o, ur);
+               rtn = ops->set_msg_status(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_GET_PARAMS:
-                       if (!po->ops->get_sms_params)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->get_sms_params is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_GET_PARAMS:
+               tcore_check_null_ret_err("ops->get_sms_params",
+                       ops->get_sms_params, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->get_sms_params(o, ur);
+               rtn = ops->get_sms_params(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_SET_PARAMS:
-                       if (!po->ops->set_sms_params)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->set_sms_params is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_SET_PARAMS:
+               tcore_check_null_ret_err("ops->set_sms_params",
+                       ops->set_sms_params, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->set_sms_params(o, ur);
+               rtn = ops->set_sms_params(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_GET_PARAMCNT:
-                       if (!po->ops->get_paramcnt)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->get_paramcnt is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_GET_PARAMCNT:
+               tcore_check_null_ret_err("ops->get_paramcnt",
+                       ops->get_paramcnt, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->get_paramcnt(o, ur);
+               rtn = ops->get_paramcnt(o, ur);
+       break;
 
-                       break;
-               case TREQ_SMS_SEND_CDMA_MSG:
-                       if (!po->ops->send_cdma_msg)
-                       {
-                               dbg("[tcore_SMS] ERR: po->ops->send_cdma_msg is NULL");
-                               return TCORE_RETURN_ENOSYS;
-                       }
+       case TREQ_SMS_SEND_CDMA_MSG:
+               tcore_check_null_ret_err("ops->send_cdma_msg",
+                       ops->send_cdma_msg, TCORE_RETURN_ENOSYS);
 
-                       rtn = po->ops->send_cdma_msg(o, ur);
+               rtn = ops->send_cdma_msg(o, ur);
+       break;
 
-                       break;
-               default:
-                       break;
+       default:
+       break;
        }
 
        dbg("[tcore_SMS] result = [0x%x], command = [0x%x]", rtn, command);
@@ -545,26 +458,6 @@ static void _free_hook(CoreObject *o)
        }
 }
 
-static void _clone_hook(CoreObject *src, CoreObject *dest)
-{
-       struct private_object_data *src_po = NULL;
-       struct private_object_data *dest_po = NULL;
-
-       if (!src || !dest)
-               return;
-
-       dest_po = calloc(1, sizeof(struct private_object_data));
-       if (!dest_po) {
-               tcore_object_link_object(dest, NULL);
-               return;
-       }
-
-       src_po = tcore_object_ref_object(src);
-       dest_po->ops = src_po->ops;
-
-       tcore_object_link_object(dest, dest_po);
-}
-
 enum telephony_sms_ready_status tcore_sms_get_ready_status(CoreObject *o)
 {
        struct private_object_data *po = NULL;
@@ -592,7 +485,7 @@ gboolean tcore_sms_set_ready_status(CoreObject *o, enum telephony_sms_ready_stat
 }
 
 CoreObject *tcore_sms_new(TcorePlugin *p, const char *name,
-               struct tcore_sms_operations *ops, TcoreHal *hal)
+       struct tcore_sms_operations *ops, TcoreHal *hal)
 {
        CoreObject *o = NULL;
        struct private_object_data *po = NULL;
@@ -610,12 +503,12 @@ CoreObject *tcore_sms_new(TcorePlugin *p, const char *name,
                return NULL;
        }
 
-       po->ops = ops;
+       /* set ops to default type when core object is created. */
+       po->ops[TCORE_OPS_TYPE_CP] = ops;
 
        tcore_object_set_type(o, CORE_OBJECT_TYPE_SMS);
        tcore_object_link_object(o, po);
        tcore_object_set_free_hook(o, _free_hook);
-       tcore_object_set_clone_hook(o, _clone_hook);
        tcore_object_set_dispatcher(o, _dispatcher);
 
        return o;
@@ -627,16 +520,18 @@ void tcore_sms_free(CoreObject *o)
        tcore_object_free(o);
 }
 
-void tcore_sms_set_ops(CoreObject *o, struct tcore_sms_operations *ops)
+void tcore_sms_set_ops(CoreObject *o, struct tcore_sms_operations *ops, enum tcore_ops_type ops_type)
 {
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK(o, CORE_OBJECT_TYPE_SMS);
+       CORE_OBJECT_VALIDATE_OPS_RETURN(ops_type);
 
        po = (struct private_object_data *)tcore_object_ref_object(o);
        if (!po) {
+               err("po is NULL");
                return;
        }
 
-       po->ops = ops;
+       po->ops[ops_type] = ops;
 }
index cdf77a4..45a8830 100644 (file)
 #include <glib.h>
 
 #include "tcore.h"
+#include "internal/tcore_types.h"
 #include "plugin.h"
 #include "queue.h"
 #include "user_request.h"
 #include "co_ss.h"
 
-#define _check_null( name, value, err ) { \
-       if ( !value ) { \
-               dbg("[error] %s : NULL", name ); \
-               return err; \
-       } \
-}
-
 struct ussd_session {
        gboolean session;
        enum tcore_ss_ussd_type type;
-       voiddata;
+       void *data;
        int data_len;
 };
 
+struct ss_routing_policy {
+       enum tcore_ss_routing_policy ss_routing_policy;
+       enum tcore_ussd_routing_policy ussd_routing_policy;
+};
+
 struct private_object_data {
+       struct tcore_ss_operations *ops[TCORE_OPS_TYPE_MAX];
+
        struct ussd_session ussd_s;
-       struct tcore_ss_operations *ops;
+       struct ss_routing_policy routing_policy;
 };
 
-static TReturn _dispatcher(CoreObject *o, UserRequest *ur)
+static TReturn _dispatcher(CoreObject *o, UserRequest *ur, enum tcore_ops_type ops_type)
 {
        enum tcore_request_command command;
+       struct private_object_data *po = tcore_object_ref_object(o);
+       struct tcore_ss_operations *ops = NULL;
        TReturn ret = 0;
 
-       struct private_object_data *po = NULL;
-       po = tcore_object_ref_object(o);
+       CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_SS, TCORE_RETURN_EINVAL);
+       CORE_OBJECT_VALIDATE_OPS_RETURN_VAL(ops_type, TCORE_RETURN_EINVAL);
 
-       _check_null( "po", po, TCORE_RETURN_FAILURE);
-       _check_null( "po->ops", po->ops, TCORE_RETURN_FAILURE);
-       _check_null( "ur", ur, TCORE_RETURN_FAILURE);
+       tcore_check_null_ret_err("po", po, TCORE_RETURN_EINVAL);
+       tcore_check_null_ret_err("ur", ur, TCORE_RETURN_EINVAL);
+
+       ops = po->ops[ops_type];
+       tcore_check_null_ret_err("ops", ops, TCORE_RETURN_FAILURE);
 
        command = tcore_user_request_get_command(ur);
        switch (command) {
-               case TREQ_SS_BARRING_ACTIVATE:
-                       if (!po->ops->barring_activate)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_BARRING_ACTIVATE:
+               tcore_check_null_ret_err("ops->barring_activate",
+                       ops->barring_activate, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->barring_activate(o, ur);
-                       break;
+               ret = ops->barring_activate(o, ur);
+       break;
 
-               case TREQ_SS_BARRING_DEACTIVATE:
-                       if (!po->ops->barring_deactivate)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_BARRING_DEACTIVATE:
+               tcore_check_null_ret_err("ops->barring_deactivate",
+                       ops->barring_deactivate, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->barring_deactivate(o, ur);
-                       break;
+               ret = ops->barring_deactivate(o, ur);
+       break;
 
-               case TREQ_SS_BARRING_CHANGE_PASSWORD:
-                       if (!po->ops->barring_change_password)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_BARRING_CHANGE_PASSWORD:
+               tcore_check_null_ret_err("ops->barring_change_password",
+                       ops->barring_change_password, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->barring_change_password(o, ur);
-                       break;
+               ret = ops->barring_change_password(o, ur);
+       break;
 
-               case TREQ_SS_BARRING_GET_STATUS:
-                       if (!po->ops->barring_get_status)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_BARRING_GET_STATUS:
+               tcore_check_null_ret_err("ops->barring_get_status",
+                       ops->barring_get_status, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->barring_get_status(o, ur);
-                       break;
+               ret = ops->barring_get_status(o, ur);
+       break;
 
-               case TREQ_SS_FORWARDING_ACTIVATE:
-                       if (!po->ops->forwarding_activate)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_FORWARDING_ACTIVATE:
+               tcore_check_null_ret_err("ops->forwarding_activate",
+                       ops->forwarding_activate, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->forwarding_activate(o, ur);
-                       break;
+               ret = ops->forwarding_activate(o, ur);
+       break;
 
-               case TREQ_SS_FORWARDING_DEACTIVATE:
-                       if (!po->ops->forwarding_deactivate)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_FORWARDING_DEACTIVATE:
+               tcore_check_null_ret_err("ops->forwarding_deactivate",
+                       ops->forwarding_deactivate, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->forwarding_deactivate(o, ur);
-                       break;
+               ret = ops->forwarding_deactivate(o, ur);
+       break;
 
-               case TREQ_SS_FORWARDING_REGISTER:
-                       if (!po->ops->forwarding_register)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_FORWARDING_REGISTER:
+               tcore_check_null_ret_err("ops->forwarding_register",
+                       ops->forwarding_register, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->forwarding_register(o, ur);
-                       break;
+               ret = ops->forwarding_register(o, ur);
+       break;
 
-               case TREQ_SS_FORWARDING_DEREGISTER:
-                       if (!po->ops->forwarding_deregister)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_FORWARDING_DEREGISTER:
+               tcore_check_null_ret_err("ops->forwarding_deregister",
+                       ops->forwarding_deregister, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->forwarding_deregister(o, ur);
-                       break;
+               ret = ops->forwarding_deregister(o, ur);
+       break;
 
-               case TREQ_SS_FORWARDING_GET_STATUS:
-                       if (!po->ops->forwarding_get_status)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_FORWARDING_GET_STATUS:
+               tcore_check_null_ret_err("ops->forwarding_get_status",
+                       ops->forwarding_get_status, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->forwarding_get_status(o, ur);
-                       break;
+               ret = ops->forwarding_get_status(o, ur);
+       break;
 
-               case TREQ_SS_WAITING_ACTIVATE:
-                       if (!po->ops->waiting_activate)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_WAITING_ACTIVATE:
+               tcore_check_null_ret_err("ops->waiting_activate",
+                       ops->waiting_activate, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->waiting_activate(o, ur);
-                       break;
+               ret = ops->waiting_activate(o, ur);
+       break;
 
-               case TREQ_SS_WAITING_DEACTIVATE:
-                       if (!po->ops->waiting_deactivate)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_WAITING_DEACTIVATE:
+               tcore_check_null_ret_err("ops->waiting_deactivate",
+                       ops->waiting_deactivate, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->waiting_deactivate(o, ur);
-                       break;
+               ret = ops->waiting_deactivate(o, ur);
+       break;
 
-               case TREQ_SS_WAITING_GET_STATUS:
-                       if (!po->ops->waiting_get_status)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_WAITING_GET_STATUS:
+               tcore_check_null_ret_err("ops->waiting_get_status",
+                       ops->waiting_get_status, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->waiting_get_status(o, ur);
-                       break;
+               ret = ops->waiting_get_status(o, ur);
+       break;
 
-               case TREQ_SS_CLI_ACTIVATE:
-                       if (!po->ops->cli_activate)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_CLI_ACTIVATE:
+               tcore_check_null_ret_err("ops->cli_activate",
+                       ops->cli_activate, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->cli_activate(o, ur);
-                       break;
+               ret = ops->cli_activate(o, ur);
+       break;
 
-               case TREQ_SS_CLI_DEACTIVATE:
-                       if (!po->ops->cli_deactivate)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_CLI_DEACTIVATE:
+               tcore_check_null_ret_err("ops->cli_deactivate",
+                       ops->cli_deactivate, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->cli_deactivate(o, ur);
-                       break;
+               ret = ops->cli_deactivate(o, ur);
+       break;
 
-               case TREQ_SS_CLI_SET_STATUS:
-                       if (!po->ops->cli_set_status)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_CLI_SET_STATUS:
+               tcore_check_null_ret_err("ops->cli_set_status",
+                       ops->cli_set_status, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->cli_set_status(o, ur);
-                       break;
+               ret = ops->cli_set_status(o, ur);
+       break;
 
-               case TREQ_SS_CLI_GET_STATUS:
-                       if (!po->ops->cli_get_status)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_CLI_GET_STATUS:
+               tcore_check_null_ret_err("ops->cli_get_status",
+                       ops->cli_get_status, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->cli_get_status(o, ur);
-                       break;
+               ret = ops->cli_get_status(o, ur);
+       break;
 
-               case TREQ_SS_SEND_USSD:
-                       if (!po->ops->send_ussd)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_SEND_USSD:
+               tcore_check_null_ret_err("ops->send_ussd",
+                       ops->send_ussd, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->send_ussd(o, ur);
-                       break;
+               ret = ops->send_ussd(o, ur);
+       break;
 
-               case TREQ_SS_SET_AOC:
-                       if (!po->ops->set_aoc)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_SET_AOC:
+               tcore_check_null_ret_err("ops->set_aoc",
+                       ops->set_aoc, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->set_aoc(o, ur);
-                       break;
+               ret = ops->set_aoc(o, ur);
+       break;
 
-               case TREQ_SS_GET_AOC:
-                       if (!po->ops->get_aoc)
-                               return TCORE_RETURN_ENOSYS;
+       case TREQ_SS_GET_AOC:
+               tcore_check_null_ret_err("ops->get_aoc",
+                       ops->get_aoc, TCORE_RETURN_ENOSYS);
 
-                       ret = po->ops->get_aoc(o, ur);
-                       break;
+               ret = ops->get_aoc(o, ur);
+       break;
 
-               default:
-                       break;
+       default:
+       break;
        }
 
        return ret;
 }
 
-static void _clone_hook(CoreObject *src, CoreObject *dest)
-{
-       struct private_object_data *src_po = NULL;
-       struct private_object_data *dest_po = NULL;
-
-       if (!src || !dest)
-               return;
-
-       dest_po = calloc(1, sizeof(struct private_object_data));
-       if (!dest_po) {
-               tcore_object_link_object(dest, NULL);
-               return;
-       }
-
-       src_po = tcore_object_ref_object(src);
-       dest_po->ops = src_po->ops;
-
-       tcore_object_link_object(dest, dest_po);
-}
-
 static void _free_hook(CoreObject *o)
 {
        struct private_object_data *po = NULL;
@@ -243,7 +228,7 @@ static void _ussd_session_init(struct ussd_session *ussd_s)
        ussd_s->data_len = 0;
 }
 
-struct ussd_sessiontcore_ss_ussd_create_session(CoreObject *o,
+struct ussd_session *tcore_ss_ussd_create_session(CoreObject *o,
                enum tcore_ss_ussd_type type, void *data, int data_len)
 {
        struct private_object_data *po = NULL;
@@ -270,8 +255,7 @@ struct ussd_session* tcore_ss_ussd_create_session(CoreObject *o,
 
                return &po->ussd_s;
 
-       }
-       else {
+       } else {
                dbg("[ error ] already exist ussd session, type : (0x%x)", po->ussd_s.type);
                return 0;
        }
@@ -279,16 +263,13 @@ struct ussd_session* tcore_ss_ussd_create_session(CoreObject *o,
 
 void tcore_ss_ussd_destroy_session(struct ussd_session *ussd_s)
 {
-       if (!ussd_s || !ussd_s->session) {
+       if (!ussd_s || !ussd_s->session)
                return;
-       }
-       else {
 
-               _ussd_session_init(ussd_s);
-       }
+       _ussd_session_init(ussd_s);
 }
 
-struct ussd_sessiontcore_ss_ussd_get_session(CoreObject *o)
+struct ussd_session *tcore_ss_ussd_get_session(CoreObject *o)
 {
        struct private_object_data *po = NULL;
 
@@ -307,11 +288,9 @@ enum tcore_ss_ussd_type tcore_ss_ussd_get_session_type(struct ussd_session *ussd
        if (!ussd_s || !ussd_s->session) {
                dbg("[ error ] there is no session");
                return 0;
-
-       }
-       else {
-               return ussd_s->type;
        }
+
+       return ussd_s->type;
 }
 
 void tcore_ss_ussd_set_session_type(struct ussd_session *ussd_s,
@@ -320,41 +299,76 @@ void tcore_ss_ussd_set_session_type(struct ussd_session *ussd_s,
        if (!ussd_s || !ussd_s->session) {
                dbg("[ error ] there is no session");
                return;
-
-       }
-       else {
-               ussd_s->type = type;
        }
+
+       ussd_s->type = type;
 }
 
-int tcore_ss_ussd_get_session_data(struct ussd_sessionussd_s, void **data)
+int tcore_ss_ussd_get_session_data(struct ussd_session *ussd_s, void **data)
 {
        if (!ussd_s || !ussd_s->session) {
                dbg("[ error ] there is no session");
                return -1;
-
        }
-       else {
 
-               *data = ussd_s->data;
-               return ussd_s->data_len;
-       }
+       *data = ussd_s->data;
+       return ussd_s->data_len;
 }
 
-void tcore_ss_ussd_set_session_data(struct ussd_sessionussd_s, void *data, int data_len)
+void tcore_ss_ussd_set_session_data(struct ussd_session *ussd_s, void *data, int data_len)
 {
        if (!ussd_s || !ussd_s->session) {
                dbg("[ error ] there is no session");
-               return ;
-
+               return;
        }
-       else {
 
-               ussd_s->data = data;
-               ussd_s->data_len = data_len;
-       }
+       ussd_s->data = data;
+       ussd_s->data_len = data_len;
 }
 
+void tcore_ss_set_ussd_routing(CoreObject *o, enum tcore_ussd_routing_policy ussd_routing_policy)
+{
+       struct private_object_data *po = NULL;
+
+       po = tcore_object_ref_object(o);
+       if (!po)
+               return;
+
+       po->routing_policy.ussd_routing_policy = ussd_routing_policy;
+}
+
+enum tcore_ussd_routing_policy tcore_ss_get_ussd_routing(CoreObject *o)
+{
+       struct private_object_data *po = NULL;
+
+       po = tcore_object_ref_object(o);
+       if (!po)
+               return TCORE_SS_USSD_ROUTING_POLICY_CS_ALWAYS; /* 'default' to CS */
+
+       return po->routing_policy.ussd_routing_policy;
+}
+
+void tcore_ss_set_ss_routing(CoreObject *o, enum tcore_ss_routing_policy ss_routing_policy)
+{
+       struct private_object_data *po = NULL;
+
+       po = tcore_object_ref_object(o);
+       if (!po)
+               return;
+
+       po->routing_policy.ss_routing_policy = ss_routing_policy;
+}
+
+enum tcore_ss_routing_policy tcore_ss_get_ss_routing(CoreObject *o)
+{
+       struct private_object_data *po = NULL;
+
+       po = tcore_object_ref_object(o);
+       if (!po)
+               return TCORE_SS_ROUTING_POLICY_CS_ALWAYS; /* 'default' to CS */
+
+       return po->routing_policy.ss_routing_policy;
+}
 
 CoreObject *tcore_ss_new(TcorePlugin *p, const char *name,
                struct tcore_ss_operations *ops, TcoreHal *hal)
@@ -375,14 +389,16 @@ CoreObject *tcore_ss_new(TcorePlugin *p, const char *name,
                return NULL;
        }
 
-       po->ops = ops;
+       /* set ops to default type when core object is created. */
+       po->ops[TCORE_OPS_TYPE_CP] = ops;
+       po->routing_policy.ss_routing_policy = TCORE_SS_ROUTING_POLICY_CS_ALWAYS; /* 'default' to CS */
+       po->routing_policy.ussd_routing_policy = TCORE_SS_USSD_ROUTING_POLICY_CS_ALWAYS; /* 'default' to CS */
 
        _ussd_session_init(&po->ussd_s);
 
        tcore_object_set_type(o, CORE_OBJECT_TYPE_SS);
        tcore_object_link_object(o, po);
        tcore_object_set_free_hook(o, _free_hook);
-       tcore_object_set_clone_hook(o, _clone_hook);
        tcore_object_set_dispatcher(o, _dispatcher);
 
        return o;
@@ -395,17 +411,19 @@ void tcore_ss_free(CoreObject *o)
        tcore_object_free(o);
 }
 
-void tcore_ss_set_ops(CoreObject *o, struct tcore_ss_operations *ops)
+void tcore_ss_set_ops(CoreObject *o, struct tcore_ss_operations *ops, enum tcore_ops_type ops_type)
 {
        struct private_object_data *po = NULL;
 
        CORE_OBJECT_CHECK(o, CORE_OBJECT_TYPE_SS);
+       CORE_OBJECT_VALIDATE_OPS_RETURN(ops_type);
 
        po = (struct private_object_data *)tcore_object_ref_object(o);
        if (!po) {
+               err("po is NULL");
                return;
        }
 
-       po->ops = ops;
+       po->ops[ops_type] = ops;
 }
 
index e93713b..1d27ceb 100644 (file)
@@ -30,7 +30,7 @@
 #include "communicator.h"
 
 struct tcore_communicator_type {
-       const char *name;
+       char *name;
        struct tcore_communitor_operations *ops;
 
        void *user_data;
@@ -39,17 +39,17 @@ struct tcore_communicator_type {
 };
 
 
-Communicator* tcore_communicator_new(TcorePlugin *plugin, const char *name,
-               struct tcore_communitor_operations *ops)
+Communicator *tcore_communicator_new(TcorePlugin *plugin,
+       const char *name, struct tcore_communitor_operations *ops)
 {
        Communicator *comm;
 
-       comm = calloc(1, sizeof(struct tcore_communicator_type));
+       comm = g_try_malloc0(sizeof(struct tcore_communicator_type));
        if (!comm)
                return NULL;
 
        if (name)
-               comm->name = strdup(name);
+               comm->name = g_strdup(name);
 
        comm->parent_plugin = plugin;
        comm->ops = ops;
@@ -65,9 +65,9 @@ void tcore_communicator_free(Communicator *comm)
                return;
 
        if (comm->name)
-               free((void *)comm->name);
+               g_free(comm->name);
 
-       free(comm);
+       g_free(comm);
 }
 
 TcorePlugin *tcore_communicator_ref_plugin(Communicator *comm)
@@ -83,7 +83,7 @@ const char *tcore_communicator_ref_name(Communicator *comm)
        if (!comm)
                return NULL;
 
-       return comm->name;
+       return (const char *)comm->name;
 }
 
 TReturn tcore_communicator_link_user_data(Communicator *comm, void *data)
@@ -123,7 +123,7 @@ TReturn tcore_communicator_send_response(Communicator *comm, UserRequest *ur,
        if (!comm || !comm->ops || !comm->ops->send_response)
                return TCORE_RETURN_EINVAL;
 
-       dbg("ur = %p", ur);
+       dbg("ur = 0x%x", (unsigned int)ur);
 
        return comm->ops->send_response(comm, ur, command, data_len, data);
 }
index 4b19598..163bfa0 100644 (file)
@@ -60,7 +60,6 @@ struct tcore_object_type {
        void *user_data;
 
        CoreObjectFreeHook free_hook;
-       CoreObjectCloneHook clone_hook;
        CoreObjectDispatcher dispatcher;
        GSList *callbacks;
        GHashTable *property;
@@ -88,7 +87,7 @@ static void _util_print_mapping_tbl_entry(object_mapping_table_t *tbl_entry)
        }
 
        /* Search all the Table entries with matching 'type' */
-       for ( ; co_list ; co_list = co_list->next) {
+       for (; co_list ; co_list = co_list->next) {
                if (co_list->data == NULL)
                        continue;
 
@@ -118,7 +117,7 @@ static CoreObject *_object_new(TcorePlugin *plugin, unsigned int type)
 {
        CoreObject *co;
 
-       co = calloc(1, sizeof(struct tcore_object_type));
+       co = g_try_malloc0(sizeof(struct tcore_object_type));
        if (!co)
                return NULL;
 
@@ -137,9 +136,8 @@ static gboolean _on_at_event(TcoreAT *at, const GSList *lines, void *user_data)
        struct callback_type *cb = user_data;
 
        ret = cb->callback(cb->co, lines, cb->user_data);
-       if (ret == FALSE) {
-
-       }
+       if (ret == FALSE)
+               err("Callback processing failed!");
 
        return ret;
 }
@@ -150,7 +148,7 @@ static void _remove_at_callback(TcoreAT *at, struct callback_type *cb)
 }
 
 static object_mapping_table_t *_object_search_mapping_tbl_entry(GSList *mapping_tbl_list,
-                                                                                                               TcoreHal *hal)
+       TcoreHal *hal)
 {
        GSList *list;
        object_mapping_table_t *tbl_entry = NULL;
@@ -161,16 +159,15 @@ static object_mapping_table_t *_object_search_mapping_tbl_entry(GSList *mapping_
                        continue;
 
                /* Search for Table entry with matching 'hal' */
-               if (tbl_entry->hal == hal) {
+               if (tbl_entry->hal == hal)
                        return tbl_entry;
-               }
        }
 
        return NULL;
 }
 
 static object_mapping_table_t *_object_search_mapping_tbl_entry_by_type(
-                                                               GSList *mapping_tbl_list, unsigned int type)
+       GSList *mapping_tbl_list, unsigned int type)
 {
        GSList *list;
        GSList *co_list;
@@ -186,9 +183,8 @@ static object_mapping_table_t *_object_search_mapping_tbl_entry_by_type(
                        if (co_list->data == NULL)
                                continue;
 
-                       if (type == GPOINTER_TO_UINT(co_list->data)) {
+                       if (type == GPOINTER_TO_UINT(co_list->data))
                                return tbl_entry;
-                       }
                }
        }
 
@@ -259,6 +255,7 @@ static CoreObject *_create_core_object_by_type(guint type,
        case CORE_OBJECT_TYPE_CUSTOM:           /* Fall through */
        default:
                err("Unsupport/Invalid Core Object Type [0x%x]", type);
+       break;
        }
 
        return co;
@@ -280,71 +277,83 @@ static gboolean _init_core_object_by_type(unsigned int type,
                /* Invoke initializer */
                if (initializer_list->modem_init)
                        ret = initializer_list->modem_init(plugin, co);
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_CALL: {
                /* Invoke initializer */
                if (initializer_list->call_init)
                        ret = initializer_list->call_init(plugin, co);
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_SS: {
                /* Invoke initializer */
                if (initializer_list->ss_init)
                        ret = initializer_list->ss_init(plugin, co);
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_NETWORK: {
                /* Invoke initializer */
                if (initializer_list->network_init)
                        ret = initializer_list->network_init(plugin, co);
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_PS: {
                /* Invoke initializer */
                if (initializer_list->ps_init)
                        ret = initializer_list->ps_init(plugin, co);
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_SIM: {
                /* Invoke initializer */
                if (initializer_list->sim_init)
                        ret = initializer_list->sim_init(plugin, co);
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_SAT: {
                /* Invoke initializer */
                if (initializer_list->sat_init)
                        ret = initializer_list->sat_init(plugin, co);
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_SAP: {
                /* Invoke initializer */
                if (initializer_list->sap_init)
                        ret = initializer_list->sap_init(plugin, co);
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_SMS:{
                /* Invoke initializer */
                if (initializer_list->sms_init)
                        ret = initializer_list->sms_init(plugin, co);
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_PHONEBOOK: {
                /* Invoke initializer */
                if (initializer_list->phonebook_init)
                        ret = initializer_list->phonebook_init(plugin, co);
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_GPS:{
                /* Invoke initializer */
                if (initializer_list->gps_init)
                        ret = initializer_list->gps_init(plugin, co);
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_CUSTOM:           /* Fall through */
        default:
                dbg("Unsupport/Invalid Core Object Type [0x%x]", type);
+       break;
        }
 
        return ret;
@@ -352,7 +361,7 @@ static gboolean _init_core_object_by_type(unsigned int type,
 
 
 static void _deinit_core_object_by_type(unsigned int type,
-                       TcorePlugin *plugin, struct object_deinitializer *deinitializer_list)
+       TcorePlugin *plugin, struct object_deinitializer *deinitializer_list)
 {
        CoreObject *co;
 
@@ -368,77 +377,88 @@ static void _deinit_core_object_by_type(unsigned int type,
                        /* Invoke deinitializer */
                        deinitializer_list->modem_deinit(plugin, co);
                }
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_CALL: {
                if (deinitializer_list->call_deinit) {
                        /* Invoke deinitializer */
                        deinitializer_list->call_deinit(plugin, co);
                }
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_SS: {
                if (deinitializer_list->ss_deinit) {
                        /* Invoke deinitializer */
                        deinitializer_list->ss_deinit(plugin, co);
                }
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_NETWORK: {
                if (deinitializer_list->network_deinit) {
                        /* Invoke deinitializer */
                        deinitializer_list->network_deinit(plugin, co);
                }
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_PS: {
                if (deinitializer_list->ps_deinit) {
                        /* Invoke deinitializer */
                        deinitializer_list->ps_deinit(plugin, co);
                }
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_SIM: {
                if (deinitializer_list->sim_deinit) {
                        /* Invoke deinitializer */
                        deinitializer_list->sim_deinit(plugin, co);
                }
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_SAT: {
                if (deinitializer_list->sat_deinit) {
                        /* Invoke deinitializer */
                        deinitializer_list->sat_deinit(plugin, co);
                }
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_SAP: {
                if (deinitializer_list->sap_deinit) {
                        /* Invoke deinitializer */
                        deinitializer_list->sap_deinit(plugin, co);
                }
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_SMS:{
                if (deinitializer_list->sms_deinit) {
                        /* Invoke deinitializer */
                        deinitializer_list->sms_deinit(plugin, co);
                }
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_PHONEBOOK: {
                if (deinitializer_list->phonebook_deinit) {
                        /* Invoke deinitializer */
                        deinitializer_list->phonebook_deinit(plugin, co);
                }
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_GPS:{
                if (deinitializer_list->gps_deinit) {
                        /* Invoke deinitializer */
                        deinitializer_list->gps_deinit(plugin, co);
                }
-       } break;
+       }
+       break;
 
        case CORE_OBJECT_TYPE_CUSTOM:           /* Fall through */
        default:
@@ -486,9 +506,8 @@ void tcore_object_free(CoreObject *co)
                        warn("free_hook is null, private-object couldn't be freed!!");
        }
 
-       if (co->property) {
+       if (co->property)
                g_hash_table_destroy(co->property);
-       }
 
        if (co->callbacks) {
                for (l = co->callbacks; l; l = l->next) {
@@ -516,62 +535,6 @@ void tcore_object_free(CoreObject *co)
        free(co);
 }
 
-CoreObject *tcore_object_clone(CoreObject *src, TcorePlugin *new_parent)
-{
-       CoreObject *dest;
-       TcorePlugin *p;
-
-       GSList *l = NULL;
-       struct callback_type *cb = NULL;
-
-       if (!src)
-               return NULL;
-
-       if (new_parent)
-               p = new_parent;
-       else
-               p = src->parent_plugin;
-
-       dest = _object_new(p, src->type);
-       if (!dest)
-               return NULL;
-
-       dest->object = src->object;
-       dest->user_data = src->user_data;
-       dest->free_hook = src->free_hook;
-       dest->clone_hook = src->clone_hook;
-       dest->dispatcher = src->dispatcher;
-       dest->hal = src->hal;
-
-       for (l = src->callbacks; l; l = l->next) {
-               cb = l->data;
-               if (!cb)
-                       continue;
-
-               tcore_object_add_callback(dest, cb->event, cb->callback, cb->user_data);
-       }
-
-       tcore_plugin_add_core_object(p, dest);
-
-       if (src->clone_hook)
-               src->clone_hook(src, dest);
-
-       return dest;
-}
-
-CoreObject *tcore_object_clone_template_object(TcorePlugin *p,
-                               unsigned int co_type)
-{
-       CoreObject *template_co;
-
-       template_co = tcore_server_find_template_object(tcore_plugin_ref_server(p), co_type);
-       if(template_co == NULL)
-               return NULL;
-
-       return tcore_object_clone(template_co, p);
-
-}
-
 const char *tcore_object_ref_name(CoreObject *co)
 {
        if (!co)
@@ -591,18 +554,6 @@ TReturn tcore_object_set_free_hook(CoreObject *co,
        return TCORE_RETURN_SUCCESS;
 }
 
-
-TReturn tcore_object_set_clone_hook(CoreObject *co,
-               CoreObjectCloneHook clone_hook)
-{
-       if (!co)
-               return TCORE_RETURN_EINVAL;
-
-       co->clone_hook = clone_hook;
-
-       return TCORE_RETURN_SUCCESS;
-}
-
 TReturn tcore_object_set_name(CoreObject *co, const char *name)
 {
        if (!co)
@@ -673,7 +624,7 @@ TReturn tcore_object_set_hal(CoreObject *co, TcoreHal *hal)
                return TCORE_RETURN_EINVAL;
 
        if (co->hal) {
-               // remove unsolicited callbacks
+               /* Remove unsolicited callbacks */
                if (tcore_hal_get_mode(co->hal) == TCORE_HAL_MODE_AT) {
                        at = tcore_hal_get_at(co->hal);
                        for (l = co->callbacks; l; l = l->next) {
@@ -690,7 +641,7 @@ TReturn tcore_object_set_hal(CoreObject *co, TcoreHal *hal)
        if (!hal)
                return TCORE_RETURN_SUCCESS;
 
-       // register unsolicited callbacks
+       /* Register unsolicited callbacks */
        if (tcore_hal_get_mode(hal) == TCORE_HAL_MODE_AT) {
                at = tcore_hal_get_at(hal);
                for (l = co->callbacks; l; l = l->next) {
@@ -735,16 +686,24 @@ void *tcore_object_ref_user_data(CoreObject *co)
        return co->user_data;
 }
 
+/* This API will dispatch the request to default ops(i.e. CP) */
 TReturn tcore_object_dispatch_request(CoreObject *co,
                UserRequest *ur)
 {
+       return tcore_object_dispatch_request_with_type(co, ur, TCORE_OPS_TYPE_CP);
+}
+
+/* This API will dispatch the request according to ops type */
+TReturn tcore_object_dispatch_request_with_type(CoreObject *co,
+               UserRequest *ur, enum tcore_ops_type ops_type)
+{
        if (!co || !ur)
                return TCORE_RETURN_EINVAL;
 
        if (!co->dispatcher)
                return TCORE_RETURN_ENOSYS;
 
-       return co->dispatcher(co, ur);
+       return co->dispatcher(co, ur, ops_type);
 }
 
 TReturn tcore_object_set_dispatcher(CoreObject *co,
@@ -759,7 +718,7 @@ TReturn tcore_object_set_dispatcher(CoreObject *co,
 }
 
 TReturn tcore_object_override_callback(CoreObject *co,
-               const char *event, tcore_object_callback callback, void *user_data)
+       const char *event, tcore_object_callback callback, void *user_data)
 {
        struct callback_type *cb = NULL;
        GSList *l = NULL;
@@ -834,7 +793,7 @@ TReturn tcore_object_add_callback(CoreObject *co,
 }
 
 TReturn tcore_object_del_callback(CoreObject *co,
-               const char *event, CoreObjectCallback callback)
+       const char *event, CoreObjectCallback callback)
 {
        struct callback_type *cb = NULL;
        GSList *l = NULL;
@@ -882,7 +841,7 @@ TReturn tcore_object_del_callback(CoreObject *co,
 }
 
 TReturn tcore_object_emit_callback(CoreObject *co,
-               const char *event, const void *event_info)
+       const char *event, const void *event_info)
 {
        struct callback_type *cb = NULL;
        GSList *l = NULL;
@@ -919,7 +878,7 @@ TReturn tcore_object_emit_callback(CoreObject *co,
        return TCORE_RETURN_SUCCESS;
 }
 
-static GSList *_set_property_real (CoreObject *co, const char *key,
+static GSList *_set_property_real(CoreObject *co, const char *key,
                const char *value, GSList *list)
 {
        char *prev;
@@ -928,8 +887,8 @@ static GSList *_set_property_real (CoreObject *co, const char *key,
                return list;
 
        if (!value) {
-               g_hash_table_remove (co->property, key);
-               return g_slist_append (list, (char *)key);
+               g_hash_table_remove(co->property, key);
+               return g_slist_append(list, (char *)key);
        }
 
        prev = g_hash_table_lookup(co->property, key);
@@ -937,16 +896,14 @@ static GSList *_set_property_real (CoreObject *co, const char *key,
                /*
                 * If same data, no change & no callback emit
                 */
-               if (strcmp (prev, value) == 0)
+               if (strcmp(prev, value) == 0)
                        return list;
 
                g_hash_table_replace(co->property, strdup(key), strdup(value));
-       }
-       else {
+       } else
                g_hash_table_insert(co->property, strdup(key), strdup(value));
-       }
 
-       return g_slist_append (list, (char *)key);
+       return g_slist_append(list, (char *)key);
 }
 
 TReturn tcore_object_set_property_full(CoreObject *co, const char *first_property, ...)
@@ -959,31 +916,31 @@ TReturn tcore_object_set_property_full(CoreObject *co, const char *first_propert
        if (!co || !first_property)
                return TCORE_RETURN_EINVAL;
 
-       va_start (argptr, first_property);
+       va_start(argptr, first_property);
 
        k = first_property;
-       v = va_arg (argptr, char *);
-       list = _set_property_real (co, k, v, list);
+       v = va_arg(argptr, char *);
+       list = _set_property_real(co, k, v, list);
 
        while (1) {
-               k = va_arg (argptr, char *);
+               k = va_arg(argptr, char *);
                if (!k)
                        break;
 
-               v = va_arg (argptr, char *);
-               list = _set_property_real (co, k, v, list);
+               v = va_arg(argptr, char *);
+               list = _set_property_real(co, k, v, list);
        }
 
-       va_end (argptr);
+       va_end(argptr);
 
        if (!list)
                return TCORE_RETURN_SUCCESS;
 
        if (g_slist_length(list) > 0)
-               tcore_object_emit_callback (co,
+               tcore_object_emit_callback(co,
                                CORE_OBJECT_EVENT_PROPERTY_CHANGED, list);
 
-       g_slist_free (list);
+       g_slist_free(list);
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -1004,7 +961,7 @@ GHashTable *tcore_object_ref_property_hash(CoreObject *co)
        return co->property;
 }
 void *tcore_object_add_mapping_tbl_entry(void *mapping_tbl,
-                                               unsigned int object_type, TcoreHal *hal)
+       unsigned int object_type, TcoreHal *hal)
 {
        GSList *mapping_tbl_list = mapping_tbl;
        object_mapping_table_t *tbl_entry;
@@ -1032,7 +989,7 @@ void *tcore_object_add_mapping_tbl_entry(void *mapping_tbl,
                 * new Table entry is created
                 */
 
-               tbl_entry = g_try_new0(object_mapping_table_t, 1);
+               tbl_entry = g_try_malloc0(sizeof(object_mapping_table_t));
                if (tbl_entry != NULL)
                        tbl_entry->hal = hal;
                else {
@@ -1098,7 +1055,7 @@ void *tcore_object_remove_mapping_tbl_entry(void *mapping_tbl, TcoreHal *hal)
 }
 
 void tcore_object_remove_mapping_tbl_entry_by_type(void *mapping_tbl,
-                                                       unsigned int co_type)
+       unsigned int co_type)
 {
        GSList *mapping_tbl_list;
        object_mapping_table_t *tbl_entry;
@@ -1118,7 +1075,7 @@ void tcore_object_remove_mapping_tbl_entry_by_type(void *mapping_tbl,
        }
 
        /* Remove the Core Object type from the list */
-       tbl_entry->object_type = g_slist_remove(tbl_entry->object_type, (gconstpointer)GUINT_TO_POINTER(co_type));
+       tbl_entry->object_type = g_slist_remove(tbl_entry->object_type, GUINT_TO_POINTER(co_type));
 }
 
 void tcore_object_print_mapping_tbl(void *mapping_tbl)
@@ -1134,7 +1091,7 @@ void tcore_object_print_mapping_tbl(void *mapping_tbl)
 
        mapping_tbl_list = mapping_tbl;
 
-       for ( ; mapping_tbl_list ; mapping_tbl_list = mapping_tbl_list->next) {
+       for (; mapping_tbl_list ; mapping_tbl_list = mapping_tbl_list->next) {
                tbl_entry = mapping_tbl_list->data;
                if (tbl_entry == NULL)
                        continue;
@@ -1145,7 +1102,7 @@ void tcore_object_print_mapping_tbl(void *mapping_tbl)
 
 /* Initialize Core Objects */
 TReturn tcore_object_init_objects(TcorePlugin *plugin,
-                                               struct object_initializer *initializer_list)
+       struct object_initializer *initializer_list)
 {
        GSList *mapping_tbl_list;
        gboolean ret = FALSE;
@@ -1167,20 +1124,21 @@ TReturn tcore_object_init_objects(TcorePlugin *plugin,
 
                /* Create each Core Object based on the Mapping Table entries */
                mtbl_list = mapping_tbl_list;
-               for ( ; mtbl_list ; mtbl_list = mtbl_list->next) {
+               for (; mtbl_list ; mtbl_list = mtbl_list->next) {
                        tbl_entry = mtbl_list->data;
                        if (tbl_entry != NULL) {
                                CoreObject *co;
 
                                object_type_list = tbl_entry->object_type;
-                               for ( ; object_type_list ; object_type_list = object_type_list->next) {
-                                       type = GPOINTER_TO_UINT(object_type_list->data);
+                               for (; object_type_list ; object_type_list = object_type_list->next) {
+                                       type =  GPOINTER_TO_UINT(object_type_list->data);
 
                                        co = _create_core_object_by_type(type, plugin, tbl_entry->hal);
                                        if (co == NULL) {
                                                err("Failed to create Core Object - Type: [0x%x]", type);
                                                return TCORE_RETURN_FAILURE;
                                        }
+
                                        dbg("Created Core Object - Type: [0x%x]", type);
                                }
                        }
@@ -1189,7 +1147,7 @@ TReturn tcore_object_init_objects(TcorePlugin *plugin,
 
                /* Initialize each Core Object based on the Mapping Table entries */
                mtbl_list = mapping_tbl_list;
-               for ( ; mtbl_list ; mtbl_list = mtbl_list->next) {
+               for (; mtbl_list ; mtbl_list = mtbl_list->next) {
                        tbl_entry = mtbl_list->data;
                        if (tbl_entry != NULL) {
                                /* To handle NULL 'init' function case */
@@ -1197,7 +1155,7 @@ TReturn tcore_object_init_objects(TcorePlugin *plugin,
 
                                object_type_list = tbl_entry->object_type;
 
-                               for ( ; object_type_list ; object_type_list = object_type_list->next) {
+                               for (; object_type_list ; object_type_list = object_type_list->next) {
                                        type = GPOINTER_TO_UINT(object_type_list->data);
                                        dbg("Core Object type: [0x%x]", type);
 
@@ -1206,13 +1164,14 @@ TReturn tcore_object_init_objects(TcorePlugin *plugin,
                                                err("Failed to initialize Core Object Type [0x%x]", type);
                                                return TCORE_RETURN_FAILURE;
                                        }
+
                                        dbg("Initialized Core Object - Type: [0x%x]", type);
                                }
                        }
                }
-       } else {
+       } else
                err("Mapping Table is NOT present");
-       }
+
        if (ret == FALSE) {
                err("Failed to create/initialize Core Objects");
                return TCORE_RETURN_FAILURE;
@@ -1224,7 +1183,7 @@ TReturn tcore_object_init_objects(TcorePlugin *plugin,
 
 /* De-initialize Core Objects */
 void tcore_object_deinit_objects(TcorePlugin *plugin,
-                                               struct object_deinitializer *deinitializer_list)
+       struct object_deinitializer *deinitializer_list)
 {
        GSList *mapping_tbl_list;
 
@@ -1244,20 +1203,21 @@ void tcore_object_deinit_objects(TcorePlugin *plugin,
                unsigned int type;
 
                /* De-initialize each Core Object based on the Mapping Table entries */
-               for ( ; mapping_tbl_list ; mapping_tbl_list = mapping_tbl_list->next) {
+               for (; mapping_tbl_list ; mapping_tbl_list = mapping_tbl_list->next) {
                        tbl_entry = mapping_tbl_list->data;
                        if (tbl_entry == NULL)
                                continue;
 
                        object_type_list = tbl_entry->object_type;
 
-                       for ( ; object_type_list ; object_type_list = object_type_list->next) {
+                       for (; object_type_list ; object_type_list = object_type_list->next) {
                                type = GPOINTER_TO_UINT(object_type_list->data);
                                dbg("Core Object type: [0x%x]", type);
 
                                _deinit_core_object_by_type(type, plugin, deinitializer_list);
                        }
                }
+
                dbg("Successfully de-initialized Core Objects");
        } else
                err("Mapping Table is NOT present");
index 75993e1..e490e4c 100644 (file)
--- a/src/hal.c
+++ b/src/hal.c
@@ -37,7 +37,6 @@
 #include "mux.h"
 
 
-//#define IDLE_SEND_PRIORITY G_PRIORITY_DEFAULT
 #define IDLE_SEND_PRIORITY G_PRIORITY_HIGH
 
 struct hook_send_type {
@@ -81,29 +80,26 @@ static gboolean _hal_idle_send(void *user_data)
        p = tcore_queue_ref_next_pending(h->queue);
        if (!p) {
 #ifdef TCORE_HAL_DEBUG
-               dbg("next pending is NULL. no send, queue len=%d", tcore_queue_get_length(h->queue));
+               dbg("next pending is NULL. no send, queue len=%d",
+                       tcore_queue_get_length(h->queue));
 #endif
                goto out;
        }
 
        data = tcore_pending_ref_request_data(p, &data_len);
        dbg("queue(%p) len=%d, pending(%p) id=0x%x data_len=%d",
-                       h->queue, tcore_queue_get_length(h->queue), p, tcore_pending_get_id(p), data_len);
+               h->queue, tcore_queue_get_length(h->queue), p, tcore_pending_get_id(p), data_len);
 
-       if (h->mode == TCORE_HAL_MODE_AT) {
+       if (h->mode == TCORE_HAL_MODE_AT)
                ret = tcore_at_set_request(h->at, data, TRUE);
-       }
-       else {
+       else
                ret = tcore_hal_send_data(h, data_len, data);
-       }
 
        if (ret == TCORE_RETURN_SUCCESS) {
                tcore_pending_emit_send_callback(p, TRUE);
                tcore_pending_start_timer(p);
-       }
-       else {
+       } else
                tcore_pending_emit_send_callback(p, FALSE);
-       }
 
        if (ret != TCORE_RETURN_HOOK_STOP) {
                if (tcore_pending_get_auto_free_status_after_sent(p)) {
@@ -113,8 +109,7 @@ static gboolean _hal_idle_send(void *user_data)
 
                        /* renew idler */
                        renew = TRUE;
-               }
-               else {
+               } else {
                        /* Send fail */
                        if (ret != TCORE_RETURN_SUCCESS) {
                                dbg("send fail.");
@@ -132,8 +127,7 @@ out:
 }
 
 TcoreHal *tcore_hal_new(TcorePlugin *plugin, const char *name,
-               struct tcore_hal_operations *hops,
-               enum tcore_hal_mode mode)
+       struct tcore_hal_operations *hops, enum tcore_hal_mode mode)
 {
        TcoreHal *h;
 
@@ -269,13 +263,12 @@ TReturn tcore_hal_send_data(TcoreHal *hal, unsigned int data_len, void *data)
 
        for (list = hal->hook_list_send; list; list = list->next) {
                hook = list->data;
-               if (!hook) {
+               if (!hook)
                        continue;
-               }
 
-               if (hook->func(hal, data_len, data, hook->user_data) == TCORE_HOOK_RETURN_STOP_PROPAGATION) {
+               if (hook->func(hal, data_len, data, hook->user_data)
+                               == TCORE_HOOK_RETURN_STOP_PROPAGATION)
                        return TCORE_RETURN_HOOK_STOP;
-               }
        }
 
        return hal->ops->send(hal, data_len, data);
@@ -294,7 +287,7 @@ TReturn tcore_hal_send_request(TcoreHal *hal, TcorePending *pending)
                return TCORE_RETURN_FAILURE;
 
        ret = tcore_queue_push(hal->queue, pending);
-       if( ret != TCORE_RETURN_SUCCESS ) {
+       if (ret != TCORE_RETURN_SUCCESS) {
                dbg("Pushing pending fails : return [ %d ]", ret);
                return ret;
        }
@@ -303,11 +296,9 @@ TReturn tcore_hal_send_request(TcoreHal *hal, TcorePending *pending)
        if (priority == TCORE_PENDING_PRIORITY_IMMEDIATELY) {
                dbg("IMMEDIATELY pending !!");
                _hal_idle_send(hal);
-       }
-       else {
-               if (tcore_queue_get_normal_length(hal->queue) <= 1) {
+       } else {
+               if (tcore_queue_get_normal_length(hal->queue) <= 1)
                        g_idle_add_full(IDLE_SEND_PRIORITY, _hal_idle_send, hal, NULL);
-               }
        }
 
        return TCORE_RETURN_SUCCESS;
@@ -336,23 +327,21 @@ TReturn tcore_hal_free_timeout_pending_request(TcoreHal *hal, TcorePending *p,
                dbg("TCORE_HAL_MODE_AT");
                tcore_free_pending_timeout_at_request(hal->at);
                p = tcore_queue_pop_by_pending(hal->queue, p);
-               if (!p) {
+               if (!p)
                        dbg("no pending");
-               }
+
                tcore_user_request_free(tcore_pending_ref_user_request(p));
                tcore_pending_free(p);
-       }
-       else {
-               if(hal->mode == TCORE_HAL_MODE_CUSTOM) {
+       } else {
+               if (hal->mode == TCORE_HAL_MODE_CUSTOM) {
                        dbg("TCORE_HAL_MODE_CUSTOM");
                        p = tcore_queue_pop_by_pending(hal->queue, p);
-                       if (!p) {
+                       if (!p)
                                dbg("no pending");
-                       }
+
                        tcore_user_request_free(tcore_pending_ref_user_request(p));
                        tcore_pending_free(p);
-               }
-               else if(hal->mode == TCORE_HAL_MODE_TRANSPARENT) {
+               } else if (hal->mode == TCORE_HAL_MODE_TRANSPARENT) {
                        dbg("TCORE_HAL_MODE_TRANSPARENT");
 
                        /* TODO : Need to free resources */
@@ -361,8 +350,9 @@ TReturn tcore_hal_free_timeout_pending_request(TcoreHal *hal, TcorePending *p,
                        tcore_cmux_rcv_from_hal(hal, (unsigned char *)data, data_len);
                }
        }
+
        /* Send next request in queue */
-       g_idle_add_full(IDLE_SEND_PRIORITY, _hal_idle_send, hal, NULL );
+       g_idle_add_full(IDLE_SEND_PRIORITY, _hal_idle_send, hal, NULL);
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -386,11 +376,10 @@ TReturn tcore_hal_dispatch_response_data(TcoreHal *hal, int id,
                ret = tcore_at_process(hal->at, data_len, data);
                if (ret) {
                        /* Send next request in queue */
-                       g_idle_add_full(IDLE_SEND_PRIORITY, _hal_idle_send, hal, NULL );
+                       g_idle_add_full(IDLE_SEND_PRIORITY, _hal_idle_send, hal, NULL);
                }
-       }
-       else {
-               if(hal->mode == TCORE_HAL_MODE_CUSTOM) {
+       } else {
+               if (hal->mode == TCORE_HAL_MODE_CUSTOM) {
                        dbg("TCORE_HAL_MODE_CUSTOM");
                        p = tcore_queue_pop_by_id(hal->queue, id);
                        if (!p) {
@@ -401,15 +390,15 @@ TReturn tcore_hal_dispatch_response_data(TcoreHal *hal, int id,
                        tcore_pending_emit_response_callback(p, data_len, data);
                        tcore_user_request_free(tcore_pending_ref_user_request(p));
                        tcore_pending_free(p);
-               }
-               else if(hal->mode == TCORE_HAL_MODE_TRANSPARENT) {
+               } else if (hal->mode == TCORE_HAL_MODE_TRANSPARENT) {
                        dbg("TCORE_HAL_MODE_TRANSPARENT");
 
                        /* Invoke CMUX receive API for decoding */
                        tcore_cmux_rcv_from_hal(hal, (unsigned char *)data, data_len);
                }
+
                /* Send next request in queue */
-               g_idle_add_full(IDLE_SEND_PRIORITY, _hal_idle_send, hal, NULL );
+               g_idle_add_full(IDLE_SEND_PRIORITY, _hal_idle_send, hal, NULL);
        }
 
        return TCORE_RETURN_SUCCESS;
@@ -445,9 +434,8 @@ TReturn tcore_hal_remove_recv_callback(TcoreHal *hal, TcoreHalReceiveCallback fu
 
        for (list = hal->callbacks; list; list = list->next) {
                item = list->data;
-               if (!item) {
+               if (!item)
                        continue;
-               }
 
                if (item->func == func) {
                        hal->callbacks = g_slist_remove(hal->callbacks, item);
@@ -474,9 +462,8 @@ TReturn tcore_hal_emit_recv_callback(TcoreHal *hal, unsigned int data_len,
        for (list = hal->callbacks; list; list = list->next) {
                item = list->data;
 
-               if (item) {
+               if (item && item->func)
                        item->func(hal, data_len, data, item->user_data);
-               }
        }
 
        return TCORE_RETURN_SUCCESS;
@@ -512,9 +499,8 @@ TReturn tcore_hal_remove_send_hook(TcoreHal *hal, TcoreHalSendHook func)
 
        for (list = hal->hook_list_send; list; list = list->next) {
                hook = list->data;
-               if (!hook) {
+               if (!hook)
                        continue;
-               }
 
                if (hook->func == func) {
                        hal->hook_list_send = g_slist_remove(hal->hook_list_send, hook);
@@ -568,9 +554,8 @@ TReturn tcore_hal_set_power(TcoreHal *hal, gboolean flag)
        return hal->ops->power(hal, flag);
 }
 TReturn tcore_hal_setup_netif(TcoreHal *hal, CoreObject *co,
-                               TcoreHalSetupNetifCallback func,
-                               void *user_data, unsigned int cid,
-                               gboolean enable)
+       TcoreHalSetupNetifCallback func, void *user_data,
+       unsigned int cid, gboolean enable)
 {
        if ((hal == NULL) || (hal->ops == NULL) || (hal->ops->setup_netif == NULL))
                return TCORE_RETURN_EINVAL;
diff --git a/src/manager.c b/src/manager.c
new file mode 100644 (file)
index 0000000..e880dbc
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ * libtcore
+ *
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Ja-young Gu <jygu@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.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <glib.h>
+
+#include "tcore.h"
+#include "server.h"
+#include "manager.h"
+#include "plugin.h"
+#include "core_object.h"
+
+struct tcore_manager_type {
+       TcorePlugin *parent_plugin;
+
+       ManagerRequestDispatcher request_dispatcher;
+       ManagerNotificationHandler notification_handler;
+};
+
+Manager *tcore_manager_new(TcorePlugin *manager_plugin)
+{
+       Server *server;
+       Manager *manager;
+
+       /* Allocate Manager */
+       manager = g_try_malloc0(sizeof(Manager));
+       if (manager == NULL)
+               return NULL;
+
+       manager->parent_plugin = manager_plugin;
+
+       /* Set Manager to Server */
+       server = tcore_plugin_ref_server(manager_plugin);
+       tcore_server_set_manager(server, manager);
+
+       return manager;
+}
+
+void tcore_manager_free(TcorePlugin *manager_plugin, Manager *manager)
+{
+       Server *server;
+
+       /* Free Manager */
+       if (manager)
+               g_free(manager);
+
+       /* Reset Manager at Server */
+       server = tcore_plugin_ref_server(manager_plugin);
+       tcore_server_set_manager(server, NULL);
+}
+
+TReturn tcore_manager_set_request_dispatcher(Manager *manager,
+       ManagerRequestDispatcher request_dispatcher)
+{
+       if (!manager)
+               return TCORE_RETURN_FAILURE;
+
+       /* Update Request dispatcher at Manager */
+       manager->request_dispatcher = request_dispatcher;
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+TReturn tcore_manager_set_notification_handler(Manager *manager,
+       ManagerNotificationHandler notification_handler)
+{
+       if (!manager)
+               return TCORE_RETURN_FAILURE;
+
+       /* Update Notification handler at Manager */
+       manager->notification_handler = notification_handler;
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+enum tcore_manager_return tcore_manager_dispatch_request(Manager *manager, UserRequest *ur)
+{
+       if (!manager || !manager->request_dispatcher)
+               return TCORE_MANAGER_RETURN_CONTINUE;
+
+       return manager->request_dispatcher(manager, ur);
+}
+
+enum tcore_manager_return tcore_manager_send_notification(Manager *manager, CoreObject *source,
+       enum tcore_notification_command command,
+       unsigned int data_len, void *data)
+{
+       if (!manager || !manager->notification_handler)
+               return TCORE_MANAGER_RETURN_CONTINUE;
+
+       return manager->notification_handler(manager,
+                       source, command, data_len, data);
+}
+
+TcorePlugin *tcore_manager_get_plugin(Manager *manager)
+{
+       if (!manager)
+               return NULL;
+
+       /* Provide 'parent plug-in' */
+       return manager->parent_plugin;
+}
index 1eefde6..60d46ba 100644 (file)
--- a/src/mux.c
+++ b/src/mux.c
 
 /* CMUX Commands */
 #define CMUX_COMMAND_SABM                              0x2F
-#define CMUX_COMMAND_UA                                        0x63
-#define CMUX_COMMAND_DM                                        0x0F
-#define CMUX_COMMAND_DISC                                      0x43
-#define CMUX_COMMAND_UIH                                       0xEF
-#define CMUX_COMMAND_UI                                        0x03
+#define CMUX_COMMAND_UA                                0x63
+#define CMUX_COMMAND_DM                                0x0F
+#define CMUX_COMMAND_DISC                              0x43
+#define CMUX_COMMAND_UIH                               0xEF
+#define CMUX_COMMAND_UI                                0x03
 
 /* CMUX Delimiter Byte */
 #define CMUX_FRAME_DELIMITER                           0xF9
@@ -161,7 +161,7 @@ struct cmux_channel {
 
 /* CMUX structure - Internal */
 struct cmux_internal {
-       tcore_cmux_channel *channel_info[CMUX_CHANNEL_MAX];
+       tcore_cmux_channel * channel_info[CMUX_CHANNEL_MAX];
 
        int is_waiting;
 
@@ -206,7 +206,7 @@ static GSList *g_cmux_obj = NULL;
 
 /* All the local functions declared below */
 static void _cmux_on_confirmation_message_send(TcorePending *plugin,
-                                                                                       gboolean result, void *user_data);
+       gboolean result, void *user_data);
 
 tcore_cmux_object *_cmux_new(int max_channels, unsigned int buffer_size);
 static void _cmux_free(tcore_cmux_object *cmux_obj);
@@ -215,7 +215,7 @@ static void _cmux_channel_init(tcore_cmux_object *cmux_obj, int channel_id);
 static void _cmux_close_channel(tcore_cmux_object *cmux_obj, int channel_id);
 
 static TcoreHal *_cmux_create_logical_hal(tcore_cmux_object *cmux_obj,
-                                                               tcore_cmux_channel *channel);
+       tcore_cmux_channel *channel);
 
 static gboolean _cmux_recv_cmux_data(tcore_cmux_object *cmux_obj,
                                tcore_cmux_channel *channel);
@@ -228,16 +228,15 @@ static void _cmux_flush_channel_data(tcore_cmux_object *cmux_obj);
 
 static TReturn _cmux_send_data(TcoreHal *hal, int data_len, unsigned char *data);
 static unsigned char *_cmux_encode_cmux_frame(tcore_cmux_object *cmux_obj,
-                                               unsigned char *data, unsigned int length, int channel_id,
-                                               int frame_type, unsigned char EA_bit, unsigned char CR_bit,
-                                               unsigned char PF_bit, int *out_data_len);
+       unsigned char *data, unsigned int length, int channel_id,
+       int frame_type, unsigned char EA_bit, unsigned char CR_bit,
+       unsigned char PF_bit, int *out_data_len);
 
 static tcore_cmux_object *_cmux_get_cmux_object(TcorePlugin *plugin);
 
 static unsigned char _cmux_calc_crc(unsigned char *header, int length);
 static int _cmux_check_recv_crc(unsigned char *data,
-                                                                       unsigned char length,
-                                                                       unsigned char rcv_fcs);
+       unsigned char length, unsigned char rcv_fcs);
 
 static unsigned char _cmux_calc_crc(unsigned char *header, int length)
 {
@@ -259,8 +258,7 @@ static unsigned char _cmux_calc_crc(unsigned char *header, int length)
 }
 
 static int _cmux_check_recv_crc(unsigned char *data,
-                                                                       unsigned char length,
-                                                                       unsigned char rcv_fcs)
+       unsigned char length, unsigned char rcv_fcs)
 {
        unsigned char fcs = 0xFF;       /* Init */
 
@@ -442,23 +440,25 @@ static void _cmux_control_channel_handle(tcore_cmux_object *cmux_obj)
                while ((*msg_start_ptr++ & 0x01))
                        msg_len++;
 
-               if ((cmd_type & 0x02) == 0x02) {        /* This is a command Request */
+               if ((cmd_type & 0x02) == 0x02) { /* This is a command Request */
                        switch (cmd_type) {
-                               case CMUX_COMMAND_MSC:
-                                       dbg("Modem Status Command");
-                                       break;
-                               case CMUX_COMMAND_CLD:
-                                       dbg("Multiplexer close down");
-
-                                       cmux_obj->cmux_state = CMUX_CLOSED;
-
-                                       /* TODO - Need to notify regarding CMUX closure */
-                                       tcore_cmux_close(cmux_obj->phy_hal, NULL, NULL);
-                                       break;
-                               default:
-                                       /* We will be supporting these commands in Phase 2 */
-                                       dbg("Default");
-                                       break;
+                       case CMUX_COMMAND_MSC:
+                               dbg("Modem Status Command");
+                       break;
+
+                       case CMUX_COMMAND_CLD:
+                               dbg("Multiplexer close down");
+
+                               cmux_obj->cmux_state = CMUX_CLOSED;
+
+                               /* TODO - Need to notify regarding CMUX closure */
+                               tcore_cmux_close(cmux_obj->phy_hal, NULL, NULL);
+                       break;
+
+                       default:
+                               /* We will be supporting these commands in Phase 2 */
+                               dbg("Default");
+                       break;
                        }
                }
        } else
@@ -485,176 +485,182 @@ static void _cmux_process_channel_data(tcore_cmux_object *cmux_obj,
        dbg("Frame Type: [0x%02x]", frame_type);
 
        switch (frame_type) {
-               case CMUX_COMMAND_UI:
-               case CMUX_COMMAND_UIH:
-                       dbg("Received UI/UIH Frame");
-                       if (channel_id == CMUX_CHANNEL_0) {              /* This is control info */
-                               dbg("Control information");
-                               _cmux_control_channel_handle(cmux_obj);
-                       } else {
-                               dbg("Normal information");
-
-                               /* Put in the logical HAL queue, this goes to the Cobject */
-                               if (FALSE == _cmux_recv_cmux_data(cmux_obj, channel))
-                                       err("Failed receive callback");
-                       }
-                       break;
-               case CMUX_COMMAND_UA:
-                       dbg("Received UA Frame - Channel State: [%d]", channel->channel_state);
-                       if (CMUX_CHANNEL_SABM_SEND_WAITING_FOR_UA == channel->channel_state) {
-                               channel->channel_state = CMUX_CHANNEL_ESTABLISHED;
+       case CMUX_COMMAND_UI:
+       case CMUX_COMMAND_UIH:
+               dbg("Received UI/UIH Frame");
+               if (channel_id == CMUX_CHANNEL_0) {              /* This is control info */
+                       dbg("Control information");
+                       _cmux_control_channel_handle(cmux_obj);
+               } else {
+                       dbg("Normal information");
+
+                       /* Put in the logical HAL queue, this goes to the Cobject */
+                       if (FALSE == _cmux_recv_cmux_data(cmux_obj, channel))
+                               err("Failed receive callback");
+               }
+       break;
 
-                               if (channel->channel_id != CMUX_CHANNEL_0) {
-                                       TcoreHal *hal;
-
-                                       /* Create Logical HAL */
-                                       hal = _cmux_create_logical_hal(cmux_obj, channel);
-                                       if (hal != NULL) {
-                                               dbg("Invoking CMUX Channel Setup callback for [%d] channel",
-                                                                                                       channel->channel_id);
-                                               /*
-                                                * 'channel_setup_cb' cannot be NULL as it is MANDATED during
-                                                * CMUX setup operation.
-                                                */
-                                               cmux_obj->internal_mux.channel_setup_cb(channel->channel_id, hal,
-                                                                               cmux_obj->internal_mux.channel_setup_user_data);
-                                       } else
-                                               err("Failed to Create Logical HAL");
-                               }
-
-                               count++;
-                               dbg("Count: [%d]", count);
-                               if (cmux_obj->max_cmux_channels == count) {
-                                       dbg("Invoking CMUX Channel Setup Complete callback - Total Channels: [%d]",
-                                                                                                       count);
+       case CMUX_COMMAND_UA:
+               dbg("Received UA Frame - Channel State: [%d]", channel->channel_state);
+               if (CMUX_CHANNEL_SABM_SEND_WAITING_FOR_UA == channel->channel_state) {
+                       channel->channel_state = CMUX_CHANNEL_ESTABLISHED;
+
+                       if (channel->channel_id != CMUX_CHANNEL_0) {
+                               TcoreHal *hal;
+
+                               /* Create Logical HAL */
+                               hal = _cmux_create_logical_hal(cmux_obj, channel);
+                               if (hal != NULL) {
+                                       dbg("Invoking CMUX Channel Setup callback for [%d] channel",
+                                                                                               channel->channel_id);
                                        /*
-                                        * 'setup_complete_cb' cannot be NULL as it is MANDATED during
+                                        * 'channel_setup_cb' cannot be NULL as it is MANDATED during
                                         * CMUX setup operation.
                                         */
-                                       cmux_obj->internal_mux.setup_complete_cb(
-                                               cmux_obj->internal_mux.setup_complete_user_data);
+                                       cmux_obj->internal_mux.channel_setup_cb(channel->channel_id, hal,
+                                                                       cmux_obj->internal_mux.channel_setup_user_data);
+                               } else
+                                       err("Failed to Create Logical HAL");
+                       }
+
+                       count++;
+                       dbg("Count: [%d]", count);
+                       if (cmux_obj->max_cmux_channels == count) {
+                               dbg("Invoking CMUX Channel Setup Complete callback - Total Channels: [%d]",
+                                                                                               count);
+                               /*
+                                * 'setup_complete_cb' cannot be NULL as it is MANDATED during
+                                * CMUX setup operation.
+                                */
+                               cmux_obj->internal_mux.setup_complete_cb(
+                                       cmux_obj->internal_mux.setup_complete_user_data);
 
-                                       /* Reset 'count' */
-                                       count = 0;
-                               }
-                       } else if (CMUX_CHANNEL_DISC_SEND_WAITING_FOR_UA ==
-                                                                               channel->channel_state) {
-                               channel->channel_state = CMUX_CHANNEL_CLOSED;
+                               /* Reset 'count' */
+                               count = 0;
+                       }
+               } else if (CMUX_CHANNEL_DISC_SEND_WAITING_FOR_UA ==
+                                                                       channel->channel_state) {
+                       channel->channel_state = CMUX_CHANNEL_CLOSED;
 
-                               if (channel_id == CMUX_CHANNEL_0) {
-                                       cmux_obj->cmux_state = CMUX_CLOSED;
+                       if (channel_id == CMUX_CHANNEL_0) {
+                               cmux_obj->cmux_state = CMUX_CLOSED;
 
-                                       /* TODO - Need to notify regarding CMUX closure */
-                                       tcore_cmux_close(cmux_obj->phy_hal, NULL, NULL);
-                               }
-                       } else
-                               err("Received UA in wrong state!!!");
+                               /* TODO - Need to notify regarding CMUX closure */
+                               tcore_cmux_close(cmux_obj->phy_hal, NULL, NULL);
+                       }
+               } else
+                       err("Received UA in wrong state!!!");
 
-                       break;
-               case CMUX_COMMAND_DM:
+       break;
+
+       case CMUX_COMMAND_DM:
+               /*
+                * 5.4.1 DLC Establishment : If the responding station is not ready or unwilling
+                * to establish the particular DLC it will reply with a DM frame with the
+                * F-bit set to 1.
+                */
+               dbg("Received DM Frame");
+               if ((channel->channel_state == CMUX_CHANNEL_ESTABLISHED)
+                       || (channel->channel_state ==
+                                               CMUX_CHANNEL_SABM_SEND_WAITING_FOR_UA)) {
+                       /* Channel State set to Close */
+                       channel->channel_state = CMUX_CHANNEL_CLOSED;
+               }
+
+               /* Flush the Channel data */
+               _cmux_flush_channel_data(cmux_obj);
+       break;
+
+       case CMUX_COMMAND_DISC:
+               dbg("Received DISC Frame");
+               if (channel->poll_final_bit == 0) {
                        /*
-                        * 5.4.1 DLC Establishment : If the responding station is not ready or unwilling
-                        * to establish the particular DLC it will reply with a DM frame with the
-                        * F-bit set to 1.
+                        * In the case where a CMUX_COMMAND_SABM or
+                        * CMUX_COMMAND_DISC command with
+                        * the P bit set to 0 is received then the received frame shall be
+                        * discarded.
                         */
-                       dbg("Received DM Frame");
-                       if ((channel->channel_state == CMUX_CHANNEL_ESTABLISHED)
-                               || (channel->channel_state ==
-                                                       CMUX_CHANNEL_SABM_SEND_WAITING_FOR_UA)) {
-                               /* Channel State set to Close */
-                               channel->channel_state = CMUX_CHANNEL_CLOSED;
-                       }
 
                        /* Flush the Channel data */
                        _cmux_flush_channel_data(cmux_obj);
-                       break;
-               case CMUX_COMMAND_DISC:
-                       dbg("Received DISC Frame");
-                       if (channel->poll_final_bit == 0) {
+               } else {
+                       if (channel->channel_state == CMUX_CHANNEL_CLOSED) {
                                /*
-                                * In the case where a CMUX_COMMAND_SABM or
-                                * CMUX_COMMAND_DISC command with
-                                * the P bit set to 0 is received then the received frame shall be
-                                * discarded.
+                                * If a CMUX_COMMAND_DISC command is received while in
+                                * disconnected mode a CMUX_COMMAND_DM response should
+                                * be sent
                                 */
 
-                               /* Flush the Channel data */
-                               _cmux_flush_channel_data(cmux_obj);
-                       } else {
-                               if (channel->channel_state == CMUX_CHANNEL_CLOSED) {
-                                       /*
-                                        * If a CMUX_COMMAND_DISC command is received while in
-                                        * disconnected mode a CMUX_COMMAND_DM response should
-                                        * be sent
-                                        */
+                               /* Encoding frame */
+                               send_data = _cmux_encode_cmux_frame(cmux_obj, NULL,
+                                                                               0, channel_id, CMUX_COMMAND_DM,
+                                                                               0x01, 0x01, 0x01, &len);
+                       } else {                                /* Send Unnumbered Acknowledgement */
+                               /* Encoding frame */
+                               send_data = _cmux_encode_cmux_frame(cmux_obj, NULL,
+                                               0, channel_id, CMUX_COMMAND_UA,
+                                               0x01, 0x01, 0x01, &len);
+                       }
 
-                                       /* Encoding frame */
-                                       send_data = _cmux_encode_cmux_frame(cmux_obj, NULL,
-                                                                                       0, channel_id, CMUX_COMMAND_DM,
-                                                                                       0x01, 0x01, 0x01, &len);
-                               } else {                                /* Send Unnumbered Acknowledgement */
-                                       /* Encoding frame */
-                                       send_data = _cmux_encode_cmux_frame(cmux_obj, NULL,
-                                                                                       0, channel_id, CMUX_COMMAND_UA,
-                                                                                       0x01, 0x01, 0x01, &len);
-                               }
-
-                               if (len == 0) {
-                                       err("Failed to encode");
-                                       return;
-                               }
+                       if (len == 0) {
+                               err("Failed to encode");
+                               return;
+                       }
 
-                               /* Send CMUX data */
-                               ret = _cmux_send_data(cmux_obj->phy_hal, len, send_data);
-                dbg("return %d", ret);
+                       /* Send CMUX data */
+                       ret = _cmux_send_data(cmux_obj->phy_hal, len, send_data);
+                       dbg("return %d", ret);
 
-                               /* Flush the Channel data */
-                               _cmux_flush_channel_data(cmux_obj);
+                       /* Flush the Channel data */
+                       _cmux_flush_channel_data(cmux_obj);
 
-                               /*
-                                * 5.3.4 Disconnect (DISC) command: CMUX_COMMAND_DISC
-                                * command sent at DLCI 0 have the same meaning as the
-                                * Multiplexer Close Down command.
-                                */
-                               if (channel_id == CMUX_CHANNEL_0) {
-                                       cmux_obj->cmux_state = CMUX_CLOSED;
+                       /*
+                        * 5.3.4 Disconnect (DISC) command: CMUX_COMMAND_DISC
+                        * command sent at DLCI 0 have the same meaning as the
+                        * Multiplexer Close Down command.
+                        */
+                       if (channel_id == CMUX_CHANNEL_0) {
+                               cmux_obj->cmux_state = CMUX_CLOSED;
 
-                                       /* Close CMUX */
-                                       /* TODO - Need to notify regarding CMUX closure */
-                                       tcore_cmux_close(cmux_obj->phy_hal, NULL, NULL);
-                               }
+                               /* Close CMUX */
+                               /* TODO - Need to notify regarding CMUX closure */
+                               tcore_cmux_close(cmux_obj->phy_hal, NULL, NULL);
                        }
-                       break;
-               case CMUX_COMMAND_SABM:
-                       dbg("Received SABM Frame");
-                       if (channel->poll_final_bit == 0) {
-                               /*
-                                * In the case where a CMUX_COMMAND_SABM or CMUX_COMMAND_DISC
-                                * command with the P bit set to 0 is received then the received frame
-                                * shall be discarded.
-                                */
+               }
+       break;
 
-                               /* Flush the Channel data */
-                               _cmux_flush_channel_data(cmux_obj);
-                       } else {
-                               /* Encoding frame */
-                               send_data = _cmux_encode_cmux_frame(cmux_obj, NULL,
-                                                                               0, channel_id, CMUX_COMMAND_UA,
-                                                                               0x01, 0x01, 0x01, &len);
-                               if (len != 0)
-                                       /* Send CMUX data */
-                                       ret = _cmux_send_data(cmux_obj->phy_hal, len, send_data);
-                               else
-                                       err("Failed to encode");
-
-                               if (channel->channel_state != CMUX_CHANNEL_ESTABLISHED)
-                                       /* Channel State set to Established */
-                                       channel->channel_state = CMUX_CHANNEL_ESTABLISHED;
+       case CMUX_COMMAND_SABM:
+               dbg("Received SABM Frame");
+               if (channel->poll_final_bit == 0) {
+                       /*
+                        * In the case where a CMUX_COMMAND_SABM or CMUX_COMMAND_DISC
+                        * command with the P bit set to 0 is received then the received frame
+                        * shall be discarded.
+                        */
+
+                       /* Flush the Channel data */
+                       _cmux_flush_channel_data(cmux_obj);
+               } else {
+                       /* Encoding frame */
+                       send_data = _cmux_encode_cmux_frame(cmux_obj, NULL,
+                                                                       0, channel_id, CMUX_COMMAND_UA,
+                                                                       0x01, 0x01, 0x01, &len);
+                       if (len != 0)
+                               /* Send CMUX data */
+                               ret = _cmux_send_data(cmux_obj->phy_hal, len, send_data);
+                       else
+                               err("Failed to encode");
+
+                       if (channel->channel_state != CMUX_CHANNEL_ESTABLISHED) {
+                               /* Channel State set to Established */
+                               channel->channel_state = CMUX_CHANNEL_ESTABLISHED;
                        }
-               break;
-               default:
-                       warn("invalid frame_type");
-               break;  
+               }
+       break;
+
+       default:
+               warn("invalid frame_type");
+       break;
        }
 
        dbg("Exit");
@@ -713,8 +719,7 @@ static void _cmux_process_rcv_frame(tcore_cmux_object *cmux_obj, int length)
                } else {
                        cmux_obj->internal_mux.info_field_len = *(frame_process_ptr + 1) << 7;
                        cmux_obj->internal_mux.info_field_len =
-                                               (cmux_obj->internal_mux.info_field_len
-                                               | ((*frame_process_ptr++ & 0xFE) >> 1));
+                               (cmux_obj->internal_mux.info_field_len | ((*frame_process_ptr++ & 0xFE) >> 1));
                        header_length = 4;
                        frame_process_ptr++;
                }
@@ -745,9 +750,9 @@ static TReturn _cmux_send_data(TcoreHal *hal, int data_len, unsigned char *data)
 
        /* Directly send to Physical HAL */
        ret = tcore_hal_send_data(hal, data_len, (void *) data);
-       if (ret != TCORE_RETURN_SUCCESS) {
+       if (ret != TCORE_RETURN_SUCCESS)
                err("Failed to send CMUX data");
-       else
+       else
                dbg("Successfully sent CMUX data");
 
        dbg("Exit");
@@ -767,7 +772,7 @@ static gboolean _cmux_recv_cmux_data(tcore_cmux_object *cmux_obj,
                return FALSE;
        }
 
-       dbg("Dispatching to logical HAL - hal: [%p]", hal);
+       dbg("Dispatching to logical HAL - hal: [0x%x]", (unsigned int)hal);
        if (tcore_hal_dispatch_response_data(hal, 0,
                        cmux_obj->internal_mux.info_field_len,
                        cmux_obj->internal_mux.info_field)
@@ -1049,18 +1054,18 @@ static void _cmux_close_channel(tcore_cmux_object *cmux_obj, int channel_id)
                /* Send DSC command */
                /* Encoding frame */
                send_data = _cmux_encode_cmux_frame(cmux_obj, NULL, 0, channel_id,
-                                               CMUX_COMMAND_DISC, 0x01, 0x01, 0x01, &len);
+                       CMUX_COMMAND_DISC, 0x01, 0x01, 0x01, &len);
                if (len != 0) {
                        /* Send CMUX data */
                        ret = _cmux_send_data(cmux_obj->phy_hal, len, send_data);
-            dbg("return %d", ret);
-        }
-               else {
+                       dbg("return %d", ret);
+               } else {
                        err("Failed to encode");
-        }
-       } else
+               }
+       } else {
                /* Channel is already closed */
                err("Channel is already closed");
+       }
 
        dbg("Exit");
 }
@@ -1135,35 +1140,42 @@ DECODE_STATE_CHANGE:
        if (++pos >= length)
                return;
 
-       switch(decode_state) {
-               case TCORE_CMUX_DECODE_FLAG_HUNT:
-                       full_frame_len = 0;
-                       dec_length = 0;
-                       dec_fcs = 0xFF;
-                       dec_data = cmux_obj->cmux_buffer;
-                       goto FLAG_HUNT;
-               break;
-               case TCORE_CMUX_DECODE_ADDR_HUNT:
-                       goto ADDR_HUNT;
-               break;
-               case TCORE_CMUX_DECODE_CONTROL_HUNT:
-                       goto CONTROL_HUNT;
-               break;
-               case TCORE_CMUX_DECODE_LENGTH1_HUNT:
-                       goto LENGTH1_HUNT;
-               break;
-               case TCORE_CMUX_DECODE_LENGTH2_HUNT:
-                       goto LENGTH2_HUNT;
-               break;
-               case TCORE_CMUX_DECODE_DATA_HUNT:
-                       goto DATA_HUNT;
-               break;
-               case TCORE_CMUX_DECODE_FCS_HUNT:
-                       goto FCS_HUNT;
-               break;
-               default:
-                       warn("invalid decode_state");
-               break;  
+       switch (decode_state) {
+       case TCORE_CMUX_DECODE_FLAG_HUNT:
+               full_frame_len = 0;
+               dec_length = 0;
+               dec_fcs = 0xFF;
+               dec_data = cmux_obj->cmux_buffer;
+               goto FLAG_HUNT;
+       break;
+
+       case TCORE_CMUX_DECODE_ADDR_HUNT:
+               goto ADDR_HUNT;
+       break;
+
+       case TCORE_CMUX_DECODE_CONTROL_HUNT:
+               goto CONTROL_HUNT;
+       break;
+
+       case TCORE_CMUX_DECODE_LENGTH1_HUNT:
+               goto LENGTH1_HUNT;
+       break;
+
+       case TCORE_CMUX_DECODE_LENGTH2_HUNT:
+               goto LENGTH2_HUNT;
+       break;
+
+       case TCORE_CMUX_DECODE_DATA_HUNT:
+               goto DATA_HUNT;
+       break;
+
+       case TCORE_CMUX_DECODE_FCS_HUNT:
+               goto FCS_HUNT;
+       break;
+
+       default:
+               warn("invalid decode_state");
+       break;
        }
 
 FLAG_HUNT:
@@ -1333,14 +1345,13 @@ TReturn tcore_cmux_setup_internal_mux(tcore_cmux_mode mode,
                return TCORE_RETURN_EINVAL;
        }
 
-       dbg("Physical HAL: [%p] cmux_buf_size: [%d]",
-                       phy_hal, cmux_buf_size);
+       dbg("Physical HAL: [%p] cmux_buf_size: [%d]", phy_hal, cmux_buf_size);
 
        /*
         * Max Channels
         *      (+ 1) is for CMUX Control Channel
         */
-       if ((max_channels +1) >= CMUX_CHANNEL_MAX) {
+       if ((max_channels + 1) >= CMUX_CHANNEL_MAX) {
                err("Number of Channels requested is greater than supported");
                return TCORE_RETURN_EINVAL;
        }
index ece65b7..f6b247b 100644 (file)
@@ -50,12 +50,12 @@ TcorePlugin *tcore_plugin_new(Server *server,
 {
        TcorePlugin *p;
 
-       p = calloc(1, sizeof(struct tcore_plugin_type));
+       p = g_try_malloc0(sizeof(struct tcore_plugin_type));
        if (!p)
                return NULL;
 
        if (filename)
-               p->filename = strdup(filename);
+               p->filename = g_strdup(filename);
 
        p->desc = desc;
        p->property = g_hash_table_new(g_str_hash, g_str_equal);
@@ -90,7 +90,7 @@ void tcore_plugin_free(TcorePlugin *plugin)
        }
 
        if (plugin->filename) {
-               free(plugin->filename);
+               g_free(plugin->filename);
                plugin->filename = NULL;
        }
 
@@ -106,7 +106,7 @@ void tcore_plugin_free(TcorePlugin *plugin)
                plugin->handle = NULL;
        }
 
-       free(plugin);
+       g_free(plugin);
 }
 
 const struct tcore_plugin_define_desc *tcore_plugin_get_description(TcorePlugin *plugin)
@@ -128,11 +128,14 @@ char *tcore_plugin_get_filename(TcorePlugin *plugin)
        return strdup(plugin->filename);
 }
 
-const chartcore_plugin_ref_plugin_name(TcorePlugin *plugin)
+const char *tcore_plugin_ref_plugin_name(TcorePlugin *plugin)
 {
        if (!plugin)
                return NULL;
 
+       if (!plugin->desc)
+               return NULL;
+
        if (!plugin->desc->name)
                return NULL;
 
@@ -202,9 +205,8 @@ CoreObject *tcore_plugin_ref_core_object(TcorePlugin *plugin, unsigned int type)
                if (!co)
                        continue;
 
-               if (tcore_object_get_type(co) == type) {
+               if (tcore_object_get_type(co) == type)
                        return co;
-               }
        }
 
        return NULL;
@@ -242,14 +244,15 @@ GSList *tcore_plugin_get_core_objects_bytype(TcorePlugin *plugin, unsigned int t
                if (!co)
                        continue;
 
-               if ((CORE_OBJECT_TYPE_DEFAULT |(tcore_object_get_type(co) & 0x0FF00000)) == type)
+               if ((CORE_OBJECT_TYPE_DEFAULT | (tcore_object_get_type(co) & 0x0FF00000)) == type)
                        rlist = g_slist_append(rlist, co);
        }
 
        return rlist;
 }
 
-TReturn tcore_plugin_core_object_event_emit(TcorePlugin *plugin, const char *event, const void *event_info)
+TReturn tcore_plugin_core_object_event_emit(TcorePlugin *plugin,
+       const char *event, const void *event_info)
 {
        GSList *list;
        CoreObject *co;
@@ -284,10 +287,8 @@ TReturn tcore_plugin_link_property(TcorePlugin *plugin, const char *key, void *d
        if (prev != NULL) {
                free(prev);
                g_hash_table_replace(plugin->property, (gpointer)key, data);
-       }
-       else {
+       } else
                g_hash_table_insert(plugin->property, strdup(key), data);
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
index 421940c..fad76cc 100644 (file)
@@ -139,9 +139,8 @@ void tcore_pending_free(TcorePending *pending)
                                free(pending->data);
        }
 
-       if (pending->timer_src) {
+       if (pending->timer_src)
                g_source_remove(pending->timer_src);
-       }
 
        free(pending);
 }
@@ -193,10 +192,8 @@ TReturn tcore_pending_set_request_data(TcorePending *pending,
                        return TCORE_RETURN_ENOMEM;
 
                memcpy(pending->data, data, data_len);
-       }
-       else {
+       } else
                pending->data = data;
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -239,7 +236,9 @@ TReturn tcore_pending_start_timer(TcorePending *pending)
        /* pending timer */
        if (pending->timeout > 0 && pending->on_timeout) {
                dbg("start pending timer! (%d secs)", pending->timeout);
-               pending->timer_src = g_timeout_add_seconds(pending->timeout, _on_pending_timeout, pending);
+               pending->timer_src =
+                       g_timeout_add_seconds(pending->timeout,
+                               _on_pending_timeout, pending);
        }
        return TCORE_RETURN_SUCCESS;
 }
@@ -384,7 +383,7 @@ TcoreQueue *tcore_queue_new(TcoreHal *h)
 {
        TcoreQueue *queue;
 
-       queue = calloc(1, sizeof(struct tcore_queue_type));
+       queue = g_try_malloc0(sizeof(struct tcore_queue_type));
        if (!queue)
                return FALSE;
 
@@ -392,7 +391,7 @@ TcoreQueue *tcore_queue_new(TcoreHal *h)
 
        queue->gq = g_queue_new();
        if (!queue->gq) {
-               free(queue);
+               g_free(queue);
                return FALSE;
        }
 
@@ -409,7 +408,7 @@ void tcore_queue_free(TcoreQueue *queue)
        if (queue->gq)
                g_queue_free(queue->gq);
 
-       free(queue);
+       g_free(queue);
 }
 
 static void _tcore_queue_push_head(TcoreQueue *queue, TcorePending *pending)
@@ -420,9 +419,8 @@ static void _tcore_queue_push_head(TcoreQueue *queue, TcorePending *pending)
        do {
                i++;
                tmp = g_queue_peek_nth(queue->gq, i);
-               if (!tmp) {
+               if (!tmp)
                        break;
-               }
 
                if (tmp->priority == TCORE_PENDING_PRIORITY_IMMEDIATELY)
                        continue;
@@ -447,25 +445,24 @@ TReturn tcore_queue_push(TcoreQueue *queue, TcorePending *pending)
 
        tcore_pending_get_priority(pending, &priority);
        switch (priority) {
-               case TCORE_PENDING_PRIORITY_IMMEDIATELY:
-               case TCORE_PENDING_PRIORITY_HIGH:
-                       pending->queue = queue;
-                       _tcore_queue_push_head(queue, pending);
-                       break;
-
-               case TCORE_PENDING_PRIORITY_DEFAULT:
-               case TCORE_PENDING_PRIORITY_LOW:
-                       pending->queue = queue;
-                       g_queue_push_tail(queue->gq, pending);
-                       break;
-
-               default:
-                       return TCORE_RETURN_EINVAL;
-                       break;
+       case TCORE_PENDING_PRIORITY_IMMEDIATELY:
+       case TCORE_PENDING_PRIORITY_HIGH:
+               pending->queue = queue;
+               _tcore_queue_push_head(queue, pending);
+       break;
+
+       case TCORE_PENDING_PRIORITY_DEFAULT:
+       case TCORE_PENDING_PRIORITY_LOW:
+               pending->queue = queue;
+               g_queue_push_tail(queue->gq, pending);
+       break;
+
+       default:
+               return TCORE_RETURN_EINVAL;
        }
 
        dbg("pending(%p) push to queue(%p). queue length=%d",
-                       pending, queue, g_queue_get_length(queue->gq));
+               pending, queue, g_queue_get_length(queue->gq));
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -497,7 +494,7 @@ TcorePending *tcore_queue_pop_by_pending(TcoreQueue *queue, TcorePending *pendin
                }
 
                i++;
-       } while(1);
+       } while (1);
 
        return NULL;
 }
@@ -544,7 +541,7 @@ TcorePending *tcore_queue_ref_tail(TcoreQueue *queue)
 
 
 static TcorePending *_tcore_queue_search_full(TcoreQueue *queue, unsigned int id,
-               enum tcore_request_command command, enum search_field field, gboolean flag_pop)
+       enum tcore_request_command command, enum search_field field, gboolean flag_pop)
 {
        TcorePending *pending = NULL;
        int i = 0;
@@ -564,8 +561,7 @@ static TcorePending *_tcore_queue_search_full(TcoreQueue *queue, unsigned int id
                                i++;
                                continue;
                        }
-               }
-               else if ((field & 0xF0) == 0x20) {
+               } else if ((field & 0xF0) == 0x20) {
                        /* search option is sent pending */
                        if (pending->flag_sent == FALSE) {
                                i++;
@@ -575,18 +571,17 @@ static TcorePending *_tcore_queue_search_full(TcoreQueue *queue, unsigned int id
 
                if ((field & 0x0F) == SEARCH_FIELD_ID_ALL) {
                        if (pending->id == id) {
-                               if (flag_pop == TRUE) {
+                               if (flag_pop == TRUE)
                                        pending = g_queue_pop_nth(queue->gq, i);
-                               }
+
                                break;
                        }
-               }
-               else if ((field & 0x0F) == SEARCH_FIELD_COMMAND_ALL) {
+               } else if ((field & 0x0F) == SEARCH_FIELD_COMMAND_ALL) {
                        ur = tcore_pending_ref_user_request(pending);
                        if (tcore_user_request_get_command(ur) == command) {
-                               if (flag_pop == TRUE) {
+                               if (flag_pop == TRUE)
                                        pending = g_queue_pop_nth(queue->gq, i);
-                               }
+
                                break;
                        }
                }
@@ -632,22 +627,18 @@ TcorePending *tcore_queue_ref_next_pending(TcoreQueue *queue)
 
        do {
                pending = g_queue_peek_nth(queue->gq, i);
-               if (!pending) {
+               if (!pending)
                        return NULL;
-               }
 
                /* skip already sent immediately pending */
                if (pending->priority == TCORE_PENDING_PRIORITY_IMMEDIATELY) {
-                       if (pending->flag_sent == FALSE) {
+                       if (pending->flag_sent == FALSE)
                                break;
-                       }
 
                        i++;
                        continue;
-               }
-               else {
+               } else
                        break;
-               }
        } while (pending != NULL);
 
        if (pending->flag_sent == TRUE) {
@@ -676,9 +667,8 @@ unsigned int tcore_queue_get_normal_length(TcoreQueue *queue)
 
        do {
                pending = g_queue_peek_nth(queue->gq, i);
-               if (!pending) {
+               if (!pending)
                        break;
-               }
 
                if (pending->priority == TCORE_PENDING_PRIORITY_IMMEDIATELY) {
                        i++;
@@ -716,8 +706,7 @@ TReturn tcore_queue_cancel_pending_by_command(TcoreQueue *queue, enum tcore_requ
                if (queue->hal) {
                        dbg("hal %p", queue->hal);
                        tcore_hal_dispatch_response_data(queue->hal, pending->id, 0, NULL);
-               }
-               else {
+               } else {
                        dbg("no hal");
                        pending = tcore_queue_pop_by_pending(queue, pending);
                        tcore_pending_emit_response_callback(pending, 0, NULL);
index 0717f3b..2accfac 100644 (file)
@@ -32,6 +32,7 @@
 #include "plugin.h"
 #include "hal.h"
 #include "server.h"
+#include "manager.h"
 #include "user_request.h"
 #include "core_object.h"
 #include "co_ps.h"
 
 struct tcore_server_type {
        GMainLoop *mainloop;
+
+       Manager *manager;
+
        GSList *plugins;
        GSList *communicators;
        GSList *storages;
        GSList *hals;
        GSList *modems;
 
-       GSList *template_co;
-
        GSList *hook_list_request;
        GSList *hook_list_notification;
        TcorePlugin *default_plugin;
@@ -146,9 +148,8 @@ static TcorePlugin *_find_default_plugin(Server *s)
        GSList *list;
        TcoreModem *modem;
 
-       if (s->default_plugin != NULL) {
+       if (s->default_plugin != NULL)
                return s->default_plugin;
-       }
 
        for (list = s->modems; list; list = list->next) {
                modem = list->data;
@@ -156,6 +157,7 @@ static TcorePlugin *_find_default_plugin(Server *s)
                        continue;
 
                s->default_plugin = modem->modem_plugin;
+
                return modem->modem_plugin;
        }
 
@@ -172,7 +174,7 @@ Server *tcore_server_new()
                return NULL;
        }
 
-       s->mainloop = g_main_loop_new (NULL, FALSE);
+       s->mainloop = g_main_loop_new(NULL, FALSE);
        if (!s->mainloop) {
                err("mainloop creation failed!!!");
                free(s);
@@ -226,9 +228,8 @@ void tcore_server_free(Server *s)
        }
 
        /* Unref 'mainloop' */
-       if (s->mainloop) {
+       if (s->mainloop)
                g_main_loop_unref(s->mainloop);
-       }
 
        /* Free server */
        free(s);
@@ -265,6 +266,24 @@ TReturn tcore_server_exit(Server *s)
        return TCORE_RETURN_SUCCESS;
 }
 
+TReturn tcore_server_set_manager(Server *s, Manager *manager)
+{
+       if (!s)
+               return TCORE_RETURN_EINVAL;
+
+       s->manager = manager;
+
+       return TCORE_RETURN_SUCCESS;
+}
+
+Manager *tcore_server_ref_manager(Server *s)
+{
+       if (!s)
+               return NULL;
+
+       return s->manager;
+}
+
 TReturn tcore_server_add_plugin(Server *s, TcorePlugin *plugin)
 {
        if (!s || !plugin)
@@ -325,7 +344,7 @@ TReturn tcore_server_remove_communicator(Server *s, Communicator *comm)
        if (!s || !comm)
                return TCORE_RETURN_EINVAL;
 
-       s->communicators = g_slist_remove( s->communicators, comm );
+       s->communicators = g_slist_remove(s->communicators, comm);
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -346,13 +365,11 @@ Communicator *tcore_server_find_communicator(Server *s, const char *name)
 
        for (list = s->communicators; list; list = list->next) {
                comm = list->data;
-               if (!comm) {
+               if (!comm)
                        continue;
-               }
 
-               if (g_strcmp0(tcore_communicator_ref_name(comm), name) == 0) {
+               if (g_strcmp0(tcore_communicator_ref_name(comm), name) == 0)
                        return comm;
-               }
        }
 
        return NULL;
@@ -385,13 +402,11 @@ Storage *tcore_server_find_storage(Server *s, const char *name)
 
        for (list = s->storages; list; list = list->next) {
                strg = list->data;
-               if (!strg) {
+               if (!strg)
                        continue;
-               }
 
-               if (g_strcmp0(tcore_storage_ref_name(strg), name) == 0) {
+               if (g_strcmp0(tcore_storage_ref_name(strg), name) == 0)
                        return strg;
-               }
        }
 
        return NULL;
@@ -407,9 +422,8 @@ TReturn tcore_server_add_hal(Server *s, TcoreHal *hal)
 
        for (list = s->hals; list; list = list->next) {
                temp = list->data;
-               if (!temp) {
+               if (!temp)
                        continue;
-               }
 
                if (temp == hal)
                        return TCORE_RETURN_EALREADY;
@@ -444,23 +458,6 @@ GSList *tcore_server_ref_hals(Server *s)
        return s->hals;
 }
 
-CoreObject *tcore_server_find_template_object(Server *s, unsigned int type)
-{
-       GSList *list;
-       CoreObject *template_co;
-
-       for (list = s->template_co; list; list = list->next) {
-               template_co = list->data;
-               if (template_co == NULL)
-                       continue;
-
-               if (type == tcore_object_get_type(template_co))
-                       return template_co;
-       }
-
-       return NULL;
-}
-
 TcoreHal *tcore_server_find_hal(Server *s, const char *name)
 {
        GSList *list;
@@ -469,9 +466,8 @@ TcoreHal *tcore_server_find_hal(Server *s, const char *name)
 
        for (list = s->hals; list; list = list->next) {
                hal = list->data;
-               if (!hal) {
+               if (!hal)
                        continue;
-               }
 
                buf = tcore_hal_get_name(hal);
                if (!buf)
@@ -493,41 +489,54 @@ TReturn tcore_server_dispatch_request(Server *s, UserRequest *ur)
        char *modem_name = NULL;
        TcorePlugin *p;
        enum tcore_request_command command = 0;
-       GSList *list, *co_list=NULL;
+       GSList *list, *co_list = NULL;
        struct hook_request_type *hook;
        int category;
        CoreObject *o;
        TReturn ret = TCORE_RETURN_ENOSYS;
        TReturn prev_ret = TCORE_RETURN_FAILURE;
+       enum tcore_ops_type ops_type = TCORE_OPS_TYPE_CP;
 
        if (!s || !ur)
                return TCORE_RETURN_EINVAL;
 
        for (list = s->hook_list_request; list; list = list->next) {
                hook = list->data;
-               if (!hook) {
+               if (!hook)
                        continue;
-               }
 
                if (hook->command == tcore_user_request_get_command(ur)) {
                        if (hook->func) {
-                               enum tcore_hook_return hook_ret;
+                               enum tcore_hook_return h_ret;
 
-                               hook_ret = hook->func(s, ur, hook->user_data);
-                               if (hook_ret == TCORE_HOOK_RETURN_STOP_PROPAGATION) {
+                               h_ret = hook->func(s, ur, hook->user_data);
+                               if (h_ret == TCORE_HOOK_RETURN_STOP_PROPAGATION)
                                        return TCORE_RETURN_SUCCESS;
-                               } else if (hook_ret == TCORE_HOOK_RETURN_STOP_PROPAGATION_FAIL) {
-                                       return TCORE_RETURN_FAILURE;
-                               }
                        }
                }
        }
 
+       /* In case Manager is available, process Request in Manager */
+       if (s->manager) {
+               enum tcore_manager_return mgr_ret;
+
+               mgr_ret = tcore_manager_dispatch_request(s->manager, ur);
+
+               if (mgr_ret == TCORE_MANAGER_RETURN_FAILURE)
+                       return TCORE_RETURN_FAILURE;
+               else if (mgr_ret == TCORE_MANAGER_RETURN_STOP)
+                       return TCORE_RETURN_SUCCESS;
+               else if (mgr_ret == TCORE_MANAGER_RETURN_CONTINUE_IMS)
+                       ops_type = TCORE_OPS_TYPE_IMS;
+               else
+                       ops_type = TCORE_OPS_TYPE_CP;
+       }
+
        modem_name = tcore_user_request_get_modem_name(ur);
        if (!modem_name)
                return TCORE_RETURN_EINVAL;
 
-       p = tcore_server_find_plugin(s, (const char*)modem_name);
+       p = tcore_server_find_plugin(s, (const char *)modem_name);
        if (!p) {
                free(modem_name);
                return TCORE_RETURN_SERVER_WRONG_PLUGIN;
@@ -558,13 +567,12 @@ TReturn tcore_server_dispatch_request(Server *s, UserRequest *ur)
                 * The concept is to consider that the Request is being
                 * processed atleast by 1 entity.
                 */
-               ret = tcore_object_dispatch_request(o, ur);
-               if ( ret != TCORE_RETURN_SUCCESS) {
+               ret = tcore_object_dispatch_request_with_type(o, ur, ops_type);
+               if (ret != TCORE_RETURN_SUCCESS)
                        dbg("failed... ret=[%d]", ret);
-               }
-               else {
+               else
                        prev_ret = ret;
-               }
+
                ret = prev_ret;
        }
 
@@ -582,26 +590,39 @@ TReturn tcore_server_send_notification(Server *s, CoreObject *source,
        if (!s)
                return TCORE_RETURN_EINVAL;
 
+       /* In case Manager is available, process Notification in Manager */
+       if (s->manager) {
+               enum tcore_manager_return mgr_ret;
+
+               /* Send notification to 'manager' */
+               mgr_ret = tcore_manager_send_notification(s->manager,
+                       source, command, data_len, data);
+
+               if (mgr_ret == TCORE_MANAGER_RETURN_FAILURE)
+                       return TCORE_RETURN_FAILURE;
+               else if (mgr_ret == TCORE_MANAGER_RETURN_STOP)
+                       return TCORE_RETURN_SUCCESS;
+               /* in other cases, send notification to communicator. */
+       }
+
        for (list = s->hook_list_notification; list;) {
                hook = list->data;
                list = list->next;
-               if (!hook) {
+               if (!hook)
                        continue;
-               }
 
-               if (hook->command == command) {
-                       if (hook->func(s, source, command, data_len, data, hook->user_data) == TCORE_HOOK_RETURN_STOP_PROPAGATION) {
+               if (hook->command == command)
+                       if (hook->func(s, source,
+                                       command, data_len, data,
+                                       hook->user_data) == TCORE_HOOK_RETURN_STOP_PROPAGATION)
                                return TCORE_RETURN_SUCCESS;
-                       }
-               }
        }
 
        for (list = s->communicators; list;) {
                comm = list->data;
                list = list->next;
-               if (!comm) {
+               if (!comm)
                        continue;
-               }
 
                tcore_communicator_send_notification(comm, source, command, data_len, data);
        }
@@ -610,8 +631,8 @@ TReturn tcore_server_send_notification(Server *s, CoreObject *source,
 }
 
 TReturn tcore_server_add_request_hook(Server *s,
-               enum tcore_request_command command,
-               TcoreServerRequestHook func, void *user_data)
+       enum tcore_request_command command,
+       TcoreServerRequestHook func, void *user_data)
 {
        struct hook_request_type *hook;
 
@@ -641,9 +662,8 @@ TReturn tcore_server_remove_request_hook(Server *s, TcoreServerRequestHook func)
 
        for (list = s->hook_list_request; list; list = list->next) {
                hook = list->data;
-               if (!hook) {
+               if (!hook)
                        continue;
-               }
 
                if (hook->func == func) {
                        s->hook_list_request = g_slist_remove(s->hook_list_request, hook);
@@ -656,8 +676,8 @@ TReturn tcore_server_remove_request_hook(Server *s, TcoreServerRequestHook func)
 }
 
 TReturn tcore_server_add_notification_hook(Server *s,
-               enum tcore_notification_command command,
-               TcoreServerNotificationHook func, void *user_data)
+       enum tcore_notification_command command,
+       TcoreServerNotificationHook func, void *user_data)
 {
        struct hook_notification_type *hook;
 
@@ -678,7 +698,7 @@ TReturn tcore_server_add_notification_hook(Server *s,
 }
 
 TReturn tcore_server_remove_notification_hook(Server *s,
-               TcoreServerNotificationHook func)
+       TcoreServerNotificationHook func)
 {
        struct hook_notification_type *hook;
        GSList *list;
@@ -688,9 +708,8 @@ TReturn tcore_server_remove_notification_hook(Server *s,
 
        for (list = s->hook_list_notification; list; list = list->next) {
                hook = list->data;
-               if (!hook) {
+               if (!hook)
                        continue;
-               }
 
                if (hook->func == func) {
                        s->hook_list_notification = g_slist_remove(s->hook_list_notification, hook);
@@ -727,7 +746,7 @@ TcoreModem *tcore_server_register_modem(Server *s, TcorePlugin *modem_iface_plug
        /* Add 'modem' to 'modems' list */
        s->modems = g_slist_append(s->modems, modem);
        dbg("Added to 'modems' entry - CP Name: [%s] Modem Interface Plug-in: [%s]",
-                                       modem->cp_name, tcore_plugin_ref_plugin_name(modem_iface_plugin));
+               modem->cp_name, tcore_plugin_ref_plugin_name(modem_iface_plugin));
 
        return modem;
 }
@@ -790,7 +809,8 @@ const char *tcore_server_get_cp_name_by_plugin(TcorePlugin *modem_plugin)
        modem = __get_modem(modem_plugin);
        if (modem == NULL) {
                err("Failed to find 'modem' for Plug-in: [%s]",
-                                       tcore_plugin_ref_plugin_name(modem_plugin));
+                       tcore_plugin_ref_plugin_name(modem_plugin));
+
                return NULL;
        }
 
@@ -798,7 +818,7 @@ const char *tcore_server_get_cp_name_by_plugin(TcorePlugin *modem_plugin)
 }
 
 gboolean tcore_server_add_cp_mapping_tbl_entry(TcoreModem *modem,
-                                       unsigned int co_type, TcoreHal *hal)
+       unsigned int co_type, TcoreHal *hal)
 {
        if (modem == NULL) {
                err("Modem is NULL");
@@ -809,8 +829,8 @@ gboolean tcore_server_add_cp_mapping_tbl_entry(TcoreModem *modem,
         * Set the Mapping Table to the Modems list
         */
        modem->mapping_tbl =
-                       tcore_object_add_mapping_tbl_entry(modem->mapping_tbl,
-                                                               co_type, hal);
+               tcore_object_add_mapping_tbl_entry(modem->mapping_tbl,
+                       co_type, hal);
 
        return TRUE;
 }
@@ -827,7 +847,7 @@ void tcore_server_remove_cp_mapping_tbl(TcoreModem *modem)
 }
 
 void tcore_server_remove_cp_mapping_tbl_entry(TcoreModem *modem,
-                                       TcoreHal *hal)
+       TcoreHal *hal)
 {
        if (modem == NULL) {
                err("Modem is NULL");
@@ -851,7 +871,7 @@ void *tcore_server_get_cp_mapping_tbl(TcorePlugin *modem_plugin)
        modem = __get_modem(modem_plugin);
        if (modem == NULL) {
                err("Failed to find 'modem' for Modem Plug-in: [%s]",
-                                       tcore_plugin_ref_plugin_name(modem_plugin));
+                       tcore_plugin_ref_plugin_name(modem_plugin));
                return NULL;
        }
 
@@ -877,14 +897,13 @@ void tcore_server_print_modems(Server *s)
 
                msg("Modem: [0x%x] CP Name: [%s]", modem, modem->cp_name);
                msg("Modem Plug-in: [%s] <---> Modem Interface Plug-in: [%s]",
-                               tcore_plugin_ref_plugin_name(modem->modem_plugin),
-                               tcore_plugin_ref_plugin_name(modem->modem_iface_plugin));
+                       tcore_plugin_ref_plugin_name(modem->modem_plugin),
+                       tcore_plugin_ref_plugin_name(modem->modem_iface_plugin));
        }
 }
 
 TReturn tcore_server_load_modem_plugin(Server *s,
-                                       TcoreModem *modem,
-                                       const char *name)
+       TcoreModem *modem, const char *name)
 {
        struct tcore_plugin_define_desc *desc;
        TcorePlugin *modem_plugin;
@@ -894,7 +913,7 @@ TReturn tcore_server_load_modem_plugin(Server *s,
 
        if ((s == NULL) || (modem == NULL) || (name == NULL)) {
                err("Server: [%p] modem: [%p] Plug-in Name (.so): [%s] ",
-                                                                       s, modem, name);
+                       s, modem, name);
                ret = TCORE_RETURN_EINVAL;
                goto out;
        }
@@ -955,8 +974,9 @@ TReturn tcore_server_load_modem_plugin(Server *s,
        dbg("Plugin %s initialization success", desc->name);
 
        /* Notify addition of Plug-in to Upper Layers */
-       tcore_server_send_notification(s, NULL, TNOTI_SERVER_ADDED_MODEM_PLUGIN,
-                                                               0, modem_plugin);
+       tcore_server_send_notification(s, NULL,
+                       TNOTI_SERVER_ADDED_MODEM_PLUGIN,
+                       0, modem_plugin);
 
        ret = TCORE_RETURN_SUCCESS;
 
@@ -984,12 +1004,13 @@ void tcore_server_unload_modem_plugin(Server *s, TcoreModem *modem)
        }
 
        msg("Modem Plug-in: [%s] <---> Modem Interface Plug-in: [%s] - CP Name: [%s]",
-                       tcore_plugin_ref_plugin_name(modem->modem_plugin),
-                       tcore_plugin_ref_plugin_name(modem->modem_iface_plugin), modem->cp_name);
+               tcore_plugin_ref_plugin_name(modem->modem_plugin),
+               tcore_plugin_ref_plugin_name(modem->modem_iface_plugin), modem->cp_name);
 
        /* Notify removal of Plug-in to Upper Layers */
-       tcore_server_send_notification(s, NULL, TNOTI_SERVER_REMOVED_MODEM_PLUGIN,
-                                                       0, modem_plugin);
+       tcore_server_send_notification(s, NULL,
+               TNOTI_SERVER_REMOVED_MODEM_PLUGIN,
+               0, modem_plugin);
 
        /* Extract descriptor of Modem Plug-in */
        desc = tcore_plugin_get_description(modem_plugin);
@@ -997,7 +1018,7 @@ void tcore_server_unload_modem_plugin(Server *s, TcoreModem *modem)
                /* Unload Modem Plug-in */
                if (desc->unload != NULL) {
                        dbg("Unloading Modem Plug-in: [%s]",
-                                               tcore_plugin_ref_plugin_name(modem_plugin));
+                               tcore_plugin_ref_plugin_name(modem_plugin));
                        desc->unload(modem_plugin);
                }
        }
@@ -1021,9 +1042,9 @@ GSList *tcore_server_get_modem_plugin_list(Server *s)
                        dbg("Modem is NULL");
                        continue;
                }
-               if (NULL != modem->modem_plugin) {
+
+               if (NULL != modem->modem_plugin)
                        modem_plugin_list = g_slist_append(modem_plugin_list, modem->modem_plugin);
-               }
        }
 
        return modem_plugin_list;
index a65aa6b..c636cc9 100644 (file)
@@ -37,7 +37,7 @@ struct tcore_storage_type {
        TcorePlugin *parent_plugin;
 };
 
-struct storage_callback_type{
+struct storage_callback_type {
        TcoreStorageKeyCallback cb_fn;
        void *user_data;
 };
@@ -56,7 +56,7 @@ Storage *tcore_storage_new(TcorePlugin *plugin, const char *name,
 
        strg->parent_plugin = plugin;
        strg->ops = ops;
-       strg->callback = g_hash_table_new_full(g_str_hash,g_str_equal, g_free, NULL);
+       strg->callback = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
 
        tcore_server_add_storage(tcore_plugin_ref_server(plugin), strg);
 
@@ -87,9 +87,8 @@ void *tcore_storage_create_handle(Storage *strg, const char *path)
        if (!path)
                return NULL;
 
-       if (!strg || !strg->ops || !strg->ops->create_handle) {
+       if (!strg || !strg->ops || !strg->ops->create_handle)
                return NULL;
-       }
 
        return strg->ops->create_handle(strg, path);
 }
@@ -99,19 +98,17 @@ gboolean tcore_storage_remove_handle(Storage *strg, void *handle)
        if (!handle)
                return FALSE;
 
-       if (!strg || !strg->ops || !strg->ops->remove_handle) {
+       if (!strg || !strg->ops || !strg->ops->remove_handle)
                return FALSE;
-       }
 
        return strg->ops->remove_handle(strg, handle);
 }
 
 gboolean tcore_storage_set_int(Storage *strg, enum tcore_storage_key key,
-               int value)
+       int value)
 {
-       if (!strg || !strg->ops || !strg->ops->set_int) {
+       if (!strg || !strg->ops || !strg->ops->set_int)
                return FALSE;
-       }
 
        return strg->ops->set_int(strg, key, value);
 }
@@ -119,52 +116,47 @@ gboolean tcore_storage_set_int(Storage *strg, enum tcore_storage_key key,
 gboolean tcore_storage_set_string(Storage *strg, enum tcore_storage_key key,
                const char *value)
 {
-       if (!strg || !strg->ops || !strg->ops->set_string) {
+       if (!strg || !strg->ops || !strg->ops->set_string)
                return FALSE;
-       }
 
        return strg->ops->set_string(strg, key, value);
 }
 
 gboolean tcore_storage_set_bool(Storage *strg, enum tcore_storage_key key,
-               gboolean value)
+       gboolean value)
 {
-       if (!strg || !strg->ops || !strg->ops->set_bool) {
+       if (!strg || !strg->ops || !strg->ops->set_bool)
                return FALSE;
-       }
 
        return strg->ops->set_bool(strg, key, value);
 }
 
 int tcore_storage_get_int(Storage *strg, enum tcore_storage_key key)
 {
-       if (!strg || !strg->ops || !strg->ops->get_int) {
+       if (!strg || !strg->ops || !strg->ops->get_int)
                return -1;
-       }
 
        return strg->ops->get_int(strg, key);
 }
 
 char *tcore_storage_get_string(Storage *strg, enum tcore_storage_key key)
 {
-       if (!strg || !strg->ops || !strg->ops->get_string) {
+       if (!strg || !strg->ops || !strg->ops->get_string)
                return NULL;
-       }
 
        return strg->ops->get_string(strg, key);
 }
 
 gboolean tcore_storage_get_bool(Storage *strg, enum tcore_storage_key key)
 {
-       if (!strg || !strg->ops || !strg->ops->get_bool) {
+       if (!strg || !strg->ops || !strg->ops->get_bool)
                return FALSE;
-       }
 
        return strg->ops->get_bool(strg, key);
 }
 
 static void tcore_storage_vkey_callback_dispatcher(Storage *strg,
-               enum tcore_storage_key key, void *value)
+       enum tcore_storage_key key, void *value)
 {
        gchar *key_gen = NULL;
        GSList *cb_data = NULL;
@@ -188,7 +180,7 @@ static void tcore_storage_vkey_callback_dispatcher(Storage *strg,
 }
 
 gboolean tcore_storage_set_key_callback(Storage *strg,
-               enum tcore_storage_key key, TcoreStorageKeyCallback cb, void *user_data)
+       enum tcore_storage_key key, TcoreStorageKeyCallback cb, void *user_data)
 {
        gpointer tmp = NULL;
        gchar *key_gen = NULL;
@@ -196,9 +188,7 @@ gboolean tcore_storage_set_key_callback(Storage *strg,
        struct storage_callback_type *tmp_cb = NULL;
 
        if (!strg || !strg->ops || !strg->ops->set_key_callback)
-       {
                return FALSE;
-       }
 
        strg_cb_data = g_new0(struct storage_callback_type, 1);
        strg_cb_data->cb_fn = cb;
@@ -225,8 +215,7 @@ gboolean tcore_storage_set_key_callback(Storage *strg,
 
                tmp = g_slist_append(tmp, strg_cb_data);
                g_hash_table_replace(strg->callback, g_strdup(key_gen), tmp);
-       }
-       else {
+       } else {
                GSList *data = NULL;
                data = g_slist_append(data, strg_cb_data);
                g_hash_table_insert(strg->callback, g_strdup(key_gen), data);
@@ -238,7 +227,7 @@ gboolean tcore_storage_set_key_callback(Storage *strg,
 }
 
 gboolean tcore_storage_remove_key_callback(Storage *strg,
-               enum tcore_storage_key key, TcoreStorageKeyCallback cb)
+       enum tcore_storage_key key, TcoreStorageKeyCallback cb)
 {
        GSList *tmp = NULL;
        gchar *key_gen = NULL;
@@ -246,13 +235,12 @@ gboolean tcore_storage_remove_key_callback(Storage *strg,
        int cb_cnt = 0;
        struct storage_callback_type *tmp_cb = NULL;
 
-       if (!strg || !strg->ops || !strg->ops->remove_key_callback) {
+       if (!strg || !strg->ops || !strg->ops->remove_key_callback)
                return FALSE;
-       }
 
        key_gen = g_strdup_printf("%d", key);
        tmp = g_hash_table_lookup(strg->callback, key_gen);
-       if (tmp == NULL){
+       if (tmp == NULL) {
                g_free(key_gen);
                return FALSE;
        }
@@ -284,55 +272,51 @@ gboolean tcore_storage_remove_key_callback(Storage *strg,
 }
 
 gboolean tcore_storage_update_query_database(Storage *strg, void *handle,
-               const char *query, GHashTable *in_param)
+       const char *query, GHashTable *in_param)
 {
        if (!strg || !handle || !query)
                return FALSE;
 
-       if (!strg->ops || !strg->ops->update_query_database) {
+       if (!strg->ops || !strg->ops->update_query_database)
                return FALSE;
-       }
 
        return strg->ops->update_query_database(strg, handle, query, in_param);
 }
 
 gboolean tcore_storage_read_query_database(Storage *strg, void *handle,
-               const char *query, GHashTable *in_param,
-               GHashTable *out_param, int out_param_cnt)
+       const char *query, GHashTable *in_param,
+       GHashTable *out_param, int out_param_cnt)
 {
        if (!strg || !handle || !query)
                return FALSE;
 
-       if (!strg->ops || !strg->ops->read_query_database) {
+       if (!strg->ops || !strg->ops->read_query_database)
                return FALSE;
-       }
 
        return strg->ops->read_query_database(strg, handle, query,
                        in_param, out_param, out_param_cnt);
 }
 
 gboolean tcore_storage_insert_query_database(Storage *strg, void *handle,
-               const char *query, GHashTable *in_param)
+       const char *query, GHashTable *in_param)
 {
        if (!strg || !handle || !query)
                return FALSE;
 
-       if (!strg->ops || !strg->ops->insert_query_database) {
+       if (!strg->ops || !strg->ops->insert_query_database)
                return FALSE;
-       }
 
        return strg->ops->insert_query_database(strg, handle, query, in_param);
 }
 
 gboolean tcore_storage_remove_query_database(Storage *strg, void *handle,
-               const char *query, GHashTable *in_param)
+       const char *query, GHashTable *in_param)
 {
        if (!strg || !handle || !query)
                return FALSE;
 
-       if (!strg->ops || !strg->ops->remove_query_database) {
+       if (!strg->ops || !strg->ops->remove_query_database)
                return FALSE;
-       }
 
        return strg->ops->remove_query_database(strg, handle, query, in_param);
 }
index a44dc5a..656c1cf 100644 (file)
@@ -93,7 +93,7 @@ void tcore_user_request_free(UserRequest *ur)
        if (ur->data)
                free(ur->data);
 
-       if(ur->metainfo)
+       if (ur->metainfo)
                free(ur->metainfo);
 
        dbg("user_request(%p) free.", ur);
@@ -208,9 +208,8 @@ TReturn tcore_user_request_send_response(UserRequest *ur,
                hook = list->data;
                list = list->next;
 
-               if (!hook) {
+               if (!hook)
                        continue;
-               }
 
                if (hook->func)
                        hook->func(ur, command, data_len, data, hook->user_data);
@@ -265,13 +264,10 @@ TReturn tcore_user_request_set_data(UserRequest *ur,
                        }
 
                        memcpy(ur->data, data, data_len);
-               }
-               else
+               } else
                        ur->data_len = 0;
-       }
-       else {
+       } else
                ur->data = NULL;
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
@@ -298,13 +294,10 @@ TReturn tcore_user_request_set_metainfo(UserRequest *ur,
                        }
 
                        memcpy(ur->metainfo, metainfo, metainfo_len);
-               }
-               else
+               } else
                        ur->metainfo_len = 0;
-       }
-       else {
+       } else
                ur->metainfo = NULL;
-       }
 
        return TCORE_RETURN_SUCCESS;
 }
index 7f31aec..33bf4ae 100644 (file)
 #include "util.h"
 
 
-#define        tabGsmUniMax2 9
-#define        tabGsmUniMax 42
+#define tabGsmUniMax2  9
+#define tabGsmUniMax   42
+#define TAB_SPACE      "  "
 
 gboolean tcore_debug = TRUE;
 
-static gboolean                _find_gsm_code_exception_table(unsigned short src);
-static int             _get_gsm_code_size(unsigned short* src, int src_len);
-static gboolean                _convert_gsm_to_unicode(unsigned short *dest, int dest_len, unsigned char *src, unsigned int src_len);
-static int                     _convert_gsm_to_ucs2(unsigned short* dest, unsigned char* src, unsigned int src_len);
-static void            _convert_gsm_to_utf8(unsigned char *dest, unsigned short *dest_len,     unsigned char *src, unsigned int src_len);
-static gboolean                _convert_unicode_to_gsm(unsigned char* dest, int dest_len, unsigned short* src, int src_len);
-static char*           _convert_ucs_to_utf8(unsigned char *src, int src_len);
-static int                     _convert_ucs2_to_gsm(unsigned char* dest, unsigned short* src, unsigned int src_len);
-static void            _convert_alpha_field_ucs2_to_utf8(unsigned char *out, unsigned short *out_len, unsigned char *in, unsigned short in_len);
-static int                     _convert_utf8_to_unicode(unsigned short* dest, unsigned char* src, unsigned int src_len);
+static gboolean _find_gsm_code_exception_table(unsigned short src);
+static int _get_gsm_code_size(unsigned short *src, int src_len);
+static gboolean _convert_gsm_to_unicode(unsigned short *dest, int dest_len, unsigned char *src, unsigned int src_len);
+static int _convert_gsm_to_ucs2(unsigned short *dest, unsigned char *src, unsigned int src_len);
+static void _convert_gsm_to_utf8(unsigned char *dest, unsigned short *dest_len, unsigned char *src, unsigned int src_len);
+static gboolean _convert_unicode_to_gsm(unsigned char *dest, int dest_len, unsigned short *src, int src_len);
+static char *_convert_ucs_to_utf8(unsigned char *src, int src_len);
+static int _convert_ucs2_to_gsm(unsigned char *dest, unsigned short *src, unsigned int src_len);
+static void _convert_alpha_field_ucs2_to_utf8(unsigned char *out, unsigned short *out_len, unsigned char *in, unsigned short in_len);
+static int _convert_utf8_to_unicode(unsigned short *dest, unsigned char *src, unsigned int src_len);
 
 typedef struct {
        char gsm;
@@ -59,23 +60,22 @@ typedef struct {
 } GsmUniTable;
 
 const GsmUniTable gsm_unicode2_table[] = {
-               { 0x14, 0x005E }, { 0x28, 0x007B }, { 0x29, 0x007D }, { 0x2F, 0x005C },
-               { 0x3C, 0x005B }, { 0x3D, 0x007E }, { 0x3E, 0x005D }, { 0x40, 0x007C },
-               { 0x65, 0x20AC } };
+       {0x14, 0x005E}, {0x28, 0x007B}, {0x29, 0x007D}, {0x2F, 0x005C},
+       {0x3C, 0x005B}, {0x3D, 0x007E}, {0x3E, 0x005D}, {0x40, 0x007C},
+       {0x65, 0x20AC}
+};
 
 const GsmUniTable gsm_unicode_table[] = {
-               { 0x00, 0x0040 }, { 0x01, 0x00A3 }, { 0x02, 0x0024 }, { 0x03, 0x00A5 },
-               { 0x04, 0x00E8 }, { 0x05, 0x00E9 }, { 0x06, 0x00F9 }, { 0x07, 0x00EC }, { 0x08, 0x00F2 },
-               { 0x09, 0x00E7 }, { 0x0B, 0x00D8 }, { 0x0C, 0x00F8 }, { 0x0E, 0x00C5 }, { 0x0F, 0x00E5 },
-               { 0x10, 0x0394 }, { 0x11, 0x005F }, { 0x12, 0x03A6 }, { 0x13, 0x0393 }, { 0x14, 0x039B },
-               { 0x15, 0x03A9 }, { 0x16, 0x03A0 }, { 0x17, 0x03A8 }, { 0x18, 0x03A3 }, { 0x19, 0x0398 },
-               { 0x1A, 0x039E }, { 0x1C, 0x00C6 }, { 0x1D, 0x00E6 }, { 0x1E, 0x00DF }, { 0x1F, 0x00C9 },
-               { 0x24, 0x00A4 }, { 0x40, 0x00A1 }, { 0x5B, 0x00C4 }, { 0x5C, 0x00D6 }, { 0x5D, 0x00D1 },
-               { 0x5E, 0x00DC }, { 0x5F, 0x00A7 }, { 0x60, 0x00BF }, { 0x7B, 0x00E4 }, { 0x7C, 0x00F6 },
-               { 0x7D, 0x00F1 }, { 0x7E, 0x00FC }, { 0x7F, 0x00E0 }, };
-
-
-
+       {0x00, 0x0040}, {0x01, 0x00A3}, {0x02, 0x0024}, {0x03, 0x00A5},
+       {0x04, 0x00E8}, {0x05, 0x00E9}, {0x06, 0x00F9}, {0x07, 0x00EC}, {0x08, 0x00F2},
+       {0x09, 0x00E7}, {0x0B, 0x00D8}, {0x0C, 0x00F8}, {0x0E, 0x00C5}, {0x0F, 0x00E5},
+       {0x10, 0x0394}, {0x11, 0x005F}, {0x12, 0x03A6}, {0x13, 0x0393}, {0x14, 0x039B},
+       {0x15, 0x03A9}, {0x16, 0x03A0}, {0x17, 0x03A8}, {0x18, 0x03A3}, {0x19, 0x0398},
+       {0x1A, 0x039E}, {0x1C, 0x00C6}, {0x1D, 0x00E6}, {0x1E, 0x00DF}, {0x1F, 0x00C9},
+       {0x24, 0x00A4}, {0x40, 0x00A1}, {0x5B, 0x00C4}, {0x5C, 0x00D6}, {0x5D, 0x00D1},
+       {0x5E, 0x00DC}, {0x5F, 0x00A7}, {0x60, 0x00BF}, {0x7B, 0x00E4}, {0x7C, 0x00F6},
+       {0x7D, 0x00F1}, {0x7E, 0x00FC}, {0x7F, 0x00E0},
+};
 
 static gboolean _find_gsm_code_exception_table(unsigned short src)
 {
@@ -85,17 +85,18 @@ static gboolean _find_gsm_code_exception_table(unsigned short src)
                        || (src >= 0x0061 && src <= 0x007A)
                        || src == 0x000A || src == 0x000D)
                return TRUE;
+
        return FALSE;
 }
 
-static int _get_gsm_code_size(unsigned shortsrc, int src_len)
+static int _get_gsm_code_size(unsigned short *src, int src_len)
 {
        gboolean in_table = FALSE;
        gboolean in_sec_table = FALSE;
        int i, gsm_len = 0;
 
        if (NULL == src) {
-               dbg( "INPUT PARAM was NULL");
+               dbg("INPUT PARAM was NULL");
                return -1;
        }
 
@@ -103,38 +104,45 @@ static int _get_gsm_code_size(unsigned short* src, int src_len)
                if (_find_gsm_code_exception_table(*src) == TRUE) {
                        src++;
                        gsm_len++;
+
                        continue;
                }
+
                in_table = FALSE;
                for (i = 0; i < tabGsmUniMax; i++) {
                        if (*src == gsm_unicode_table[i].unicode) {
                                src++;
                                in_table = TRUE;
                                gsm_len++;
+
                                break;
                        }
                }
+
                if (in_table == FALSE) {
                        in_sec_table = FALSE;
                        for (i = 0; i < tabGsmUniMax2; i++) {/* second table */
                                if (*src == gsm_unicode2_table[i].unicode) {
                                        src++;
-                                       in_table = TRUE;
                                        in_sec_table = TRUE;
                                        gsm_len += 2;
+
                                        break;
                                }
                        }
+
                        if (in_sec_table == FALSE) {/* second*/
                                if (_find_gsm_code_exception_table(*src) == FALSE) {
-                                       dbg( "GSM Char[%d], gsm_len[%d]", *src, gsm_len);
+                                       dbg("GSM Char[%d], gsm_len[%d]", *src, gsm_len);
                                        return -1;
                                }
+
                                src++;
                                gsm_len++;
                        }
                }
        }
+
        return gsm_len;
 }
 
@@ -142,22 +150,23 @@ static gboolean _convert_gsm_to_unicode(unsigned short *dest, int dest_len, unsi
 {
        int count, tmp_len;
 
-       if(!dest || !src) {
-               dbg( "dest(%p) or src(%p) is null",dest, src);
+       if (!dest || !src) {
+               dbg("dest(%p) or src(%p) is null", dest, src);
                return FALSE;
        }
 
-       if(!src_len){
+       if (!src_len) {
                dest[0] = '\0';
                return TRUE;
        }
 
        dbg("source string (%s) len(%d)", src, src_len);
 
-       for(count = 0; count < (int)src_len; count++){
-               if(src[count] == 0x1B)
+       for (count = 0; count < (int)src_len; count++) {
+               if (src[count] == 0x1B)
                        src_len--;
        }
+
        dbg("strlen excluding escape character (%d)", src_len);
 
        tmp_len = _convert_gsm_to_ucs2(dest, src, src_len);
@@ -166,52 +175,49 @@ static gboolean _convert_gsm_to_unicode(unsigned short *dest, int dest_len, unsi
        return TRUE;
 }
 
-static int _convert_gsm_to_ucs2(unsigned short* dest, unsigned char* src, unsigned int src_len)
+static int _convert_gsm_to_ucs2(unsigned short *dest, unsigned char *src, unsigned int src_len)
 {
        int count;
-       unsigned shortorg;
+       unsigned short *org;
 
        org = dest;
 
-       for(count=0; count < (int)src_len; count++){
-               int table_index=0;
+       for (count = 0; count < (int)src_len; count++) {
+               int table_index = 0;
                gboolean b_tabled = FALSE;
 
                /*
                 * if the first byte is 0x1B, it is the escape character.
                 * The byte value shoulbe be changed to unicode.
                 */
-               if(*src == 0x1B){
-                       src++; count++;//move to next byte
-                       for(table_index=0; table_index < tabGsmUniMax2; table_index++){
-                               if(*src == gsm_unicode2_table[table_index].gsm){
+               if (*src == 0x1B) {
+                       src++; count++; /* move to next byte */
+                       for (table_index = 0; table_index < tabGsmUniMax2; table_index++) {
+                               if (*src == gsm_unicode2_table[table_index].gsm) {
                                        *dest = gsm_unicode2_table[table_index].unicode;
                                        b_tabled = TRUE;
                                        break;
                                }
                        }
 
-                       //if matched data is not in table, it should be changed to NULL;
-                       if(!b_tabled){
+                       /* if matched data is not in table, it should be changed to NULL; */
+                       if (!b_tabled)
                                *dest = 0x0020;
-                       }
-               }
-               else{
-                       for(table_index=0; table_index < tabGsmUniMax; table_index++){
-                               if(*src == gsm_unicode_table[table_index].gsm){
+               } else {
+                       for (table_index = 0; table_index < tabGsmUniMax; table_index++) {
+                               if (*src == gsm_unicode_table[table_index].gsm) {
                                        *dest = gsm_unicode_table[table_index].unicode;
                                        b_tabled = TRUE;
                                        break;
                                }
                        }
 
-                       //if matched data is not in table, it is using original value;
-                       if(!b_tabled){
+                       /* if matched data is not in table, it is using original value; */
+                       if (!b_tabled)
                                *dest = *src;
-                       }
                }
 
-               //move to next position
+               /* move to next position */
                src++; dest++;
        }
 
@@ -219,7 +225,7 @@ static int _convert_gsm_to_ucs2(unsigned short* dest, unsigned char* src, unsign
        return (dest - org);
 }
 
-static void _convert_gsm_to_utf8(unsigned char* dest, unsigned short* dest_len, unsigned char* src, unsigned int src_len)
+static void _convert_gsm_to_utf8(unsigned char *dest, unsigned short *dest_len, unsigned char *src, unsigned int src_len)
 {
        unsigned short tmp_len = 0;
        char *target_tmp = NULL;
@@ -229,27 +235,31 @@ static void _convert_gsm_to_utf8(unsigned char* dest, unsigned short* dest_len,
        memset(tmp_dest, 0 , SAT_TEXT_STRING_LEN_MAX);
 
        _convert_gsm_to_unicode(tmp_dest, SAT_TEXT_STRING_LEN_MAX, src, src_len);
-       while(tmp_dest[tmp_len] != '\0'){
+       while (tmp_dest[tmp_len] != '\0')
                tmp_len++;
+       tmp_len++; /* add null character */
+
+       tmp_len = tmp_len * 2; /* for byte align */
+       raw_unicode = (unsigned char *)malloc(tmp_len);
+       if (!raw_unicode) {
+               *dest_len = 0;
+               return;
        }
-       tmp_len++; // add null character
 
-       tmp_len = tmp_len*2; //for byte align
-       raw_unicode = (unsigned char*)malloc(tmp_len);
        memset(raw_unicode, 0, tmp_len);
 
-       memcpy(raw_unicode, (unsigned char*)tmp_dest, tmp_len);
+       memcpy(raw_unicode, (unsigned char *)tmp_dest, tmp_len);
 
        target_tmp = _convert_ucs_to_utf8(raw_unicode, tmp_len);
-       if(!target_tmp){
-               dbg( "str is NULL");
+       if (!target_tmp) {
+               dbg("str is NULL");
                g_free(raw_unicode);
                return;
        }
 
-       *dest_len = strlen((const char*)target_tmp);
-       dbg("utf8 (%s), len(%d)", (const char*)target_tmp, strlen((const char*)target_tmp));
-       memcpy(dest, target_tmp, strlen((const char*)target_tmp));
+       *dest_len = strlen((const char *)target_tmp);
+       dbg("utf8 (%s), len(%d)", (const char *)target_tmp, strlen((const char *)target_tmp));
+       memcpy(dest, target_tmp, strlen((const char *)target_tmp));
        dbg("final utf8 str (%s), length (%d)", dest, tmp_len);
 
        g_free(raw_unicode);
@@ -257,13 +267,13 @@ static void _convert_gsm_to_utf8(unsigned char* dest, unsigned short* dest_len,
        return;
 }
 
-static gboolean _convert_unicode_to_gsm(unsigned char* dest, int dest_len, unsigned short* src, int src_len)
+static gboolean _convert_unicode_to_gsm(unsigned char *dest, int dest_len, unsigned short *src, int src_len)
 {
-       chartmp_str;
+       char *tmp_str;
        int gc_len = 0;
 
        if ((NULL == dest) || (NULL == src)) {
-               dbg( "INPUT PARAM was NULL");
+               dbg("INPUT PARAM was NULL");
                return FALSE;
        }
 
@@ -272,28 +282,28 @@ static gboolean _convert_unicode_to_gsm(unsigned char* dest, int dest_len, unsig
 
        gc_len = _get_gsm_code_size(src, src_len);
        if (0 >= gc_len) {
-               dbg( "Warning: Error[%d] while finding the GSM Code Size", gc_len);
+               dbg("Warning: Error[%d] while finding the GSM Code Size", gc_len);
                return FALSE;
        }
 
        if (dest_len < gc_len) {
-               if (dest_len == sizeof(void*)) {
-                       dbg( "Out buffer size seems to be small (%s)", dest);
-               } else {
+               if (dest_len == sizeof(void *))
+                       dbg("Out buffer size seems to be small (%s)", dest);
+               else
                        dbg("Buffer size is too small (%s): dest_len(%d), gc_len(%d)", dest, dest_len, gc_len);
-               }
+
                return FALSE;
        }
 
        tmp_str = calloc(1, (unsigned short) gc_len);
        if (tmp_str == NULL) {
-               dbg( "Memory Allocation Failed!");
+               dbg("Memory Allocation Failed!");
                return FALSE;
        }
 
-       gc_len = _convert_ucs2_to_gsm((unsigned char*) tmp_str, src, src_len);
+       gc_len = _convert_ucs2_to_gsm((unsigned char *) tmp_str, src, src_len);
        if (gc_len != -1) {
-               memcpy((char*) dest, (char*) tmp_str, gc_len);
+               memcpy((char *) dest, (char *) tmp_str, gc_len);
                free(tmp_str);
                return TRUE;
        }
@@ -302,26 +312,36 @@ static gboolean _convert_unicode_to_gsm(unsigned char* dest, int dest_len, unsig
        return FALSE;
 }
 
-static char* _convert_ucs_to_utf8(unsigned char* src, int src_len)
+static char *_convert_ucs_to_utf8(unsigned char *src, int src_len)
 {
-       charutf_str = NULL;
+       char *utf_str = NULL;
        iconv_t cd = NULL;
        size_t ileft = 0;
        size_t oleft = 0;
 
-       charpIn = NULL;
-       charin_buf = NULL;
-       charout_buf = NULL;
+       char *pIn = NULL;
+       char *in_buf = NULL;
+       char *out_buf = NULL;
 
        if (!src) {
                dbg("src is null");
                return NULL;
        }
 
-       ileft = src_len * 2;//over allocate as utf-8 may occupy 3 bytes
-       oleft = src_len * 3;//over allocate as utf-8 may occupy 3 bytes
-       pIn = in_buf = (char*) malloc(ileft + 2);
+       ileft = src_len * 2; /* over allocate as utf-8 may occupy 3 bytes */
+       oleft = src_len * 3; /* over allocate as utf-8 may occupy 3 bytes */
+       pIn = in_buf = (char *) malloc(ileft + 2);
+       if (in_buf == NULL) {
+               dbg("in_buf allocation failed");
+               return NULL;
+       }
+
        utf_str = out_buf = (char *) malloc(oleft + 1);
+       if (utf_str == NULL) {
+               dbg("in_buf allocation failed");
+               free(in_buf);
+               return NULL;
+       }
 
        memset(in_buf, 0x00, ileft + 2);
        memset(out_buf, 0x00, oleft + 1);
@@ -331,11 +351,10 @@ static char* _convert_ucs_to_utf8(unsigned char* src, int src_len)
 
        cd = iconv_open("UTF-8", "UCS-2");
 
-       if (iconv(cd, (char**) &in_buf, &ileft, &out_buf, &oleft) == (size_t)(-1)) {
+       if (iconv(cd, (char **) &in_buf, &ileft, &out_buf, &oleft) == (size_t)(-1))
                dbg("failed to iconv errno:%d", errno);
-       } else {
+       else
                utf_str[src_len * 2 - ileft] = '\0';
-       }
 
        iconv_close(cd);
        free(pIn);
@@ -343,17 +362,17 @@ static char* _convert_ucs_to_utf8(unsigned char* src, int src_len)
        return utf_str;
 }
 
-static int _convert_ucs2_to_gsm(unsigned char* dest, unsigned short* src, unsigned int src_len)
+static int _convert_ucs2_to_gsm(unsigned char *dest, unsigned short *src, unsigned int src_len)
 {
-       unsigned charrear = NULL;
-       unsigned shortp;
+       unsigned char *rear = NULL;
+       unsigned short *p;
        unsigned char temp;
        gboolean in_table = FALSE;
        gboolean in_sec_table = FALSE;
        int i, gc_len = 0;
 
        if ((!dest) || (!src) || (0x00 == src_len)) {
-               dbg( "Warning: Wrong Input");
+               dbg("Warning: Wrong Input");
                return -1;
        }
 
@@ -362,7 +381,7 @@ static int _convert_ucs2_to_gsm(unsigned char* dest, unsigned short* src, unsign
 
        for (; src_len > 0 && p; src_len--) {
                in_table = FALSE;
-               for (i = 0; i < tabGsmUniMax; i++) { /* is in table  */
+               for (i = 0; i < tabGsmUniMax; i++) {/* is in table  */
                        if (*p == gsm_unicode_table[i].unicode) {
                                temp = (unsigned char) (gsm_unicode_table[i].gsm);
                                *rear = temp;
@@ -370,9 +389,11 @@ static int _convert_ucs2_to_gsm(unsigned char* dest, unsigned short* src, unsign
                                p++;
                                in_table = TRUE;
                                gc_len++;
+
                                break;
                        }
                }
+
                if (in_table == FALSE) {
                        in_sec_table = FALSE;
                        for (i = 0; i < tabGsmUniMax2; i++) { /* second table*/
@@ -383,15 +404,17 @@ static int _convert_ucs2_to_gsm(unsigned char* dest, unsigned short* src, unsign
                                        *rear = temp;
                                        rear++;
                                        p++;
-                                       in_table = TRUE;
                                        in_sec_table = TRUE;
                                        gc_len += 2;
+
                                        break;
                                }
                        }
-                       if (in_sec_table == FALSE) { /* second */
+
+                       if (in_sec_table == FALSE) {/* second */
                                if (_find_gsm_code_exception_table(*p) == FALSE)
                                        return -1;
+
                                temp = (unsigned char) (*p); /* isn't in table. but it's just able to be converted to GSM (0x00?? -> 0x??)*/
                                *rear = temp;
                                rear++;
@@ -400,23 +423,64 @@ static int _convert_ucs2_to_gsm(unsigned char* dest, unsigned short* src, unsign
                        }
                }
        }
+
        src = p;
        return gc_len;
 }
 
-int tcore_util_convert_ucs2_to_utf8(char *out, unsigned short *out_len, char *in, unsigned short in_len)
+static unsigned char _convert_hexchar_to_int(char c)
 {
-       //input string "char *in" should be BIG-ENDIAN format.
+       if (c >= '0' && c <= '9')
+               return (c - '0');
+       else if (c >= 'A' && c <= 'F')
+               return (c - 'A' + 10);
+       else if (c >= 'a' && c <= 'f')
+               return (c - 'a' + 10);
+       else {
+               dbg("invalid charater!!");
+               return -1;
+       }
+}
+
+char *tcore_util_convert_hexstring_to_bytes(char *s)
+{
+       char *ret;
+       int i;
+       int sz;
+
+       if (s == NULL)
+               return NULL;
+
+       sz = strlen(s);
+
+       ret = g_try_malloc0((sz / 2) + 1);
+       if (ret == NULL)
+               return NULL;
+
+       dbg("Convert String to Binary!!");
+
+       for (i = 0; i < sz; i += 2)
+               ret[i / 2] = (char)((_convert_hexchar_to_int(s[i]) << 4) | _convert_hexchar_to_int(s[i + 1]));
+
+       return ret;
+}
+
+int tcore_util_convert_ucs2_to_utf8(char *out, unsigned short *out_len,
+       char *in, unsigned short in_len)
+{
+       /* input string "char *in" should be BIG-ENDIAN format. */
        gsize byte_converted = 0;
        gsize byte_read = 0;
        gchar *str_converted = NULL;
 
        if (NULL == out || NULL == out_len || NULL == in) {
-               dbg( "Invalid Input Parameter");
+               dbg("Invalid Input Parameter");
                return 0;
        }
+
 try_again:
-       str_converted = (gchar *)g_convert((const gchar *)in, (gssize)in_len, "UTF8", "UCS-2BE", &byte_read, &byte_converted, NULL);
+       str_converted = (gchar *)g_convert((const gchar *)in, (gssize)in_len,
+                       "UTF8", "UCS-2BE", &byte_read, &byte_converted, NULL);
 
        dbg("read:[%d] converted:[%d] out:[%s]", byte_read, byte_converted, str_converted);
 
@@ -434,87 +498,124 @@ try_again:
        return 0;
 }
 
-static void _convert_alpha_field_ucs2_to_utf8(unsigned char *out, unsigned short *out_len, unsigned char *in, unsigned short in_len)
+static void _convert_alpha_field_ucs2_to_utf8(unsigned char *out, unsigned short *out_len,
+       unsigned char *in, unsigned short in_len)
 {
-       //input string "unsigned char *in" should be BIG-ENDIAN format.
+       /* input string "unsigned char *in" should be BIG-ENDIAN format. */
        int i = 0;
 
-       switch(in[0]) {
-               case 0x80: {
-                       dbg("[UCS2] prefix case:[0x80]");
-                       tcore_util_hex_dump(" [UCS2] ", in_len, in);
-                       tcore_util_convert_ucs2_to_utf8((char *)out, out_len, (char*)in+1, in_len-1);
-               } break;
-
-               case 0x81: {
-                       unsigned char num = in[1];      //number of characters
-                       unsigned short base = (unsigned short) in[2] << 7;      //base pointer for UCS2 type
-                       int data_loc = 3;       //starting location of data
-                       unsigned short* in_buf = NULL;
-                       dbg("[UCS2] prefix case:[0x81]");
-                       in_buf = (unsigned short*)malloc(num * sizeof(unsigned short));
-                       for(i=0; i<num; i++,data_loc++) {
-                               if(in[data_loc]<0x80) { // if the MSB is zero (0x80 => 1000b), then remaining 7 bits are GSM default character.
-                                       _convert_gsm_to_ucs2(&in_buf[i], &in[data_loc], 1);
-                                       dbg("[UCS2]in_buf[%d]=0x%04x", i, in_buf[i]);
-                               } else {        // if the MSB is 1 then the remaining 7 bits are offset value added to Base Pointer which the result defines the UCS2 character.
-                                       in_buf[i] = base + ((unsigned short)(in[data_loc]) & 0x7F);
-                                       dbg("[UCS2]in_buf[%d]=0x%04x", i, in_buf[i]);
-                               }
+       switch (in[0]) {
+       case 0x80: {
+               dbg("[UCS2] prefix case:[0x80]");
+               tcore_util_hex_dump(" [UCS2] ", in_len, in);
+               tcore_util_convert_ucs2_to_utf8((char *)out, out_len, (char *)in+1, in_len-1);
+       }
+       break;
+
+       case 0x81: {
+               unsigned char num = in[1];      /* number of characters */
+               unsigned short base = (unsigned short) in[2] << 7; /* base pointer for UCS2 type */
+               int data_loc = 3;       /* starting location of data */
+               unsigned short *in_buf = NULL;
+               dbg("[UCS2] prefix case:[0x81]");
+               in_buf = (unsigned short *)malloc(num * sizeof(unsigned short));
+               if (in_buf == NULL) {
+                       dbg("in_buf malloc failed.");
+                       return;
+               }
+
+               for (i = 0; i < num; i++, data_loc++)   {
+                       if (in[data_loc] < 0x80) {
+                               /*
+                                * if the MSB is zero (0x80 => 1000b), then remaining 7 bits
+                                * are GSM default character.
+                                */
+                               _convert_gsm_to_ucs2(&in_buf[i], &in[data_loc], 1);
+                               dbg("[UCS2]in_buf[%d]=0x%04x", i, in_buf[i]);
+                       } else {
+                               /*
+                                * if the MSB is 1 then the remaining 7 bits are offset value
+                                * added to Base Pointer which the result defines the UCS2 character.
+                                */
+                               in_buf[i] = base + ((unsigned short)(in[data_loc]) & 0x7F);
+                               dbg("[UCS2]in_buf[%d]=0x%04x", i, in_buf[i]);
                        }
-                       {
-                               unsigned char *dest = NULL;
-                               dest = (unsigned char*)malloc(num*2);
-                               tcore_util_swap_byte_order(dest, (unsigned char*)in_buf, num*2);
-                               tcore_util_convert_ucs2_to_utf8((char *)out, out_len, (char*) dest, num*2);
-                               if(in_buf!=NULL)        free(in_buf);
-                               if(dest!=NULL)  free(dest);
+               }
+               {
+                       unsigned char *dest = NULL;
+                       dest = (unsigned char *)malloc(num*2);
+                       if (dest == NULL) {
+                               dbg("dest malloc failed.");
+                               free(in_buf);
+                               return;
                        }
-               } break;
-
-               case 0x82: {
-                       unsigned char num = in[1];      //number of characters
-                       unsigned short base = ((unsigned short) in[2] << 8) | (unsigned short) in[3];   //base pointer for UCS2 type
-                       int data_loc = 4;       //starting location of data
-                       unsigned short* in_buf = NULL;
-                       dbg("[UCS2] prefix case:[0x82]");
-                       in_buf = (unsigned short*)malloc(num * sizeof(unsigned short));
-                       for(i=0; i<num; i++,data_loc++) {
-                               if(in[data_loc]<0x80) {
-                                       _convert_gsm_to_ucs2(&in_buf[i], &in[data_loc], (unsigned int)1);
-                                       dbg("[UCS2]in_buf[%d]=0x%04x", i, in_buf[i]);
-                               } else {
-                                       in_buf[i] = base + ((unsigned short)(in[data_loc]) & 0x7F);
-                                       dbg("[UCS2]in_buf[%d]=0x%04x", i, in_buf[i]);
-                               }
+
+                       tcore_util_swap_byte_order(dest, (unsigned char *)in_buf, num*2);
+                       tcore_util_convert_ucs2_to_utf8((char *)out, out_len, (char *) dest, num*2);
+
+                       free(in_buf);
+                       free(dest);
+               }
+       }
+       break;
+
+       case 0x82: {
+               unsigned char num = in[1];      /* number of characters */
+               unsigned short base = ((unsigned short) in[2] << 8) | (unsigned short) in[3]; /* base pointer for UCS2 type */
+               int data_loc = 4;       /* starting location of data */
+               unsigned short *in_buf = NULL;
+               dbg("[UCS2] prefix case:[0x82]");
+               in_buf = (unsigned short *)malloc(num * sizeof(unsigned short));
+               if (in_buf == NULL) {
+                       dbg("in_buf malloc failed.");
+                       return;
+               }
+
+               for (i = 0; i < num; i++, data_loc++)   {
+                       if (in[data_loc] < 0x80) {
+                               _convert_gsm_to_ucs2(&in_buf[i], &in[data_loc], (unsigned int)1);
+                               dbg("[UCS2]in_buf[%d]=0x%04x", i, in_buf[i]);
+                       } else {
+                               in_buf[i] = base + ((unsigned short)(in[data_loc]) & 0x7F);
+                               dbg("[UCS2]in_buf[%d]=0x%04x", i, in_buf[i]);
                        }
-                       {
-                               unsigned char *dest = NULL;
-                               dest = (unsigned char*)malloc(num*2);
-                               tcore_util_swap_byte_order(dest, (unsigned char*)in_buf, num*2);
-                               tcore_util_convert_ucs2_to_utf8((char *)out, out_len, (char*) dest, num*2);
-                               if(in_buf!=NULL)        free(in_buf);
-                               if(dest!=NULL)  free(dest);
+               }
+               {
+                       unsigned char *dest = NULL;
+                       dest = (unsigned char *)malloc(num*2);
+                       if (dest == NULL) {
+                               dbg("dest malloc failed.");
+                               free(in_buf);
+                               return;
                        }
-               } break;
 
-               default: {
-                       dbg("[UCS2] non-prefix case.");
-                       tcore_util_hex_dump(" [UCS2] ", in_len, in);
-                       tcore_util_convert_ucs2_to_utf8((char *)out, out_len, (char*)in, in_len);
-               } break;
+                       tcore_util_swap_byte_order(dest, (unsigned char *)in_buf, num*2);
+                       tcore_util_convert_ucs2_to_utf8((char *)out, out_len, (char *) dest, num*2);
+
+                       free(in_buf);
+                       free(dest);
+               }
+       }
+       break;
+
+       default: {
+               dbg("[UCS2] non-prefix case.");
+               tcore_util_hex_dump(" [UCS2] ", in_len, in);
+               tcore_util_convert_ucs2_to_utf8((char *)out, out_len, (char *)in, in_len);
+       }
+       break;
        }
 }
 
-static int _convert_utf8_to_unicode(unsigned short* dest, unsigned char* src, unsigned int src_len)
+static int _convert_utf8_to_unicode(unsigned short *dest, unsigned char *src, unsigned int src_len)
 {
-       unsigned shortorg = NULL;
+       unsigned short *org = NULL;
        unsigned char hi = 0;
        unsigned char mid = 0;
        unsigned char low = 0;
 
        if ((NULL == dest) || (NULL == src)) {
-               dbg( "INPUT PARAM NULL");
+               dbg("INPUT PARAM NULL");
                return -1;
        }
 
@@ -546,113 +647,131 @@ static int _convert_utf8_to_unicode(unsigned short* dest, unsigned char* src, un
                        dest++;
                        src++;
                        src_len--;
-                       dbg( "utf8 incorrect range");
+                       dbg("utf8 incorrect range");
                }
        }
+
        *dest = 0;
        return (dest - org);
 }
 
-static char _convert_gsm7bit_extension( char c )
+static char _convert_gsm7bit_extension(char c)
 {
-       switch ( c ) {
-               case 0x0A:
-               case 0x1B:
-                       return ' ';
-               case 0x14:
-                       return '^';
-               case 0x28:
-                       return '{';
-               case 0x29:
-                       return '}';
-               case 0x2F:
-                       return '\\';
-               case 0x3C:
-                       return '[';
-               case 0x3D:
-                       return '~';
-               case 0x3E:
-                       return ']';
-               case 0x40:
-                       return '|';
-               /*
-                  case 0x65:
-                  This code represents the EURO currency symbol. The code value is that used for the character â€˜e’. Therefore
-                  a receiving entity which is incapable of displaying the EURO currency symbol will display the character â€˜e’
-                  instead. GSM 03.38
-               */
-               case 0x65:
-                       return 'e';
-               default:
-                       dbg("this is not extension character : (0x%x)", c);
-                       break;
+       switch (c) {
+       case 0x0A:
+       case 0x1B:
+               return ' ';
+
+       case 0x14:
+               return '^';
+
+       case 0x28:
+               return '{';
+
+       case 0x29:
+               return '}';
+
+       case 0x2F:
+               return '\\';
+
+       case 0x3C:
+               return '[';
+
+       case 0x3D:
+               return '~';
+
+       case 0x3E:
+               return ']';
+
+       case 0x40:
+               return '|';
+
+       /*
+       case 0x65:
+          This code represents the EURO currency symbol.
+          The code value is that used for the character â€˜e’.
+          Therefore a receiving entity which is incapable of displaying
+          the EURO currency symbol will display the character â€˜e’ instead. GSM 03.38
+       */
+       case 0x65:
+               return 'e';
+
+       default:
+               dbg("this is not extension character : (0x%x)", c);
+       break;
        }
 
        return c;
 }
 
-gboolean tcore_util_convert_utf8_to_gsm(unsigned char *dest, int *dest_len, unsigned char* src, int src_len)
+gboolean tcore_util_convert_utf8_to_gsm(unsigned char *dest, int *dest_len,
+       unsigned char *src, int src_len)
 {
        unsigned short *uc = NULL;
        int gc_len = 0;
        int uc_len = 0;
 
        if (src == NULL || src_len == 0) {
-               dbg( "WARNING: Invalid Parameter");
+               dbg("WARNING: Invalid Parameter");
                return FALSE;
        }
 
-       uc = (unsigned short*) calloc(src_len + 1, sizeof(unsigned short));
+       uc = (unsigned short *)calloc(src_len + 1, sizeof(unsigned short));
        if (!uc) {
-               dbg( "WARNING: calloc Failed");
+               err("Memory allocation failed");
                return FALSE;
        }
 
-       /*Converting from UTF8 => UNICODE*/
+       /* Converting from UTF8 => UNICODE */
        uc_len = _convert_utf8_to_unicode(uc, src, src_len);
-       dbg( "uc_len:[%d]", uc_len);
-       if(uc_len == -1) {
-               dbg( "_convert_utf8_to_unicode returns false!");
+       dbg("uc_len:[%d]", uc_len);
+       if (uc_len == -1) {
+               err("_convert_utf8_to_unicode returns false!");
                free(uc);
                return FALSE;
        }
 
        /*Finding the GSMCode Size*/
        gc_len = _get_gsm_code_size(uc, uc_len);
-       dbg( "gc_len:[%d]", gc_len);
-       if ( gc_len == -1) {
-               dbg( "SM- DATA is not in GSM7BIT Character Set & Error:[%d]",   gc_len);
+       dbg("gc_len:[%d]", gc_len);
+       if (gc_len == -1) {
+               err("SM- DATA is not in GSM7BIT Character Set & Error:[%d]", gc_len);
                free(uc);
                return FALSE;
        }
 
        *dest_len = gc_len;
-       /*Converting from UNICODE ==> GSM CODE */
-       if (_convert_unicode_to_gsm((unsigned char*) dest, *dest_len, uc, uc_len) == FALSE) {
-               dbg( "_convert_unicode_to_gsm Failed");
+
+       /* Converting from UNICODE ==> GSM CODE */
+       if (_convert_unicode_to_gsm((unsigned char *) dest, *dest_len, uc, uc_len) == FALSE) {
+               err("_convert_unicode_to_gsm Failed");
                *dest_len = 0x00;
                free(uc);
                return FALSE;
        }
 
-       if(uc)
+       if (uc)
                free(uc);
+
        return TRUE;
 }
 
-gboolean tcore_util_convert_utf8_to_ucs2(char **dest, int *dest_len, unsigned char *src, int src_len)
+gboolean tcore_util_convert_utf8_to_ucs2(char **dest, int *dest_len,
+       unsigned char *src, int src_len)
 {
        gsize byte_converted = 0;
        gsize byte_read = 0;
        gchar *str_converted = NULL;
 
        if (NULL == src || NULL == dest || NULL == dest_len) {
-               dbg( "Invalid Input Parameter");
+               dbg("Invalid Input Parameter");
                return FALSE;
        }
+
 try_again:
-       /*Converting from UTF8 => UCS-2 BIG-ENDIAN FORMAT using the g_convert*/
-       str_converted = (gchar *)g_convert((const gchar *)src, (gssize)src_len, "UCS-2BE", "UTF8", &byte_read, &byte_converted, NULL);
+       /* Converting from UTF8 => UCS-2 BIG-ENDIAN FORMAT using the g_convert */
+       str_converted = (gchar *)g_convert((const gchar *)src, (gssize)src_len,
+                       "UCS-2BE", "UTF8", &byte_read, &byte_converted, NULL);
 
        dbg("byte_read: [%d] byte_converted: [%d]", byte_read, byte_converted);
        if (str_converted) {
@@ -665,177 +784,183 @@ try_again:
                        goto try_again;
                }
        }
+
        return TRUE;
 }
 
 gboolean tcore_util_convert_string_to_utf8(unsigned char *dest, unsigned short *dest_len,
-               enum alphabet_format dcs, const unsigned char *src, unsigned short src_len)
+       enum alphabet_format dcs, const unsigned char *src, unsigned short src_len)
 {
-       dbg("dcs=[0x%02x], src=[%s], src_len=[%d]", dcs, src, src_len );
+       dbg("dcs=[0x%02x], src=[%s], src_len=[%d]", dcs, src, src_len);
 
-       if(src==NULL || src_len==0) {
+       if (src == NULL || src_len == 0) {
                err("src is NULL or src_len is 0");
                return FALSE;
        }
 
        switch (dcs) {
-               case ALPHABET_FORMAT_SMS_DEFAULT: {
-                       unsigned char* tmp_dest_str = NULL;
-                       tmp_dest_str = (unsigned char*)tcore_util_unpack_gsm7bit((const unsigned char *)src, src_len);
+       case ALPHABET_FORMAT_SMS_DEFAULT: {
+               unsigned char *tmp_dest_str = NULL;
+               tmp_dest_str = (unsigned char *)tcore_util_unpack_gsm7bit((const unsigned char *)src, src_len);
 
-                       if(!tmp_dest_str) {
-                               err("temp_dest_str is NULL");
-                               return FALSE;
-                       }
-                       _convert_gsm_to_utf8(dest, dest_len, tmp_dest_str, strlen((const char*)tmp_dest_str));
-                       if(tmp_dest_str) {
-                               free(tmp_dest_str);
-                       }
-               }       break;
+               if (!tmp_dest_str) {
+                       err("temp_dest_str is NULL");
+                       return FALSE;
+               }
+               _convert_gsm_to_utf8(dest, dest_len, tmp_dest_str, strlen((const char *)tmp_dest_str));
 
-               case ALPHABET_FORMAT_8BIT_DATA: {//GSM7bit with bit 8 set to 0
-                       int tmp_str_len = 0;
-                       unsigned char *src_buf = NULL;
+               if (tmp_dest_str)
+                       free(tmp_dest_str);
+       }
+       break;
 
-                       src_buf = (unsigned char*)malloc(src_len);
-                       if(src_buf == NULL) {
-                               dbg("src_buf malloc failed.");
-                               return FALSE;
-                       }
+       case ALPHABET_FORMAT_8BIT_DATA: { /* GSM7bit with bit 8 set to 0 */
+               int tmp_str_len = 0;
+               unsigned char *src_buf = NULL;
 
-                       memset(src_buf, 0, src_len);
-                       memcpy(src_buf, src, src_len);
+               src_buf = (unsigned char *)malloc(src_len);
+               if (src_buf == NULL) {
+                       dbg("src_buf malloc failed.");
+                       return FALSE;
+               }
 
-                       /*get string length*/
-                       /* 0xFF is the end of string */
-                       while (src[tmp_str_len] != 0xFF && tmp_str_len < src_len) {
-                               tmp_str_len++;
-                       }
-                       /* last space character must be deleted */
-                       while (src[tmp_str_len - 1] == 0x20 && tmp_str_len > 0) {
-                               tmp_str_len--;
-                       }
-                       dbg( "tmp_str_len[%d]", tmp_str_len);
+               memset(src_buf, 0, src_len);
+               memcpy(src_buf, src, src_len);
 
-                       _convert_gsm_to_utf8(dest, dest_len, src_buf, tmp_str_len);
-                       if(src_buf != NULL)
-                               free(src_buf);
-               }       break;
+               /*
+                * Get string length
+                * '0xFF' is the end of string
+                */
+               while (src[tmp_str_len] != 0xFF && tmp_str_len < src_len)
+                       tmp_str_len++;
 
-               case ALPHABET_FORMAT_UCS2: {
-                       unsigned char *src_buf = NULL;
+               /* last space character must be deleted */
+               while (src[tmp_str_len - 1] == 0x20 && tmp_str_len > 0)
+                       tmp_str_len--;
 
-                       src_buf = (unsigned char*)malloc(src_len);
-                       if(src_buf == NULL) {
-                               dbg("src_buf malloc failed.");
-                               return FALSE;
-                       }
+               dbg("tmp_str_len[%d]", tmp_str_len);
 
-                       memset(src_buf, 0, src_len);
-                       memcpy(src_buf, src, src_len);
+               _convert_gsm_to_utf8(dest, dest_len, src_buf, tmp_str_len);
+               if (src_buf != NULL)
+                       free(src_buf);
+       }
+       break;
 
-                       _convert_alpha_field_ucs2_to_utf8(dest, dest_len, src_buf, src_len);
-                       if(src_buf != NULL)
-                               free(src_buf);
-               }       break;
+       case ALPHABET_FORMAT_UCS2: {
+               unsigned char *src_buf = NULL;
 
-               default: {
-                       dbg("not handled alpha format[0x%02x]", dcs);
+               src_buf = (unsigned char *)malloc(src_len);
+               if (src_buf == NULL) {
+                       dbg("src_buf malloc failed.");
                        return FALSE;
-               }       break;
+               }
+
+               memset(src_buf, 0, src_len);
+               memcpy(src_buf, src, src_len);
+
+               _convert_alpha_field_ucs2_to_utf8(dest, dest_len, src_buf, src_len);
+               if (src_buf != NULL)
+                       free(src_buf);
        }
+       break;
+
+       default: {
+               dbg("not handled alpha format[0x%02x]", dcs);
+               return FALSE;
+       }
+       }
+
        return TRUE;
 }
 
-gboolean tcore_util_convert_ascii_to_utf8( unsigned char **dest, int *dest_len, unsigned char *src, int src_len )
+gboolean tcore_util_convert_ascii_to_utf8(unsigned char **dest, int *dest_len,
+       unsigned char *src, int src_len)
 {
        int i = 0, j = 0, tmp_len = 0;
        unsigned char *tmp = 0;
 
-       if ( (!dest) || (!src) || (!dest_len) )
+       if ((!dest) || (!src) || (!dest_len))
                return FALSE;
 
-       if ( !src_len ) {
-               src_len = strlen( (char*)src );
-       }
+       if (!src_len)
+               src_len = strlen((char *)src);
 
        tmp_len = (src_len * 2);
-       tmp = g_new0( unsigned char, tmp_len );
+       tmp = g_new0(unsigned char, tmp_len);
 
-       for ( i=0, j=0; i<src_len; i++, j++ ) {
-               if ( src[i] <= 0x7F ) {
+       for (i = 0, j = 0; i < src_len; i++, j++) {
+               if (src[i] <= 0x7F)  {
                        tmp[j] = src[i];
-
-               } else if ( (src[i] >= 0x80) && (src[i] <= 0xBF) ) {
+               } else if ((src[i] >= 0x80) && (src[i] <= 0xBF)) {
                        tmp[j] = 0xC2;
                        tmp[++j] = src[i];
-
-               } else { //( (src[i] >= 0xC0) && (src[i] <= 0xFF) )
+               } else { /* ((src[i] >= 0xC0) && (src[i] <= 0xFF)) */
                        tmp[j] = 0xC3;
                        tmp[++j] = (src[i] - 0x40);
-
                }
        }
 
        *dest_len = (j+1);
 
-       *dest = g_new0( unsigned char, *dest_len );
-       memcpy( *dest, tmp, j );
+       *dest = g_new0(unsigned char, *dest_len);
+       memcpy(*dest, tmp, j);
 
-       g_free( tmp );
+       g_free(tmp);
 
        return TRUE;
 }
 
-void tcore_util_swap_byte_order(unsigned char* dest, const unsigned char* src, int src_len)
+void tcore_util_swap_byte_order(unsigned char *dest,
+       const unsigned char *src, int src_len)
 {
        int i = 0;
-       for (i = 0; i+1 < src_len; i=i+2) {
+       for (i = 0; i+1 < src_len; i = i+2) {
                dest[i] = src[i+1];
                dest[i+1] = src[i];
        }
-       if(src_len%2==1)
+
+       if (src_len%2 == 1)
                dest[i-1] = src[i-1];
+
        dbg("swap completed.");
 }
 
 static gboolean _tcore_util_marshal_create_gvalue(GValue *value,
-               const void *data, enum tcore_util_marshal_data_type type)
+       const void *data, enum tcore_util_marshal_data_type type)
 {
        switch (type) {
-               case TCORE_UTIL_MARSHAL_DATA_CHAR_TYPE:
-                       g_value_init(value, type);
-                       g_value_set_schar(value, *((gchar *) data));
-                       break;
-
-               case TCORE_UTIL_MARSHAL_DATA_BOOLEAN_TYPE:
-                       g_value_init(value, type);
-                       g_value_set_boolean(value, *((gboolean *) data));
-                       break;
-
-               case TCORE_UTIL_MARSHAL_DATA_INT_TYPE:
-                       g_value_init(value, type);
-                       g_value_set_int(value, *((gint *) data));
-                       break;
-
-               case TCORE_UTIL_MARSHAL_DATA_DOUBLE_TYPE:
-                       g_value_init(value, type);
-                       g_value_set_double(value, *((gdouble *) data));
-                       break;
-
-               case TCORE_UTIL_MARSHAL_DATA_STRING_TYPE:
-                       g_value_init(value, type);
-                       g_value_set_string(value, (gchar *) data);
-                       break;
-
-               case TCORE_UTIL_MARSHAL_DATA_OBJECT_TYPE:
-                       g_value_init(value, G_TYPE_HASH_TABLE);
-                       g_value_set_boxed(value, (gpointer) data);
-                       break;
-
-               default:
-                       return FALSE;
-                       break;
+       case TCORE_UTIL_MARSHAL_DATA_CHAR_TYPE:
+               g_value_init(value, type);
+               g_value_set_schar(value, *((gchar *) data));
+       break;
+
+       case TCORE_UTIL_MARSHAL_DATA_BOOLEAN_TYPE:
+               g_value_init(value, type);
+               g_value_set_boolean(value, *((gboolean *) data));
+       break;
+
+       case TCORE_UTIL_MARSHAL_DATA_INT_TYPE:
+               g_value_init(value, type);
+               g_value_set_int(value, *((gint *) data));
+       break;
+
+       case TCORE_UTIL_MARSHAL_DATA_DOUBLE_TYPE:
+               g_value_init(value, type);
+               g_value_set_double(value, *((gdouble *) data));
+       break;
+
+       case TCORE_UTIL_MARSHAL_DATA_STRING_TYPE:
+               g_value_init(value, type);
+               g_value_set_string(value, (gchar *) data);
+       break;
+
+       case TCORE_UTIL_MARSHAL_DATA_OBJECT_TYPE:
+               g_value_init(value, G_TYPE_HASH_TABLE);
+               g_value_set_boxed(value, (gpointer) data);
+       break;
+
+       default:
+               return FALSE;
        }
 
        return TRUE;
@@ -843,40 +968,40 @@ static gboolean _tcore_util_marshal_create_gvalue(GValue *value,
 
 
 static gboolean _tcore_util_return_value(GValue *src, void **dest,
-               enum tcore_util_marshal_data_type type)
+       enum tcore_util_marshal_data_type type)
 {
        switch (type) {
-               case TCORE_UTIL_MARSHAL_DATA_CHAR_TYPE:
-                       *dest = g_new0(gchar, 1);
-                       *((gchar *) *dest) = g_value_get_schar(src);
-                       break;
-
-               case TCORE_UTIL_MARSHAL_DATA_BOOLEAN_TYPE:
-                       *dest = g_new0(gboolean, 1);
-                       *((gboolean *) *dest) = g_value_get_boolean(src);
-                       break;
-
-               case TCORE_UTIL_MARSHAL_DATA_INT_TYPE:
-                       *dest = g_new0(gint, 1);
-                       *((gint *) *dest) = g_value_get_int(src);
-                       break;
-
-               case TCORE_UTIL_MARSHAL_DATA_DOUBLE_TYPE:
-                       *dest = g_new0(gdouble, 1);
-                       *((gdouble *) *dest) = g_value_get_double(src);
-                       break;
-
-               case TCORE_UTIL_MARSHAL_DATA_STRING_TYPE:
+       case TCORE_UTIL_MARSHAL_DATA_CHAR_TYPE:
+               *dest = g_new0(gchar, 1);
+               *((gchar *)*dest) = g_value_get_schar(src);
+       break;
+
+       case TCORE_UTIL_MARSHAL_DATA_BOOLEAN_TYPE:
+               *dest = g_new0(gboolean, 1);
+               *((gboolean *)*dest) = g_value_get_boolean(src);
+       break;
+
+       case TCORE_UTIL_MARSHAL_DATA_INT_TYPE:
+               *dest = g_new0(gint, 1);
+               *((gint *)*dest) = g_value_get_int(src);
+       break;
+
+       case TCORE_UTIL_MARSHAL_DATA_DOUBLE_TYPE:
+               *dest = g_new0(gdouble, 1);
+               *((gdouble *)*dest) = g_value_get_double(src);
+       break;
+
+       case TCORE_UTIL_MARSHAL_DATA_STRING_TYPE:
+               if (src)
                        *dest = g_value_dup_string(src);
-                       break;
+       break;
 
-               case TCORE_UTIL_MARSHAL_DATA_OBJECT_TYPE:
-                       *dest = g_value_dup_boxed(src);
-                       break;
+       case TCORE_UTIL_MARSHAL_DATA_OBJECT_TYPE:
+               *dest = g_value_dup_boxed(src);
+       break;
 
-               default:
-                       return FALSE;
-                       break;
+       default:
+               return FALSE;
        }
 
        return TRUE;
@@ -894,54 +1019,58 @@ static void _tcore_util_marshal_remove_value(gpointer value)
                g_hash_table_destroy(ht);
        }
 
-       g_value_unset((GValue *) value);
+       g_value_unset((GValue *)value);
        g_free(value);
 
        return;
 }
 
 static gboolean _tcore_util_marshal_convert_str_to_type(GValue *src,
-               GValue *dest, unsigned int dest_type)
+       GValue *dest, unsigned int dest_type)
 {
        if (dest_type == G_TYPE_HASH_TABLE)
                dest_type = G_TYPE_BOXED;
 
        switch (dest_type) {
-               case G_TYPE_INT: {
-                       gint64 tmp = 0;
-                       tmp = g_ascii_strtoll(g_value_get_string(src), NULL, 10);
-                       g_value_set_int(dest, tmp);
-               }
-                       break;
-               case G_TYPE_BOOLEAN: {
-                       gboolean tmp = FALSE;
-                       tmp = g_ascii_strncasecmp(g_value_get_string(src), "TRUE", 4) == 0
-                                       ? TRUE : FALSE;
-                       g_value_set_boolean(dest, tmp);
-               }
-                       break;
-               case G_TYPE_STRING: {
-                       const gchar* tmp = NULL;
-                       tmp = g_value_get_string(src);
-                       g_value_set_string(dest, tmp);
-               }
-                       break;
-               case G_TYPE_DOUBLE: {
-                       gdouble tmp = 0;
-                       tmp = g_ascii_strtod(g_value_get_string(src), NULL);
-                       g_value_set_double(dest, tmp);
-               }
-                       break;
-               case G_TYPE_BOXED: {
-                       GHashTable* tmp;
-                       tmp = tcore_util_marshal_deserialize_string(g_value_get_string(src));
-                       g_value_set_boxed(dest, tmp);
-               }
-                       break;
-               default: {
-                       return FALSE;
-               }
-                       break;
+       case G_TYPE_INT: {
+               gint64 tmp = 0;
+               tmp = g_ascii_strtoll(g_value_get_string(src), NULL, 10);
+               g_value_set_int(dest, tmp);
+       }
+       break;
+
+       case G_TYPE_BOOLEAN: {
+               gboolean tmp = FALSE;
+               tmp = g_ascii_strncasecmp(g_value_get_string(src), "TRUE", 4) == 0
+                               ? TRUE : FALSE;
+               g_value_set_boolean(dest, tmp);
+       }
+       break;
+
+       case G_TYPE_STRING: {
+               const gchar *tmp = NULL;
+               tmp = g_value_get_string(src);
+               g_value_set_string(dest, tmp);
+       }
+       break;
+
+       case G_TYPE_DOUBLE: {
+               gdouble tmp = 0;
+               tmp = g_ascii_strtod(g_value_get_string(src), NULL);
+               g_value_set_double(dest, tmp);
+       }
+       break;
+
+       case G_TYPE_BOXED: {
+               GHashTable *tmp;
+               tmp = tcore_util_marshal_deserialize_string(g_value_get_string(src));
+               g_value_set_boxed(dest, tmp);
+       }
+       break;
+
+       default: {
+               return FALSE;
+       }
        }
 
        return TRUE;
@@ -960,9 +1089,8 @@ TReturn tcore_util_netif_up(const char *name)
                return TCORE_RETURN_EINVAL;
 
        fd = socket(AF_INET, SOCK_DGRAM, 0);
-       if (fd < 0) {
+       if (fd < 0)
                return TCORE_RETURN_FAILURE;
-       }
 
        memset(&ifr, 0, sizeof(struct ifreq));
        strncpy(ifr.ifr_name, name, IFNAMSIZ);
@@ -983,6 +1111,7 @@ TReturn tcore_util_netif_up(const char *name)
        }
 
        close(fd);
+
        return TCORE_RETURN_SUCCESS;
 }
 
@@ -999,9 +1128,8 @@ TReturn tcore_util_netif_down(const char *name)
                return TCORE_RETURN_EINVAL;
 
        fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
-       if (fd < 0) {
+       if (fd < 0)
                return TCORE_RETURN_FAILURE;
-       }
 
        memset(&ifr, 0, sizeof(struct ifreq));
        strncpy(ifr.ifr_name, name, IFNAMSIZ);
@@ -1026,8 +1154,8 @@ TReturn tcore_util_netif_down(const char *name)
        return TCORE_RETURN_SUCCESS;
 }
 
-TReturn tcore_util_netif_set(const char *name, const char *ipaddr,
-               const char *gateway, const char *netmask)
+TReturn tcore_util_netif_set(const char *name,
+       const char *ipaddr, const char *gateway, const char *netmask)
 {
        int ret;
        int fd;
@@ -1041,9 +1169,8 @@ TReturn tcore_util_netif_set(const char *name, const char *ipaddr,
                return TCORE_RETURN_EINVAL;
 
        fd = socket(AF_INET, SOCK_DGRAM, 0);
-       if (fd < 0) {
+       if (fd < 0)
                return TCORE_RETURN_FAILURE;
-       }
 
        memset(&sai, 0, sizeof(struct sockaddr_in));
        sai.sin_family = AF_INET;
@@ -1108,12 +1235,11 @@ TReturn tcore_util_netif_set(const char *name, const char *ipaddr,
        return TCORE_RETURN_SUCCESS;
 }
 
-TReturn tcore_util_reset_ipv4_socket(const char *name, const char* ipaddr)
+TReturn tcore_util_netif_set_arp(const char *name, gboolean disable)
 {
        int ret;
        int fd;
        struct ifreq ifr;
-       struct sockaddr_in sai;
 
        if (!name)
                return TCORE_RETURN_EINVAL;
@@ -1122,10 +1248,51 @@ TReturn tcore_util_reset_ipv4_socket(const char *name, const char* ipaddr)
                return TCORE_RETURN_EINVAL;
 
        fd = socket(AF_INET, SOCK_DGRAM, 0);
-       if (fd < 0) {
+       if (fd < 0)
+               return TCORE_RETURN_FAILURE;
+
+       memset(&ifr, 0, sizeof(struct ifreq));
+       strncpy(ifr.ifr_name, name, IFNAMSIZ);
+       ifr.ifr_name[IFNAMSIZ - 1] = '\0';
+
+       ret = ioctl(fd, SIOCGIFFLAGS, &ifr);
+       if (ret < 0) {
+               close(fd);
                return TCORE_RETURN_FAILURE;
        }
 
+       if (disable)
+               ifr.ifr_flags |= IFF_NOARP;
+       else
+               ifr.ifr_flags &= ~IFF_NOARP;
+
+       ret = ioctl(fd, SIOCSIFFLAGS, &ifr);
+       if (ret < 0) {
+               close(fd);
+               return TCORE_RETURN_FAILURE;
+       }
+
+       close(fd);
+       return TCORE_RETURN_SUCCESS;
+}
+
+TReturn tcore_util_reset_ipv4_socket(const char *name, const char *ipaddr)
+{
+       int ret;
+       int fd;
+       struct ifreq ifr;
+       struct sockaddr_in sai;
+
+       if (!name)
+               return TCORE_RETURN_EINVAL;
+
+       if (strlen(name) > IFNAMSIZ)
+               return TCORE_RETURN_EINVAL;
+
+       fd = socket(AF_INET, SOCK_DGRAM, 0);
+       if (fd < 0)
+               return TCORE_RETURN_FAILURE;
+
        memset(&sai, 0, sizeof(struct sockaddr_in));
        sai.sin_family = AF_INET;
        sai.sin_port = 0;
@@ -1142,7 +1309,7 @@ TReturn tcore_util_reset_ipv4_socket(const char *name, const char* ipaddr)
        strncpy(ifr.ifr_name, name, IFNAMSIZ);
        ifr.ifr_name[IFNAMSIZ - 1] = '\0';
 
-       if(!ipaddr) {
+       if (!ipaddr) {
                ret = ioctl(fd, SIOCGIFADDR, &ifr);
                if (ret < 0) {
                        dbg("fail to ioctl[SIOCGIFADDR]!!!");
@@ -1150,6 +1317,7 @@ TReturn tcore_util_reset_ipv4_socket(const char *name, const char* ipaddr)
                        return TCORE_RETURN_FAILURE;
                }
        }
+
        /* SIOCKILLADDR is initially introduced in Android OS. */
 #ifndef SIOCKILLADDR
 #define SIOCKILLADDR    0x8939
@@ -1161,13 +1329,14 @@ TReturn tcore_util_reset_ipv4_socket(const char *name, const char* ipaddr)
                return TCORE_RETURN_FAILURE;
        }
 
-       if(ipaddr) {
+       if (ipaddr) {
                dbg("devname: %s, ipaddr: %s", name, ipaddr);
        } else {
                memset(&sai, 0, sizeof(struct sockaddr_in));
                memcpy(&sai, &ifr.ifr_addr, sizeof(struct sockaddr_in));
                dbg("devname: %s, ipaddr: %s", name, inet_ntoa(sai.sin_addr));
        }
+
        close(fd);
        return TCORE_RETURN_SUCCESS;
 }
@@ -1185,9 +1354,8 @@ TReturn tcore_util_netif_set_mtu(const char *name, unsigned int mtu)
                return TCORE_RETURN_EINVAL;
 
        fd = socket(AF_INET, SOCK_DGRAM, 0);
-       if (fd < 0) {
+       if (fd < 0)
                return TCORE_RETURN_FAILURE;
-       }
 
        memset(&ifr, 0, sizeof(struct ifreq));
        strncpy(ifr.ifr_name, name, IFNAMSIZ);
@@ -1216,7 +1384,7 @@ char *tcore_util_get_string_by_ip4type(union tcore_ip4_type ip)
 
 char *tcore_util_get_string_by_ip6type(unsigned char ipv6_addr_type[IPV6_ADDR_LEN])
 {
-       char buf[INET6_ADDRSTRLEN] = {0, };
+       char buf[INET6_ADDRSTRLEN] = {0,};
 
        if (inet_ntop(AF_INET6, ipv6_addr_type, buf, INET6_ADDRSTRLEN) == NULL)
                return NULL;
@@ -1228,76 +1396,70 @@ enum tcore_dcs_type tcore_util_get_cbs_coding_scheme(unsigned char encode)
 {
        enum tcore_dcs_type dcs = TCORE_DCS_TYPE_NONE;
 
-       switch (encode & 0xf0)
-       {
-               case 0x00:
-               case 0x20:
-               case 0x30:
+       switch (encode & 0xf0) {
+       case 0x00:
+       case 0x20:
+       case 0x30:
+               dcs = TCORE_DCS_TYPE_7_BIT;
+       break;
+
+       case 0x10:
+               if ((encode & 0x0f) == 0x00)
                        dcs = TCORE_DCS_TYPE_7_BIT;
-                       break;
-
-               case 0x10:
-                       if ((encode & 0x0f) == 0x00)
-                               dcs = TCORE_DCS_TYPE_7_BIT;
-                       else if ((encode & 0x0f) == 0x01)
-                               dcs = TCORE_DCS_TYPE_8_BIT; //should be re-defined
-                       else
-                               dcs = TCORE_DCS_TYPE_UNSPECIFIED;
-                       break;
-
-               case 0x40:
-               case 0x50:
-               case 0x60:
-               case 0x70: // 01xx
-                       if ((encode & 0x0c) == 0x00)
-                               dcs = TCORE_DCS_TYPE_7_BIT;
-                       else if ((encode & 0x0c) == 0x04)
-                               dcs = TCORE_DCS_TYPE_8_BIT;
-                       else if ((encode & 0x0c) == 0x08)
-                               dcs = TCORE_DCS_TYPE_UCS2;
-                       else if ((encode & 0x0c) == 0x0c)
-                               dcs = TCORE_DCS_TYPE_UNSPECIFIED;
-                       break;
-
-               case 0x90: // 1001
-                       if ((encode & 0x0c) == 0x00)
-                               dcs = TCORE_DCS_TYPE_7_BIT;
-                       else if ((encode & 0x0c) == 0x04)
-                               dcs = TCORE_DCS_TYPE_8_BIT;
-                       else if ((encode & 0x0c) == 0x08)
-                               dcs = TCORE_DCS_TYPE_UCS2;
-                       else if ((encode & 0x0c) == 0x0c)
-                               dcs = TCORE_DCS_TYPE_UNSPECIFIED;
-                       break;
-
-               case 0x80: // 1000
-               case 0xA0:
-               case 0xB0:
-               case 0xC0:
-               case 0xD0: // 1010 .. 1101
-               case 0xE0: // 0x1110
-                       break;
-
-               case 0xF0:
-                       if ((encode & 0x04) == 0x00)
-                               dcs = TCORE_DCS_TYPE_7_BIT;
-                       else if ((encode & 0x04) == 0x04)
-                               dcs = TCORE_DCS_TYPE_8_BIT;
-                       break;
-               default:
-                       err("invalid encoding type");
-                       break;
+               else if ((encode & 0x0f) == 0x01)
+                       dcs = TCORE_DCS_TYPE_8_BIT; /* should be re-defined */
+               else
+                       dcs = TCORE_DCS_TYPE_UNSPECIFIED;
+       break;
+
+       case 0x40:
+       case 0x50:
+       case 0x60:
+       case 0x70: /* 01xx */
+               if ((encode & 0x0c) == 0x00)
+                       dcs = TCORE_DCS_TYPE_7_BIT;
+               else if ((encode & 0x0c) == 0x04)
+                       dcs = TCORE_DCS_TYPE_8_BIT;
+               else if ((encode & 0x0c) == 0x08)
+                       dcs = TCORE_DCS_TYPE_UCS2;
+               else if ((encode & 0x0c) == 0x0c)
+                       dcs = TCORE_DCS_TYPE_UNSPECIFIED;
+       break;
+
+       case 0x90: /* 1001 */
+               if ((encode & 0x0c) == 0x00)
+                       dcs = TCORE_DCS_TYPE_7_BIT;
+               else if ((encode & 0x0c) == 0x04)
+                       dcs = TCORE_DCS_TYPE_8_BIT;
+               else if ((encode & 0x0c) == 0x08)
+                       dcs = TCORE_DCS_TYPE_UCS2;
+               else if ((encode & 0x0c) == 0x0c)
+                       dcs = TCORE_DCS_TYPE_UNSPECIFIED;
+       break;
+
+       case 0x80: /* 1000 */
+       case 0xA0:
+       case 0xB0:
+       case 0xC0:
+       case 0xD0: /* 1010 .. 1101 */
+       case 0xE0: /* 0x1110 */
+       break;
+
+       case 0xF0:
+               if ((encode & 0x04) == 0x00)
+                       dcs = TCORE_DCS_TYPE_7_BIT;
+               else if ((encode & 0x04) == 0x04)
+                       dcs = TCORE_DCS_TYPE_8_BIT;
+       break;
+
+       default:
+               err("invalid encoding type");
+       break;
        }
 
        return dcs;
 }
 
-#define CONVERT_HEXCHAR_TO_INT(h, i) if ((h) >= '0' && (h) <= '9') (i) = (h) - '0'; \
-       else if ((h) >= 'A' && (h) <= 'F') (i) = (h) - 'A' + 10; \
-       else if ((h) >= 'a' && (h) <= 'f') (i) = (h) - 'a' + 10; \
-       else (i) = 0;
-
-
 unsigned char *tcore_util_decode_hex(const char *src, int len)
 {
        unsigned char *buf;
@@ -1310,18 +1472,16 @@ unsigned char *tcore_util_decode_hex(const char *src, int len)
        if (!src)
                return NULL;
 
-       if (len == -1) {
+       if (len == -1)
                out_len = strlen(src) / 2 + 1;
-       }
-       else {
+       else
                out_len = len;
-       }
 
        buf = calloc(1, out_len);
        if (!buf)
                return NULL;
 
-       for (; j < out_len; i+= 2, j++) {
+       for (; j < out_len; i += 2, j++) {
                CONVERT_HEXCHAR_TO_INT(src[i], value1);
                CONVERT_HEXCHAR_TO_INT(src[i+1], value2);
 
@@ -1333,8 +1493,8 @@ unsigned char *tcore_util_decode_hex(const char *src, int len)
 
 void tcore_util_hex_dump(const char *pad, int size, const void *data)
 {
-       char buf[255] = {0, };
-       char hex[4] = {0, };
+       char buf[255] = {0,};
+       char hex[4] = {0,};
        int i = 0;
        unsigned char *p = NULL;
 
@@ -1346,7 +1506,7 @@ void tcore_util_hex_dump(const char *pad, int size, const void *data)
        p = (unsigned char *)data;
 
        g_snprintf(buf, 255, "%s%04X: ", pad, 0);
-       for (i = 0; i<size; i++) {
+       for (i = 0; i < size; i++) {
                g_snprintf(hex, 4, "%02X ", p[i]);
                memcpy(buf+strlen(buf), hex, 4);
 
@@ -1355,10 +1515,8 @@ void tcore_util_hex_dump(const char *pad, int size, const void *data)
                                dbg("%s", buf);
                                memset(buf, 0, 255);
                                snprintf(buf, 255, "%s%04X: ", pad, i + 1);
-                       }
-                       else {
-                               strcat(buf, "  ");
-                       }
+                       } else
+                               strncat(buf, TAB_SPACE, strlen(TAB_SPACE));
                }
        }
 
@@ -1373,9 +1531,8 @@ unsigned char *tcore_util_unpack_gsm7bit(const unsigned char *src, unsigned int
        unsigned char shift = 0;
        int outlen = 0;
 
-       if (!src || src_len == 0) {
+       if (!src || src_len == 0)
                return NULL;
-       }
 
        outlen = (src_len * 8) / 7;
 
@@ -1387,7 +1544,10 @@ unsigned char *tcore_util_unpack_gsm7bit(const unsigned char *src, unsigned int
                dest[i] = (src[pos] << shift) & 0x7F;
 
                if (pos != 0) {
-                       /* except the first byte, a character contains some bits from the previous byte.*/
+                       /*
+                        * except the first byte, a character contains some bits
+                        * from the previous byte.
+                        */
                        dest[i] |= src[pos - 1] >> (8 - shift);
                }
 
@@ -1402,20 +1562,17 @@ unsigned char *tcore_util_unpack_gsm7bit(const unsigned char *src, unsigned int
                }
        }
 
-       /*If a character is '\r'(13), change it to space(32) */
-       for (i = 0, j=0; i < outlen; i++, j++) {
-               if (dest[i] == '\r') {
+       /* If a character is '\r'(13), change it to space(32) */
+       for (i = 0, j = 0; i < outlen; i++, j++) {
+               if (dest[i] == '\r')
                        dest[j] = ' ';
-
-               } else if (dest[i] == 0x1B) { /*If a charater is 0x1B (escape), next charater is changed on gsm 7bit extension table */
-                       dest[j] = _convert_gsm7bit_extension( dest[++i] );
-
-               } else {
+               else if (dest[i] == 0x1B)  /* If a charater is 0x1B (escape), next charater is changed on gsm 7bit extension table */
+                       dest[j] = _convert_gsm7bit_extension(dest[++i]);
+               else
                        dest[j] = dest[i];
-               }
        }
 
-       outlen -= ( i - j );
+       outlen -= (i - j);
 
        dest[outlen] = '\0';
 
@@ -1429,9 +1586,8 @@ unsigned char *tcore_util_pack_gsm7bit(const unsigned char *src, unsigned int sr
        unsigned int pos = 0, shift = 0;
        unsigned int outlen = 0;
 
-       if (!src || src_len == 0) {
+       if (!src || src_len == 0)
                return NULL;
-       }
 
        outlen = ((src_len * 7) / 8) + 1;
 
@@ -1458,8 +1614,7 @@ unsigned char *tcore_util_pack_gsm7bit(const unsigned char *src, unsigned int sr
                                shift = 0;
                                i++;
                        }
-               }
-               else {
+               } else {
                        if (shift == 6)
                                dest[pos] |= 0x1a;
                }
@@ -1468,38 +1623,46 @@ unsigned char *tcore_util_pack_gsm7bit(const unsigned char *src, unsigned int sr
        return dest;
 }
 
-char* tcore_util_convert_bcd_str_2_ascii_str(const char* src, int src_len)
+char *tcore_util_convert_bcd_str_2_ascii_str(const char *src, int src_len)
 {
        int count = 0;
        char *dest = NULL;
 
-       if(!src)
+       if (!src)
                return NULL;
 
        dest = malloc((src_len+1)*sizeof(char));
+       if (!dest)
+               return NULL;
+
        memset(dest, 0, (src_len+1)*sizeof(char));
 
-       for(count = 0; count < src_len; count++){
-               switch(src[count]){
-                       case 0x0A:
-                               dest[count] = '*';
-                               break;
-                       case 0x0B:
-                               dest[count] = '#';
-                               break;
-                       case 0x0C:
-                               dest[count] = 'p'; //Pause
-                               break;
-                       case 0x0D:
-                               dest[count] = '?'; //Wild Card character
-                               break;
-                       case 0x0E: //ignore, RFU
-                       case 0x0F:
-                               dest[count] = '\0'; //Null termination
-                               break;
-                       default:
-                               dest[count] = src[count]+'0'; //digits 0~9
-                               break;
+       for (count = 0; count < src_len; count++) {
+               switch (src[count]) {
+               case 0x0A:
+                       dest[count] = '*';
+               break;
+
+               case 0x0B:
+                       dest[count] = '#';
+               break;
+
+               case 0x0C:
+                       dest[count] = 'p'; /* Pause */
+               break;
+
+               case 0x0D:
+                       dest[count] = '?'; /* Wild Card character */
+               break;
+
+               case 0x0E: /* ignore, RFU */
+               case 0x0F:
+                       dest[count] = '\0'; /* Null termination */
+               break;
+
+               default:
+                       dest[count] = src[count]+'0'; /* digits 0~9 */
+               break;
                }
        }
 
@@ -1509,105 +1672,119 @@ char* tcore_util_convert_bcd_str_2_ascii_str(const char* src, int src_len)
        return dest;
 }
 
-char* tcore_util_convert_bcd2ascii(const char* src, int src_len, int max_len)
+char *tcore_util_convert_bcd2ascii(const char *src, int src_len, int max_len)
 {
-       int count = 0, len=0;
+       int count = 0, len = 0;
        char l_bcd = 0x00, h_bcd = 0x0F;
        char *dest = NULL;
 
-       if(!src)
+       if (!src)
                return NULL;
 
-       if(src_len*2 > max_len){
+       if (src_len*2 > max_len) {
                err("PARSER - number length exceeds the max");
                return NULL;
        }
 
        dest = malloc((src_len*2)*sizeof(char)+1);
+       if (!dest)
+               return NULL;
+
        memset(dest, 0, (src_len*2)*sizeof(char)+1);
 
-       for(count = 0; count < src_len; count++){
+       for (count = 0; count < src_len; count++) {
                l_bcd = src[count] & 0x0F;
                h_bcd = (src[count] & 0xF0) >> 0x04;
 
-               switch(l_bcd){
-                       case 0x0A:
-                               dest[len++] = '*';
-                               break;
-                       case 0x0B:
-                               dest[len++] = '#';
-                               break;
-                       case 0x0C:
-                               dest[len++] = 'p'; //Pause
-                               break;
-                       case 0x0D:
-                               dest[len++] = '?'; //Wild Card character
-                               break;
-                       case 0x0E: //ignore, RFU
-                       case 0x0F: //ignore in l_bcd
-                               break;
-                       default:
-                               dest[len++] = l_bcd+'0'; //digits 0~9
-                               break;
-               }//l_lbcd switch
+               switch (l_bcd) {
+               case 0x0A:
+                       dest[len++] = '*';
+               break;
 
-               switch(h_bcd){
-                       case 0x0A:
-                               dest[len++] = '*';
-                               break;
-                       case 0x0B:
-                               dest[len++] = '#';
-                               break;
-                       case 0x0C:
-                               dest[len++] = 'p'; //Pause
-                               break;
-                       case 0x0D:
-                               dest[len++] = '?'; //Wild Card character
-                               break;
-                       case 0x0E: //ignore, RFU
-                       case 0x0F:
-                               dest[len] = '\0'; //Null termination
-                               break;
-                       default:
-                               dest[len++] = h_bcd+'0'; //digits 0~9
-                               break;
-               }//h_bcd switch
+               case 0x0B:
+                       dest[len++] = '#';
+               break;
+
+               case 0x0C:
+                       dest[len++] = 'p'; /* Pause */
+               break;
+
+               case 0x0D:
+                       dest[len++] = '?'; /* Wild Card character */
+               break;
+
+               case 0x0E: /* ignore, RFU */
+               case 0x0F: /* ignore in l_bcd */
+               break;
+
+               default:
+                       dest[len++] = l_bcd+'0'; /* digits 0~9 */
+               break;
+               } /* l_lbcd switch */
+
+               switch (h_bcd) {
+               case 0x0A:
+                       dest[len++] = '*';
+               break;
+
+               case 0x0B:
+                       dest[len++] = '#';
+               break;
+
+               case 0x0C:
+                       dest[len++] = 'p'; /* Pause */
+               break;
+
+               case 0x0D:
+                       dest[len++] = '?'; /* Wild Card character */
+               break;
+
+               case 0x0E: /* ignore, RFU */
+               case 0x0F:
+                       dest[len] = '\0'; /* Null termination */
+               break;
+
+               default:
+                       dest[len++] = h_bcd+'0'; /*digits 0~9 */
+               break;
+               } /* h_bcd switch */
        }
 
-       if(h_bcd != 0x0F)
+       if (h_bcd != 0x0F)
                dest[len] = '\0';
 
        dbg("PARSER - number(%s) len(%d)", dest, len);
        return dest;
 }
 
-char* tcore_util_convert_digit2ascii(const char* src, int src_len)
+char *tcore_util_convert_digit2ascii(const char *src, int src_len)
 {
        int count = 0;
        char *dest = NULL;
 
-       if(!src)
+       if (!src)
                return NULL;
 
        dest = malloc((src_len+1)*sizeof(char));
+       if (!dest)
+               return NULL;
+
        memset(dest, 0, (src_len+1)*sizeof(char));
 
-       for(count = 0; count < src_len; count++){
+       for (count = 0; count < src_len; count++)
                dest[count] = src[count] + '0';
-       }
        dest[count] = '\0';
 
        dbg("PARSER - number(%s) len(%d)", dest, strlen(dest));
        return dest;
 }
 
-
 GHashTable *tcore_util_marshal_create()
 {
        GHashTable *ht = NULL;
 
-       ht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
-                       _tcore_util_marshal_remove_value);
+       ht = g_hash_table_new_full(g_str_hash, g_str_equal,
+               g_free, _tcore_util_marshal_remove_value);
 
        return ht;
 }
@@ -1634,9 +1811,8 @@ GHashTable *tcore_util_marshal_deserialize_string(const gchar *serialized_string
        ht = g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
                        _tcore_util_marshal_remove_value);
 
-       if (strlen(serialized_string) == 0) {
+       if (strlen(serialized_string) == 0)
                return ht;
-       }
 
        g_value_init(&src, G_TYPE_STRING);
 
@@ -1681,7 +1857,7 @@ gchar *tcore_util_marshal_serialize(GHashTable *ht)
        while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) {
                unsigned int gtype = 0;
                gchar *tmp = NULL, *encoded_d = NULL;
-               GValue gval = { 0,{ { 0 } } };
+               GValue gval = {0, {{0} } };
 
                g_value_init(&gval, G_TYPE_STRING);
 
@@ -1689,8 +1865,7 @@ gchar *tcore_util_marshal_serialize(GHashTable *ht)
                if (gtype != G_TYPE_HASH_TABLE) {
                        g_value_transform((GValue *) value, &gval);
                        tmp = g_value_dup_string(&gval);
-               }
-               else {
+               } else {
                        GHashTable *sub_ht;
                        sub_ht = g_value_get_boxed((GValue *) value);
                        tmp = tcore_util_marshal_serialize(sub_ht);
@@ -1699,8 +1874,8 @@ gchar *tcore_util_marshal_serialize(GHashTable *ht)
                encoded_d = g_base64_encode((guchar *)tmp, (gsize)strlen(tmp));
                g_free(tmp);
 
-               g_string_append_printf(gstring_tmp, "%s:%d:%s ", (gchar *)key,
-                               gtype, encoded_d);
+               g_string_append_printf(gstring_tmp, "%s:%d:%s ",
+                       (gchar *)key, gtype, encoded_d);
                g_free((gpointer)encoded_d);
                g_value_unset(&gval);
        }
@@ -1761,8 +1936,8 @@ gint tcore_util_marshal_get_int(GHashTable *ht, const gchar *key)
        if (!ht || !key)
                return 0;
 
-       rv = tcore_util_marshal_get_data(ht, key, (void **) &tmp,
-                       TCORE_UTIL_MARSHAL_DATA_INT_TYPE);
+       rv = tcore_util_marshal_get_data(ht, key,
+               (void **)&tmp, TCORE_UTIL_MARSHAL_DATA_INT_TYPE);
        if (!rv)
                return 0;
 
@@ -1783,8 +1958,8 @@ gchar *tcore_util_marshal_get_string(GHashTable *ht, const gchar *key)
        if (!ht || !key)
                return 0;
 
-       rv = tcore_util_marshal_get_data(ht, key, (void **) &rvalue,
-                       TCORE_UTIL_MARSHAL_DATA_STRING_TYPE);
+       rv = tcore_util_marshal_get_data(ht, key,
+               (void **)&rvalue, TCORE_UTIL_MARSHAL_DATA_STRING_TYPE);
        if (!rv)
                return NULL;
 
@@ -1799,8 +1974,8 @@ GHashTable *tcore_util_marshal_get_object(GHashTable *ht, const gchar *key)
        if (!ht || !key)
                return 0;
 
-       rv = tcore_util_marshal_get_data(ht, key, (void **) &rvalue,
-                       TCORE_UTIL_MARSHAL_DATA_OBJECT_TYPE);
+       rv = tcore_util_marshal_get_data(ht, key,
+               (void **)&rvalue, TCORE_UTIL_MARSHAL_DATA_OBJECT_TYPE);
        if (!rv)
                return NULL;
 
@@ -1817,3 +1992,20 @@ void tcore_util_set_log(gboolean enable)
        tcore_debug = enable;
 }
 
+gboolean tcore_util_is_country_NA(char *plmn)
+{
+       if (!plmn)
+               return FALSE;
+
+       if (!strncmp(plmn, "310", 3)
+                       || !strncmp(plmn, "311", 3)
+                       || !strncmp(plmn, "312", 3)
+                       || !strncmp(plmn, "313", 3)
+                       || !strncmp(plmn, "314", 3)
+                       || !strncmp(plmn, "315", 3)
+                       || !strncmp(plmn, "316", 3)
+                       || !strncmp(plmn, "302", 3))
+               return TRUE;
+
+       return FALSE;
+}
index b089616..ef982f3 100644 (file)
@@ -115,7 +115,7 @@ static void test_buf_write(void)
        ret = tcore_at_buf_write(at, strlen(msg_2), msg_2);
        g_assert(ret == TCORE_RETURN_SUCCESS);
 
-       tcore_at_free (at);
+       tcore_at_free(at);
 }
 
 static void test_tok(void)
@@ -207,7 +207,7 @@ static void test_pdu_resp(void)
        ret = tcore_at_process(at, strlen(msg), msg);
        g_assert(ret == TRUE);
 
-       tcore_at_free (at);
+       tcore_at_free(at);
 }
 
 int main(int argc, char **argv)
index 325a98d..3ac1cf5 100644 (file)
@@ -40,7 +40,7 @@ static void test_co_new(void)
        co = tcore_object_new(NULL, "test", NULL);
        g_assert(co);
 
-       tcore_object_free (co);
+       tcore_object_free(co);
 }
 
 static void test_callback_renew(void)
@@ -51,7 +51,7 @@ static void test_callback_renew(void)
        co = tcore_object_new(NULL, "test", NULL);
        g_assert(co);
 
-       // lifetime: unlimit
+       /* lifetime: unlimit */
        _count = 0;
        ret = tcore_object_add_callback(co, "event1", on_event1, NULL);
        g_assert(ret == TCORE_RETURN_SUCCESS);
@@ -73,7 +73,7 @@ static void test_callback_once(void)
        co = tcore_object_new(NULL, "test", NULL);
        g_assert(co);
 
-       // lifetime: one time callback + unlimit callback
+       /* lifetime: one time callback + unlimit callback */
        _count = 0;
        ret = tcore_object_add_callback(co, "event2", on_event2, NULL);
        g_assert(ret == TCORE_RETURN_SUCCESS);
@@ -93,10 +93,10 @@ static void test_callback_once(void)
 
        g_assert(_count == 2);
 
-       tcore_object_free (co);
+       tcore_object_free(co);
 }
 
-static gboolean on_prop_changed (CoreObject *co, const void *event_info,
+static gboolean on_prop_changed(CoreObject *co, const void *event_info,
                void *user_data)
 {
        int *mode = user_data;
@@ -104,90 +104,90 @@ static gboolean on_prop_changed (CoreObject *co, const void *event_info,
        const char *data;
 
        switch (*mode) {
-               case 1:
-                       g_assert (g_slist_length(key) == 1);
-                       g_assert_cmpstr (key->data, ==, "qqq");
-                       data = tcore_object_ref_property (co, "qqq");
-                       g_assert_cmpstr (data, ==, "1234");
-                       break;
-
-               case 2:
-                       g_assert (g_slist_length (key) == 1);
-                       g_assert_cmpstr (key->data, ==, "qqq");
-                       data = tcore_object_ref_property (co, "qqq");
-                       g_assert (data == NULL);
-                       break;
-
-               case 3:
-                       g_assert (g_slist_length (key) == 1);
-                       g_assert_cmpstr (key->data, ==, "www");
-                       data = tcore_object_ref_property (co, "www");
-                       g_assert_cmpstr (data, ==, "heap");
-                       break;
-
-               case 4:
-                       g_assert (g_slist_length (key) == 1);
-                       g_assert_cmpstr (key->data, ==, "www");
-                       data = tcore_object_ref_property (co, "www");
-                       g_assert (data == NULL);
-                       break;
-
-               case 5:
-                       g_assert (g_slist_length (key) == 1);
-                       g_assert_cmpstr (key->data, ==, "key");
-                       data = tcore_object_ref_property (co, "key");
-                       g_assert_cmpstr (data, ==, "1");
-                       break;
-
-               case 6:
-                       g_assert (g_slist_length (key) == 1);
-                       g_assert_cmpstr (key->data, ==, "key");
-                       data = tcore_object_ref_property (co, "key");
-                       g_assert_cmpstr (data, ==, "2");
-                       break;
-
-               case 7:
-                       g_assert (FALSE);
-                       break;
-
-               case 8:
-                       g_assert (g_slist_length (key) == 1);
-                       g_assert_cmpstr (key->data, ==, "key");
-                       data = tcore_object_ref_property (co, "key");
-                       g_assert_cmpstr (data, ==, "2");
-                       break;
-
-               case 9:
-                       g_assert (g_slist_length (key) == 2);
-                       g_assert_cmpstr (key->data, ==, "foo");
-                       g_assert_cmpstr (key->next->data, ==, "bar");
-                       data = tcore_object_ref_property (co, "foo");
-                       g_assert_cmpstr (data, ==, "1");
-                       data = tcore_object_ref_property (co, "bar");
-                       g_assert_cmpstr (data, ==, "2");
-                       break;
-
-               case 10:
-                       g_assert (g_slist_length (key) == 1);
-                       g_assert_cmpstr (key->data, ==, "foo");
-                       data = tcore_object_ref_property (co, "foo");
-                       g_assert (data == NULL);
-                       break;
-
-               case 11:
-                       g_assert (g_slist_length (key) == 2);
-                       g_assert (g_slist_find_custom (key, "foo",
-                                               (GCompareFunc)g_strcmp0) != NULL);
-                       g_assert (CORE_OBJECT_KEY_FIND(key, "bar") != NULL);
-                       data = tcore_object_ref_property (co, "foo");
-                       g_assert_cmpstr (data, ==, "1");
-                       data = tcore_object_ref_property (co, "bar");
-                       g_assert (data == NULL);
-                       break;
-
-               default:
-                       g_assert (FALSE);
-                       break;
+       case 1:
+               g_assert(g_slist_length(key) == 1);
+               g_assert_cmpstr(key->data, ==, "qqq");
+               data = tcore_object_ref_property(co, "qqq");
+               g_assert_cmpstr(data, ==, "1234");
+       break;
+
+       case 2:
+               g_assert(g_slist_length(key) == 1);
+               g_assert_cmpstr(key->data, ==, "qqq");
+               data = tcore_object_ref_property(co, "qqq");
+               g_assert(data == NULL);
+       break;
+
+       case 3:
+               g_assert(g_slist_length(key) == 1);
+               g_assert_cmpstr(key->data, ==, "www");
+               data = tcore_object_ref_property(co, "www");
+               g_assert_cmpstr(data, ==, "heap");
+       break;
+
+       case 4:
+               g_assert(g_slist_length(key) == 1);
+               g_assert_cmpstr(key->data, ==, "www");
+               data = tcore_object_ref_property(co, "www");
+               g_assert(data == NULL);
+       break;
+
+       case 5:
+               g_assert(g_slist_length(key) == 1);
+               g_assert_cmpstr(key->data, ==, "key");
+               data = tcore_object_ref_property(co, "key");
+               g_assert_cmpstr(data, ==, "1");
+       break;
+
+       case 6:
+               g_assert(g_slist_length(key) == 1);
+               g_assert_cmpstr(key->data, ==, "key");
+               data = tcore_object_ref_property(co, "key");
+               g_assert_cmpstr(data, ==, "2");
+       break;
+
+       case 7:
+               g_assert(FALSE);
+       break;
+
+       case 8:
+               g_assert(g_slist_length(key) == 1);
+               g_assert_cmpstr(key->data, ==, "key");
+               data = tcore_object_ref_property(co, "key");
+               g_assert_cmpstr(data, ==, "2");
+       break;
+
+       case 9:
+               g_assert(g_slist_length(key) == 2);
+               g_assert_cmpstr(key->data, ==, "foo");
+               g_assert_cmpstr(key->next->data, ==, "bar");
+               data = tcore_object_ref_property(co, "foo");
+               g_assert_cmpstr(data, ==, "1");
+               data = tcore_object_ref_property(co, "bar");
+               g_assert_cmpstr(data, ==, "2");
+       break;
+
+       case 10:
+               g_assert(g_slist_length(key) == 1);
+               g_assert_cmpstr(key->data, ==, "foo");
+               data = tcore_object_ref_property(co, "foo");
+               g_assert(data == NULL);
+       break;
+
+       case 11:
+               g_assert(g_slist_length(key) == 2);
+               g_assert(g_slist_find_custom(key, "foo",
+                                       (GCompareFunc)g_strcmp0) != NULL);
+               g_assert(CORE_OBJECT_KEY_FIND(key, "bar") != NULL);
+               data = tcore_object_ref_property(co, "foo");
+               g_assert_cmpstr(data, ==, "1");
+               data = tcore_object_ref_property(co, "bar");
+               g_assert(data == NULL);
+       break;
+
+       default:
+               g_assert(FALSE);
+       break;
        }
 
        /* Set flag to callback invocation success */
@@ -196,7 +196,7 @@ static gboolean on_prop_changed (CoreObject *co, const void *event_info,
        return TRUE;
 }
 
-static void test_property (void)
+static void test_property(void)
 {
        CoreObject *co;
        const char *data;
@@ -205,99 +205,99 @@ static void test_property (void)
        int mode = 0;
        GSList *tmp_list;
 
-       co = tcore_object_new (NULL, "test", NULL);
-       g_assert (co);
+       co = tcore_object_new(NULL, "test", NULL);
+       g_assert(co);
 
-       tcore_object_add_callback (co, CORE_OBJECT_EVENT_PROPERTY_CHANGED,
-                       on_prop_changed, &mode);
+       tcore_object_add_callback(co, CORE_OBJECT_EVENT_PROPERTY_CHANGED,
+               on_prop_changed, &mode);
 
-       raw = tcore_object_ref_property_hash (co);
-       g_assert (raw);
+       raw = tcore_object_ref_property_hash(co);
+       g_assert(raw);
 
        /* Case: Basic property set */
        mode = 1;
-       tcore_object_set_property (co, "qqq", "1234");
-       g_assert (g_hash_table_size (raw) == 1);
-       g_assert (mode == 0);
+       tcore_object_set_property(co, "qqq", "1234");
+       g_assert(g_hash_table_size(raw) == 1);
+       g_assert(mode == 0);
 
-       data = tcore_object_ref_property (co, "qqq");
+       data = tcore_object_ref_property(co, "qqq");
        g_assert_cmpstr(data, ==, "1234");
 
        /* Case: Basic property remove */
        mode = 2;
-       tcore_object_set_property (co, "qqq", NULL);
-       g_assert (g_hash_table_size (raw) == 0);
-       g_assert (mode == 0);
+       tcore_object_set_property(co, "qqq", NULL);
+       g_assert(g_hash_table_size(raw) == 0);
+       g_assert(mode == 0);
 
-       data = tcore_object_ref_property (co, "qqq");
-       g_assert (data == NULL);
+       data = tcore_object_ref_property(co, "qqq");
+       g_assert(data == NULL);
 
        /* Case: Malloc property set */
        mode = 3;
        test = strdup("heap");
-       tcore_object_set_property (co, "www", test);
-       g_assert (g_hash_table_size (raw) == 1);
-       g_assert (mode == 0);
+       tcore_object_set_property(co, "www", test);
+       g_assert(g_hash_table_size(raw) == 1);
+       g_assert(mode == 0);
        free(test);
 
-       data = tcore_object_ref_property (co, "www");
+       data = tcore_object_ref_property(co, "www");
        g_assert_cmpstr(data, ==, "heap");
 
        /* Case: Malloc property remove */
        mode = 4;
-       tcore_object_set_property (co, "www", NULL);
-       g_assert (g_hash_table_size (raw) == 0);
-       g_assert (mode == 0);
+       tcore_object_set_property(co, "www", NULL);
+       g_assert(g_hash_table_size(raw) == 0);
+       g_assert(mode == 0);
 
-       data = tcore_object_ref_property (co, "www");
-       g_assert (data == NULL);
+       data = tcore_object_ref_property(co, "www");
+       g_assert(data == NULL);
 
        /* Case: Same key & Different value set */
        mode = 5;
-       tcore_object_set_property (co, "key", "1");
-       g_assert (g_hash_table_size (raw) == 1);
-       g_assert (mode == 0);
+       tcore_object_set_property(co, "key", "1");
+       g_assert(g_hash_table_size(raw) == 1);
+       g_assert(mode == 0);
 
        mode = 6;
-       tcore_object_set_property (co, "key", "2");
-       g_assert (g_hash_table_size (raw) == 1);
-       g_assert (mode == 0);
+       tcore_object_set_property(co, "key", "2");
+       g_assert(g_hash_table_size(raw) == 1);
+       g_assert(mode == 0);
 
        /* Case: Same key & Same value set => No callback invocation */
        mode = 7;
-       tcore_object_set_property (co, "key", "2");
-       g_assert (g_hash_table_size (raw) == 1);
-       g_assert (mode == 7);
+       tcore_object_set_property(co, "key", "2");
+       g_assert(g_hash_table_size(raw) == 1);
+       g_assert(mode == 7);
 
        /* Case: Same key & Same value set & force event invocation */
        mode = 8;
-       tcore_object_set_property (co, "key", "2");
-       g_assert (g_hash_table_size (raw) == 1);
+       tcore_object_set_property(co, "key", "2");
+       g_assert(g_hash_table_size(raw) == 1);
 
-       tmp_list = g_slist_append (NULL, (char*)"key");
+       tmp_list = g_slist_append(NULL, (char *)"key");
        tcore_object_emit_callback(co, CORE_OBJECT_EVENT_PROPERTY_CHANGED, tmp_list);
-       g_assert (mode == 0);
+       g_assert(mode == 0);
        g_slist_free(tmp_list);
 
        /* Case: Multiple property set */
        mode = 9;
-       tcore_object_set_property (co, "foo", "1", "bar", "2");
-       g_assert (g_hash_table_size (raw) == 3);
-       g_assert (mode == 0);
+       tcore_object_set_property(co, "foo", "1", "bar", "2");
+       g_assert(g_hash_table_size(raw) == 3);
+       g_assert(mode == 0);
 
        /* Case: Set key without value => same as key with NULL: remove key */
        mode = 10;
-       tcore_object_set_property (co, "foo");
-       g_assert (g_hash_table_size (raw) == 2);
-       g_assert (mode == 0);
+       tcore_object_set_property(co, "foo");
+       g_assert(g_hash_table_size(raw) == 2);
+       g_assert(mode == 0);
 
        /* Case: Multiple property set with unset (foo set, bar unset) */
        mode = 11;
-       tcore_object_set_property (co, "foo", "1", "bar");
-       g_assert (g_hash_table_size (raw) == 2);
-       g_assert (mode == 0);
+       tcore_object_set_property(co, "foo", "1", "bar");
+       g_assert(g_hash_table_size(raw) == 2);
+       g_assert(mode == 0);
 
-       tcore_object_free (co);
+       tcore_object_free(co);
 }
 
 int main(int argc, char **argv)
index 5d6a3b0..927e58d 100644 (file)
@@ -36,7 +36,7 @@ static void test_7bit(void)
        /* pack 'hello' */
        dest = tcore_util_pack_gsm7bit((unsigned char *)"hello", strlen("hello"));
 
-       if(!dest){
+       if (dest) {
                g_assert(memcmp(packed, dest, strlen((char *)dest)) == 0);
                free(dest);
        }
index 28f3af8..a6b1182 100644 (file)
@@ -18,52 +18,52 @@ static void test_operator(void)
        struct tcore_network_operator_info *tmp_noi;
        TReturn ret;
 
-       p = tcore_plugin_new (NULL, NULL, NULL, NULL);
-       g_assert (p);
+       p = tcore_plugin_new(NULL, NULL, NULL, NULL);
+       g_assert(p);
 
-       o = tcore_network_new (p, "test_network", NULL, NULL);
-       g_assert (o);
+       o = tcore_network_new(p, "test_network", NULL, NULL);
+       g_assert(o);
 
        /* Add 2 items */
-       snprintf (noi.mcc, 4, "123");
-       snprintf (noi.mnc, 4, "01");
-       snprintf (noi.name, 41, "Hello");
-       ret = tcore_network_operator_info_add (o, &noi);
-       g_assert (ret == TCORE_RETURN_SUCCESS);
-
-       snprintf (noi.mcc, 4, "123");
-       snprintf (noi.mnc, 4, "02");
-       snprintf (noi.name, 41, "World");
-       ret = tcore_network_operator_info_add (o, &noi);
-       g_assert (ret == TCORE_RETURN_SUCCESS);
+       snprintf(noi.mcc, 4, "123");
+       snprintf(noi.mnc, 4, "01");
+       snprintf(noi.name, 41, "Hello");
+       ret = tcore_network_operator_info_add(o, &noi);
+       g_assert(ret == TCORE_RETURN_SUCCESS);
+
+       snprintf(noi.mcc, 4, "123");
+       snprintf(noi.mnc, 4, "02");
+       snprintf(noi.name, 41, "World");
+       ret = tcore_network_operator_info_add(o, &noi);
+       g_assert(ret == TCORE_RETURN_SUCCESS);
 
        /* Check items */
-       tmp_noi = tcore_network_operator_info_find (o, "123", "01");
-       g_assert (tmp_noi);
-       g_assert_cmpstr (tmp_noi->name, ==, "Hello");
+       tmp_noi = tcore_network_operator_info_find(o, "123", "01");
+       g_assert(tmp_noi);
+       g_assert_cmpstr(tmp_noi->name, ==, "Hello");
 
-       tmp_noi = tcore_network_operator_info_find (o, "123", "02");
-       g_assert (tmp_noi);
-       g_assert_cmpstr (tmp_noi->name, ==, "World");
+       tmp_noi = tcore_network_operator_info_find(o, "123", "02");
+       g_assert(tmp_noi);
+       g_assert_cmpstr(tmp_noi->name, ==, "World");
 
        /* Replace item */
-       snprintf (noi.mcc, 4, "123");
-       snprintf (noi.mnc, 4, "02");
-       snprintf (noi.name, 41, "Update");
-       ret = tcore_network_operator_info_add (o, &noi);
-       g_assert (ret == TCORE_RETURN_SUCCESS);
+       snprintf(noi.mcc, 4, "123");
+       snprintf(noi.mnc, 4, "02");
+       snprintf(noi.name, 41, "Update");
+       ret = tcore_network_operator_info_add(o, &noi);
+       g_assert(ret == TCORE_RETURN_SUCCESS);
 
        /* Check items */
-       tmp_noi = tcore_network_operator_info_find (o, "123", "01");
-       g_assert (tmp_noi);
-       g_assert_cmpstr (tmp_noi->name, ==, "Hello");
+       tmp_noi = tcore_network_operator_info_find(o, "123", "01");
+       g_assert(tmp_noi);
+       g_assert_cmpstr(tmp_noi->name, ==, "Hello");
 
-       tmp_noi = tcore_network_operator_info_find (o, "123", "02");
-       g_assert (tmp_noi);
-       g_assert_cmpstr (tmp_noi->name, ==, "Update");
+       tmp_noi = tcore_network_operator_info_find(o, "123", "02");
+       g_assert(tmp_noi);
+       g_assert_cmpstr(tmp_noi->name, ==, "Update");
 
-       tcore_network_free (o);
-       tcore_plugin_free (p);
+       tcore_network_free(o);
+       tcore_plugin_free(p);
 }
 
 int main(int argc, char **argv)
index 153fb8d..47edd35 100644 (file)
@@ -13,18 +13,18 @@ static void test_marshal(void)
        GHashTable *list;
        int value_int;
 
-       list = tcore_util_marshal_create ();
+       list = tcore_util_marshal_create();
        g_assert(list);
 
        value_int = 1;
-       tcore_util_marshal_add_data (list, "key1", &value_int, TCORE_UTIL_MARSHAL_DATA_INT_TYPE);
-       g_assert(tcore_util_marshal_get_int (list, "key1") == value_int);
+       tcore_util_marshal_add_data(list, "key1", &value_int, TCORE_UTIL_MARSHAL_DATA_INT_TYPE);
+       g_assert(tcore_util_marshal_get_int(list, "key1") == value_int);
 
        value_int = 2;
-       tcore_util_marshal_add_data (list, "key2", &value_int, TCORE_UTIL_MARSHAL_DATA_INT_TYPE);
-       g_assert(tcore_util_marshal_get_int (list, "key2") == value_int);
+       tcore_util_marshal_add_data(list, "key2", &value_int, TCORE_UTIL_MARSHAL_DATA_INT_TYPE);
+       g_assert(tcore_util_marshal_get_int(list, "key2") == value_int);
 
-       tcore_util_marshal_destory (list);
+       tcore_util_marshal_destory(list);
 }
 
 static void test_marshal_serialize(void)
@@ -37,53 +37,53 @@ static void test_marshal_serialize(void)
        char buf[255];
        int value_int;
 
-       list = tcore_util_marshal_create ();
+       list = tcore_util_marshal_create();
        g_assert(list);
 
        value_int = 1;
-       tcore_util_marshal_add_data (list, "key1", &value_int, TCORE_UTIL_MARSHAL_DATA_INT_TYPE);
-       g_assert(tcore_util_marshal_get_int (list, "key1") == value_int);
+       tcore_util_marshal_add_data(list, "key1", &value_int, TCORE_UTIL_MARSHAL_DATA_INT_TYPE);
+       g_assert(tcore_util_marshal_get_int(list, "key1") == value_int);
 
        value_int = 2;
-       tcore_util_marshal_add_data (list, "key2", &value_int, TCORE_UTIL_MARSHAL_DATA_INT_TYPE);
-       g_assert(tcore_util_marshal_get_int (list, "key2") == value_int);
+       tcore_util_marshal_add_data(list, "key2", &value_int, TCORE_UTIL_MARSHAL_DATA_INT_TYPE);
+       g_assert(tcore_util_marshal_get_int(list, "key2") == value_int);
 
-       item = tcore_util_marshal_create ();
-       g_assert (item);
-       tcore_util_marshal_add_data (list, "key_object", item, TCORE_UTIL_MARSHAL_DATA_OBJECT_TYPE);
+       item = tcore_util_marshal_create();
+       g_assert(item);
+       tcore_util_marshal_add_data(list, "key_object", item, TCORE_UTIL_MARSHAL_DATA_OBJECT_TYPE);
 
        for (i = 0; i < 3; i++) {
-               item = tcore_util_marshal_create ();
-               g_assert (item);
+               item = tcore_util_marshal_create();
+               g_assert(item);
 
                value_int = i * 10;
-               snprintf (buf, 255, "sub-%d", i);
-               tcore_util_marshal_add_data (item, buf, &value_int, TCORE_UTIL_MARSHAL_DATA_INT_TYPE);
-               g_assert(tcore_util_marshal_get_int (item, buf) == value_int);
+               snprintf(buf, 255, "sub-%d", i);
+               tcore_util_marshal_add_data(item, buf, &value_int, TCORE_UTIL_MARSHAL_DATA_INT_TYPE);
+               g_assert(tcore_util_marshal_get_int(item, buf) == value_int);
 
-               tcore_util_marshal_add_data (list, buf, item, TCORE_UTIL_MARSHAL_DATA_OBJECT_TYPE);
+               tcore_util_marshal_add_data(list, buf, item, TCORE_UTIL_MARSHAL_DATA_OBJECT_TYPE);
        }
 
-       serialized = tcore_util_marshal_serialize (list);
-       g_assert (serialized);
-       tcore_util_marshal_destory (list);
+       serialized = tcore_util_marshal_serialize(list);
+       g_assert(serialized);
+       tcore_util_marshal_destory(list);
 
-       tmp = tcore_util_marshal_deserialize_string (serialized);
-       g_assert (tmp);
+       tmp = tcore_util_marshal_deserialize_string(serialized);
+       g_assert(tmp);
 
-       free (serialized);
+       free(serialized);
 
-       g_assert(tcore_util_marshal_get_int (tmp, "key1") == 1);
-       g_assert(tcore_util_marshal_get_int (tmp, "key2") == 2);
+       g_assert(tcore_util_marshal_get_int(tmp, "key1") == 1);
+       g_assert(tcore_util_marshal_get_int(tmp, "key2") == 2);
 
-       tcore_util_marshal_destory (tmp);
+       tcore_util_marshal_destory(tmp);
 }
 
 int main(int argc, char **argv)
 {
        g_test_init(&argc, &argv, NULL);
 
-#if !GLIB_CHECK_VERSION(2,35,0)
+#if !GLIB_CHECK_VERSION(2, 35, 0)
        g_type_init();
 #endif