123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- /*================================================================
- Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved.
- Quectel Wireless Solutions Proprietary and Confidential.
- =================================================================*/
-
- #ifndef QL_LBS_CLIENT_H
- #define QL_LBS_CLIENT_H
- #define lbs_print(msg, ...) custom_log_tag("LBS_CLI", QUEC_LOG_TAG_LBS, msg, ##__VA_ARGS__)
- #define LBS_MAX_CELL_NUM 6
- #define LBS_MAX_POS_NUM 6
- #define LBS_MAX_WIFI_NUM 6
- #define LBS_SINGLE_CELL_LOC_METHOD 1
- #define LBS_CELL_LOC_METHOD 4
- #define LBS_CELL_WIFI_LOC_METHOD 5
- #define LBS_WIFI_LOC_METHOD 6
- typedef struct{
- uint8_t type;// 类型 01表示定位,02表示上报
- uint8_t encrypt;//加密方案,01表示异或
- uint8_t key_index;// 01的加密方案中该参数表示"加扰KEY编号",本地随机生成,范围在0-7
- uint8_t pos_format;//回应数据包类型01 不需要地址信息, 02 需要地址信息
- uint8_t loc_method;//01-普通基站轮询,02-多基站分别轮询(废弃), 03-服务端三角定位,04-第三方接口/模块端三角定位,05-cell+wifi定位,06-仅wifi定位。
- }lbs_basic_info_t;
- typedef struct{
- char user_name[64];//用户名
- char user_pwd[64];//密码
- char token[128];//定位访问凭证
- char imei[64];//国际移动设备识别码
- uint16_t rand;//随机数
- }lbs_auth_info_t;
- typedef struct{
- uint8_t radio;//发射类型
- uint16_t mcc;//移动国家号码
- uint16_t mnc;// 移动网络号码
- int lac_id;//区域码
- int cell_id;//基站码
- int16_t signal;//信号强度
- uint16_t tac;//跟踪区编码
- uint16_t bcch;//BCCH信道的绝对无线频道编号
- uint8_t bsic;//基站识别码/基站色码,GSM用
- uint16_t uarfcndl;//下行频率,WCDMA 用
- uint16_t psc;//主扰码,WCDMA用
- int16_t rsrq;//参考信号接收质量,LTE用
- uint16_t pci;//物理小区标识,LTE用
- uint16_t earfcn;//绝对频点号,LTE用
- uint16_t reserve;//保留
- }lbs_cell_info_t;
- typedef struct{
- char wifi_mac[18];
- int wifi_rssi;
- char wifi_ssid[32];
- }lbs_wifi_mac_info_t;
- typedef struct{
- int pdp_cid;
- int sim_id;
- int req_timeout;
- lbs_basic_info_t *basic_info;
- lbs_auth_info_t *auth_info;
- int cell_num;
- lbs_cell_info_t *cell_info;
- int wifi_num;
- lbs_wifi_mac_info_t *wifi_info;
- }lbs_option_t;
- typedef struct{
- float longitude;//经度
- float latitude;//纬度
- uint16_t accuracy;//精度
- uint8_t flag;//0 - 正常基站 1 – 无效基站
- }lbs_postion_info_t;
- typedef enum{
- QL_LBS_OK = 0,
- QL_LBS_LOC_FAIL = (QL_COMPONENT_LWIP_LBS << 16) | 10000, /* 定位失败 */
- QL_LBS_IMEI_ILLEGAL = (QL_COMPONENT_LWIP_LBS << 16) | 10001, /* 非法imei号 */
- QL_LBS_TOKEN_NOT_EXIST = (QL_COMPONENT_LWIP_LBS << 16) | 10002, /* token不存在 */
- QL_LBS_TOKEN_LOC_EXCEED_MAX = (QL_COMPONENT_LWIP_LBS << 16) | 10003, /* token的定位次数超过最大值 */
- QL_LBS_IMEI_LOC_EXCEED_DAY_MAX = (QL_COMPONENT_LWIP_LBS << 16) | 10004, /* 设备的每天定位次数超过最大值 */
- QL_LBS_IMEI_LOC_VISIT_EXCEED_MAX = (QL_COMPONENT_LWIP_LBS << 16) | 10005, /* token连接设备数超过最大值 */
- QL_LBS_TOKEN_EXPIRED = (QL_COMPONENT_LWIP_LBS << 16) | 10006, /* token过期 */
- QL_LBS_IMEI_NO_AUTHORITY = (QL_COMPONENT_LWIP_LBS << 16) | 10007, /* 该imei号设备不可访问服务 */
- QL_LBS_TOKEN_LOC_VISIT_EXCEED_MAX = (QL_COMPONENT_LWIP_LBS << 16) | 10008, /* token每天定位次数超过最大值 */
- QL_LBS_TOKEN_LOC_EXCEED_PERIOD_MAX = (QL_COMPONENT_LWIP_LBS << 16) | 10009, /* token周期内定位次数超过最大值 */
- QL_LBS_DNS_FAIL = (QL_COMPONENT_LWIP_LBS << 16) | 10101,
- QL_LBS_MD5_FAIL = (QL_COMPONENT_LWIP_LBS << 16) | 10102,
- QL_LBS_MEMORY_FAIL = (QL_COMPONENT_LWIP_LBS << 16) | 10103,
- QL_LBS_NET_FAIL = (QL_COMPONENT_LWIP_LBS << 16) | 10104,
- QL_LBS_PARAM_FORMAT_FAIL = (QL_COMPONENT_LWIP_LBS << 16) | 10105,
- }lbs_result_code_e;
- typedef int lbs_client_hndl;
- typedef struct{
- lbs_client_hndl hndl; /* LBS客户端句柄。由ql_lbs_get_position获取 */
- lbs_result_code_e result; /* 定位结果,对应lbs_result_code_e */
- int pos_num; /* LBS定位成功后,得到位置信息的个数 */
- lbs_postion_info_t *pos_info; /* BS得到的位置信息 */
- char *date; /* 服务器返回的时间 */
- void *arg; /* 用户自定义参数,由ql_lbs_get_position传入 */
- }lbs_response_data_t;
- /*****************************************************************
- * Function: ql_lbs_response_callback
- *
- * Description:
- * LBS的定位结果,通过该函数告知应用程序。
- *
- * Parameters:
- * response_data [in] 定位响应数据,对应lbs_response_data_t
- *
- * Return: void
- *
- *****************************************************************/
- typedef void(*ql_lbs_response_callback)(lbs_response_data_t *response_data);
- /*****************************************************************
- * Function: ql_lbs_get_position
- *
- * Description:
- * 基于基站信息/wifi信息,查询设备所在的位置信息。
- *
- * Parameters:
- * lbs_hndl [out] 创建的LBS客户端句柄
- * host [in] 服务器地址
- * user_opts [in] LBS请求的参数
- * cb [in] LBS请求结果的回调函数
- * arg [in] 用户自定义参数
- *
- * Return:结果码,参考lbs_result_code_e
- *
- *****************************************************************/
- lbs_result_code_e ql_lbs_get_position(lbs_client_hndl *lbs_hndl, char *host, lbs_option_t *user_opts, ql_lbs_response_callback cb, void *arg);
- #endif
|