[Feature]Merge MR0.5 RIL and gnss related content

Change-Id: Ida412e15319debce294feb6bc9991877d848c1c3
diff --git a/framework/lynq-ril-service/src/data/data_gdbus.cpp b/framework/lynq-ril-service/src/data/data_gdbus.cpp
index 3d067b8..cd62eb1 100755
--- a/framework/lynq-ril-service/src/data/data_gdbus.cpp
+++ b/framework/lynq-ril-service/src/data/data_gdbus.cpp
@@ -95,6 +95,7 @@
                     p.writeInt32 (LYNQ_URC_DATA_CALL_STATUS_IND);
                     p.writeInt32 (0);//temporary plan
                     p.writeInt32(PDN_DISCONNECTED);
+                    writeStringToParcel(p,urc_response->apnType);
                     android::LYNQ_RIL_urcBroadcast(p);
                     RLOGD("removed apn:%s,apntype:%s",apn_table[i].apn,apn_table[i].apntype);
                     //printf("removed apn:%s,apntype:%s\n",apn_table[i].apn,apn_table[i].apntype);
diff --git a/framework/lynq-ril-service/src/lynq_interface.h b/framework/lynq-ril-service/src/lynq_interface.h
index 6179538..2a26b51 100755
--- a/framework/lynq-ril-service/src/lynq_interface.h
+++ b/framework/lynq-ril-service/src/lynq_interface.h
@@ -12,6 +12,7 @@
 #define LYNQ_REQUEST_READ_SMS_FROM_MEMORY (LYNQ_REQUEST_VENDOR_BASE + 5)
 #define LYNQ_REQUEST_DELETE_SMS_FROM_MEMORY (LYNQ_REQUEST_VENDOR_BASE + 6)
 #define LYNQ_REQUEST_LIST_SMS_FROM_MEMORY (LYNQ_REQUEST_VENDOR_BASE + 7)
+#define LYNQ_REQUEST_SET_DEFAULT_SIM_ALL (LYNQ_REQUEST_VENDOR_BASE + 8)
 typedef struct{
     int request;
     int waitTime;
diff --git a/framework/lynq-ril-service/src/ril.cpp b/framework/lynq-ril-service/src/ril.cpp
index 268c852..bc6133a 100755
--- a/framework/lynq-ril-service/src/ril.cpp
+++ b/framework/lynq-ril-service/src/ril.cpp
@@ -4857,6 +4857,7 @@
         case LYNQ_REQUEST_READ_SMS_FROM_MEMORY: return "LYNQ_REQUEST_READ_SMS_FROM_MEMORY";
         case LYNQ_REQUEST_DELETE_SMS_FROM_MEMORY: return "LYNQ_REQUEST_DELETE_SMS_FROM_MEMORY";
         case LYNQ_REQUEST_LIST_SMS_FROM_MEMORY: return "LYNQ_REQUEST_LIST_SMS_FROM_MEMORY";
+        case LYNQ_REQUEST_SET_DEFAULT_SIM_ALL:return "SET_DEFAULT_SIM_ALL";
         default: return "<unknown request>";
     }
 }
@@ -5118,6 +5119,7 @@
         case LYNQ_REQUEST_READ_SMS_FROM_MEMORY: return "LYNQ_REQUEST_READ_SMS_FROM_MEMORY";
         case LYNQ_REQUEST_DELETE_SMS_FROM_MEMORY: return "LYNQ_REQUEST_DELETE_SMS_FROM_MEMORY";
         case LYNQ_REQUEST_LIST_SMS_FROM_MEMORY: return "LYNQ_REQUEST_LIST_SMS_FROM_MEMORY";
+        case LYNQ_REQUEST_SET_DEFAULT_SIM_ALL:return "SET_DEFAULT_SIM_ALL";
         /*warren add for t800 ril service 2022/1/22 end*/
         default: return "<unknown request>";
     }
diff --git a/lib/liblynq-call/lynq_call.cpp b/lib/liblynq-call/lynq_call.cpp
index b517092..1f71165 100755
--- a/lib/liblynq-call/lynq_call.cpp
+++ b/lib/liblynq-call/lynq_call.cpp
@@ -15,6 +15,7 @@
 #include <sys/time.h>

 #include <string.h>

 #define LYNQ_SERVICE_PORT 8088

