[Bugfix][T108][bug-view-2122]Fix the issue of not receiving 8-bit long short-messages --4

Only Configure: No
Affected branch: GSW_V1453
Affected module: sms
Is it affected on IC: only ASR
Self-test: yes
Doc Update: no

Change-Id: Ib3f771b9d560f4de7504345677188032c4dd9f8b
diff --git a/mbtk/libgsw_lib/gsw_sms_interface.c b/mbtk/libgsw_lib/gsw_sms_interface.c
index a99f73f..8d38568 100755
--- a/mbtk/libgsw_lib/gsw_sms_interface.c
+++ b/mbtk/libgsw_lib/gsw_sms_interface.c
@@ -143,7 +143,7 @@
 // static void (*mbtk_log)(int level, const char *format, ...);
 // static void (*mbtk_log_init)(char *path, char *tag);
 int (*smsPduEncode)(const char *smsc, const char *da_num, const char *msg, int charset, char *smsc_pdu, char **pdu);
-int (*smsPduDecode)(const char *pdu_str, int pdu_len, char *da_num, char *smsc, char *msg, int *charset, int *curr_pack, int *total_pack, char *date);
+int (*smsPduDecode)(const char *pdu_str, int pdu_len, char *da_num, char *smsc, char *msg, int *charset, int *curr_pack, int *total_pack, char *date, int *ref_num);
 kal_int32 (*_mdapi_sms_get_msg_num)(const char *msg, int charset, kal_int32 *msg_num, kal_int32 *msg_len);
 
 #define GSW_SMS "[HAL][GSW_SMS]"
@@ -266,7 +266,7 @@
     }
 
     
-    smsPduDecode = (int (*)(const char *pdu_str, int pdu_len, char *da_num, char *smsc, char *msg, int *charset, int *curr_pack, int *total_pack, char *date))dlsym(dlHandle_mbtk,"smsPduDecode");
+    smsPduDecode = (int (*)(const char *pdu_str, int pdu_len, char *da_num, char *smsc, char *msg, int *charset, int *curr_pack, int *total_pack, char *date, int *ref_num))dlsym(dlHandle_mbtk,"smsPduDecode");
     if (smsPduDecode == NULL) 
     {
         LOGE(GSW_SMS,"smsPduDecode dlsym fail\n");
@@ -284,16 +284,16 @@
 
 }
 
-static void generate_sms_id(char* dest, const char* num, const char* date) {
-    snprintf(dest, 64, "%.30s_%.30s", num, date);
+static void generate_sms_id(char* dest, const char* num, int ref_num) {
+    snprintf(dest, 64, "%.30s_%d", num, ref_num);
 }
 
 // 查找或创建短信重组器
-static SmsReassembler* get_sms_reassembler(const char* num, const char* date, int total_segments)
+static SmsReassembler* get_sms_reassembler(const char* num, int ref_num, int total_segments)
 {
     char msg_id[64];
-    generate_sms_id(msg_id, num, date);
-    
+    generate_sms_id(msg_id, num, ref_num);
+    LOGE(GSW_SMS,"msg_id:%s\n",msg_id);
     time_t current_time = time(NULL);
     
     for (int i = 0; i < MAX_SMS_REASSEMBLERS; i++)
@@ -422,6 +422,7 @@
     int ret = -1;
     int curr_pack = 1;
     int total_pack = 1;
+    int ref_num = 0;
     if(ptr == NULL)
     {
         LOGE(GSW_SMS,"ptr is null");
@@ -435,7 +436,7 @@
     {
         strncpy(received_pdu, (const char *)ptr, data_len);
     }
-    ret = smsPduDecode((const char *)received_pdu, data_len, num, smsc, msg, &charset, &curr_pack, &total_pack,date);
+    ret = smsPduDecode((const char *)received_pdu, data_len, num, smsc, msg, &charset, &curr_pack, &total_pack, date,&ref_num);
     if(ret != 0)
     {
         LOGE(GSW_SMS,"smsPduDecode fail\n");
@@ -471,7 +472,7 @@
     {
         if(total_pack > 1)
         {
-            SmsReassembler* reassembler = get_sms_reassembler(num, date, total_pack);
+            SmsReassembler* reassembler = get_sms_reassembler(num, ref_num, total_pack);
             if (!reassembler)
             {
                 LOGE(GSW_SMS, "Failed to get SMS reassembler");
@@ -489,15 +490,16 @@
                     return;
                 }
                 reassembler->received_count++;
+                LOGE(GSW_SMS, "seg_index:%d\n",reassembler->received_count);
             }
-    
+            LOGE(GSW_SMS, "seg_index:%d\n",seg_index);
             // 检查是否所有分片都已接收
             if (reassembler->received_count == reassembler->total_segments)
             {
                 char* full_msg = reassemble_sms(reassembler);
                 if (full_msg)
                 {
-                    
+                    LOGE(GSW_SMS, "total_segments:%d\n",reassembler->received_count);
                     gsw_sms_msg.content_encode = charset;
                     strncpy(gsw_sms_msg.src_num, num, sizeof(gsw_sms_msg.src_num) - 1);
                     gsw_sms_msg.content_len = strlen(full_msg);
@@ -506,7 +508,7 @@
                                     gsw_sms_msg.content_len : sizeof(gsw_sms_msg.content) - 1;
                     strncpy(gsw_sms_msg.content, full_msg, copy_size);
                     gsw_sms_msg.content[copy_size] = '\0';
-                    
+                    LOGE(GSW_SMS, "gsw_sms_msg:%s\n",gsw_sms_msg.content);
                     snprintf((char *)gsw_sms_date.timezone, sizeof(gsw_sms_date.timezone), "%s", "+8");
                     
                     if (gsw_sms_callback)