[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)