[feature]add at service

Change-Id: I04fca1abfa7e324b719e08cd5c0725594e1ecc02
diff --git a/framework/lynq-ril-service/src/common.cpp b/framework/lynq-ril-service/src/common.cpp
index 37e5c41..7c5205d 100755
--- a/framework/lynq-ril-service/src/common.cpp
+++ b/framework/lynq-ril-service/src/common.cpp
@@ -44,6 +44,13 @@
 #undef LOG_TAG
 #define LOG_TAG "DEMO_COMMON"
 
+#define UNKOWN_VALUE  (-1)
+
+/*Warren add for FAW 2021/11/1 start*/
+extern int ttyGS3_fd = -1;
+/*Warren add for FAW 2021/11/1 end*/
+
+
 typedef enum {
     STATE_IN_SERVICE        =0,
     STATE_OUT_OF_SERVICE    =1,
@@ -74,6 +81,114 @@
 
 static std::int32_t token = 0;
 static std::mutex g_mutex;
+/*Warren add for SZZT 2021/11/14 start*
+** record data registration
+*/
+extern int current_data_reg = -1;
+extern int modemStatus = 0;
+
+/*Warren add for SZZT 2021/11/14 end*/
+
+
+/*hq add for key information output start 2022/03/01*/
+// extern int lynq_output_LINFO_enable =0;
+
+// typedef enum {
+//     RADIO_NW_2G = 0,
+//     RADIO_NW_3G = 1,
+//     RADIO_NW_4G = 2, 
+// #ifdef TELEMATIC_5G_SUPPORT
+//     RADIO_NW_5G = 3,    
+// #endif
+// } RIL_RadioNW;
+
+// const char * cardStateToString(int cardStatus)
+// {
+//     switch(cardStatus) {
+//         case RIL_CARDSTATE_ABSENT:
+//             return "absent";
+//         case RIL_CARDSTATE_PRESENT:
+//             return "present";        
+//         case RIL_CARDSTATE_ERROR:
+//             return "error";
+//         default:
+//             return "unknown";
+//     }
+// }
+// const char * serviceStateToString(int service_state)
+// {
+//     switch(service_state) {
+//         case STATE_IN_SERVICE:
+//             return "IN SERVICE";
+//         case STATE_OUT_OF_SERVICE:
+//             return "OUT OF SERVICE";
+//         case STATE_POWER_OFF:
+//             return "POWER_OFF";
+//         case STATE_EMERGENCY_ONLY:
+//             return "EMERGENCY_ONLY";
+//         case UNKOWN_VALUE:
+//             return "unDefined";
+//         default:
+//             return "unDefined";
+//     }
+// }
+// const char * RadioNwToString(int radio_nw)
+// {
+//     switch(radio_nw) {
+//         case RADIO_NW_2G:
+//             return "2G";
+//         case RADIO_NW_3G:
+//             return "3G";
+//         case RADIO_NW_4G:
+//             return "4G";
+// #ifdef TELEMATIC_5G_SUPPORT
+//         case RADIO_NW_5G:
+//             return "5G";
+// #endif
+//         case UNKOWN_VALUE:          
+//             return "unknown";        
+//         default:
+//             return "unknown";
+//     }
+// }
+// const char * preferredNetworkTypeToString(int preferred_network_type)
+// {
+//     switch(preferred_network_type) {
+//         case PREF_NET_TYPE_GSM_WCDMA      /*0*/     :  return " GSM/WCDMA (WCDMA case PREFerred)";
+//         case PREF_NET_TYPE_GSM_ONLY                 :  return " GSM only";
+//         case PREF_NET_TYPE_WCDMA                    :  return " WCDMA ";
+//         case PREF_NET_TYPE_GSM_WCDMA_AUTO           :  return " GSM/WCDMA (auto mode, according to PRL)";
+//         case PREF_NET_TYPE_CDMA_EVDO_AUTO           :  return " CDMA and EvDo (auto mode, according to PRL)";
+//         case PREF_NET_TYPE_CDMA_ONLY                :  return " CDMA only";
+//         case PREF_NET_TYPE_EVDO_ONLY                :  return " EvDo only";
+//         case PREF_NET_TYPE_GSM_WCDMA_CDMA_EVDO_AUTO :  return " GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)";
+//         case PREF_NET_TYPE_LTE_CDMA_EVDO            :  return " LTE, CDMA and EvDo";
+//         case PREF_NET_TYPE_LTE_GSM_WCDMA            :  return " LTE, GSM/WCDMA";
+//         case PREF_NET_TYPE_LTE_CMDA_EVDO_GSM_WCDMA  :  return " LTE, CDMA, EvDo, GSM/WCDMA";
+//         case PREF_NET_TYPE_LTE_ONLY                 :  return " LTE only";
+//         case PREF_NET_TYPE_LTE_WCDMA     /*12*/     :  return " LTE/WCDMA";
+//         case PREF_NET_TYPE_LTE_GSM       /*30*/     :  return " LTE/GSM";
+//         case PREF_NET_TYPE_LTE_TDD_ONLY  /*31*/     :  return " LTE only";
+//         case 13:                                       return "TD-SCDMA only"; 
+//         case 14:                                       return "TD-SCDMA and WCDMA"; 
+//         case 15:                                       return "TD-SCDMA and LTE"; 
+//         case 16:                                       return "TD-SCDMA and GSM"; 
+//         case 17:                                       return "TD-SCDMA,GSM and LTE"; 
+//         case 18:                                       return "TD-SCDMA, GSM/WCDMA"; 
+//         case 19:                                       return "TD-SCDMA, WCDMA and LTE";
+//         case 20:                                       return "TD-SCDMA, GSM/WCDMA and LTE"; 
+//         case 21:                                       return "TD-SCDMA,EvDo,CDMA,GSM/WCDMA";
+//         case 22:                                       return "TD-SCDMA/LTE/GSM/WCDMA, CDMA, and EvDo";
+//       //case 30:                                       return "LTE/GSM";
+//       //case 31:                                       return "LTE TDD Only mode";
+//         case 32:                                       return "CDMA,GSM(2G Global)";
+//         case 33:                                       return "CDMA,EVDO,GSM";
+//         case 34:                                       return "LTE,CDMA,EVDO,GSM(4G Global, 4M)";        
+//         default:
+//             return "unDefined";
+//     }
+// }
+/*hq add for key information output end*/
 
 static int regCodeToRadioTechnology(int request, int code, int slot);
 
@@ -437,6 +552,10 @@
     if((reg_data_service_state[slot] != atoi(code)) || ((token&RIL_TOKEN_MARK) == RIL_TOKEN_MARK)) {
         reg_data_service_state[slot] = atoi(code);
         regCodeToServiceState(request, atoi(code), slot);
+        /*Warren change for SZZT 2021//11/14 start*/
+        int status = regCodeToServiceState(request, atoi(code), slot);           
+        current_data_reg = status;       
+        /*Warren change for SZZT 2021//11/14 end*/
     }
 }
 
