1.1添加新的uuid:
// Characteristic 6 UUID: 0xFFF6 const uint8_t simpleProfilechar6UUID[ATT_BT_UUID_SIZE] = { LO_UINT16(SIMPLEPROFILE_CHAR6_UUID), HI_UINT16(SIMPLEPROFILE_CHAR6_UUID)};
1.2添加uuid宏
#define SIMPLEPROFILE_CHAR6_UUID 0xFFE6
2.1添加属性表成员
// Simple Profile Characteristic 6 Properties static uint8_t simpleProfileChar6Props = GATT_PROP_READ | GATT_PROP_WRITE; // Characteristic 6 Value static uint8_t simpleProfileChar6[SIMPLEPROFILE_CHAR6_LEN] = {0}; // Simple Profile Characteristic 6 User Description static uint8_t simpleProfileChar6UserDesp[] = "Characteristic 6\0";
2.2添加宏定义
#define SIMPLEPROFILE_CHAR6_LEN 20
2.3属性表内容填充
// Characteristic 6 Declaration
{
{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},
// Characteristic 6 User Description
{
{ATT_BT_UUID_SIZE, charUserDescUUID},
GATT_PERMIT_READ,
0,
simpleProfileChar6UserDesp},
3.1读回调增加新uuid处理,在simpleProfile_ReadAttrCB回调函数中添加:
case SIMPLEPROFILE_CHAR6_UUID: if(maxLen > SIMPLEPROFILE_CHAR6_LEN) { *pLen = SIMPLEPROFILE_CHAR6_LEN; } else { *pLen = maxLen; } tmos_memcpy(pValue, pAttr->pValue, *pLen); break;
3.2写回调增加新uuid处理,在simpleProfile_WriteAttrCB回调函数中添加:
case SIMPLEPROFILE_CHAR6_UUID: //Validate the value // Make sure it's not a blob oper if(offset == 0) { if(len > SIMPLEPROFILE_CHAR6_LEN) { status = ATT_ERR_INVALID_VALUE_SIZE; } } else { status = ATT_ERR_ATTR_NOT_LONG; } //Write the value if(status == SUCCESS) { tmos_memcpy(pAttr->pValue, pValue, SIMPLEPROFILE_CHAR6_LEN); notifyApp = SIMPLEPROFILE_CHAR6; } break;
3.3添加宏定义
#define SIMPLEPROFILE_CHAR6 5 // RW uint8_t - Profile Characteristic 6 value
3.4READ功能填入和获取value
case SIMPLEPROFILE_CHAR6: if(len == SIMPLEPROFILE_CHAR6_LEN) { tmos_memcpy(simpleProfileChar6, value, SIMPLEPROFILE_CHAR6_LEN); } else { ret = bleInvalidRange; } break;
case SIMPLEPROFILE_CHAR6: tmos_memcpy(value, simpleProfileChar6, SIMPLEPROFILE_CHAR6_LEN); break;
初始化调用或运行过程中调用SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR6, SIMPLEPROFILE_CHAR6_LEN, charValue6);即可填充数据,主机调用read获取此value。
3.5WRITE功能添加回调处理
case SIMPLEPROFILE_CHAR6: { uint8_t newValue[SIMPLEPROFILE_CHAR6_LEN]; tmos_memcpy(newValue, pValue, len); PRINT("profile ChangeCB CHAR6..\n"); break; }