[Feature][T108][GNSS][task-view-1502]GNSS API header file update

    Only Configure: No
    Affected branch: GSW_V1453
    Affected module: GNSS
    Is it affected on IC: only ASR
    Self-test: yes
    Doc Update: no

Change-Id: I0255e4ac0bdc6f54a2189651e1d0aab25cd7b16f
diff --git a/mbtk/include/gsw/gsw_gnss_interface.h b/mbtk/include/gsw/gsw_gnss_interface.h
new file mode 100755
index 0000000..046ede2
--- /dev/null
+++ b/mbtk/include/gsw/gsw_gnss_interface.h
@@ -0,0 +1,242 @@
+/**

+*  @file  : gsw_gnss_interface.h

+*  @brief : gnss function

+*  @date : 2022-07-05

+*  @author : gaofeng6122

+*  @version : v1.0

+*  @copyright Copyright(C) 2022,Gosuncnwelink

+*/

+#ifndef __GSW_GNSS_INTERFACE__H__

+#define __GSW_GNSS_INTERFACE__H__

+

+/*********************************************************************************************/

+#include <stdio.h>

+#include <stdlib.h>

+#include <string.h>

+#include <unistd.h>

+#include <pthread.h>

+#include <stddef.h>

+#include "gsw_hal_errcode.h"

+

+typedef enum {

+    GNSS_FREQ_1HZ = 1,    /**< 1Hz */

+    GNSS_FREQ_2HZ = 2,    /**< 2Hz */

+    GNSS_FREQ_5HZ = 5,    /**< 5Hz */

+    GNSS_FREQ_10HZ = 10,  /**< 10Hz */

+} gnss_freq_type;

+

+#define GNSS_OK     GSW_HAL_SUCCESS

+#define GNSS_ERROR  GSW_HAL_NORMAL_FAIL

+

+

+typedef struct

+{

+    size_t       size;          /**< set to sizeof(GpsLocation) */

+    

+    unsigned short int     flags; /**< Contains GpsLocationFlags bits. */

+    

+    double      latitude;   /**< Represents latitude in degrees. */

+    

+    double      longitude;  /**< Represents longitude in degrees. */

+   

+    double      altitude;    /**< Represents altitude in meters above the WGS 84 reference ellipsoid. */

+    

+    float        speed; /**< Represents speed in meters per second. */

+    

+    float        bearing;   /**< Represents heading in degrees. */

+    

+    float        accuracy;  /**< Represents expected accuracy in meters. */

+    

+    long long int      timestamp;   /**< Timestamp for the location fix. */

+}GSW_GNSS_LOCATION_T;

+

+typedef struct {

+    GSW_GNSS_LOCATION_T legacyLocation;

+    float  horizontalAccuracyMeters;    /**< horizontal position accuracy in meters (68% confidence)*/

+    float  verticalAccuracyMeters;      /**< vertical position accuracy in meters (68% confidence)*/

+    float  speedAccuracyMetersPerSecond;/**< speed accuracy in meter per seconds (68% confidence)*/

+    float  bearingAccuracyDegrees;      /**< bearing accuracy in degrees (68% confidence)*/

+}GSW_GNSS_LOCATION_EXT_T;

+

+typedef enum{

+    GSW_MODE_GPS_GLONASS = 0,                       /**< GPS+GLONASS */

+    GSW_MODE_GPS_BEIDOU,                            /**< GPS+BEIDOU */

+    GSW_MODE_GPS_GLONASS_BEIDOU,                    /**< GPS+GLONASS+BEIDOU */

+    GSW_MODE_GPS,                                   /**< GPS only */

+    GSW_MODE_BEIDOU,                                /**< BEIDOU only*/ /* The high-tech platform does not support this type */

+    GSW_MODE_GLONASS,                               /**< GLONASS only */ /* The high-tech platform does not support this type */

+    GSW_MODE_GPS_GLONASS_BEIDOU_GALILEO,            /**< GPS+GLONASS+BEIDOU+GALILEO */

+    GSW_MODE_GPS_GALILEO,                           /**< GPS+GALILEO */

+    GSW_MODE_GPS_GLONASS_GALILEO,                   /**< GPS+GLONASS+GALILEO */

+    GSW_MODE_GPS_GALILEO_ONLY,                      /**< GPS or GALILEO only */

+    GSW_MODE_GPS_GLONASS_BEIDOU_GALILEO_NAVIC,      /**< GPS+GLONASS+BEIDOU+GALILEO+NAVIC */ /* The high-tech platform does not support this type */

+    GSW_MODE_GNSS_END                               /**< init value */

+}GSW_GNSS_MODE_CONFIGURATION;

+

+typedef enum{

+    GSW_SWITCH_DISABLE = 0,    /**< configuration switch disable :0 */

+    GSW_SWITCH_ENABLE          /**< configuration switch enable :1 */

+}GSW_CONF_SWITCH;

+

+typedef enum

