[Feature][ZXW-4][Data]Add liblynq-qser-data Part.2

Change-Id: I7d0d939e3f75517e7cf4b145fadfb275c7c14814
diff --git a/src/lynq/lib/liblynq-data/include/libdata/lynq_data.h b/src/lynq/lib/liblynq-data/include/libdata/lynq_data.h
index 277f4da..a54a7b4 100755
--- a/src/lynq/lib/liblynq-data/include/libdata/lynq_data.h
+++ b/src/lynq/lib/liblynq-data/include/libdata/lynq_data.h
@@ -1,5 +1,5 @@
 #ifndef LYNQ_DATA_H
-#define LYNQ_DATA_H 1
+#define LYNQ_DATA_H 
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -48,6 +48,14 @@
                                    Value <= 0 means network has either not sent a value or
                                    sent an invalid value */
 } lynq_data_call_response_v11_t;
+
+typedef struct
+{
+    int index;
+    char apn[LYNQ_APN_MAX_LEN];
+    char apnType[LYNQ_APN_TYPE_MAX_LEN];
+}lynq_apn_info;
+
 int lynq_init_data(int uToken);
 int lynq_deinit_data();
 int lynq_setup_data_call(int *handle);
@@ -58,6 +66,7 @@
 int lynq_wait_data_call_state_change(int *handle);
 int lynq_modify_apn_db(const int cmd,char *id,char *mcc,char *mnc,char *apn,char *apntype,char *user,char *password,char *normalprotocol,char *roamingprotocol,char *carrier,char *out);
 int lynq_reset_apn(char *result);
+int lynq_get_apn_table(int *size,lynq_apn_info **list);
 
 #ifdef __cplusplus
 }
diff --git a/src/lynq/lib/liblynq-data/lynq_data.cpp b/src/lynq/lib/liblynq-data/lynq_data.cpp
index 460eb9c..6b52ea0 100755
--- a/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -145,7 +145,7 @@
     lynq_apn_table[apnId].hasTimeout = 0;
     lynq_apn_table[apnId].hasUsed = 0;
     bzero(lynq_apn_table[apnId].apn,LYNQ_APN_MAX_LEN);
-    //bzero(lynq_apn_table[apnId].apnType,LYNQ_APN_TYPE_MAX_LEN);
+    bzero(lynq_apn_table[apnId].apnType,LYNQ_APN_TYPE_MAX_LEN);
     bzero(lynq_apn_table[apnId].ifaceName,LYNQ_IFACE_NAME_MAX_LEN);
     return;
 }
@@ -1384,4 +1384,31 @@
     return 0;
 }
 
+int lynq_get_apn_table(int *size,lynq_apn_info **list)
+{
+    if (NULL == size || NULL == list)
+    {
+        LYERRLOG("size or list  is NULL");
+        return LYNQ_E_NULL_ANONALY;
+    }
+    int count = 0;
+    int i = 0;
+    for (i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
+    {
+        if (lynq_apn_table[i].hasUsed == 1)
+        {
+            if (NULL ==  list[count])
+            {
+                LYERRLOG("list[%d] is NULL",count);
+                return LYNQ_E_NULL_ANONALY;
+            }
+            list[count]->index = i;
+            memcpy(list[count]->apn,lynq_apn_table[i].apn,strlen(lynq_apn_table[i].apn)+1);
+            memcpy(list[count]->apnType,lynq_apn_table[i].apnType,strlen(lynq_apn_table[i].apnType)+1);
+            count++;
+        }
+    }
+    *size = count;
+    return 0;
+}
 /*Typethree add for T800 platform 2022/04/21 end*/