blob: 893f6a8cb1c03c5f4300523577a39cdd0b439077 [file] [log] [blame]
b.liud440f9f2025-04-18 10:44:31 +08001/*
2* qser_gnss.h
3*
4* QSER GNSS header file.
5*
6* Author : lb
7* Date : 2023/11/23 11:13:18
8*/
9#ifndef _QSER_GNSS_H
10#define _QSER_GNSS_H
11#include "mbtk_type.h"
12#include "mbtk_gnss.h"
13#include "mbtk_log.h"
14
15typedef unsigned int Uint_t;
16#define MOPEN_GNSS_NMEA_MAX_LENGTH 255 /* NMEA string maximum length. */
17
18#define QSER_LEN_MAX 128
19
20typedef enum
21{
22 E_MT_LOC_MSG_ID_LOCATION_INFO = 1, /**< pv_data = & mopen_location_info_t */
23 E_MT_LOC_MSG_ID_NMEA_INFO = 3, /**< pv_data = & mopen_gnss_nmea_info_t */
24} e_msg_id_t;
25
26typedef enum {
27 QSER_GNSS_ERROR_SUCCESS = 0,
28 QSER_GNSS_ERROR_FAIL,
29} qser_gnss_error_e;
30
31typedef void (*gnss_handler_func_t)
32(
33 Uint_t *h_loc,
34 e_msg_id_t e_msg_id, //消息 ID
35 void *pv_data, //消息内容,取决于 ID,如下说明
36 void *context_ptr //用于区分哪个返回的消息
37)/* lynq_AddRxIndMsgHandler_t*/;
38
39typedef void (*gnss_async_func_t)(qser_gnss_error_e state);
40
41typedef struct
42{
43 char host[QSER_LEN_MAX];
44 char id[QSER_LEN_MAX];
45 char passwd[QSER_LEN_MAX];
46}qser_agps_info;
47
48typedef struct
49{
50 int64_t timestamp; /**< System Timestamp, marked for when got the nmea data */
51 int length; /**< NMEA string length. */
52 char nmea[MOPEN_GNSS_NMEA_MAX_LENGTH + 1]; /**< NMEA string.*/
53}mopen_gnss_nmea_info_t; /* Message */
54
55typedef struct
56{
57 uint32_t size; /**< Set to the size of mcm_gps_location_t. */
58 int flags; /**< Contains GPS location flags bits. */
59 int position_source; /**< Provider indicator for HYBRID or GPS. */ //功能暂未实现,可不用添加进结构体
60 double latitude; /**< Latitude in degrees. */
61 double longitude; /**< Longitude in degrees. */
62 double altitude; /**< Altitude in meters above the WGS 84 reference ellipsoid. */
63 float speed; /**< Speed in meters per second. */
64 float bearing; /**< Heading in degrees. */ //功能暂未实现,可不用添加进结构体
65 float accuracy; /**< Expected accuracy in meters. */ //功能暂未实现,可不用添加进结构体
66 int64_t timestamp; /**< Timestamp for the location fix in UTC million-second base. */
67 int32_t is_indoor; /**< Location is indoors. */ //功能暂未实现,可不用添加进结构体
68 float floor_number; /**< Indicates the floor number. */
69}mopen_location_info_t;//功能暂未实现,可不用添加进结构体
70
71typedef struct
72{
73 uint32_t year; // 大于 1980
74 uint32_t month; // 1-12
75 uint32_t day; // 1-31
76 uint32_t hour; // 0-23
77 uint32_t minute; // 0-59
78 uint32_t second; // 0-59
79 uint32_t millisecond; // 0-999
80} LYNQ_INJECT_TIME_INTO_T; /* Message */
81
82typedef enum {
83 DELETE_NOTHING = 0, /*不删除数据*/
84 DELETE_EPHEMERIS = 1, /*删除星历*/
85 DELETE_ALMANAC = 2, /*删除历书*/
86 DELETE_POSITION_TIME = 3, /*删除时间和位置信息. */
87 DELETE_UTC = 4, /*删除 UTC 时间*/
88 DELETE_ALL = 5 /*删除所有*/
89} DELETE_AIDING_DATA_TYPE_T;
90
91int qser_Gnss_Init (uint32_t *h_gnss);
92
93int qser_Gnss_Deinit (uint32_t h_gnss);
94
95int qser_AddRxIndMsgHandler (gnss_handler_func_t handler_ptr,uint32_t h_gnss);
96
97int qser_Set_Indications (uint32_t h_gnss,e_msg_id_t type);
98
99int qser_Gnss_Set_Async_Callback(gnss_async_func_t cb);
100
101int qser_Gnss_Start (uint32_t h_gnss);
102
103int qser_Gnss_Start_Async(uint32_t h_gnss);
104
105int qser_Gnss_Stop (uint32_t h_gnss);
106
107int qser_Gnss_Set_Frequency(uint32_t h_gnss, int frequency);
108
109int qser_Gnss_InjectTime (uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info);
110
111int qser_Gnss_Delete_Aiding_Data (uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags);
112
113int qser_Gnss_Server_Configuration(char *host, char *id, char *password);
114
115int qser_Gnss_download_tle();
116
117int qser_Gnss_injectEphemeris(uint32_t h_gnss);
118
119
120#endif /* _QSER_GNSS_H */