@@ -824,4 +943,72 @@
         RLOGD("[lynqSocketSendto] send msg fail!!!");
         return -1;
     }
-}
\ No newline at end of file
+}
+/*hq add for key info output 2022/03/01 begin*/
+// void lynq_output_LINFO_all()
+// {
+//     int slot,startSlot=0,slotNum=SIM_COUNT;     
+
+//     if(default_sim_voice==default_sim_data && default_sim_voice==default_sim_sms){
+//         startSlot=default_sim_voice;
+//         slotNum=1;        
+//     }   
+
+//     lynq_output_info("+LINFO: Report switch when key information changed is set: %d\n",lynq_output_LINFO_enable);          
+//     lynq_output_info("+LINFO: Default voice SIM card is set : [SIM%d]\n", default_sim_voice+1);    
+//     lynq_output_info("+LINFO: Default data SIM card is set : [SIM%d]\n", default_sim_data+1);
+//     lynq_output_info("+LINFO: Default sms SIM card is set : [SIM%d]\n", default_sim_sms+1);
+   
+//     for(slot=startSlot;slot<startSlot+slotNum;slot++){   
+//         lynq_output_info("+LINFO: [SIM%d] Card State is %s\n",slot+1,cardStateToString((cur_CardS_Status[slot]!=NULL ? cur_CardS_Status[slot]->card_state:UNKOWN_VALUE)));                  
+//         lynq_output_info("+LINFO: [SIM%d] Preferred network_type: is %s\n", slot+1, preferredNetworkTypeToString(preferred_network_type[slot]));
+//         lynq_output_info("+LINFO: [SIM%d] Voice Registration State is %s\n",slot+1,serviceStateToString(regCodeToServiceState(reg_voice_service_state[slot])));
+//         lynq_output_info("+LINFO: [SIM%d] Voice Radio Access Network is %s\n",slot+1,RadioNwToString(regCodeToRadioTechnology(reg_voice_radio_tech[slot])));
+//         lynq_output_info("+LINFO: [SIM%d] Data Registration State is %s\n",slot+1,serviceStateToString(regCodeToServiceState(reg_data_service_state[slot])));
+//         lynq_output_info("+LINFO: [SIM%d] Data Radio Access Network is %s\n",slot+1,RadioNwToString(regCodeToRadioTechnology(reg_data_radio_tech[slot])));          
+//     }  
+//     return;
+// }
+// void lynq_output_LINFO(const char* format,...)
+// {
+//     char buf[1024] = {0};
+//     int n;
+//     char ebuf[1024] = {0};
+
+//     if(lynq_output_LINFO_enable)
+//     {
+//         va_list args;
+//         va_start(args, format);
+//         vsnprintf(buf, sizeof(buf), format, args);
+//         va_end(args);
+
+//         printf("hq %s",buf);
+//         n=snprintf(ebuf,sizeof(ebuf),"+LINFO: %s", buf);
+
+//         n=write(ttyGS3_fd, ebuf, strlen(ebuf));
+//         if(n < 0)
+//         {
+//             perror("lynq resp write:");
+//         }
+//     }
+//     return;
+// }
+// void lynq_output_info(const char* format,...)
+// {
+//     char buf[1024] = {0};
+//     int n;   
+    
+//     va_list args;
+//     va_start(args, format);
+//     vsnprintf(buf, sizeof(buf), format, args);
+//     va_end(args);     
+       
+//     n=write(ttyGS3_fd, buf, strlen(buf));
+//     if(n < 0)
+//     {
+//         perror("lynq resp write:");
+//     }
+
+//     return;
+// }
+/*hq add for key info output 2022/03/01 end*/