当前位置: 首页 > news >正文

天津做网站的公wordpress会员小图标

天津做网站的公,wordpress会员小图标,做聊天室cpa用什么类型的网站好,怎么做网站中英文版本蓝牙消息传输_GATT服务发现 1.主机和从机GATT服务的发现2.通知的使用 1.主机和从机GATT服务的发现 GATT服务的发现由主机执行#xff0c;一共三个阶段  1.处理交换 MTU 请求和响应#xff0c;启动对 Simple Service 服务的发现。 if (discState BLE_DISC_STATE_MTU){// MT… 蓝牙消息传输_GATT服务发现 1.主机和从机GATT服务的发现2.通知的使用 1.主机和从机GATT服务的发现 GATT服务的发现由主机执行一共三个阶段  1.处理交换 MTU 请求和响应启动对 Simple Service 服务的发现。 if (discState BLE_DISC_STATE_MTU){// MTU size response received, discover simple serviceif (pMsg-method ATT_EXCHANGE_MTU_RSP){//获取主服务的UUIDuint8_t uuid[ATT_BT_UUID_SIZE] { LO_UINT16(SIMPLEPROFILE_SERV_UUID),HI_UINT16(SIMPLEPROFILE_SERV_UUID) };discState BLE_DISC_STATE_SVC;// 通过UUID寻找主服务----simple serviceVOID GATT_DiscPrimaryServiceByUUID(pMsg-connHandle, uuid,ATT_BT_UUID_SIZE, selfEntity);}}2.处理发现服务的响应并存储服务的开始和结束句柄。服务发现过程完成后启动对特定特征Characteristic的发现。 else if (discState BLE_DISC_STATE_SVC){// Service found, store handlesif (pMsg-method ATT_FIND_BY_TYPE_VALUE_RSP pMsg-msg.findByTypeValueRsp.numInfo 0){//存储服务的开始和结束句柄svcStartHdl ATT_ATTR_HANDLE(pMsg-msg.findByTypeValueRsp.pHandlesInfo, 0);svcEndHdl ATT_GRP_END_HANDLE(pMsg-msg.findByTypeValueRsp.pHandlesInfo, 0);}// If procedure completeif (((pMsg-method ATT_FIND_BY_TYPE_VALUE_RSP) (pMsg-hdr.status bleProcedureComplete)) ||(pMsg-method ATT_ERROR_RSP)){if (svcStartHdl ! 0){attReadByTypeReq_t req;// Discover characteristicdiscState BLE_DISC_STATE_CHAR;req.startHandle svcStartHdl;req.endHandle svcEndHdl;req.type.len ATT_BT_UUID_SIZE;req.type.uuid[0] LO_UINT16(SIMPLEPROFILE_CHAR1_UUID);req.type.uuid[1] HI_UINT16(SIMPLEPROFILE_CHAR1_UUID);//根据服务句柄范围和特征UUID客户端发现服务器上的服务特征VOID GATT_DiscCharsByUUID(pMsg-connHandle, req, selfEntity);}}}3.处理发现特征的响应并存储特征值的句柄。如果特征发现过程完成触发相应的操作比如启动通知。 else if (discState BLE_DISC_STATE_CHAR){// Characteristic found, store handleif ((pMsg-method ATT_READ_BY_TYPE_RSP) (pMsg-msg.readByTypeRsp.numPairs 0)){//有多个连接时获取连接句柄uint8_t connIndex SimpleCentral_getConnIndex(scConnHandle);// connIndex cannot be equal to or greater than MAX_NUM_BLE_CONNSSIMPLECENTRAL_ASSERT(connIndex MAX_NUM_BLE_CONNS);// Store the handle of the simpleprofile characteristic 1 value//获取特征句柄connList[connIndex].charHandle BUILD_UINT16(pMsg-msg.readByTypeRsp.pDataList[3],pMsg-msg.readByTypeRsp.pDataList[4]);Display_printf(dispHandle, SC_ROW_CUR_CONN, 0, Simple Svc Found);// Now we can use GATT Read/Writetbm_setItemStatus(scMenuPerConn,SC_ITEM_GATTREAD | SC_ITEM_GATTWRITE, SC_ITEM_NONE);}discState BLE_DISC_STATE_IDLE;}通过GATT_Cilent调用三次SimpleCentral_processGATTDiscEvent(gattMsgEvent_t *pMsg)实现。 因为Handle是由协议栈分配的连续的所以获取其中一个的Handle就能知道其它的。 区分特征与特征值特征由特征值、特征声明、用户特征描述、客户特征配置组成每个组成部分有各自的Handle值 比如与一个连接的两个通知类型的特征值进行数据发送时获取了第一个特征值的句柄存储在connList[i].charHandle中。 第一个特征的CCC为charHandle1 第二个特征的CCC为charHandle5 if(index SIMPLEPROFILE_CHAR1) {req.handle connList[i].charHandle1; } else if(index SIMPLEPROFILE_CHAR2) {req.handle connList[i].charHandle5; }主从机发送消息时需要将APP的信息发送给协议栈来发送所以APP的信息要和协议栈的信息在发送和接受时完成同步APP中的消息类似于缓存。 2.通知的使用 主从消息传输可以通过通知的方式Notification有两种使用情况都是由从机发起的 1GATT_Notification 用在通信时由从机主动通知且不需要主机发出请求和回应。 2GATTServApp_ProcessCharCfg 用在通知启动时需要主机发送一次“通知请求”给从机从机收到“通知请求”才发送通知。 1.从机完成通知的初始化 // 分配客户端特征配置表simpleProfileChar4Config (gattCharCfg_t *)ICall_malloc( sizeof(gattCharCfg_t) *MAX_NUM_BLE_CONNS );if ( simpleProfileChar4Config NULL ){return ( bleMemAllocError );}// Initialize Client Characteristic Configuration attributes//初始化客户端特征配置表CCCGATTServApp_InitCharCfg( CONNHANDLE_INVALID, simpleProfileChar4Config );if ( services SIMPLEPROFILE_SERVICE ){// Register GATT attribute list and CBs with GATT Server App//注册GATT属性列表和CBs与 GATT Server App回调函数status GATTServApp_RegisterService( simpleProfileAttrTbl,GATT_NUM_ATTRS( simpleProfileAttrTbl ),GATT_MAX_ENCRYPT_KEY_SIZE,simpleProfileCBs );}在GATTServApp_InitCharCfg中使用给定的 connHandle 在 charCfgTbl 中搜索以找到与连接相关的特征配置项并将该CCC初始化为GATT_CFG_NO_OPERATION0. gattCharCfg_t *pItem gattServApp_FindCharCfgItem( connHandle, charCfgTbl );if ( pItem ! NULL ){pItem-connHandle CONNHANDLE_INVALID;pItem-value GATT_CFG_NO_OPERATION;}2.从机/主机发送一次通知请求从机开始发送通知,CCC设置为通知GATT_CLIENT_CFG_NOTIFY 主机发送启动通知命令: req.len 2;req.pValue[0] LO_UINT16(GATT_CLIENT_CFG_NOTIFY); //0x0001为开notify;req.pValue[1] HI_UINT16(GATT_CLIENT_CFG_NOTIFY);req.sig 0;req.cmd 0;uint8_t status GATT_WriteCharValue(connList[i].connHandle, req, selfEntity);从机启动通知 status GATTServApp_ProcessCCCWriteReq( connHandle, pAttr, pValue, len,offset, GATT_CLIENT_CFG_NOTIFY );
http://www.pierceye.com/news/880492/

