Fix mbtk from v1265 GSW
Change-Id: I5d8d395616f284bc74c8b9448cfa347164b5a668
diff --git a/mbtk/test/libgsw_lib/gsw_gnss_test.c b/mbtk/test/libgsw_lib/gsw_gnss_test.c
new file mode 100755
index 0000000..51e550c
--- /dev/null
+++ b/mbtk/test/libgsw_lib/gsw_gnss_test.c
@@ -0,0 +1,318 @@
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <termios.h>
+#include <time.h>
+#include <sys/ioctl.h>
+#include <dlfcn.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+typedef struct
+{
+ /**< set to sizeof(GpsLocation) */
+ size_t size;
+ /**< Contains GpsLocationFlags bits. */
+ unsigned short int 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. */
+ long long int timestamp;
+}GSW_GNSS_LOCATION_T;
+
+typedef struct {
+ GSW_GNSS_LOCATION_T legacyLocation;
+ 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;
+}GSW_GNSS_LOCATION_EXT_T;
+
+
+typedef enum{
+ GSW_SWITCH_DISABLE = 0, /**< configuration switch disable :0 */
+ GSW_SWITCH_ENABLE /**< configuration switch enable :1 */
+}GSW_GNSS_CONF_SWITCH;
+
+typedef enum{
+ GSW_MODE_GPS = 1, /**< GPS only */
+ GSW_MODE_BEIDOU, /**< BEIDOU only*/
+ GSW_MODE_GPS_BEIDOU, /**< GPS+BEIDOU */
+ GSW_MODE_GLONASS, /**< GLONASS only */ /* The high-tech platform does not support this type */
+ GSW_MODE_GPS_GLONASS, /**< GPS+GLONASS */
+ GSW_MODE_GLONASS_BEIDOU, /**< GLONASS+BEIDOU */ /* The high-tech platform does not support this type */
+ GSW_MODE_GPS_GLONASS_BEIDOU, /**< GPS+GLONASS+BEIDOU */ /* The high-tech platform does not support this type */
+ GSW_MODE_GALILEO, /**< GALILEO only */
+ GSW_MODE_GPS_GALILEO, /**< GPS+GALILEO */
+ GSW_MODE_BEIDOU_GALILEO, /**< BEIDOU+GALILEO */
+ GSW_MODE_GPS_BEIDOU_GALILEO, /**< GPS+BEIDOU+GALILEO */
+ GSW_MODE_GLONASS_GALILEO, /**< GLONASS+GALILEO */
+ GSW_MODE_GPS_GLONASS_GALILEO, /**< GPS+GLONASS+GALILEO */
+ GSW_MODE_BEIDOU_GLONASS_GALILEO, /**< BEIDOU+GLONASS+GALILEO */ /* The high-tech platform does not support this type */
+}GSW_GNSS_MODE_CONFIGURATION;
+
+typedef void (*gsw_gnss_location_callback_ext)(GSW_GNSS_LOCATION_EXT_T* location);
+typedef void (*gsw_gnss_nmea_callback )(const char* nmea, int length);
+
+typedef struct{
+gsw_gnss_location_callback_ext gsw_location_cb;
+gsw_gnss_nmea_callback gsw_nmea_cb;
+}gsw_gnss_cb;
+
+typedef enum{
+ GSW_FREQ_1HZ = 1, /**< 1hZ */
+ GSW_FREQ_2HZ = 2, /**< 2hZ */
+ GSW_FREQ_5HZ = 5, /**< 5hZ */
+ GSW_FREQ_10HZ = 10, /**< 10hZ */
+}gnss_freq_type;
+
+typedef struct{
+GSW_GNSS_MODE_CONFIGURATION start_mode;
+gnss_freq_type freq;
+gsw_gnss_cb callback;
+}gsw_gnss_init_configure_t;
+
+int (*gsw_gnss_set_freq)(int freq);
+int (*gsw_gnss_init)(void);
+int (*gsw_gnss_start)(void);
+int (*gsw_gnss_stop)(void);
+int (*gsw_gnss_deinit)(void);
+int (*gsw_gnss_set_start_mode)(GSW_GNSS_MODE_CONFIGURATION start_mode);
+int (*gsw_gnss_epo_switch)(GSW_GNSS_CONF_SWITCH switch_op);
+int (*gsw_gnss_reg_cb_group)(gsw_gnss_cb callback);
+//int (*gsw_gnss_xtra_is_enable)(gsw_xtra_state_e state);
+int (*gsw_gnss_delete_aiding_data)(unsigned int flags);
+int (*gsw_gnss_init_configure_gps)(gsw_gnss_init_configure_t init_configure);
+
+void *dlHandle_gnss_test;
+char *lynqLib_gnss_test = "/lib/libgsw_lib.so";
+
+
+void tmp_gnss_callack(const char* nmea, int length)
+{
+ printf("%s",nmea);
+}
+
+gsw_gnss_cb tmp_ptr = {
+ NULL,
+ tmp_gnss_callack
+};
+
+void user_help(void)
+{
+ printf("\t-1 exit\n"
+ "\t1 gnss init\n"
+ "\t2 gnss deinit \n"
+ "\t3 gnss reg_cb\n"
+ "\t6 gnss start\n"
+ "\t7 gnss stop\n"
+ "\t8 gnss Delete_Aiding_Data and reset\n"
+ "\t9 gnss epo switch\n"
+ "\t10 gnss set startmode\n"
+ "\t11 gnss set frequency\n"
+ "please input operator: >> ");
+}
+void delete_type(void)
+{
+ printf("\t0 DELETE_NOTHING\n"
+ "\t1 DELETE_EPHEMERIS\n"
+ "\t2 DELETE_ALL\n"
+ "please input operator: >> ");
+}
+
+int main(void)
+{
+ int ret;
+ int opt = 0;
+ dlHandle_gnss_test = dlopen(lynqLib_gnss_test, RTLD_NOW);
+ while(1)
+ {
+ printf("=========gnss main=========\n");
+ user_help();
+ if (scanf("%d", &opt) != 1)
+ {
+ printf("Input error, please check it\n");
+ while (getchar() != '\n');
+ continue;
+ }
+ while(getchar()!='\n');
+ switch (opt)
+ {
+ case -1:
+ {
+ printf("main exit\n");
+ return 0;
+ }
+
+ case 1:
+ {
+ gsw_gnss_init=(int(*)())dlsym(dlHandle_gnss_test, "gsw_gnss_init");
+ ret = gsw_gnss_init();
+ if(ret < 0)
+ {
+ printf("gsw_gnss_init FAIL.\n");
+ return -1;
+ }
+ printf("gsw_gnss_init success.\n");
+ break;
+ }
+ case 2:
+ {
+ gsw_gnss_deinit=(int(*)())dlsym(dlHandle_gnss_test, "gsw_gnss_deinit");
+ ret =gsw_gnss_deinit();
+ if(ret < 0)
+ {
+ printf("gsw_gnss_deinit FAIL.\n");
+ return -1;
+ }
+ printf("gsw_gnss_deinit success \n");
+ break;
+ }
+ case 3:
+ {
+ gsw_gnss_reg_cb_group=(int(*)(gsw_gnss_cb))dlsym(dlHandle_gnss_test, "gsw_gnss_reg_cb_group");
+ ret =gsw_gnss_reg_cb_group(tmp_ptr);
+ if(ret < 0)
+ {
+ printf("gsw_gnss_reg_cb_group FAIL.\n");
+ return -1;
+ }
+ printf("gsw_gnss_reg_cb_group success \n");
+ break;
+ }
+ // case 4:
+ // {
+ // qser_Gnss_Deinit=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Deinit");
+ // ret =qser_Gnss_Deinit(ph_gnss);
+ // if(ret < 0)
+ // {
+ // printf("mopen_gnss_client_Deinit FAIL.\n");
+ // return -1;
+ // }
+ // printf("mopen_gnss_client_Deinit success \n");
+ // break;
+ // }
+ // case 5:
+ // {
+ // qser_Gnss_Deinit=(int(*)(uint32_t))dlsym(dlHandle_gnss, "qser_Gnss_Deinit");
+ // ret =qser_Gnss_Deinit(ph_gnss);
+ // if(ret < 0)
+ // {
+ // printf("mopen_gnss_client_Deinit FAIL.\n");
+ // return -1;
+ // }
+ // printf("mopen_gnss_client_Deinit success \n");
+ // break;
+ // }
+ case 6:
+ {
+ gsw_gnss_start=(int(*)())dlsym(dlHandle_gnss_test, "gsw_gnss_start");
+ ret =gsw_gnss_start();
+ if(ret < 0)
+ {
+ printf("gsw_gnss_start FAIL.\n");
+ return -1;
+ }
+ printf("gsw_gnss_start success \n");
+ break;
+ }
+ case 7:
+ {
+ gsw_gnss_stop=(int(*)())dlsym(dlHandle_gnss_test, "gsw_gnss_stop");
+ ret =gsw_gnss_stop();
+ if(ret < 0)
+ {
+ printf("gsw_gnss_stop FAIL.\n");
+ return -1;
+ }
+ printf("gsw_gnss_stop success \n");
+ break;
+ }
+ case 8:
+ {
+ int flags; // 1-dele no ; 2- dele eph ; 3 dele all
+ gsw_gnss_delete_aiding_data=(int(*)(unsigned int))dlsym(dlHandle_gnss_test, "gsw_gnss_delete_aiding_data");
+ delete_type();
+ if (scanf("%d", &flags) != 1)
+ printf("input error,please check it");
+ ret =gsw_gnss_delete_aiding_data(flags);
+ if(ret < 0)
+ {
+ printf("gsw_gnss_delete_aiding_data FAIL.\n");
+ return -1;
+ }
+ printf("gsw_gnss_delete_aiding_data success \n");
+ break;
+ }
+ case 9:
+ {
+ int able;
+ gsw_gnss_epo_switch=(int(*)(GSW_GNSS_CONF_SWITCH))dlsym(dlHandle_gnss_test, "gsw_gnss_epo_switch");
+ if (scanf("%d", &able) != 1)
+ printf("input error,please check it");
+ ret =gsw_gnss_epo_switch(able);
+ if(ret < 0)
+ {
+ printf("mopen_gnss_client_Deinit FAIL.\n");
+ return -1;
+ }
+ printf("mopen_gnss_client_Deinit success \n");
+ break;
+ }
+ case 10:
+ {
+ int conf;
+ gsw_gnss_set_start_mode=(int(*)(uint32_t))dlsym(dlHandle_gnss_test, "gsw_gnss_set_start_mode");
+ if (scanf("%d", &conf) != 1)
+ printf("input error,please check it");
+ ret =gsw_gnss_set_start_mode(conf);
+ if(ret < 0)
+ {
+ printf("gsw_gnss_set_start_mode FAIL.\n");
+ return -1;
+ }
+ printf("gsw_gnss_set_start_mode success \n");
+ break;
+ }
+ case 11:
+ {
+ int frequency;
+ gsw_gnss_set_freq=(int(*)(int))dlsym(dlHandle_gnss_test, "gsw_gnss_set_freq");
+ if (scanf("%d", &frequency) != 1)
+ printf("input error,please check it");
+ ret =gsw_gnss_set_freq(frequency);
+ if(ret < 0)
+ {
+ printf("gsw_gnss_set_freq FAIL.\n");
+ return -1;
+ }
+ printf("frequency is %d\n",frequency);
+ printf("gsw_gnss_set_freq success\n");
+ break;
+ }
+ }
+ }
+}
\ No newline at end of file