1/9FR801xH错误码参考BluetoothLowEnergySOCwww.
freqchip.
comFR801xH错误码参考2/9Contents1综述32错误码解释.
32.
1BLE5.
0协议栈32.
1.
1OP_ID.
32.
1.
2ERR_CODE.
42.
1.
3链接断开错误码.
72.
1.
4创建profile失败错误码.
82.
2操作系统组件.
9FR801xH错误码参考3/91综述本文档旨在介绍801xH软件SDK各组件涉及到的错误码.
801xHSDK包含以下组件:BLE5.
0协议栈和常见ProfileBLESIGMesh协议栈多个中间件组件非抢占式操作系统保持链接睡眠和关机睡眠调用接口多种外设驱动调试函数和错误处理系统常用辅助函数下面章节将逐一介绍各组件定义的错误码所代表的含义.
2错误码解释2.
1BLE5.
0协议栈在调用头文件"gap_api.
h"和"gatt_api.
h"定义的协议栈组件函数时,如果打开协议栈lib库底层的运行日志,日志运行时会按如下形式给出操作的执行结果.
Fr801xH协议栈lib库运行日志GAP操作执行结果日志采用这种格式:gapm_cmp_evt_handler:operation=OP_ID,status=ERR_CODE.
其中OP_ID是操作码,ERR_CODE是执行结果代码.
2.
1.
1OP_ID常见的OP_ID如下表所示OP_ID操作名称含义1GAPM_RESET协议栈重启3GAPM_SET_DEV_CONFIG协议栈配置23GAPM_RESOLV_ADDR执行Resolveaddr解析动作…160GAPM_CREATE_ADV_ACTIVITY底层创建一个广播动作.
161GAPM_CREATE_SCAN_ACTIVITY底层创建一个扫描动作.
FR801xH错误码参考4/9162GAPM_CREATE_INIT_ACTIVITY底层创建一个主动连接动作.
163GAPM_CREATE_PERIOD_SYNC_ACTIVITY底层创建一个周期性同步动作.
164GAPM_START_ACTIVITY底层启动一个动作165GAPM_STOP_ACTIVITY底层停止一个动作166GAPM_STOP_ALL_ACTIVITIES底层停止所有动作167GAPM_DELETE_ACTIVITY底层删除一个动作168GAPM_SET_ADV_DATA底层设置广播动作的advdata169GAPM_SET_SCAN_RSP_DATA底层设置广播动作的advrspdata170GAPM_SET_PERIOD_ADV_DATA底层设置周期性广播的advdata2.
1.
2ERR_CODEERR_CODE是OP_ID执行的结果反馈.
常见的ERR_CODE被定义在components\ble\include\ble_hl_error.
h头文件内,下面逐一解释如下.
ERR_CODE名称含义0x0GAP_ERR_NO_ERROR执行成功,无错误ERR_CODE名称含义0x1ATT_ERR_INVALID_HANDLEGATT的操作的handler号无效解决办法:1在clientprofile事件处理回调函数,动作完成分支,如果动作为GATT_OP_PEER_SVC_REGISTERED,打印扫描到的UUID对应的handler号是否为非0,如果为0,表示该UUID对应的handler没有扫描到,对该UUID对应的属性操作时,会产生上述错误.
示例代码如下2检查client_att_table定义的UUID,是否存在于对端的服务中.
ERR_CODE名称含义0x2ATT_ERR_READ_NOT_PERMITTEDGATT的读操作禁止解决办法:1检查进行读操作的UUID,在对端服务中,有没有定义读操作的权限.
ERR_CODE名称含义0x3ATT_ERR_WRITE_NOT_PERMITTEDGATT的写操作禁止caseGATTC_MSG_CMP_EVT:{if(p_msg->param.
op.
operation==GATT_OP_PEER_SVC_REGISTERED){uint16_tatt_handles[2];//只定义了2个感兴趣的UUID,缓存它们的handler号memcpy(att_handles,p_msg->param.
op.
arg,4);//拷贝上传的handler号show_reg((uint8_t*)att_handles,4,1);//打印UUID对应的handler号}}FR801xH错误码参考5/9解决办法:1检查进行读操作的UUID,在对端服务中,有没有定义写操作的权限.
ERR_CODE名称含义0x40GAP_ERR_INVALID_PARAMGAP操作输入参数非法解决办法:1查找GAP操作对应的OP_ID,找到执行该操作的API函数,检查输入的参数是否合法.
ERR_CODE名称含义0x42GAP_ERR_NOT_SUPPORTEDGAP操作因为协议栈配置导致不支持解决办法:1查找GAP操作对应的OP_ID,询问FAE人员,协议栈底层lib库协议栈配置是否支持该GAP操作.
ERR_CODE名称含义0x43GAP_ERR_COMMAND_DISALLOWEDGAP操作不被允许解决办法:1通常该错误原因是,有同一个GAP操作正在执行,此时应用层再次调用该GAP操作,导致后面的GAP操作执行结果报这个错误.
需要应用层检查是否存在前一个操作未完成的情况下,再次调用相同的操作.
ERR_CODE名称含义0x44GAP_ERR_CANCELEDGAP操作被取消解决办法:1该ERR_CODE不代表错误,代表某个正在执行的GAP操作被提前终止掉,比如调用gap_scan_stop()函数终止正在进行的扫描动作,就会上传该err_code.
ERR_CODE名称含义0x45GAP_ERR_TIMEOUTGAP操作超时导致被终止解决办法:1找到该操作OP_ID,查找调用该操作的gapAPI函数,是否有设置执行时间,比如启动广播的函数gap_start_advertising(uint8_t)输入参数即为动作执行时间,如果非0,广播时间到后,广播动作会终止,然后上传该ERR_CODEERR_CODE名称含义0x46GAP_ERR_DISCONNECTEDGAP操作被终止因为链接已经断开解决办法:1该ERR_CODE不需要做进一步的纠错动作,这是底层通知某个GAP或GATT操作因为链接断开而被提前终止,比如调用gap_conn_param_update(…)API进行链接参数更新时,如果在参数更新动作完成之前,链接断开,底层会打印该ERR_CODE的日志.
ERR_CODE名称含义0x48GAP_ERR_REJECTEDGAP操作被对端拒绝解决办法:1查找产生该ERR_CODE的OP_ID,找到调用该操作的API函数,某些操作被拒绝后会上传到GAP或GATT的回调函数内,应用层需要做进一步的处理.
比如调用gap_conn_param_update(…)API进行链接参数更新时,如果在参数被对端拒绝,底层会上传链接参数被拒绝的事件,应用层需要用新的链接参数进行更新或终止参数更新.
FR801xH错误码参考6/9示例该示例中,如果链接参数更新失败,原因是GAP_ERR_REJECTED或GAP_ERR_INVALID_PARAM,则停止更新参数的定时器.
否则启动更细参数定时器,继续更新链接参数.
ERR_CODE名称含义0x4AGAP_ERR_ADV_DATA_INVALID设置广播Advdata或advresponsedata非法解决办法:1检查调用voidgap_set_advertising_data(uint8_t*p_adv_data,uint8_tadv_data_len);和voidgap_set_advertising_rsp_data(uint8_t*p_rsp_data,uint8_trsp_data_len);设置广播数据和广播回复数据时,数据格式是否有重复的字段,数据的总长度是否超过限制.
CloudCone 商家产品还是比较有特点的,支持随时的删除机器按时间计费模式,类似什么熟悉的Vultr、Linode、DO等服务商,但是也有不足之处就在于机房太少。商家的活动也是经常有的,比如这次中国春节期间商家也是有提供活动,比如有限定指定时间段之前注册的用户可以享受年付优惠VPS主机,比如年付13.5美元。1、CloudCone新年礼物限定款仅限2019年注册优惠购买,活动开始时间:1月31...
horain怎么样?horain cloud是一家2019年成立的国人主机商家,隶属于北京辰帆科技有限公司,horain持有增值电信业务经营许可证(B1-20203595),与中国电信天翼云、腾讯云、华为云、UCloud、AWS等签署渠道合作协议,主要提企业和个人提供云服务器,目前商家推出了几款特价物理机,都是在内地,性价比不错,其中有目前性能比较强悍的AMD+NVMe系列。点击进入:horain...
柚子互联官网商家介绍柚子互联(www.19vps.cn)本次给大家带来了盛夏促销活动,本次推出的活动是湖北十堰高防产品,这次老板也人狠话不多丢了一个6.5折优惠券而且还是续费同价,稳撸。喜欢的朋友可以看看下面的活动详情介绍,自从站长这么久以来柚子互联从19年开始算是老商家了。六五折优惠码:6kfUGl07活动截止时间:2021年9月30日客服QQ:207781983本次仅推荐部分套餐,更多套餐可进...