今天搞了一下CC2541主机发现安森美从机特征值句柄并发送数据。
主机CC2541:
部分代码:
-
- // Simple Profile Service UUID
- #define SIMPLEPROFILE_SERV_UUID 0xFFE0
- // Key Pressed UUID
- #define SIMPLEPROFILE_CHAR1_UUID 0xFFE1
- #define SIMPLEPROFILE_CHAR2_UUID 0xFFE2
复制代码
- // Service found, store handles
- if ( pMsg->method == ATT_FIND_BY_TYPE_VALUE_RSP &&
- pMsg->msg.findByTypeValueRsp.numInfo > 0 )
- {
- simpleBLESvcStartHdl = pMsg->msg.findByTypeValueRsp.handlesInfo[0].handle;
- simpleBLESvcEndHdl = pMsg->msg.findByTypeValueRsp.handlesInfo[0].grpEndHandle;
- }
- // If procedure complete
- if ( ( pMsg->method == ATT_FIND_BY_TYPE_VALUE_RSP &&
- pMsg->hdr.status == bleProcedureComplete ) ||
- ( pMsg->method == ATT_ERROR_RSP ) )
- {
-
- if ( simpleBLESvcStartHdl != 0 )
- {
- // Discover characteristic
- simpleBLEDiscState = BLE_DISC_STATE_CHAR;
-
- req.startHandle = simpleBLESvcStartHdl;
- req.endHandle = simpleBLESvcEndHdl;
- req.type.len = ATT_BT_UUID_SIZE;
- req.type.uuid[0] = LO_UINT16(SIMPLEPROFILE_CHAR2_UUID);
- req.type.uuid[1] = HI_UINT16(SIMPLEPROFILE_CHAR2_UUID);
- NPI_PrintString("Found uuid !rn");
- GATT_ReadUsingCharUUID( simpleBLEConnHandle, &req, simpleBLETaskId );
- //GATT_DiscCharsByUUID( simpleBLEConnHandle, &req, simpleBLETaskId );
- }
- }
- }
- else if ( simpleBLEDiscState == BLE_DISC_STATE_CHAR )
- {
- // Characteristic found, store handle
- if ( pMsg->method == ATT_READ_BY_TYPE_RSP &&
- pMsg->msg.readByTypeRsp.numPairs > 0 )
- {
- simpleBLECharHdl = BUILD_UINT16( pMsg->msg.readByTypeRsp.dataList[0],
- pMsg->msg.readByTypeRsp.dataList[1] );
-
- LCD_WRITE_STRING( "Simple Svc Found", HAL_LCD_LINE_1 );
- NPI_PrintValue("特征值句柄:", simpleBLECharHdl, 16);
- simpleBLEProcedureInProgress = FALSE;
- }
-
- simpleBLEDiscState = BLE_DISC_STATE_IDLE;
-
- }
复制代码
- if ( keys & HAL_KEY_RIGHT )
- {
- // Connection update
- if ( simpleBLEState == BLE_STATE_CONNECTED )
- {
- GAPCentralRole_UpdateLink( simpleBLEConnHandle,
- DEFAULT_UPDATE_MIN_CONN_INTERVAL,
- DEFAULT_UPDATE_MAX_CONN_INTERVAL,
- DEFAULT_UPDATE_SLAVE_LATENCY,
- DEFAULT_UPDATE_CONN_TIMEOUT );
- attWriteReq_t req;
- uint8 status;
-
- req.handle = simpleBLECharHdl; //simpleBLECharHdl;
- req.len = 3;
- req.value[0] = 0x31;
- req.value[1] = 0x0D;
- req.value[2] = 0x0A;
- req.sig = 0;
- req.cmd = 0;
-
- //p->simpleBLEConnHandle=0x0000;
- simpleBLETaskId=0x0B;
- status = GATT_WriteCharValue( simpleBLEConnHandle, &req, simpleBLETaskId );
- }
- }
复制代码
安森美修改代码:
- #define CS_SVC_UUID { 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00,
- 0x00, 0x80, 0x00, 0x10, 0x00, 0x00,
- 0xe0, 0xff, 0x00, 0x00 }
- #define CS_CHARACTERISTIC_TX_UUID { 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00,
- 0x00, 0x80, 0x00, 0x10, 0x00, 0x00,
- 0xe1, 0xff, 0x00, 0x00 }
- #define CS_CHARACTERISTIC_RX_UUID { 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00,
- 0x00, 0x80, 0x00, 0x10, 0x00, 0x00,
- 0xe2, 0xff, 0x00, 0x00 }
复制代码
- //#define PRIVATE_BDADDR { 0x94, 0x11, 0x22, 0xff, 0xff, 0xE5 }
- #define PRIVATE_BDADDR { 0x96, 0x11, 0x22, 0xff, 0xff, 0xE5 }
复制代码
串口打印:
|