




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UUID, 就是用来唯一识别一个特征值的ID.handle,就是对应的attribute 的一个句柄。所有对特征值的操作,都是通过对UUID 的搜索得到对应的handle之后,通过handle来操作特征值的。添加新的特征值CHAR6下面对主要几个文件进行修改 simpleGATTprofile.h 文件添加以下定义 #define SIMPLEPROFILE_CHAR6 5 #define SIMPLEPROFILE_CHAR6_UUID 0xFFF6 #define SIMPLEPROFILE_CHAR6_LEN 5 (单字节没这句)SIMPLEPROFILE_CHAR6 全大写 case 参数用到 如 case SIMPLEPROFILE_CHAR6:在simpleGATTprofile.c1、 添加特征值 UUID / Characteristic 6 UUID: 0xFFF6 CONST uint8 simpleProfilechar6UUIDATT_BT_UUID_SIZE = LO_UINT16(SIMPLEPROFILE_CHAR6_UUID), /低八位HI_UINT16(SIMPLEPROFILE_CHAR6_UUID) ; /高八位/*#define HI_UINT16(a) (a) 8) & 0xFF)*/*#define LO_UINT16(a) (a) & 0xFF)*2、 设置属性/ Simple Profile Characteristic 6 Properties 可读可写 (声明而已,只是能让lightblue在列表中显示为可读可写或通知,真正要改在属性表那里改。Props= Properties,Desp =Description,)static uint8 simpleProfileChar6Props = GATT_PROP_READ | GATT_PROP_WRITE; / Characteristic 6 Value / simpleProfileChar6是个5位数组,接收数据后存在这static uint8 simpleProfileChar6SIMPLEPROFILE_CHAR6_LEN = 0, 0, 0, 0, 0 ; / Simple Profile Characteristic 6 User Description static uint8 simpleProfileChar6UserDesp17 = Characteristic 60;3、 属性表 (Profile Attributes - Table) 最重要,添加了这个才会在lightblue中列表出来static gattAttribute_t simpleProfileAttrTblSERVAPP_NUM_ATTR_SUPPORTED这里要把数组改为 #define SERVAPP_NUM_ATTR_SUPPORTED 20 原来是17 (/添加了3组结构体数组 CHAR6)simpleProfileAttrTbl表中,可读可写属性都是3个数组,只有char4的通知是4组,多了个/ Characteristic 4 configuration并把 CHAR6 添加进去 / Characteristic 6 Declaration (声明,没加这个lightblue属性表找不到) ATT_BT_UUID_SIZE, characterUUID , GATT_PERMIT_READ, 0, &simpleProfileChar6Props ,/ Characteristic Value 6 (特征值)! ATT_BT_UUID_SIZE, simpleProfilechar6UUID , GATT_PERMIT_READ | GATT_PERMIT_WRITE, /设置可读可写 0, simpleProfileChar6 /由于值是5位数组,不用&,一个字节就用 , / Characteristic 6 User Description /描述 ATT_BT_UUID_SIZE, charUserDescUUID , GATT_PERMIT_READ, 0, simpleProfileChar6UserDesp ,能列出来了但是 点进去会报错,还没设置读写参数simpleProfile_WriteAttrCB,和simpleProfile_ReadAttrCB4、设置参数函数 (SimpleProfile_SetParameter函数)bStatus_t SimpleProfile_SetParameter( uint8 param, uint8 len, void *value )中:/ 即修改SimpleProfile_SetParameter();函数添加以下代码:case SIMPLEPROFILE_CHAR6: if ( len = SIMPLEPROFILE_CHAR6_LEN ) /特征值赋值到数组 VOID osal_memcpy(simpleProfileChar6, value, SIMPLEPROFILE_CHAR6_LEN ); /把要改写的数据写到simpleProfileChar6数组来 else ret = bleInvalidRange; break;4、 获取参数函数 SimpleProfile_GetParameter(UUID,获取到的值)函数 实际上就是把被新进的值simpleProfileChar6放进value数组在bStatus_t SimpleProfile_GetParameter( uint8 param, void *value )中添加:case SIMPLEPROFILE_CHAR6: VOID osal_memcpy( value, simpleProfileChar6, SIMPLEPROFILE_CHAR6_LEN );break; /读取simpleProfileChar6的值放到*value 中,char1是单个字节读取,为*(uint8*)value) = simpleProfileChar1; 6、读写特征值函数(2个回调函数 这个两个是注册到GATT层的回调函数, 在GATT初始化的时候注册的. 这部分代码封装在库里面.每当GATT层有数据发过来的时候, 会调用simpleProfile_WriteAttrCB,每当GATT层收到对方读取数据请求的时候, 会调用simpleProfile_ReadAttrCB这两个函数包含在gattServiceCBs_t 类型的结构体里CONST gattServiceCBs_t simpleProfileCBs,读simpleProfile_ReadAttrCB 这个设置后就能在lightblue里读出值,值为simpleProfileChar6SIMPLEPROFILE_CHAR6_LEN=数组的数值(16进制显示) 写simpleProfile_WriteAttrCB读取被写进去的值) 在static uint8 simpleProfile_ReadAttrCB( uint16 connHandle, gattAttribute_t *pAttr, uint8 *pValue, uint8 *pLen, uint16 offset, uint8 maxLen )中:添加 case SIMPLEPROFILE_CHAR6_UUID: *pLen = SIMPLEPROFILE_CHAR6_LEN; VOID osal_memcpy(pValue, pAttr-pValue, SIMPLEPROFILE_CHAR6_LEN ); break; /读:pAttr-pValue的内容复制到pValue 添加单字节char7要在接char1或3后面,不能加break在simpleProfile_WriteAttrCB()中添加(添加后发送过去就不会提示出错了) case SIMPLEPROFILE_CHAR6_UUID: /Validate the value 检测输入数据是否合法 / Make sure its not a blob oper if ( offset = 0 ) /是第一字节 if ( len != SIMPLEPROFILE_CHAR6_LEN ) status = ATT_ERR_INVALID_VALUE_SIZE; /若输入长度不对,status为 else status = ATT_ERR_ATTR_NOT_LONG;/不是第一字节 /Write the value 一开始定义了status = SUCCESS,若上述条件不符,不会运行到这里。osal_memcpy(目的A,源地址B,长度)复制B内容到A if ( status = SUCCESS ) VOID osal_memcpy( pAttr-pValue, pValue, SIMPLEPROFILE_CHAR6_LEN ); notifyApp = SIMPLEPROFILE_CHAR6; /写:pValue的内容复制到pAttr-pValue(别弄反了) break;(下面没用到)osal_memset为字符串集体赋同一数值 return目的存储区地址void *osal_memset(void *dest, uint8 value , intlen)Return memset(dest,value,len);if ( status = SUCCESS ) uint8 *pCurValue = (uint8 *)pAttr-pValue;osal_memset(pCurValue, 0, SIMPLEPROFILE_CHAR6_LEN ); /为新数组pCurValue赋值N个0VOID osal_memcpy(pCurValue, pValue, SIMPLEPROFILE_CHAR6_LEN ); /复制 pVal
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部编版2024年小学一年级语文阅读理解训练计划
- 物业岗位BI标准培训
- 25年公司项目负责人安全培训考试试题加下载答案可打印
- 语文家长线上辅导培训计划
- 2024-2025工厂职工安全培训考试试题含答案【培优B卷】
- 2025年体育教育教研员发展计划
- 荆门市重点中学2025届高三3月份第一次模拟考试物理试卷含解析
- 画画展演培训班
- 高效灌溉设施建设资源配置计划
- 团队合作与团队建设培训
- 美育第四版美即生活课件《形式美的欣赏》
- 专题08 七年级下册《卖油翁》课内外阅读分层练(含答案)-2024年中考语文复习之教考衔接文言文专题练习
- 2024智慧城市大数据信息资源标识编码规范
- 【卫龙食品公司内部控制现状问题及优化的案例分析7100字(论文)】
- 人教版五年级语文下册全册课件【完整版】
- 产教融合背景下职业院校“五金”建设研究
- 遗传的分子基础(遗传学基础课件)
- DB5301-T 71-2022 地理标志产品 汤池老酱
- 配电工程项目规范
- 浙江省幼儿园教育装备要求规范(试行)
- 法律法规题库题库附答案(精练)
评论
0/150
提交评论