相关文章:

  • 网站建设与管理和计算机网络技术网站运行速度慢的原因
  • 百度推广网络推广微信网站公司网站建设设计服务
  • 免费建站有哪些网站代码编程教学入门
  • 湖南衡五建设公司网站中国网络营销网
  • 做企业网站有什么工作内容有创意的网络公司名字
  • 广西城乡与住房建设厅网站房产网站栏目建设
  • 已收录的网站不好优化上海上市公司排名
  • 保定网站建设公司大全开发微信微网站建设
  • 微信扫码抢红包网站做渝网互联重庆网站制作
  • 用wordpress开发网站缪斯设计官网
  • 黄南州wap网站建设公司旅游类网站做百度竞价
  • 中国电力建设集团有限公司网站wordpress购买
  • 深圳工装公司网站优化顺义案例
  • 四川省工程建设信息官方网站个人域名注册免费
  • 网站建设用源码徐州金网网站建设
  • 老哥们给个关键词威海网站seo
  • 贵州网站备案延庆网站建设师
  • 做网站怎么上词网站建设战略伙伴
  • 绵阳网站推广排名给网站网站做代理
  • 网站轮播代码北京的公司有哪些
  • 网上书城网站开发外文参考文献wordpress禁用谷歌字体插件
  • 团购模板网站全网营销型网站建设模板
  • ac域名网站邯郸中国建设银行网站
  • 广州seo网站开发微信营销的优势
  • 宝塔可以做二级域名网站么有哪些好的做兼职网站
  • 网站建设公司落寞特殊符号网名生成器
  • 设计分享网站在闲鱼可以做网站吗
  • 安全等级保护每个网站必须做吗实惠的网站建设公司
  • vue可以做pc端网站山东专业企业网站建设
  • 推广网站软文高中网站制作