全部文档
OneOS简介 硬件支持 编译构造工具 API参考文档 高级语言 用户编程手册 应用笔记 FAQ

OneOS-OnePos

简介

位置服务组件可以对使用操作系统的合作伙伴提供室内外定位功能。该定位功能依据多数智能硬件本身情况而设计,无需增加额外产品成本,就能在当前硬件支持的情况下给出精度最高的定位结果;目前的位置服务组件的定位方式主要有:Wi-Fi定位、卫星导航定位。后续还会开放定位服务器相关接口,以方便开发者使用。

目录结构

目录 说明
Kconfig 配置脚本
SConscript 编译脚本
include 头文件目录
source 源文件目录

重要数据结构

目前OnePos的定位结果按照位置信息的获取途径分为GNSS位置结果和OnePos定位服务结果;

GNSS定位结果数据结构

根据不同的NMEA数据集封装了不同的结构体,这些语句集的结构体作为GNSS位置结构体的一个子集,可以通过相关宏定义来控制使用不同的子集;目前支持的NMEA数据集有:RMC、GGA、GSV、GLL、GSA、VTG、ZDA。

typedef struct 
{
  nmea_rmc_t  rmc_frame;
  nmea_gga_t  gga_frame;
  nmea_gsv_t  gsv_frame;
  nmea_gll_t  gll_frame;
  nmea_gsa_t  gsa_frame;
  nmea_vtg_t  vtg_frame;
  nmea_zda_t  zda_frame;
  os_uint32_t valid_flag;
} nmea_t;
重要成员 说明
rmc_frame RMC数据集(推荐最低指定GNSS数据)
gga_frame GGA数据集(GPS定位信息,用于全球定位系统的定位数据)
gsv_frame GSV数据集(可见的GNSS卫星)
gll_frame GGL数据集(地理位置——经度/纬度)
gsa_frame GSA数据集(GPS精度因子与使用的卫星)
vtg_frame VTG数据集(地面航向与地面速度,水平航向与航速)
zda_frame ZDA数据集(时间与日期)
valid_flag 当前GNSS数据结构中有效数据集标志

单wifi位置解算的定位结果数据结构

typedef struct
{
    ops_uint_t  time;             
    ops_float_t lat_coordinate;   
    ops_float_t lon_coordinate;   
}ops_sigle_wifi_info_t;
重要成员 说明
time 定位时间(Unix时间戳,单位:s)
lat 纬度
lon 经度

多wifi联合定位结果数据结构

typedef struct
{
    ops_uint_t  time;          
    ops_float_t lat_coordinate;
    ops_float_t lon_coordinate;
}ops_platform_wifi_info_t;
重要成员 说明
time 定位时间(Unix时间戳,单位:s)
lat 纬度
lon 经度

多基站联合定位结果数据结构

WIFI定位结果的数据内容包含:定位时间、经度、维度、以及定位精度半径和定位到的实际的地理位置信息;

typedef struct
{
    ops_uint_t  time;             
    ops_float_t lat_coordinate;   
    ops_float_t lon_coordinate;   
}ops_platform_lbs_info_t;
重要成员 说明
time 定位时间(Unix时间戳,单位:s)
lat 纬度
lon 经度

定位服务维护的位置结果数据结构

typedef struct
{
    ops_sigle_wifi_info_t    *sigle_wifi_src_info;
    ops_platform_wifi_info_t *platform_wifi_src_info;
    ops_platform_lbs_info_t  *platform_lbs_src_info;
}ops_src_info_t;
重要成员 说明
sigle_wifi_src_info 单wifi位置解算的定位结果
platform_wifi_src_info 多wifi联合定位结果
platform_lbs_src_info 多基站联合定位结果

获取位置API列表

接口 说明
get_gnss_data 获取GNSS定位结果
onepos_get_latest_position 返回当前模式的定位结果

get_gnss_data

os_bool_t get_gnss_data(nmea_t* nmea, 
                        gnss_data_flag_t get_data_type_flag)
参数 说明
nmea 指向GNSS数据结构体,用来保存位置信息
get_data_type_flag 要获取的数据集类别
返回 说明
os_bool_t 成功获取返回true,获取超时返回false

onepos_get_latest_position

os_bool_t onepos_get_latest_position(ops_src_info_t* src_info)
参数 说明
src_info 指向定位服务维护的位置结果的结构体,用来保存位置信息
返回 说明
os_bool_t 成功获取返回true,获取超时返回false

配置定位服务API接口

接口 说明
onepos_get_server_sta 查询服务运行状态
onepos_get_server_type 查询服务运行类型
onepos_set_server_type 设置服务运行类型
onepos_get_sev_pro 查询位置服务提供商
onepos_set_sev_pro 设置位置服务提供商
onepos_get_pos_mode 查询服务的定位方式
onepos_set_pos_mode 设置服务的定位方法
onepos_get_pos_interval 查询服务定位间隔(该间隔用于周期性定位的周期)
onepos_set_pos_interval 设置服务定位间隔(该间隔用于周期性定位的周期)
onepos_start_server 开启定位服务
onepos_stop_server 停止定位服务
onepos_info_print 打印定位结果
onepos_serv_sta_t onepos_get_server_sta(void)