+#define DSET_IP_ADDRESS  "127.0.0.1"

 #define LYNQ_URC_SERVICE_PORT 8086

 #define LYNQ_REC_BUF 8192

 #define LYNQ_REQUEST_PARAM_BUF 8192

@@ -66,7 +67,13 @@
 pthread_t lynq_call_urc_tid;

 pthread_t lynq_call_list_loop_tid;

 

-

+/*lei add*/

+/* socket文件描述符 */ 

+int len_addr_serv;

+struct sockaddr_in addr_serv;

+lynq_client_t client_t;

+int client_size = 0;

+/*lei add*/

 

 int s_call_urc_event_complete = 1;

 

@@ -122,7 +129,7 @@
 int send_request(int sockfd,lynq_client_t *client_tmp)

 {

     int ret=0;

-    ret = write(sockfd, client_tmp, LYQN_SEDN_BUF);

+    ret = sendto(sockfd, client_tmp, client_size, 0, (struct sockaddr *)&addr_serv, len_addr_serv);

     if(ret==-1)

     {

         LYERRLOG("write error:%s",strerror(errno));

@@ -137,7 +144,7 @@
     char recvline[LYNQ_REC_BUF];

     bzero(recvline,LYNQ_REC_BUF);

     /* receive data from server */

-    len = read(sockfd, recvline, LYNQ_REC_BUF);

+    len = recvfrom(sockfd,recvline,LYNQ_REC_BUF, 0, (struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);

     if(len == -1)

     {

         LYERRLOG("read error:%s",strerror(errno));

@@ -407,13 +414,15 @@
 

 /*Warren add for T800 platform 2021/11/19 start*/

 int lynq_socket_client_start()

-{

+{   

+    #if 0

     struct sockaddr_in lynq_socket_server_addr;

     /* init lynq_socket_server_addr */

     bzero(&lynq_socket_server_addr, sizeof(lynq_socket_server_addr));

     lynq_socket_server_addr.sin_family = AF_INET;

     lynq_socket_server_addr.sin_port = htons(LYNQ_SERVICE_PORT);

     lynq_socket_server_addr.sin_addr.s_addr = htons(INADDR_ANY);

+    

     /*

     if(inet_pton(AF_INET,"127.0.0.1", &lynq_socket_server_addr.sin_addr) <= 0)

     {

@@ -427,6 +436,18 @@
         LYERRLOG("connect error:%s",strerror(errno));

         return -1;

     }

+    #endif

+    lynq_call_client_sockfd = socket(AF_INET, SOCK_DGRAM, 0);

+    if (-1 == lynq_call_client_sockfd)

+    {

+        return lynq_call_client_sockfd;

+    }

+    /* 设置address */  

+    memset(&addr_serv, 0, sizeof(addr_serv));  

+    addr_serv.sin_family = AF_INET;  

+    addr_serv.sin_addr.s_addr = inet_addr(DSET_IP_ADDRESS);  

+    addr_serv.sin_port = htons(LYNQ_SERVICE_PORT);  

+    len_addr_serv = sizeof(addr_serv);  

     return 0;

 }

 int lynq_update_call_list_loop()

@@ -582,6 +603,7 @@
     int result = 0;

     Global_uToken_call = uToken;

     urc_call_recive_status = 1;

+    client_size = sizeof(client_t);

     LYLOGSET(LOG_INFO);

     LYLOGEINIT(USER_LOG_TAG);

     result = lynq_socket_client_start();

diff --git a/lib/liblynq-gnss/include/lynq_gnss.h b/lib/liblynq-gnss/include/lynq_gnss.h
index afefd60..40ef778 100755
--- a/lib/liblynq-gnss/include/lynq_gnss.h
+++ b/lib/liblynq-gnss/include/lynq_gnss.h
@@ -25,26 +25,69 @@
 }LYNQ_CONF_SWITCH;

 

 

+//new version

+typedef struct

+{

+    /** set to sizeof(GpsLocation) */

+    size_t          size;

+    /** Contains GpsLocationFlags bits. */

+    uint16_t        flags;

+    /** Represents latitude in degrees. */

+    double          latitude;

+    /** Represents longitude in degrees. */

+    double          longitude;

+    /**

+     * Represents altitude in meters above the WGS 84 reference ellipsoid.

+     */

+    double          altitude;

+    /** Represents speed in meters per second. */

+    float           speed;

+    /** Represents heading in degrees. */

+    float           bearing;

+    /** Represents expected accuracy in meters. */

+    float           accuracy;

+    /** Timestamp for the location fix. */

+    int64_t      timestamp;

+

+    float           horizontalAccuracyMeters;

+

+    /**

+    * Represents expected vertical position accuracy in meters

+    * (68% confidence).

+    */

+    float           verticalAccuracyMeters;

+

+    /**

+    * Represents expected speed accuracy in meter per seconds

+    * (68% confidence).

+    */

+    float           speedAccuracyMetersPerSecond;

+

+    /**

+    * Represents expected bearing accuracy in degrees

+    * (68% confidence).

+    */

+    float           bearingAccuracyDegrees;

+}lynq_gnsslocation;

+

 int lynq_gnss_init(void);

 

-// int lynq_gnss_callback_reg(lynq_gnss_cb* callbacks);

+int lynq_gnss_deinit(void);

 

 int lynq_gnss_start(void);

 

 int lynq_gnss_stop(void);

 

-void lynq_gnss_cleanup(void);

+int lynq_gnss_cleanup(void);

 

 int lynq_gnss_inject_time(GpsUtcTime time, int64_t timeReference, int uncertainty);

 

 int lynq_gnss_inject_location(double latitude,double longitude,float  accuracy);

 

-void lynq_gnss_delete_aiding_data(GpsAidingData flags);

+int lynq_gnss_delete_aiding_data(GpsAidingData flags);

 

 int lynq_gnss_inject_fused_location(double latitude,double longitude,float accuracy);

 

-void* lynq_gnss_get_extension(const char* name);

-

 int lynq_gnss_set_start_mode(LYNQ_GNSS_MODE_CONFIGURATION start_mode);

 

 int lynq_gnss_debug_switch(LYNQ_CONF_SWITCH switch_op);

@@ -53,7 +96,8 @@
 

 int lynq_gnss_output_frequency_set(int frequency);

 

-GpsCallbacks_ext* lynq__get_gps_callbacks(void);

+int lynq_get_location_info(lynq_gnsslocation* loc);

+

 

 

 

diff --git a/lib/liblynq-gnss/src/lynq_callback.c b/lib/liblynq-gnss/src/lynq_callback.c
index 23e00d8..9af2060 100755
--- a/lib/liblynq-gnss/src/lynq_callback.c
+++ b/lib/liblynq-gnss/src/lynq_callback.c
@@ -19,20 +19,6 @@
 {   

     GpsLocation_ext* loc = (GpsLocation_ext *)location;

     lynq_GpsLocation_ext lynq_loc;

-   //lynq_loc.legacyLocation.size = loc->legacyLocation.size;

-    lynq_loc.legacyLocation.size = sizeof(lynq_GpsLocation_ext);

-    lynq_loc.legacyLocation.flags = loc->legacyLocation.flags;

-    lynq_loc.legacyLocation.latitude = loc->legacyLocation.latitude;

-    lynq_loc.legacyLocation.longitude = loc->legacyLocation.longitude;

-    lynq_loc.legacyLocation.altitude = loc->legacyLocation.altitude;

-    lynq_loc.legacyLocation.speed = loc->legacyLocation.speed;

-    lynq_loc.legacyLocation.bearing = loc->legacyLocation.bearing;

-    lynq_loc.legacyLocation.accuracy = loc->legacyLocation.accuracy;

-    lynq_loc.legacyLocation.timestamp = loc->legacyLocation.timestamp;

-    lynq_loc.horizontalAccuracyMeters = loc->horizontalAccuracyMeters;

-    lynq_loc.speedAccuracyMetersPerSecond = loc->speedAccuracyMetersPerSecond;

-    lynq_loc.bearingAccuracyDegrees = loc->bearingAccuracyDegrees;

-    lynq_callbacks->lynq_location_cb(&lynq_loc);

 

     lynq_cb_status = 1;

     lynq_gnss_location.size = sizeof(lynq_gnsslocation);

@@ -48,11 +34,20 @@
     lynq_gnss_location.verticalAccuracyMeters = loc->verticalAccuracyMeters;

     lynq_gnss_location.speedAccuracyMetersPerSecond = loc->speedAccuracyMetersPerSecond;

     lynq_gnss_location.bearingAccuracyDegrees = loc->bearingAccuracyDegrees;

+    RLOGD("------------------------------------------------------------\r\n");

+    RLOGD("Flags: 0x%x\r\n",lynq_gnss_location.flags);

+    RLOGD("latitude: %.10lf\r\n",lynq_gnss_location.latitude);

+    RLOGD("longitude: %.10lf\r\n",lynq_gnss_location.longitude);

+    RLOGD("altitude: %.10lf\r\n",lynq_gnss_location.altitude);

+    RLOGD("speed: %fm/s\r\n",lynq_gnss_location.speed);

+    RLOGD("bearing: %f\r\n",lynq_gnss_location.bearing);

+    RLOGD("accuracy: %fm\r\n",lynq_gnss_location.horizontalAccuracyMeters);

+    RLOGD("timestamp: %ld\r\n",lynq_gnss_location.timestamp);

+    RLOGD("------------------------------------------------------------\r\n");

 }

 

 void lynq_gps_status_callback(GpsStatus* status)

 {

-    lynq_callbacks->lynq_status_cb(status);

     lynq_gnss_status.size = sizeof(lynq_gnssstatus);

     lynq_gnss_status.status = status->status;

 }

@@ -64,7 +59,7 @@
 

 void lynq_gps_nmea_callback(GpsUtcTime timestamp, const char* nmea, int length)

 {

-    lynq_callbacks->lynq_nmea_cb(timestamp,nmea,length);

+

 }

 

 void lynq_gps_set_capabilities(uint32_t capabilities)

diff --git a/lib/liblynq-gnss/src/lynq_gnss.c b/lib/liblynq-gnss/src/lynq_gnss.c
index 8ea5605..020ee63 100755
--- a/lib/liblynq-gnss/src/lynq_gnss.c
+++ b/lib/liblynq-gnss/src/lynq_gnss.c
@@ -62,9 +62,7 @@
     pthread_t tid;

     pthread_attr_t attr;

     called_status = 1;

-    gpshal_set_gps_state_intent(GPSHAL_STATE_INIT);

-    gpshal2mnl_gps_init();

-    g_gpshal_ctx.mnl_retry_timer = mnldinf_init_timer(gpshal_mnl_retry_routine);

+

     mnldinf_wake_lock_init();

     turn_cbs = lynq__get_gps_callbacks();

     if(turn_cbs == NULL)

@@ -77,6 +75,10 @@
         return -1;

     }

 

+    gpshal_set_gps_state_intent(GPSHAL_STATE_INIT);

+    gpshal2mnl_gps_init();

+    g_gpshal_ctx.mnl_retry_timer = mnldinf_init_timer(gpshal_mnl_retry_routine);

+

     pthread_attr_init(&attr);

     pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);

     ret = pthread_create(&tid,&attr,thread_called_recv,NULL);

@@ -99,6 +101,7 @@
     g_gpshal_ctx.mnl_retry_timer = INVALID_TIMERID;

     if(mnldinf_deinit_timer(retry_timer) == -1) {

         RLOGD("retry_timer deinit fail:%s", strerror(errno));

+        return -1;

     }

     return 0;

 }

@@ -135,7 +138,7 @@
     return 0;

 }

 

