[Feature][T106][task-view-625]Add API for Checking whether the SMS database is full

Only Configure :No
Affected branch: master
Affected module: sms
Is it affected on both ZXIC and MTK:only ZXIC
Self-test: Yes
Doc Update: No

Change-Id: Icfda70f5a6fe4da4114576138d4d52825334ef85
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/commands.h b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/commands.h
index 8e74197..a4a872a 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/commands.h
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/commands.h
@@ -207,6 +207,9 @@
     {"LYNQ_REQUEST_CHANGE_RADIO",setRadioPower,"setRadioPower",LYNQ_REQUEST_CHANGE_RADIO},/*lei add for both radio on/off */
     {"LYNQ_REQUEST_CHANGE_SLEEP_STATE",getSleepState,"lynq get Sleep State",LYNQ_REQUEST_CHANGE_SLEEP_STATE},/*jb.qi change for suspend 2024/2/23 */
     /*Warren change for t800 ril service 2022/1/18 end*/
+    /*cz.li change for t106 ril service 2024/11/06 start*/
+    {"LYNQ_REQUEST_GET_SMSDATABASE_STATE",getsmsDatabasestatus,"lynq get smsdatabase State",LYNQ_REQUEST_GET_SMSDATABASE_STATE},
+    /*cz.li change for t106 ril service 2024/11/06 start*/
 
     #ifdef C2K_SUPPORT
     {"RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG",getCdmaBroadcastConfig, "get broadcast config",RIL_REQUEST_CDMA_GET_BROADCAST_SMS_CONFIG},
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_interface.h b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_interface.h
index db8e782..2a4f339 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_interface.h
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/lynq_interface.h
@@ -24,6 +24,7 @@
 #define LYNQ_REQUEST_CHANGE_SCREEN_STATE (LYNQ_REQUEST_VENDOR_BASE + 14)/*jb.qi add for two sim suspend 2022/9/19*/
 #define LYNQ_REQUEST_CHANGE_RADIO (LYNQ_REQUEST_VENDOR_BASE + 15)
 #define LYNQ_REQUEST_CHANGE_SLEEP_STATE (LYNQ_REQUEST_VENDOR_BASE + 16)/*jb.qi change for suspend 2024/2/23 start*/
+#define LYNQ_REQUEST_GET_SMSDATABASE_STATE (LYNQ_REQUEST_VENDOR_BASE + 17)
 #define LYNQ_REQUEST_SET_VOICE_AUDIO_MODE (LYNQ_REQUEST_VENDOR_BASE + 28)
 #define LYNQ_REQUEST_GET_VOICE_AUDIO_MODE (LYNQ_REQUEST_VENDOR_BASE + 21)
 
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp
index 19b2854..0899cbf 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/ril.cpp
@@ -5337,6 +5337,7 @@
         case RIL_REQUEST_GET_MSISDN:return "RIL_REQUEST_GET_MSISDN";
         case RIL_REQUEST_RESET_SIMCARD:return "RIL_REQUEST_RESET_SIMCARD";
         case LYNQ_REQUEST_CHANGE_SLEEP_STATE: return "LYNQ_REQUEST_CHANGE_SLEEP_STATE";/*jb.qi change for suspend 2024/2/23 */
+        case LYNQ_REQUEST_GET_SMSDATABASE_STATE: return "LYNQ_REQUEST_GET_SMSDATABASE_STATE";
         /*warren add for t800 ril service 2022/1/22 end*/
         default: return "<unknown request>";
     }
@@ -5607,6 +5608,7 @@
         case LYNQ_REQUEST_CHANGE_SCREEN_STATE:return "LYNQ_REQUEST_CHANGE_SCREEN_STATE";/*jb.qi add for two sim sleep 2022/9/19*/
         case LYNQ_REQUEST_CHANGE_RADIO:return "LYNQ_REQUEST_CHANGE_RADIO";/*lei add for factory test of sleep 2022/9/19*/
         case LYNQ_REQUEST_CHANGE_SLEEP_STATE:return "LYNQ_REQUEST_CHANGE_SLEEP_STATE";/*jb.qi add for two sim sleep 2022/9/19*/
+        case LYNQ_REQUEST_GET_SMSDATABASE_STATE: return "LYNQ_REQUEST_GET_SMSDATABASE_STATE";
         case RIL_REQUEST_GET_MSISDN: return "GET MSISDN";
         case RIL_REQUEST_RESET_SIMCARD: return "RESET SIMCARD";
         /*warren add for t800 ril service 2022/1/22 end*/
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/lynqSmsManager/lynq_sms_manager.cpp b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/lynqSmsManager/lynq_sms_manager.cpp
index 95b5d13..5493846 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/lynqSmsManager/lynq_sms_manager.cpp
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/lynqSmsManager/lynq_sms_manager.cpp
@@ -174,26 +174,37 @@
             break;

         }

     }

