sim: add qser_sim_addrxmsghandler api

Change-Id: I2e222074b6a715ad16f03717aecb9417e52989bd
diff --git a/mbtk/liblynq_lib/src/lynq_sim.c b/mbtk/liblynq_lib/src/lynq_sim.c
index 13040eb..7a45479 100755
--- a/mbtk/liblynq_lib/src/lynq_sim.c
+++ b/mbtk/liblynq_lib/src/lynq_sim.c
@@ -12,18 +12,48 @@
 extern int qser_info_handle_num;
 static bool inited = FALSE;
 static uint qser_h_sim = 0x5F6F7F8F;
+static QSER_SIM_RxMsgHandlerFunc_t qser_sim_state_cb = NULL;
+static bool qser_sim_cb_state = false;
 /****************************VARIABLE***************************************/
 
 /******************************FUNC*****************************************/
+void qser_sim_state_change_cb(const void* data, int data_len)
+{
+    uint8 *ptr = (uint8*)data;
+    LOGE("SIM state : %d\n", *ptr);
+    QSER_SIM_CARD_STATUS_INFO_T qser_sim_statue = {0};
+    if(*ptr == 0)
+    {
+        qser_sim_statue.e_card_state = QSER_SIM_CARD_STATE_ABSENT;
+    }
+    else if(*ptr == 1)
+    {
+        qser_sim_statue.e_card_state = QSER_SIM_CARD_STATE_PRESENT;
+    }
+    else if(*ptr == 18)
+    {
+        qser_sim_statue.e_card_state = QSER_SIM_CARD_STATE_ABSENT;
+    }
+    else
+    {
+        qser_sim_statue.e_card_state = QSER_SIM_CARD_STATE_UNKNOWN;
+    }
+    if(qser_sim_state_cb != NULL)
+    {
+        qser_sim_state_cb(&qser_sim_statue);
+    }
+}
+
 /******************************FUNC*****************************************/
 
 /****************************API***************************************/
 int qser_sim_client_init(sim_client_handle_type *ph_sim)
 {
     //UNUSED(ph_sim);
+    mbtk_log_init("radio", "QSER_SIM");
     if(ph_sim == NULL)
     {
-        LOGE("[qser_data_call] ph_sim is NULL.");
+        LOGE("ph_sim is NULL.");
         return QSER_RESULT_FAIL;
     }
 
@@ -38,7 +68,7 @@
         } 
         else
         {
-            LOGE("[qser_data_call] mbtk_info_handle_get() fail.");
+            LOGE("mbtk_info_handle_get() fail.");
             return QSER_RESULT_FAIL;
         }
     }
@@ -53,7 +83,7 @@
     }
     *ph_sim = qser_h_sim;
 
-    LOGE("[qser_data_call] mbtk_info_handle_get() success.");
+    LOGE("mbtk_info_handle_get() success.");
     return QSER_RESULT_SUCCESS;
 }
 
@@ -66,19 +96,19 @@
 
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     if(imsi == NULL || imsiLen < 15)
     {
-        LOGE("[qser_data_call] imsi is NULL.");
+        LOGE("imsi is NULL.");
         return QSER_RESULT_FAIL;
     }
 
@@ -86,13 +116,13 @@
     int err = mbtk_imsi_get(qser_info_handle, imsi);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_imsi_get is fail.");
+        LOGE("mbtk_imsi_get is fail.");
         return QSER_RESULT_FAIL;
     }
 
     if(strlen(imsi) > imsiLen)
     {
-        LOGE("[qser_data_call] get datalength out of range.");
+        LOGE("get datalength out of range.");
         return QSER_RESULT_FAIL;
     }
 
@@ -108,19 +138,19 @@
 
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     if(iccid == NULL || iccidLen < QSER_SIM_ICCID_LEN_MAX)
     {
-        LOGE("[qser_data_call] iccid is NULL.");
+        LOGE("iccid is NULL.");
         return QSER_RESULT_FAIL;
     }
 
@@ -128,13 +158,13 @@
     int err = mbtk_iccid_get(qser_info_handle, iccid);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_iccid_get is fail.");
+        LOGE("mbtk_iccid_get is fail.");
         return QSER_RESULT_FAIL;
     }
 
     if(strlen(iccid) > iccidLen)
     {
-        LOGE("[qser_data_call] get datalength out of range.");
+        LOGE("get datalength out of range.");
         return QSER_RESULT_FAIL;
     }
     
@@ -150,19 +180,19 @@
 
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     if(phone_num == NULL || phoneLen < 11)
     {
-        LOGE("[qser_data_call] phone_num is NULL.");
+        LOGE("phone_num is NULL.");
         return QSER_RESULT_FAIL;
     }
 