+{

+    GSW_LOC_DELETE_EPHEMERIS       = (1 <<  0),    /**<  Delete ephemeris data.  */

+    GSW_LOC_DELETE_ALMANAC         = (1 <<  1),    /**<  Delete almanac data.  */

+    GSW_LOC_DELETE_POSITION        = (1 <<  2),    /**<  Delete position data.  */

+    GSW_LOC_DELETE_TIME            = (1 <<  3),    /**<  Delete time data.  */

+    GSW_LOC_DELETE_IONO            = (1 <<  4),    /**<  Delete IONO data.  */

+    GSW_LOC_DELETE_UTC             = (1 <<  5),    /**<  Delete UTC data.  */

+    GSW_LOC_DELETE_HEALTH          = (1 <<  6),    /**<  Delete health data.  */

+    GSW_LOC_DELETE_SVDIR           = (1 <<  7),    /**<  Delete SVDIR data.  */

+    GSW_LOC_DELETE_SVSTEER         = (1 <<  8),    /**<  Delete SVSTEER data.  */

+    GSW_LOC_DELETE_SADATA          = (1 <<  9),    /**<  Delete SA data.  */

+    GSW_LOC_DELETE_RTI             = (1 << 10),    /**<  Delete RTI data.  */

+    GSW_LOC_DELETE_CELLDB_INFO     = (1 << 11),    /**<  Delete cell DB information.  */

+    GSW_LOC_DELETE_ALL             = 0xFFFFFFFF,   /**<  Delete all location data.  */

+} GSW_AIDING_DATA_E;

+

+/* Callback function registered to gnss location

+ * Note:don`t use blocking function inside callback functions */

+typedef void (*gsw_gnss_location_callback_ext)(GSW_GNSS_LOCATION_EXT_T* location);

+

+/* Callback function registered to gnss nmea

+ * Note:don`t use blocking function inside callback functions */

+typedef void (* gsw_gnss_nmea_callback)(const char* nmea, int length);

+

+typedef struct

+{

+    gsw_gnss_location_callback_ext gsw_location_cb;    /**< location callback */

+    gsw_gnss_nmea_callback gsw_nmea_cb;                /**< nmea callback */

+}gsw_gnss_cb;

+

+typedef enum

+{

+    GSW_XTRA_STATE_MIN = 0,

+    GSW_XTRA_STATE_DISBALE = GSW_XTRA_STATE_MIN,

+    GSW_XTRA_STATE_ENABLE,

+    GSW_XTRA_STATE_MAX

+} gsw_xtra_state_e;

+

+

+/**

+ * @brief SDK interface to set gnss sampling frequency

+ * @details E02 and E06 unused

+ * @param  [in] freq 

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_gnss_set_freq(int freq);

+

+/**

+ * @brief SDK interface to initialization gnss

+ * 

+ * @param 

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_gnss_init(void);

+

+/**

+ * @brief SDK interface to start gnss

+ * @param 

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_gnss_start(void);

+

+/**

+ * @brief SDK interface to stop gnss

+ * @param 

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_gnss_stop(void);

+

+/**

+ * @brief SDK interface to de initialization gnss

+ * @param 

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_gnss_deinit(void);

+

+/**

+ * @brief SDK interface to set gnss start mode,specific mode refreence GSW_GNSS_MODE_CONFIGURATION

+ * @details E02 and E06 unused

+ * 

+ * @param  [in] start_mode 

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_gnss_set_start_mode(GSW_GNSS_MODE_CONFIGURATION start_mode);

+

+/**

+ * @brief SDK interface to set EPO switch if open or close

+ * @details E02 and E06 unused

+ * 

+ * @param  [in] switch_op

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_gnss_epo_switch(GSW_CONF_SWITCH switch_op);

+

+/**

+ * @brief SDK interface to delete aiding data,delete aiding data for cold start

+ * @details E02 and E06 unused

+ * 

+ * @param  [in] flags

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_gnss_delete_aiding_data(unsigned int flags);

+

+/**

+ * @brief load the dynamic link library.this interface must be called before other interface

+ * @details E02 and E06 unused

+ * 

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_gnss_add_lib(void);  /* The high-tech platform does not support this type */

+

+/**

+ * @brief SDK interface to registered callback function

+ * @details E02 and E06 unused

+ * 

+ * @param  [in] callback 

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_gnss_reg_cb_group(gsw_gnss_cb callback);

+

+/**

+ * @brief check xtra support or not

+ * @details E02 and E06 unused

+ * 

+ * @param  [in] state 

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_gnss_xtra_is_enable(gsw_xtra_state_e state);

+

+/**

+ * @brief to get current gps information function

+ * @details only for E02 and E06

+ * 

+ * @param  [out] GSW_GNSS_LOCATION_T 

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_gnss_get_current_location(GSW_GNSS_LOCATION_T* location_info);

+

+/**

+ * @brief to get current modem nmea data tail type

+ * @details E02 and E06 unused

+ * 

+ * @param  [out] tail_type

+ * @param  [in] len

+ * @retval 0: success

+ * @retval other: fail

+ */

+int gsw_gnss_get_tail_nmea_type(char *tail_type, int len);

+#endif //__GSW_GNSS_INTERFACE__H__