From b271ee853a6cc5b9baa4178ddc06ae5d88a2419c Mon Sep 17 00:00:00 2001 From: Paul Szczepanek Date: Fri, 19 Feb 2021 12:29:09 +0000 Subject: [PATCH 1/3] fix Cordio attsCsfActClientState index parameter instead of using a handle this should be conn id there were two calls using it differently --- .../ble-host/sources/stack/att/atts_csf.c | 16 ++++++++-------- .../ble-host/sources/stack/att/atts_eatt.c | 2 +- .../ble-host/sources/stack/att/atts_main.c | 2 +- .../ble-host/sources/stack/att/atts_main.h | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_csf.c b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_csf.c index ed4f051194..b04b2912aa 100644 --- a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_csf.c +++ b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_csf.c @@ -134,14 +134,14 @@ uint8_t attsCsfIsClientChangeAware(dmConnId_t connId, uint16_t handle) /*! * \brief Update client change-aware state based on protocol event. * - * \param connId Connection handle. + * \param connId Connection ID. * \param opcode ATT PDU type. * \param pPacket Data packet from L2CAP. * * \return \ref ATT_SUCCESS if client is change-aware, else \ref ATT_ERR_DATABASE_OUT_OF_SYNC. */ /*************************************************************************************************/ -uint8_t attsCsfActClientState(uint16_t handle, uint8_t opcode, uint8_t *pPacket) +uint8_t attsCsfActClientState(uint16_t connId, uint8_t opcode, uint8_t *pPacket) { uint8_t err = ATT_SUCCESS; attsCsfRec_t *pRec; @@ -152,7 +152,7 @@ uint8_t attsCsfActClientState(uint16_t handle, uint8_t opcode, uint8_t *pPacket) return err; } - pRec = &attsCsfCb.attsCsfTable[handle]; + pRec = &attsCsfCb.attsCsfTable[connId - 1]; /* If the client is change-unaware */ if (pRec->changeAwareState == ATTS_CLIENT_CHANGE_UNAWARE) @@ -167,7 +167,7 @@ uint8_t attsCsfActClientState(uint16_t handle, uint8_t opcode, uint8_t *pPacket) /* Move client change-aware state to pending */ pRec->changeAwareState = ATTS_CLIENT_CHANGE_PENDING_AWARE; - ATT_TRACE_INFO2("ConnId %d change aware state is %d", handle + 1, + ATT_TRACE_INFO2("ConnId %d change aware state is %d", connId, ATTS_CLIENT_CHANGE_PENDING_AWARE); } @@ -189,12 +189,12 @@ uint8_t attsCsfActClientState(uint16_t handle, uint8_t opcode, uint8_t *pPacket) /* Move client change-aware state to aware */ pRec->changeAwareState = ATTS_CLIENT_CHANGE_AWARE; - ATT_TRACE_INFO2("ConnId %d change aware state is %d", handle + 1, ATTS_CLIENT_CHANGE_AWARE); + ATT_TRACE_INFO2("ConnId %d change aware state is %d", connId, ATTS_CLIENT_CHANGE_AWARE); /* Callback to application to store updated awareness, if bonded. */ if (attsCsfCb.writeCback != NULL) { - attsCsfCb.writeCback(handle + 1, pRec->changeAwareState, &pRec->csf); + attsCsfCb.writeCback(connId, pRec->changeAwareState, &pRec->csf); } } else @@ -227,7 +227,7 @@ uint8_t attsCsfActClientState(uint16_t handle, uint8_t opcode, uint8_t *pPacket) */ pRec->changeAwareState = ATTS_CLIENT_CHANGE_AWARE_DB_READ_PENDING; - ATT_TRACE_INFO2("ConnId %d change aware state is %d", handle + 1, + ATT_TRACE_INFO2("ConnId %d change aware state is %d", connId, ATTS_CLIENT_CHANGE_AWARE_DB_READ_PENDING); } } @@ -235,7 +235,7 @@ uint8_t attsCsfActClientState(uint16_t handle, uint8_t opcode, uint8_t *pPacket) if (err == ATT_ERR_DATABASE_OUT_OF_SYNC) { - ATT_TRACE_INFO2("ConnId %d out of sync, PDU with opcode 0x%02x ignored!", handle + 1, opcode); + ATT_TRACE_INFO2("ConnId %d out of sync, PDU with opcode 0x%02x ignored!", connId, opcode); } return err; diff --git a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_eatt.c b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_eatt.c index f1ca4879c8..f0d42a6afe 100644 --- a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_eatt.c +++ b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_eatt.c @@ -166,7 +166,7 @@ static void eattsL2cCocDataInd(l2cCocEvt_t *pEvt) } /* check client's status to see if server is allowed to process this PDU. */ - err = attsCsfActClientState(connId - 1, opcode, pEvt->dataInd.pData - L2C_PAYLOAD_START); + err = attsCsfActClientState(connId, opcode, pEvt->dataInd.pData - L2C_PAYLOAD_START); if (err) { BYTES_TO_UINT16(attHandle, pEvt->dataInd.pData + ATT_HDR_LEN); diff --git a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.c b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.c index 36dbbd0722..9a922d27af 100644 --- a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.c +++ b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.c @@ -182,7 +182,7 @@ static void attsDataCback(uint16_t handle, uint16_t len, uint8_t *pPacket) } /* check client's status to see if server is allowed to process this PDU. */ - err = attsCsfActClientState(handle, opcode, pPacket); + err = attsCsfActClientState(DmConnIdByHandle(handle), opcode, pPacket); if (err) { BYTES_TO_UINT16(attHandle, pPacket + L2C_PAYLOAD_START + ATT_HDR_LEN); diff --git a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.h b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.h index 5c46da8b79..8973ef9ca1 100644 --- a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.h +++ b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.h @@ -164,7 +164,7 @@ void attsProcExecWriteReq(attsCcb_t *pCcb, uint16_t len, uint8_t *pPacket); void attsProcValueCnf(attsCcb_t *pCcb, uint16_t len, uint8_t *pPacket); void attsProcReadMultiVarReq(attsCcb_t *pCcb, uint16_t len, uint8_t *pPacket); -uint8_t attsCsfActClientState(uint16_t handle, uint8_t opcode, uint8_t *pPacket); +uint8_t attsCsfActClientState(uint16_t connId, uint8_t opcode, uint8_t *pPacket); uint8_t attsCsfIsClientChangeAware(dmConnId_t connId, uint16_t handle); void attsCsfSetHashUpdateStatus(bool_t isUpdating); uint8_t attsCsfGetHashUpdateStatus(void); From 9a25b7b7cd44ed97cf043de55d119d3f0910343c Mon Sep 17 00:00:00 2001 From: Paul Szczepanek Date: Fri, 19 Feb 2021 12:52:47 +0000 Subject: [PATCH 2/3] use dmConnId_t for conn id --- .../cordio_stack/ble-host/sources/stack/att/atts_csf.c | 2 +- .../cordio_stack/ble-host/sources/stack/att/atts_main.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_csf.c b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_csf.c index b04b2912aa..89b022cb06 100644 --- a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_csf.c +++ b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_csf.c @@ -141,7 +141,7 @@ uint8_t attsCsfIsClientChangeAware(dmConnId_t connId, uint16_t handle) * \return \ref ATT_SUCCESS if client is change-aware, else \ref ATT_ERR_DATABASE_OUT_OF_SYNC. */ /*************************************************************************************************/ -uint8_t attsCsfActClientState(uint16_t connId, uint8_t opcode, uint8_t *pPacket) +uint8_t attsCsfActClientState(dmConnId_t connId, uint8_t opcode, uint8_t *pPacket) { uint8_t err = ATT_SUCCESS; attsCsfRec_t *pRec; diff --git a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.h b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.h index 8973ef9ca1..72927bc4e4 100644 --- a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.h +++ b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.h @@ -164,7 +164,7 @@ void attsProcExecWriteReq(attsCcb_t *pCcb, uint16_t len, uint8_t *pPacket); void attsProcValueCnf(attsCcb_t *pCcb, uint16_t len, uint8_t *pPacket); void attsProcReadMultiVarReq(attsCcb_t *pCcb, uint16_t len, uint8_t *pPacket); -uint8_t attsCsfActClientState(uint16_t connId, uint8_t opcode, uint8_t *pPacket); +uint8_t attsCsfActClientState(dmConnId_t connId, uint8_t opcode, uint8_t *pPacket); uint8_t attsCsfIsClientChangeAware(dmConnId_t connId, uint16_t handle); void attsCsfSetHashUpdateStatus(bool_t isUpdating); uint8_t attsCsfGetHashUpdateStatus(void); From 53cf06278ad9bf55da9e1b2b741f83118f06c3ed Mon Sep 17 00:00:00 2001 From: Paul Szczepanek Date: Mon, 22 Feb 2021 11:31:25 +0000 Subject: [PATCH 3/3] use the ccb instead of looking up the conn id --- .../cordio_stack/ble-host/sources/stack/att/atts_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.c b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.c index 9a922d27af..fa38787f1d 100644 --- a/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.c +++ b/connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/sources/stack/att/atts_main.c @@ -182,7 +182,7 @@ static void attsDataCback(uint16_t handle, uint16_t len, uint8_t *pPacket) } /* check client's status to see if server is allowed to process this PDU. */ - err = attsCsfActClientState(DmConnIdByHandle(handle), opcode, pPacket); + err = attsCsfActClientState(pCcb->connId, opcode, pPacket); if (err) { BYTES_TO_UINT16(attHandle, pPacket + L2C_PAYLOAD_START + ATT_HDR_LEN);