@@ -170,13 +200,13 @@
     int err = mbtk_phone_number_get(qser_info_handle, phone_num);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_phone_number_get is fail.");
+        LOGE("mbtk_phone_number_get is fail.");
         return QSER_RESULT_FAIL;
     }
 
     if(strlen(phone_num) > phoneLen)
     {
-        LOGE("[qser_data_call] get datalength out of range.");
+        LOGE("get datalength out of range.");
         return QSER_RESULT_FAIL;
     }
 
@@ -190,26 +220,26 @@
 
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     if(pt_info == NULL)
     {
-        LOGE("[qser_data_call] pt_info is NULL.");
+        LOGE("pt_info is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     int err = mbtk_verify_pin(qser_info_handle, pt_info->pin_value);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_verify_pin is fail.");
+        LOGE("mbtk_verify_pin is fail.");
         return QSER_RESULT_FAIL;
     }
     
@@ -223,19 +253,19 @@
 
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     if(pt_info == NULL)
     {
-        LOGE("[qser_data_call] pt_info is NULL.");
+        LOGE("pt_info is NULL.");
         return QSER_RESULT_FAIL;
     }
 
@@ -245,7 +275,7 @@
     int err = mbtk_change_pin(qser_info_handle, &pin_info);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_change_pin is fail.");
+        LOGE("mbtk_change_pin is fail.");
         return QSER_RESULT_FAIL;
     }
     
@@ -259,19 +289,19 @@
 
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     if(pt_info == NULL)
     {
-        LOGE("[qser_data_call] pt_info is NULL.");
+        LOGE("pt_info is NULL.");
         return QSER_RESULT_FAIL;
     }
 
@@ -281,7 +311,7 @@
     int err = mbtk_unlock_pin(qser_info_handle, &puk_pin_info);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_unlock_pin is fail.");
+        LOGE("mbtk_unlock_pin is fail.");
         return QSER_RESULT_FAIL;
     }
 
@@ -295,19 +325,19 @@
 
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     if(pt_info == NULL)
     {
-        LOGE("[qser_data_call] pt_info is NULL.");
+        LOGE("pt_info is NULL.");
         return QSER_RESULT_FAIL;
     }
 
@@ -317,7 +347,7 @@
     int err = mbtk_enable_pin(qser_info_handle, &pin_info);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_enable_pin is fail.");
+        LOGE("mbtk_enable_pin is fail.");
         return QSER_RESULT_FAIL;
     }
     
@@ -331,19 +361,19 @@
 
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     if(pt_info == NULL)
     {
-        LOGE("[qser_data_call] pt_info is NULL.");
+        LOGE("pt_info is NULL.");
         return QSER_RESULT_FAIL;
     }
 
@@ -353,7 +383,7 @@
     int err = mbtk_enable_pin(qser_info_handle, &pin_info);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_enable_pin is fail.");
+        LOGE("mbtk_enable_pin is fail.");
         return QSER_RESULT_FAIL;
     }
     
@@ -368,19 +398,19 @@
 
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     if(pt_info == NULL)
     {
-        LOGE("[qser_data_call] pt_info is NULL.");
+        LOGE("pt_info is NULL.");
         return QSER_RESULT_FAIL;
     }
 
@@ -390,12 +420,12 @@
     int err = mbtk_sim_state_get(qser_info_handle, &sim);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_sim_state_get fail [err = %d].", err);
+        LOGE("mbtk_sim_state_get fail [err = %d].", err);
         return QSER_RESULT_FAIL;
     }
     else
     {
-        LOGE("[qser_data_call] sim = %d.", sim);
+        LOGE("sim = %d.", sim);
         memset(pt_info, 0x0, sizeof(QSER_SIM_CARD_STATUS_INFO_T));
         switch (sim)
         {
@@ -426,7 +456,7 @@
     err = mbtk_sim_card_type_get(qser_info_handle, &sim_card_type);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_sim_state_get fail [err = %d].", err);
+        LOGE("mbtk_sim_state_get fail [err = %d].", err);
         return QSER_RESULT_FAIL;
     }
     else
@@ -442,7 +472,7 @@
     err = mbtk_pin_last_num_get(qser_info_handle, &qser_last_times);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_sim_state_get fail [err = %d].", err);
+        LOGE("mbtk_sim_state_get fail [err = %d].", err);
         return QSER_RESULT_FAIL;
     }
     else
@@ -463,26 +493,26 @@
 
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     if(imei == NULL)
     {
-        LOGE("[qser_data_call] imei is NULL.");
+        LOGE("imei is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     int err = mbtk_imei_get(qser_info_handle, imei);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_imei_get Error : %d\n", err);
+        LOGE("mbtk_imei_get Error : %d\n", err);
         return QSER_RESULT_FAIL;
     }
     return QSER_RESULT_SUCCESS;
