微波EDA网,见证研发工程师的成长!
微波EDA网
  • 首页
  • 微波射频
  • 射频和无线通信
  • 天线设计
  • 硬件设计
  • PCB和SI
  • 通信和网络
  • 测试测量
  • 应用设计
  • 研发杂谈
  • 研发问答
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2640的SimpleBLEPeripheral 例程中的NOTIFY改成INDICATE呢

CC2640的SimpleBLEPeripheral 例程中的NOTIFY改成INDICATE呢

时间:10-02 整理:3721RD 点击:

您好,我这边正在做一个对接微信的项目,需要有INDICATE属性,这个要做哪些修改呢 现在就改了 

  • status = GATTServApp_ProcessCCCWriteReq( connHandle, pAttr, pValue, len,
    offset, GATT_CLIENT_CFG_INDICATE );原来的是GATT_CLIENT_CFG_NOTIFY,还有哪里需要修改的呢

参考stack中的BloodPressure例子,注意几点:

1.从他的profile,bpservice.c,可以了解如何定义一个indicaiton.

2.bloodPressure_WriteAttrCB() 中如何enable indicaiton.

case GATT_CLIENT_CHAR_CFG_UUID:
if ( pAttr->handle == bloodPressureAttrTbl[BLOODPRESSURE_MEAS_CONFIG_POS].handle )
{
// BloodPressure Indications
status = GATTServApp_ProcessCCCWriteReq( connHandle, pAttr, pValue, len,
offset, GATT_CLIENT_CFG_INDICATE );
if ( status == SUCCESS )
{
uint16 value = BUILD_UINT16( pValue[0], pValue[1] );

(*bloodPressureServiceCB)( (value == GATT_CFG_NO_OPERATION) ?
BLOODPRESSURE_MEAS_NOTI_DISABLED :
BLOODPRESSURE_MEAS_NOTI_ENABLED);
}
}

3. 如何使用indcation发送数据

bStatus_t BloodPressure_MeasIndicate( uint16 connHandle, attHandleValueInd_t *pNoti,uint8 taskId )
{
uint16 value = GATTServApp_ReadCharCfg( connHandle, bloodPressureMeasConfig );

// If indications enabled
if ( value & GATT_CLIENT_CFG_INDICATE )
{
// Set the handle
pNoti->handle = bloodPressureAttrTbl[BLOODPRESSURE_MEAS_VALUE_POS].handle;

// Send the Indication
return GATT_Indication( connHandle, pNoti, FALSE, taskId );
}

return bleIncorrectMode;
}

4. 如何获得indicaiton的confirm

static void bloodPressureProcessGattMsg( gattMsgEvent_t *pMsg )
{

//Measurement Indication Confirmation
if( pMsg->method == ATT_HANDLE_VALUE_CFM)
{
bpSendStoredMeas();
}

if ( pMsg->method == ATT_HANDLE_VALUE_NOTI ||
pMsg->method == ATT_HANDLE_VALUE_IND )
{
timeAppIndGattMsg( pMsg );
}
else if ( pMsg->method == ATT_READ_RSP ||
pMsg->method == ATT_WRITE_RSP )
{
timeAppConfigState = timeAppConfigGattMsg ( timeAppConfigState, pMsg );
if ( timeAppConfigState == TIMEAPP_CONFIG_CMPL )
{
timeAppDiscoveryCmpl = TRUE;
}
}
else
{
timeAppDiscState = timeAppDiscGattMsg( timeAppDiscState, pMsg );
if ( timeAppDiscState == DISC_IDLE )
{
// Start characteristic configuration
timeAppConfigState = timeAppConfigNext( TIMEAPP_CONFIG_START );
}
}
}

if ( pMsg->method == ATT_HANDLE_VALUE_NOTI ||
pMsg->method == ATT_HANDLE_VALUE_IND )
{
timeAppIndGattMsg( pMsg );
}
这一句中 ATT_HANDLE_VALUE_NOTI是怎么来的?谁触发这个消息?

上一篇:cc2540可以和CC2591一起使用不?
下一篇:CC2541的BQB认证

例程 SimpleBLEPeripheral NOTIFY 相关文章:

  • BLE协议栈例程里的LCD具体是什么型号硬件呀?那里有相对应的资料电路图之类的?
  • SimpleBLEPeripheral_bond实验例程
  • 关于从机SimpleBLEPeripheral例程中的SBP_PERIODIC_EVT
  • 请问:有没有关于CC2544的USB应用的例程
  • 请问 SerialApp2 例程中的“SerialAppCentral”里面使能 Notification 的语句有吗?
  • 关于TI蓝牙例程
栏目分类
  • 移动通信
  • 微波和射频技术
  • 无线和射频
  • PCB设计问答
  • 硬件电路设计
  • 嵌入式设计讨论
  • 手机设计讨论
  • 信号完整性分析
  • 测试测量
  • 微电子和IC设计
热门文章
  • SimpleProfile_SetParameter(
  • 关于cc2564蓝牙连接间隔配置的
  • 谁可以给我IAR 8.30的下载地
  • CC2540 USB插入电脑提示:未
  • CC2541获取iOS设备的蓝牙MAC地
  • TI CC2650EM-7ID BLE求助
  • 请教如何在CCS中使用JLINK进行
  • cc2640 pwm例程

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top