-    if((!sms_usable)&&(count==LYNQ_MAX_SMS_LIST))

+    if((!sms_usable)&&(count > LYNQ_MAX_SMS_LIST))

     {

        set_sms_full(true);

     }

     sqlite3_close(smsDb);

     return count;

 }

-int sms_manager::lynq_write_sms_to_memory(const char* data,const char *num,const char *smsc,const char *msg,const int charset,const int slot_id,int current,int total)

+

+int sms_manager::lynq_check_sms_full()

 {

     int id = find_unuse_sms_index(SMS_DB_PATH);

     RLOGD("[%s] id = %d\n",__FUNCTION__,id);

-    //lynq_sms_list_t * sms_list = (lynq_sms_list_t * )malloc(sizeof(lynq_sms_list_t *));

     if(!get_sms_full())

     {

+        return id;

+    }

+    LYERRLOG("sms storage space is full!!!");

+    return -1;

+}

+

+int sms_manager::lynq_write_sms_to_memory(const char* data,const char *num,const char *smsc,const char *msg,const int charset,const int slot_id,int current,int total)

+{

+    int id = lynq_check_sms_full();

+    if(id > 0)

+    {

         RLOGD("[%s] sms full is false\n",__FUNCTION__);

         lynq_write_sms_to_sms_db(id, slot_id,0,smsc, charset,data,msg,SMS_DB_PATH,num,current,total);

         return id;//sms story index

     }

-    LYERRLOG("sms storage space is full!!!");

-    return -1;

+    else

+        return -1;

 }

 int sms_manager::lynq_delete_sms_from_memory(const int index)

 {

diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/lynqSmsManager/lynq_sms_manager.h b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/lynqSmsManager/lynq_sms_manager.h
index 1aca145..51532fc 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/lynqSmsManager/lynq_sms_manager.h
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/lynqSmsManager/lynq_sms_manager.h
@@ -73,6 +73,7 @@
         int lynq_delete_sms_from_memory(const int index);

         int lynq_read_sms_from_memory(const int index, lynq_sms_t *sms);

         int lynq_list_sms_from_memory(const int status,lynq_sms_list_t * sms_list);

+        int lynq_check_sms_full();

         int get_sms_total()

         {

             return sms_total;

@@ -105,8 +106,8 @@
         int create_sms_table(char*path);

         int create_sms_number_table(char * path);

         int lynq_write_sms_to_sms_db(int id,int slot_id,int status,const char *smsc,int charset,const char *pdu,const char *content,char *path,const char*address,int current,int total);

-        int find_unuse_sms_index(char *path);

         int lynq_check_index(int total);

+        int find_unuse_sms_index(char *path);

         int sms_total;

         int sms_usable_id;

         bool sms_full;

diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/sms.cpp b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/sms.cpp
index 474624b..a3e19ae 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/sms.cpp
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/sms.cpp
@@ -67,6 +67,21 @@
     writeStringToParcel(p, (const char *)pdu);
 }
 
+int getsmsDatabasestatus(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI)
+{
+    android::Parcel p;
+    int id = g_smsManagement->lynq_check_sms_full();
+    RLOGD("[%s] id = %d\n",__FUNCTION__,id);
+    android::lynqAssemblyParcelheader(p,socket_id,pRI->uToken,LYNQ_REQUEST_READ_SMS_FROM_MEMORY,0,0);
+
+    p.writeInt32(id);
+
+    android::LYNQ_RIL_respSocket(p,(void *)pRI);
+    free(pRI);
+    return 0;
+}
+
+
 //RIL_REQUEST_SEND_SMS
 int sendSMS(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI){
     char smscPDU[30]= {0};
diff --git a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/sms.h b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/sms.h
index 82f747b..895e7db 100755
--- a/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/sms.h
+++ b/cap/zx297520v3/src/lynq/framework/lynq-ril-service/src/sms/sms.h
@@ -101,6 +101,7 @@
 int deleteSmsToMemory(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
 int listSmsToMemory(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
 /*Warren change for t800 ril service 2022/1/18 end*/
-
-
+/*cz.li change for t106 ril service 2024/11/06 start*/
+int getsmsDatabasestatus(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
+/*cz.li change for t106 ril service 2022/11/06 end*/
 #endif
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-sms/include/lynq_qser_sms.h b/cap/zx297520v3/src/lynq/lib/liblynq-qser-sms/include/lynq_qser_sms.h
index 7276fca..0d102f0 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-sms/include/lynq_qser_sms.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-sms/include/lynq_qser_sms.h
@@ -211,6 +211,10 @@
 int qser_sms_setsmscenteraddress( sms_client_handle_type     h_sms,
                        QSER_sms_service_center_cfg_t *get_sca_cfg);
 
+/* Get sms Database status.
+*/
+int qser_sms_getDatabasestatus();
+
 /*
 Usage 1 (register callback and wait for new sms arrive): 
 1, qser_sms_client_init
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-sms/lynq_qser_sms.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-sms/lynq_qser_sms.cpp
index a86d8a5..1990166 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-sms/lynq_qser_sms.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-sms/lynq_qser_sms.cpp
@@ -204,5 +204,9 @@
     return lynq_set_smsc_address(get_sca_cfg->service_center_addr);
 }
 
+int qser_sms_getDatabasestatus()
+{
+    return(lynq_get_smsdatabase_status());
+}
 DEFINE_LYNQ_LIB_LOG(LYNQ_QSER_SMS)
 
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-sms/include/libsms/lynq_sms.h b/cap/zx297520v3/src/lynq/lib/liblynq-sms/include/libsms/lynq_sms.h
index 0d346a6..cdd7b30 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-sms/include/libsms/lynq_sms.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-sms/include/libsms/lynq_sms.h
@@ -22,6 +22,7 @@
 int lynq_list_sms(char index_list[SMS_NUM_MAX]);

 int lynq_delete_sms(int index);

 int lynq_wait_receive_new_sms(int *handle);

+int lynq_get_smsdatabase_status();

 #ifdef __cplusplus

 }

 #endif

diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-sms/lynq_module_common.h b/cap/zx297520v3/src/lynq/lib/liblynq-sms/lynq_module_common.h
index 60719ef..9a3d58e 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-sms/lynq_module_common.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-sms/lynq_module_common.h
@@ -30,6 +30,7 @@
 #define LYNQ_REQUEST_OOS_DEEP_SLEEP_RECOVER_TIMER_INTERVAL (LYNQ_REQUEST_VENDOR_BASE +13)

 #define LYNQ_REQUEST_CHANGE_SCREEN_STATE (LYNQ_REQUEST_VENDOR_BASE + 14)/*jb.qi add for two sim suspend 2022/9/19*/

 #define LYNQ_REQUEST_CHANGE_RADIO (LYNQ_REQUEST_VENDOR_BASE + 15)

+#define LYNQ_REQUEST_GET_SMSDATABASE_STATE (LYNQ_REQUEST_VENDOR_BASE + 17)

 /*the same with lynq_interface.h end*/

 

 typedef enum{

diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
index 8d012da..1926a23 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
@@ -228,7 +228,6 @@
     lynq_client_t client;

     int ret;

     int send_num;

-    

     client.uToken = g_module_Global_uToken;

     g_module_Global_uToken=(g_module_Global_uToken+1)%10000;/*0-10000*/

     client.request = request_id;

@@ -593,6 +592,7 @@
         case LYNQ_REQUEST_READ_SMS_FROM_MEMORY:

         case LYNQ_REQUEST_DELETE_SMS_FROM_MEMORY:

         case LYNQ_REQUEST_LIST_SMS_FROM_MEMORY:

+        case LYNQ_REQUEST_GET_SMSDATABASE_STATE:

             return true;

         default:

             return false;

@@ -1034,6 +1034,9 @@
         case LYNQ_REQUEST_CHANGE_SCREEN_STATE:return "LYNQ_REQUEST_CHANGE_SCREEN_STATE";/*jb.qi add for two sim sleep 2022/9/19*/

         case LYNQ_REQUEST_CHANGE_RADIO:return "LYNQ_REQUEST_CHANGE_RADIO";/*lei add for factory test of sleep 2022/9/19*/

         /*warren add for t800 ril service 2022/1/22 end*/

+        /*cz.li change for t106 ril service 2024/11/06 start*/

+        case LYNQ_REQUEST_GET_SMSDATABASE_STATE:return "LYNQ_REQUEST_GET_SMSDATABASE_STATE";

+        /*cz.li change for t106 ril service 2024/11/06 start*/

         default: return "<unknown request>";

     }

 }

diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-sms/lynq_sms.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-sms/lynq_sms.cpp
index 9d5ef30..d45ff0a 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-sms/lynq_sms.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-sms/lynq_sms.cpp
@@ -210,6 +210,22 @@
     return RESULT_OK;

 }

 

+int lynq_get_smsdatabase_status()

+{

+    Parcel* p=NULL;

+    int states=0;

+    int ret=lynq_send_common_request(p,g_wait_time,LYNQ_REQUEST_GET_SMSDATABASE_STATE,0,"");

+    if(ret!=0)

+    {

+        return ret;

+    }

+    LYDBGLOG("LYNQ_REQUEST_GET_SMSDATABASE_STATE SUCCESS!");

+    p->readInt32(&states);

+    delete p;

+    return states;

+}

+

+

 int lynq_get_smsc_address(char service_num[SMSC_MAX_LEN])

 {

     if(g_module_init_flag != MODULE_RUNNING)