-void lynq_gnss_cleanup(void)

+int lynq_gnss_cleanup(void)

 {

     timer_t retry_timer;

     gpshal_set_gps_state_intent(GPSHAL_STATE_CLEANUP);

@@ -145,13 +148,16 @@
     g_gpshal_ctx.mnl_retry_timer = INVALID_TIMERID;

     if(mnldinf_deinit_timer(retry_timer) == -1) {

         RLOGD("retry_timer deinit fail:%s", strerror(errno));

+        return -1;

     }

+    return 0;

 }

 

 int lynq_gnss_inject_time(GpsUtcTime time, int64_t timeReference, int uncertainty)

 {

     if (hal2mnl_gps_inject_time(time, timeReference, uncertainty) == -1) {

         RLOGD("hal2mnl_gps_inject_time failed because of safe_sendto fail ,strerror:%s \n", strerror(errno));

+        return -1;

     }

     return 0;

 }

@@ -162,14 +168,17 @@
         float  accuracy) {

     if (hal2mnl_gps_inject_location(latitude, longitude, accuracy) == -1) {

         RLOGD("hal2mnl_gps_inject_location failed because of safe_sendto fail ,strerror:%s \n", strerror(errno));

+        return -1;

     }

     return 0;

 }

 

-void lynq_gnss_delete_aiding_data(GpsAidingData flags) {

+int lynq_gnss_delete_aiding_data(GpsAidingData flags) {

     if (hal2mnl_gps_delete_aiding_data(flags) == -1) {

         RLOGD("hal2mnl_gps_delete_aiding_data failed because of safe_sendto fail ,strerror:%s \n", strerror(errno));

+        return -1;

     }

+    return 0;

 }

 

 int lynq_gnss_inject_fused_location(

@@ -299,6 +308,34 @@
     return 0;

 }

 

+int lynq_get_location_info(lynq_gnsslocation* loc)

+{

+    if(loc == NULL)

+    {

+        RLOGD("incoming point error");

+        return -1;

+    }

+    if(lynq_gnss_location.latitude == 0)

+    {

+        printf("none of location info");

+    }else{

+        loc->size = lynq_gnss_location.size;

+        loc->flags = lynq_gnss_location.flags;

+        loc->latitude = lynq_gnss_location.latitude;

+        loc->longitude = lynq_gnss_location.longitude ;

+        loc->altitude = lynq_gnss_location.altitude;

+        loc->speed = lynq_gnss_location.speed;

+        loc->bearing = lynq_gnss_location.bearing;

+        loc->accuracy = lynq_gnss_location.accuracy;

+        loc->timestamp = lynq_gnss_location.timestamp;

+        loc->horizontalAccuracyMeters = lynq_gnss_location.horizontalAccuracyMeters;

+        loc->verticalAccuracyMeters = lynq_gnss_location.verticalAccuracyMeters;

+        loc->speedAccuracyMetersPerSecond = lynq_gnss_location.speedAccuracyMetersPerSecond;

+        loc->bearingAccuracyDegrees = lynq_gnss_location.bearingAccuracyDegrees;

+    }

+    return 0;

+}

+

 

 /*void lyqn_gnss_restart(void)

 {

diff --git a/lib/liblynq-gnss/src/lynq_gnsshal.h b/lib/liblynq-gnss/src/lynq_gnsshal.h
index 77f290f..e433ce4 100755
--- a/lib/liblynq-gnss/src/lynq_gnsshal.h
+++ b/lib/liblynq-gnss/src/lynq_gnsshal.h
@@ -73,49 +73,7 @@
     uint16_t status;

 }lynq_gnssstatus;

 

-//new version

-typedef struct

-{

-    /** set to sizeof(GpsLocation) */

-    size_t          size;

-    /** Contains GpsLocationFlags bits. */

-    uint16_t        flags;

-    /** Represents latitude in degrees. */

-    double          latitude;

-    /** Represents longitude in degrees. */

-    double          longitude;

-    /**

-     * Represents altitude in meters above the WGS 84 reference ellipsoid.

-     */

-    double          altitude;

-    /** Represents speed in meters per second. */

-    float           speed;

-    /** Represents heading in degrees. */

-    float           bearing;

-    /** Represents expected accuracy in meters. */

-    float           accuracy;

-    /** Timestamp for the location fix. */

-    int64_t      timestamp;

-    

-    float           horizontalAccuracyMeters;

+GpsCallbacks_ext* lynq__get_gps_callbacks(void);

 

-    /**

-    * Represents expected vertical position accuracy in meters

-    * (68% confidence).

-    */

-    float           verticalAccuracyMeters;

-

-    /**

-    * Represents expected speed accuracy in meter per seconds

-    * (68% confidence).

-    */

-    float           speedAccuracyMetersPerSecond;

-

-    /**

-    * Represents expected bearing accuracy in degrees

-    * (68% confidence).

-    */

-    float           bearingAccuracyDegrees;

-}lynq_gnsslocation;

 

 #endif
