SDK常用状态码汇总
- 关于千寻SDK综述
用户在使用千寻的高精度定位服务时,需要与千寻服务器进行交互,获取RTCM数据集成千寻SDK,为了与千寻服务器进行交互,用户通常都会集成千寻的SDK。
在集成SDK的过程中,用户难免会遇到各种各样的问题,这时候就需要对自己的代码进行调试。千寻SDK提供了大量的接口,并对各类函数调用与回调都分配了相关的状态码,用户通过log机制,可以很方便的查询到当前代码的状态,诊断自己系统的问题,
本文从官方的开发手册中,摘录出常见的状态码,并做相关的解释说明,希望能帮助所有开发者,尽快跑通自己的系统。
- 嵌入式与Linux环境差分SDK的状态码
非安卓的开发环境,主要包括linux和MCU嵌入式环境两种,这两类系统共享同一套状态码。首先要明白一点,状态码分为两类,一类是函数返回码,这种情况适用于调用SDK提供的接口后,查看函数返回值。关于函数返回码,由于比较简单,本文不全部罗列,仅举关键的几条例子,并解释说明含义。
2.1函数返回代码:
函数返回码,可以理解为函数的返回值,是qxwz_int32_t类型的变量,例如:
QXWZ_SDK_STAT_OK:初始化成功
QXWZ_SDK_ERR_INVALID_CONFIG: 初始化config⾮法,建议检查config结构体中的参数是否正确
这几个是调用了初始化函数后,函数的返回值,通过这个值可以很容易获取到。
再比如说:
QXWZ_SDK_ERR_AUTHING:鉴权进⾏中,SDK会忽略本次鉴权请求,建议在收到鉴权回调后再执⾏后续操作
QXWZ_SDK_ERR_NOT_AUTHED:鉴权尚未通过,建议先调⽤鉴权接⼝且鉴权通过的情况下再调⽤该接⼝
QXWZ_SDK_ERR_ALREADY_STARTED:能⼒已经启动,建议不要重复启动能⼒
QXWZ_SDK_ERR_CAP_NOT_IN_SERVICE:能⼒不在服务中,该能⼒⽆法使⽤请联系业务
QXWZ_SDK_ERR_CAP_INACTIVE:能⼒未激活,该能⼒⽆法使⽤请联系业务
QXWZ_SDK_ERR_CAP_EXPIRED:能⼒已过期,该能⼒⽆法使⽤请联系业务
QXWZ_SDK_ERR_CAP_PAUSE:能⼒已暂停,该能⼒⽆法使⽤请联系业务
QXWZ_SDK_ERR_CAP_DISABLED:能⼒已禁⽤,该能⼒⽆法使⽤请联系业务
QXWZ_SDK_ERR_CAP_NOT_FOUND:能⼒未找到,该能⼒⽆法使⽤请联系业务
上面这几个状态码,都是和鉴权相关的,比如用户账号有问题,账号服务到期,如果出现这几个问题的报错,建议用户优先从自己的账号出发,分析问题。
还有一类状态信息,是用户用来获取当前的能力信息的,也就是说查看账号的能力是否激活,是否过期等,调用api后,会返回到结构体中,具体如下:
QXWZ_SDK_CAP_STATE_INACTIVE 能⼒未激活
QXWZ_SDK_CAP_STATE_SUSPENDED 能⼒已暂停
QXWZ_SDK_CAP_STATE_EXPIRED 能⼒已过期
QXWZ_SDK_CAP_ACT_METHOD_AUTO 能⼒⾃动激活
QXWZ_SDK_CAP_ACT_METHOD_MANUAL 能⼒必须在官⽹控制台⼿动激活
QXWZ_SDK_CAP_ACT_METHOD_TERMINAL 能⼒必须在终端激活
用户在使用SDK的时候,要不断上传自己的GGA,因此还有一个很常用的api,就是上传gga,在调用以后,也会出现各中状态码,具体如下:
QXWZ_SDK_STAT_OK:接⼝调⽤成功
QXWZ_SDK_ERR_INVALID_PARAM:⾮法的输⼊参数,请检查输⼊参数
QXWZ_SDK_ERR_ACTIVATING:正在执⾏激活操作
QXWZ_SDK_ERR_NOT_INITED:SDK未初始化
其他的一类接口,比如获取当前坐标系,设置当前坐标系,查询执行计划等,状态都类似,这里举一个例证说明:
QXWZ_SDK_STAT_OK:接⼝调⽤成功
QXWZ_SDK_ERR_INVALID_PARAM:⾮法的输⼊参数,请检查输⼊参数
QXWZ_SDK_ERR_QUERYING_EXEC_STRATEGY:正在执⾏查询操作
QXWZ_SDK_ERR_NOT_INITED:SDK未初始化
这类api,一般都会有若干个状态,指示调用成功,调用失败,非法参数等各类错误原因,用户通过这些状态值,可以很容易查询到当次调用为什么会失败。
2.2回调函数代码:
上一小节说明的,主要是函数调用的状态码,这些状态码通过函数返回值可以较方便的获取,相对来说比较简单。
本小节再详细讨论一下回调函数的代码。这部分的状态码,一般都是在相关事件触发后,进入到对应的回调函数中,然后在回调函数中进行查询。同时代码跑起来后,这些状态码对应的log信息,也成为调试整个系统的重要参照。
这一部分最重要的,就是状态回调函数,用于SDK状态变更后,将状态通知开发者。
从这个表格中可以看到,这些状态码,都是约定的SDK中至关重要的信息,牵扯到整个账号体系是否正确,系统代码是否能正常工作。
下一部分关键的,就是鉴权回调函数了。这部分也是非常关键,很多客户都会遇到鉴权相关的问题。
可以看到,这部分约定的都是在用户调用鉴权api后,SDK与服务器进行交互,如果账号存在问题而返回的状态码。这些状态码,可以很方便的帮助用户获取到当前的状态。
这部分还有一个重要的状态码,就是查询执行计划状态码,用来查询执行计划结果,并通知开发者,具体如下:
可以看到,这些也是和账号相关的内容,利用了服务器的强大功能。
其他还有一些回调,都是和调用的功能api直接相关的,比如设置坐标系,查询坐标系等,相对来说都比较简单,和上面介绍的查询执行计划类似,会有一些操作完成,和账号相关的错误代码,本文不再详细说明,感兴趣的开发者可以参考SD的开发文档。
- 安卓环境差分SDK常用状态码汇总
除了前面提到的Linux以及嵌入式RTOS等平台,千寻SDK也同样支持安卓系统。安卓系统相比嵌入式环境,底层的网络层都是统一标准的,会减少很多问题的发生,因此安卓平台的状态码相比嵌入式环境,数量会减少很多,用户仅仅用少量的状态码,就可以诊断出自身系统的问题。
在安卓环境下,开发者可以主要关注下面几个回调接口的状态码:
首先是鉴权回调函数:
用户不难发现,这部分的状态码,和前面章节总结的嵌入式环境一致。
对于安卓系统,还有一类状态码也要注意,就是状态回调方法。该⽅法在SDK状态变更后被调⽤,⽤于通知⽤户SDK当前状态,具体如下:
由于状态相对简单,安卓系统的常用状态码就总结这么多,其他的都是一些非常简单的,用户在开发的过程中,可以参考SDK附带的开发手册。
- 带RTK算法的安卓平台状态码
前面几个章节,主要汇总了差分平台SDK的状态码。这种SDK适用于定位模组仅输出原始观测量,需要在处理器上进行RTK解算。千寻的SDK会将RTK算法封装在SDK内部,用户仅需要做简单的操作,就可以实现高精度定位。
借助于安卓系统的强大功能,这种环境下仅仅有少量的状态码,具体总结如下:
状态码 |
说明 |
1001 |
系统失败 |
1002 |
网络不可用 |
1003 |
网络无权限 |
1004 |
配置错误 |
2000 |
初始化成功 |
2001 |
初始化失败 |
2002 |
开始成功 |
2003 |
开始失败 |
2004 |
停止成功 |
2005 |
停止失败 |
2006 |
关闭成功 |
2007 |
关闭失败 |
3000 |
GNSS运行错误 |
3001 |
GNSS未定位 |
3002 |
GNSS定位成功 |
4000 |
账号错误 |
4001 |
账号不存在 |
4002 |
账号未激活 |
4003 |
账号不可用 |
4005 |
账号即将过期 |
4006 |
账号需要绑定 |
4007 |
无VDR权限 |
4008 |
无PDR权限 |
4009 |
无AGNSS权限 |
4010 |
无RTK权限 |
11017 |
设备连接成功 |
11018 |
设备断开连接成功 |
11021 |
USB设备挂载成功 |
11022 |
USB设备卸载成功 |
11023 |
USB设备正在设备 |
11024 |
USB设备正在连接 |
11025 |
USB设备连接失败 |
11026 |
USB设备连接失败-等待设备挂载 |
11027 |
USB设备连接失败-断开连接 |
- 带RTK算法的Linux平台状态码
状态码 |
状态码说明 |
备注 |
0 |
未知错误 |
|
1001 |
系统错误 |
|
1002 |
网络异常 |
|
1003 |
网络权限错误 |
|
1004 |
配置出错 |
|
1005 |
参数错误 |
|
1006 |
账户错误 |
|
1007 |
服务不可访问 |
|
1008 |
服务器异常 |
|
2000 |
SDK初始化成功 |
|
2001 |
SDK初始化失败 |
|
2002 |
SDK启动成功 |
|
2003 |
SDK启动失败 |
|
2004 |
SDK关闭成功 |
|
2005 |
SDK关闭失败 |
|
2006 |
SDK清理成功 |
|
2007 |
SDK清理失败 |
|
3000 |
运行时错误 _ |
如配置socket_dir权限问题等 |
3001 |
无定位结果 |
GGA无定位标识或等于0 |
3002 |
有定位结果 |
GGA的定位标识大于0 |
4000 |
账号参数错误 |
|
4001 |
设备未绑定账号 |
|
4002 |
设备需要手动激活 |
|
4003 |
账户配额已满 |
|
4004 |
账号已过期 |
|
4005 |
账号快过期 |
|
4006 |
账号需要绑定 |
|
4007 |
无VDR权限 |
VDR指车载惯导服务,与账号权限有关 |
4008 |
无PDR权限 |
PDR指行人惯导服务,与账号权限有关 |
4009 |
无AGNSS权限 |
AGNSS指加速定位服务,与账号权限有关 |
4010 |
无RTK权限 |
RTK指差分服务,与账号权限有关 |
4011 |
鉴权成功 |
|
4012 |
鉴权需要手动激活 |
|
4013 |
鉴权需要终端激活 |
|
4014 |
设备请求正在处理中 |
存在以下几种可能:1.过快请求2.实例下存在剩余未绑定DSK,但是均已过期3.服务器逻辑异常,比如数据库不可访问 |
4015 |
账号被禁用 |
|
4016 |
功能列表部分无效 |
与账号权限有关 |
4017 |
功能列表全部无效 |
与账号权限有关 |
5000 |
OSS连接成功 |
OSS指千寻的开放时空服务 |
5001 |
OSS连接失败 |
OSS指千寻的开放时空服务 |
5002 |
OSS连接超时 |
OSS指千寻的开放时空服务 |
5003 |
OSS重连中 |
OSS指千寻的开放时空服务 |
5004 |
OSS断开连接成功 |
OSS指千寻的开放时空服务 |
5005 |
OSS断开连接失败 |
OSS指千寻的开放时空服务 |
6000 |
请求差分服务成功 |
|
6001 |
请求差分服务失败 |
|
6002 |
关闭差分服务成功 |
|
6003 |
关闭差分服务失败 |
|
6004 |
差分服务不可用 |
|
6005 |
GGA不在服务范围内 |
|
6006 |
无效GGA |
GGA格式有误 _ |
7000 |
IAP升级成功 |
|
7001 |
IAP升级失败 |
|
7002 |
IAP升级中 |
在升级过程中,不能有断电或者断开串口等操作魔方的行为 |
7003 |
IAP升级超时 |
|
- 总结
最后,还是要提醒各位开发者。大家在集成千寻SDK的时候,一定要首先仔细阅读千寻SDK包中附带的开发手册,本文所说明的大量状态码,在开发手册中都可以查询。同时,在用千寻SDK开发的过程中,有任何问题随时联系千寻位置。