返回值:
typedef enum
{
    ONEPOS_CLOSING      =   0,    // 服务已关闭
    ONEPOS_RUNING       =   1,    // 周期性定位正在运行
    ONEPOS_SIG_RUNING   =   2,    // 单次定位正在运行
    ONEPOS_WILL_CLOSE   =   3,    // 周期性定位即将关闭(在本次定位运行完成后将关闭)
    ONEPOS_MAX_STA      =   4
}onepos_serv_sta_t;
返回 说明
onepos_serv_sta_t 返回服务运行状态
onepos_serv_type onepos_get_server_type(void)

返回值:
typedef enum
{
    ONEPOS_INVAILD_TYPE =  -1,    
    ONEPOS_CIRC_RUN     =   0,    // 周期性运行定位功能
    ONEPOS_SIG_RUN      =   1,    // 单次运行定位功能
    ONEPOS_MAX_TYPE     =   2
}onepos_serv_type;
返回 说明
onepos_serv_type 服务运行类型
os_bool_t onepos_set_server_type(onepos_serv_type type)
参数 说明
type 要设置的服务运行类型
返回 说明
os_bool_t 成功获取返回true,获取超时返回false
onepos_sev_pro_t onepos_get_sev_pro(void)

返回值:
typedef enum
{
    ONEPOS_OWN_SERVER_PROVIDE    =  0, // 使用自有的位置服务提供商
    ONEPOS_ONENET_SERVER_PROVIDE =  1, // 使用OneNET作为位置服务提供商
    ONEPOS_MAX_SEV_PRO
}onepos_sev_pro_t;
返回 说明
onepos_sev_pro_t 返回所使用位置服务提供商
os_bool_t onepos_set_sev_pro(onepos_sev_pro_t provider)
参数 说明
onepos_sev_pro_t 设置的位置服务提供商
返回 说明
os_bool_t 成功获取返回true,获取超时返回false
onepos_pos_mode_t onepos_get_pos_mode(void)

返回值:
typedef enum
{
    ONEPOS_INVAILD_POS_MODE        = 0,    
    ONEPOS_QUERY_SINGLE_WIFI_POS,        // 单wifi位置解算的定位模式
    ONEPOS_MUL_WIFI_JOINT_POS,            // 多wifi联合定位模式
    ONEPOS_MUL_CELL_JOINT_POS,            // 多基站联合定位模式
    ONEPOS_MAX_POS_MODE,
}onepos_pos_mode_t;
返回 说明
onepos_pos_mode_t 返回所使用的定位模式
os_bool_t onepos_set_pos_mode(onepos_pos_mode_t mode)
参数 说明
mode 设置的定位模式
返回 说明
os_bool_t 成功获取返回true,获取超时返回false
os_uint16_t onepos_get_pos_interval(void)
返回 说明
os_uint16_t 返回服务当前的定位周期(单位:s)
os_bool_t onepos_set_pos_interval(os_uint16_t interval)
参数 说明
interval 设置的定位周期时间(单位:s)
返回 说明
os_bool_t 成功获取返回true,获取超时返回false
void onepos_info_print(ops_src_info_t *src_info, onepos_pos_mode_t mode)
参数 说明
src_info 指向定位服务维护的位置结果的结构体,保存有定位结果
mode 定位模式(选择要打印那种模式定位的结果)

尝鲜帐号

userkey: 47fcee685ed85e8d2886ad5f23879f82

deviceID password clientID
HsQwvIzIRKS5Xu8QGOFemw eeb0ea52993ff647c99928afbdc72faa HsQwvIzIRKS5Xu8QGOFemw@md5@1599644924
nAvQaI7QRq-pe3YVcBWUoQ 9a3da149ec639b2eaf5b1bb046390813 nAvQaI7QRq-pe3YVcBWUoQ@md5@1599644924
nTHM5aCURGeJC6MzgUVjjw bfd2992237d9da7bb574bc9fc38de647 nTHM5aCURGeJC6MzgUVjjw@md5@1599644924
xH5UfDiZRoazNQ8Zgv4gdA f2e8f8928a3082b7d0a3eac396769daa xH5UfDiZRoazNQ8Zgv4gdA@md5@1599644924
ftpcGkfUTAS3x1QfRM1PDQ 34631708c3414bac5b6e08a7f9a05101 ftpcGkfUTAS3x1QfRM1PDQ@md5@1599644924
iGCR8p4YTyO55d3VKpl-lQ 8194a1e96e6423f954d2e468d2947129 iGCR8p4YTyO55d3VKpl-lQ@md5@1599644924
mAkEW2CqQTqk4EJCXYI9Cw e8675582bc0b9824cfb16ceac589b12a mAkEW2CqQTqk4EJCXYI9Cw@md5@1599644924
MsF086dISU-qcRJKxZfDwg 94df0f1c1ceb0403dd327505870a91c3 MsF086dISU-qcRJKxZfDwg@md5@1599644924
SqsJ41rdSMmq6CcYf9V19w c964aedb5f60c8cab49dcb6232f7c89e SqsJ41rdSMmq6CcYf9V19w@md5@1599644924
6QZM0MxmR9Gz1RDueNbxUw 4d519b9eeed412ab6286f661bef06520 6QZM0MxmR9Gz1RDueNbxUw@md5@1599644924

使用示例

参考components\position\source目录下onepos_cmd.c使用范例。

results matching ""

    No results matching ""

    返回顶部