diff --git a/mbtk/libgsw_lib/gsw_sms_interface.c b/mbtk/libgsw_lib/gsw_sms_interface.c
index 70a85eb..7868891 100755
--- a/mbtk/libgsw_lib/gsw_sms_interface.c
+++ b/mbtk/libgsw_lib/gsw_sms_interface.c
@@ -304,6 +304,7 @@
             if (current_time - g_sms_reassemblers[i].last_received > SMS_TIMEOUT)
             {
                 // 清理超时重组器
+                LOGE("start clean reassembler\n");
                 for (int j = 0; j < g_sms_reassemblers[i].total_segments; j++)
                 {
                     if (g_sms_reassemblers[i].segments[j])
@@ -316,6 +317,7 @@
             }
             else if (strcmp(g_sms_reassemblers[i].msg_id, msg_id) == 0)
             {
+                LOGE("start clean reassembler2\n");
                 g_sms_reassemblers[i].last_received = current_time;
                 return &g_sms_reassemblers[i];
             }
@@ -331,7 +333,7 @@
             g_sms_reassemblers[i].total_segments = total_segments;
             g_sms_reassemblers[i].received_count = 0;
             g_sms_reassemblers[i].last_received = current_time;
-            
+            LOGE("start create reassembler\n");
             // 分配分片数组内存
             g_sms_reassemblers[i].segments = calloc(total_segments, sizeof(char*));
             if (!g_sms_reassemblers[i].segments)
@@ -352,6 +354,7 @@
 // 重组短信
 static char* reassemble_sms(SmsReassembler* reassembler)
 {
+    LOGE(GSW_SMS, "start real reassemble_sms\n");
     size_t total_len = 0;
     for (int i = 0; i < reassembler->total_segments; i++)
     {
@@ -507,7 +510,7 @@
                     snprintf((char *)gsw_sms_date.timezone, sizeof(gsw_sms_date.timezone), "%s", "+8");
                     
                     if (gsw_sms_callback)
-                        gsw_sms_callback(GSW_SMS_FULL_FLG, &gsw_sms_msg);
+                        gsw_sms_callback(GSW_SMS_RECEIVED_FLG, &gsw_sms_msg);
                     
                     free(full_msg);
                 }
@@ -528,7 +531,7 @@
             }
         }
         else
-            gsw_sms_callback(GSW_SMS_FULL_FLG, &gsw_sms_msg);
+            gsw_sms_callback(GSW_SMS_RECEIVED_FLG, &gsw_sms_msg);
     }
 }
 