\ No newline at end of file
diff --git a/lib/liblynq-network/include/lynq_network/lynq_network.h b/lib/liblynq-network/include/lynq_network/lynq_network.h
index dc8aa82..d3783ae 100755
--- a/lib/liblynq-network/include/lynq_network/lynq_network.h
+++ b/lib/liblynq-network/include/lynq_network/lynq_network.h
@@ -1,7 +1,5 @@
 #ifndef LYNQ_NETWORK_H

 #define LYNQ_NETWORK_H 

-#include <vendor-ril/telephony/ril.h>

-#include <pthread.h>

 #ifdef __cplusplus

 extern "C" {

 #endif

diff --git a/lib/liblynq-sim/include/lynq_sim.h b/lib/liblynq-sim/include/lynq_sim.h
index 9e55e69..e7f534f 100755
--- a/lib/liblynq-sim/include/lynq_sim.h
+++ b/lib/liblynq-sim/include/lynq_sim.h
@@ -27,6 +27,7 @@
 int lynq_change_pin(char *old_pin, char *new_pin);
 int lynq_unlock_pin(char *puk, char *pin);
 int lynq_query_phone_number(char buf[]);
+int lynq_switch_card(int slot);
 /*add by lei*/
 
 
diff --git a/lib/liblynq-sim/src/lynq_sim.cpp b/lib/liblynq-sim/src/lynq_sim.cpp
index 16c2315..85a8c5b 100755
--- a/lib/liblynq-sim/src/lynq_sim.cpp
+++ b/lib/liblynq-sim/src/lynq_sim.cpp
@@ -31,6 +31,7 @@
 #define RIL_REQUEST_ENTER_SIM_PUK 3
 #define RIL_REQUEST_CHANGE_SIM_PIN 6
 #define RIL_REQUEST_OEM_HOOK_RAW 59
+#define LYNQ_REQUEST_SET_DEFAULT_SIM_ALL 8008
 #define MAX_LEN 1024*8
 #define MAX_NUM 10
 #define LOG_TAG "LYNQ_SIM"
@@ -230,6 +231,8 @@
     int ret = -1;
     if(pin == NULL)
         return ret;
+    if(!strlen(pin))
+        return ret;
     int send_num = 0;
     int recv_num = 0;  
     char res_data[MAX_LEN] = {0};
@@ -391,6 +394,8 @@
     int ret = -1;
     if(old_pin == NULL || new_pin == NULL)
         return ret;
+    if(!strlen(new_pin))
+        return ret;
     int send_num = 0;
     int recv_num = 0;
     char res_data[MAX_LEN] = {0};
@@ -554,6 +559,38 @@
     }
     return error1;
 }
+
+static int judge(int slot){
+    switch(slot){
+        case 0:
+            return -1;
+        case 1:
+            return -1;
+    }
+    return 0;
+}
+
+
+int lynq_switch_card(int slot){
+    int ret = -1;
+    if(!judge(slot))
+        return ret;
+    int send_num = 0;
+    int recv_num = 0;
+    char res_data[MAX_LEN] = {0};
+    int len = 0; 
+    client_t.request = LYNQ_REQUEST_SET_DEFAULT_SIM_ALL;
+    client_t.paramLen = 1;
+    client_t.uToken = Global_uToken;
+    sprintf(client_t.param, "%d\n", slot);
+    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+    if(send_num < 0)  
+    {  
+        RLOGD("sendto error:");  
+        return send_num;
+    }
+    return 0;
+}
 #if FLAG_TESS
 int lynq_query_operator(char buf[]){
     int32_t token = -1;