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);设置广播数据和广播回复数据时,数据格式是否有重复的字段,数据的总长度是否超过限制.
hostyun新上了香港cloudie机房的香港原生IP的VPS,写的是默认接入200Mbps带宽(共享),基于KVM虚拟,纯SSD RAID10,三网直连,混合超售的CN2网络,商家对VPS的I/O有大致100MB/S的限制。由于是原生香港IP,所以这个VPS还是有一定的看头的,这里给大家弄个测评,数据仅供参考!9折优惠码:hostyun,循环优惠内存CPUSSD流量带宽价格购买1G1核10G3...
趣米云怎么样?趣米云是创建于2021年的国人IDC商家,虽然刚刚成立,但站长早期为3家IDC提供技术服务,已从业2年之久,目前主要从事出售香港vps、香港独立服务器、香港站群服务器等,目前在售VPS线路有三网CN2、CN2 GIA,该公司旗下产品均采用KVM虚拟化架构。由于内存资源大部分已售,而IP大量闲置,因此我们本月新增1c1g优惠套餐。点击进入:趣米云官方网站地址香港三网CN2云服务器机型活...
百星数据(baixidc),2012年开始运作至今,主要提供境外自营云服务器和独立服务器出租业务,根据网络线路的不同划分为:美国cera 9929、美国cn2 gia、香港cn2 gia、韩国cn2 gia、日本cn2 gia等云服务器及物理服务器业务。目前,百星数据 推出的日本、韩国、香港cn2 gia云服务器,2核2G/40G/5M带宽低至60元/月,600元/年。百星数据优惠码:优惠码:30...