@@ -495,19 +525,19 @@
     //UNUSED(sv);
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     if(imei == NULL || sv == NULL)
     {
-        LOGE("[qser_data_call] param is NULL.");
+        LOGE("param is NULL.");
         return QSER_RESULT_FAIL;
     }
 
@@ -515,7 +545,7 @@
     int err = mbtk_imei_get(qser_info_handle, imei);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_imei_get Error: %d\n", err);
+        LOGE("mbtk_imei_get Error: %d\n", err);
         return QSER_RESULT_FAIL;
     }
 
@@ -531,13 +561,13 @@
 
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
@@ -548,7 +578,7 @@
     int err = mbtk_set_modem_fun(qser_info_handle, &info);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_set_modem_fun Error : %d\n", err);
+        LOGE("mbtk_set_modem_fun Error : %d\n", err);
         return QSER_RESULT_FAIL;
     }
 
@@ -556,7 +586,7 @@
     err = mbtk_set_modem_fun(qser_info_handle, &info);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_set_modem_fun Error : %d\n", err);
+        LOGE("mbtk_set_modem_fun Error : %d\n", err);
         return QSER_RESULT_FAIL;
     }
     return QSER_RESULT_SUCCESS;
@@ -569,26 +599,26 @@
 
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     if(buf == NULL)
     {
-        LOGE("[qser_data_call] buf is NULL.");
+        LOGE("buf is NULL.");
         return QSER_RESULT_FAIL;
     }
 
     int err = mbtk_version_get(qser_info_handle, buf);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_version_get Error : %d\n", err);
+        LOGE("mbtk_version_get Error : %d\n", err);
         return QSER_RESULT_FAIL;
     }
     return QSER_RESULT_SUCCESS;
@@ -600,13 +630,13 @@
 
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
 
     if(qser_info_handle == NULL)
     {
-        LOGE("[qser_data_call] handle is NULL.");
+        LOGE("handle is NULL.");
         return QSER_RESULT_FAIL;
     }
 
@@ -619,7 +649,7 @@
     int err = mbtk_set_modem_fun(qser_info_handle, &info);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_set_modem_fun Error : %d\n", err);
+        LOGE("mbtk_set_modem_fun Error : %d\n", err);
         return QSER_RESULT_FAIL;
     }
 
@@ -627,18 +657,49 @@
     err = mbtk_set_modem_fun(qser_info_handle, &info);
     if(err)
     {
-        LOGE("[qser_data_call] mbtk_set_modem_fun Error : %d\n", err);
+        LOGE("mbtk_set_modem_fun Error : %d\n", err);
         return QSER_RESULT_FAIL;
     }
     return QSER_RESULT_SUCCESS;
 }
 
+int qser_sim_addrxmsghandler(QSER_SIM_RxMsgHandlerFunc_t handlerPtr)
+{
+    if(qser_info_handle == NULL)
+    {
+        LOGE("handle is NULL.");
+        return QSER_RESULT_FAIL;
+    }
+
+    if(handlerPtr == NULL)
+    {
+        LOGE("param is NULL.");
+        qser_sim_state_cb = NULL;
+        return QSER_RESULT_SUCCESS;
+    }
+
+    qser_sim_state_cb = handlerPtr;
+    if(!qser_sim_cb_state)
+    {
+        int ret = mbtk_sim_state_change_cb_reg(qser_info_handle, qser_sim_state_change_cb);
+        if(ret != 0)
+        {
+            LOGE("set cb fail.");
+            qser_sim_state_cb = NULL;
+            return QSER_RESULT_FAIL;
+        }
+    }
+
+    return QSER_RESULT_SUCCESS;
+}
+
+
 int qser_sim_client_deinit(sim_client_handle_type h_sim)
 {
     //UNUSED(h_sim);
     if(h_sim != qser_h_sim)
     {
-        LOGE("[qser_data_call] h_sim is error.");
+        LOGE("h_sim is error.");
         return QSER_RESULT_FAIL;
     }
     
@@ -650,24 +711,26 @@
             int ret = mbtk_info_handle_free(&qser_info_handle);
             if(ret)
             {
-                LOGE("[qser_data_call] mbtk_info_handle_free() fail.");
+                LOGE("mbtk_info_handle_free() fail.");
                 return QSER_RESULT_FAIL;
             }
             else
             {
                 qser_info_handle_num = 0;
                 qser_info_handle = NULL;
+                qser_sim_state_cb = NULL;
                 inited = FALSE;
             }
         } 
         else
         {
             qser_info_handle_num--;
+            qser_sim_state_cb = NULL;
         }
     }
     else
     {
-        LOGE("[qser_data_call] handle not inited.");
+        LOGE("handle not inited.");
         return QSER_RESULT_FAIL;
     }