Merge pull request #14305 from paul-szczepanek-arm/cordio-host-fix-index

BLE: fix indexing of array in Cordio host stack
pull/14334/head
Martin Kojtal 2021-02-23 14:23:21 +00:00 committed by GitHub
commit 8340ea2d2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 11 additions and 11 deletions

View File

@ -134,14 +134,14 @@ uint8_t attsCsfIsClientChangeAware(dmConnId_t connId, uint16_t handle)
/*! /*!
* \brief Update client change-aware state based on protocol event. * \brief Update client change-aware state based on protocol event.
* *
* \param connId Connection handle. * \param connId Connection ID.
* \param opcode ATT PDU type. * \param opcode ATT PDU type.
* \param pPacket Data packet from L2CAP. * \param pPacket Data packet from L2CAP.
* *
* \return \ref ATT_SUCCESS if client is change-aware, else \ref ATT_ERR_DATABASE_OUT_OF_SYNC. * \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(dmConnId_t connId, uint8_t opcode, uint8_t *pPacket)
{ {
uint8_t err = ATT_SUCCESS; uint8_t err = ATT_SUCCESS;
attsCsfRec_t *pRec; attsCsfRec_t *pRec;
@ -152,7 +152,7 @@ uint8_t attsCsfActClientState(uint16_t handle, uint8_t opcode, uint8_t *pPacket)
return err; return err;
} }
pRec = &attsCsfCb.attsCsfTable[handle]; pRec = &attsCsfCb.attsCsfTable[connId - 1];
/* If the client is change-unaware */ /* If the client is change-unaware */
if (pRec->changeAwareState == ATTS_CLIENT_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 */ /* Move client change-aware state to pending */
pRec->changeAwareState = ATTS_CLIENT_CHANGE_PENDING_AWARE; 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); 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 */ /* Move client change-aware state to aware */
pRec->changeAwareState = ATTS_CLIENT_CHANGE_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. */ /* Callback to application to store updated awareness, if bonded. */
if (attsCsfCb.writeCback != NULL) if (attsCsfCb.writeCback != NULL)
{ {
attsCsfCb.writeCback(handle + 1, pRec->changeAwareState, &pRec->csf); attsCsfCb.writeCback(connId, pRec->changeAwareState, &pRec->csf);
} }
} }
else 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; 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); 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) 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; return err;

View File

@ -166,7 +166,7 @@ static void eattsL2cCocDataInd(l2cCocEvt_t *pEvt)
} }
/* check client's status to see if server is allowed to process this PDU. */ /* 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) if (err)
{ {
BYTES_TO_UINT16(attHandle, pEvt->dataInd.pData + ATT_HDR_LEN); BYTES_TO_UINT16(attHandle, pEvt->dataInd.pData + ATT_HDR_LEN);

View File

@ -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. */ /* check client's status to see if server is allowed to process this PDU. */
err = attsCsfActClientState(handle, opcode, pPacket); err = attsCsfActClientState(pCcb->connId, opcode, pPacket);
if (err) if (err)
{ {
BYTES_TO_UINT16(attHandle, pPacket + L2C_PAYLOAD_START + ATT_HDR_LEN); BYTES_TO_UINT16(attHandle, pPacket + L2C_PAYLOAD_START + ATT_HDR_LEN);

View File

@ -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 attsProcValueCnf(attsCcb_t *pCcb, uint16_t len, uint8_t *pPacket);
void attsProcReadMultiVarReq(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(dmConnId_t connId, uint8_t opcode, uint8_t *pPacket);
uint8_t attsCsfIsClientChangeAware(dmConnId_t connId, uint16_t handle); uint8_t attsCsfIsClientChangeAware(dmConnId_t connId, uint16_t handle);
void attsCsfSetHashUpdateStatus(bool_t isUpdating); void attsCsfSetHashUpdateStatus(bool_t isUpdating);
uint8_t attsCsfGetHashUpdateStatus(void); uint8_t attsCsfGetHashUpdateStatus(void);