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);设置广播数据和广播回复数据时,数据格式是否有重复的字段,数据的总长度是否超过限制.
sharktech怎么样?sharktech (鲨鱼机房)是一家成立于 2003 年的知名美国老牌主机商,又称鲨鱼机房或者SK 机房,一直主打高防系列产品,提供独立服务器租用业务和 VPS 主机,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹,所有产品均提供 DDoS 防护。此文只整理他们家10Gbps专用服务器,此外该系列所有服务器都受到高达 60Gbps(可升级到 100Gbps)的保护。...
青云互联怎么样?青云互联美国洛杉矶cn2GIA云服务器低至19元/月起;香港安畅cn2云服务器低至19元/月起;日本cn2云主机低至35元/月起!青云互联是一家成立于2020年的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务。青云互联本站之前已经更新过很多相关文章介绍了,青云互联的机房有香港和洛杉矶,都有CN2 GIA线路、洛杉矶带高防,商家承诺试用7天,打死全额退款点击进入:青云互联...
百纵科技湖南百纵科技有限公司是一家具有ISP ICP 电信增值许可证的正规公司,多年不断转型探索现已颇具规模,公司成立于2009年 通过多年经营积累目前已独具一格,公司主要经营香港服务器,香港站群服务器,美国高防服务器,美国站群服务器,云服务器,母机租用托管!美国CN2云服务器,美国VPS,美国高防云主机,美国独立服务器,美国站群服务器,美国母机。美国原生IP支持大批量订货 合作 适用电商 亚马逊...