mesh: assert ack_opcode is set for access messages

This commit is contained in:
Matthias Ringwald 2019-10-24 16:15:59 +02:00
parent 98e0b87678
commit e6a669a7e6
2 changed files with 9 additions and 1 deletions

View File

@ -118,9 +118,10 @@ uint32_t mesh_access_acknowledged_message_timeout_ms(void){
} }
#define MESH_ACCESS_OPCODE_INVALID 0xFFFFFFFFu #define MESH_ACCESS_OPCODE_INVALID 0xFFFFFFFFu
#define MESH_ACCESS_OPCODE_NOT_SET 0xFFFFFFFEu
void mesh_access_send_unacknowledged_pdu(mesh_pdu_t * pdu){ void mesh_access_send_unacknowledged_pdu(mesh_pdu_t * pdu){
pdu->ack_opcode = MESH_ACCESS_OPCODE_INVALID;; pdu->ack_opcode = MESH_ACCESS_OPCODE_INVALID;
mesh_upper_transport_send_access_pdu(pdu); mesh_upper_transport_send_access_pdu(pdu);
} }
@ -618,6 +619,7 @@ mesh_transport_pdu_t * mesh_access_transport_init(uint32_t opcode){
if (!pdu) return NULL; if (!pdu) return NULL;
pdu->len = mesh_access_setup_opcode(pdu->data, opcode); pdu->len = mesh_access_setup_opcode(pdu->data, opcode);
pdu->pdu_header.ack_opcode = MESH_ACCESS_OPCODE_NOT_SET;
return pdu; return pdu;
} }
@ -652,6 +654,7 @@ mesh_network_pdu_t * mesh_access_network_init(uint32_t opcode){
if (!pdu) return NULL; if (!pdu) return NULL;
pdu->len = mesh_access_setup_opcode(&pdu->data[10], opcode) + 10; pdu->len = mesh_access_setup_opcode(&pdu->data[10], opcode) + 10;
pdu->pdu_header.ack_opcode = MESH_ACCESS_OPCODE_NOT_SET;
return pdu; return pdu;
} }

View File

@ -1064,7 +1064,12 @@ void mesh_upper_transport_init(){
mesh_lower_transport_set_higher_layer_handler(&mesh_upper_transport_pdu_handler); mesh_lower_transport_set_higher_layer_handler(&mesh_upper_transport_pdu_handler);
} }
// TODO: higher layer define used for assert
#define MESH_ACCESS_OPCODE_NOT_SET 0xFFFFFFFEu
void mesh_upper_transport_send_access_pdu(mesh_pdu_t *pdu){ void mesh_upper_transport_send_access_pdu(mesh_pdu_t *pdu){
btstack_assert(pdu->ack_opcode != MESH_ACCESS_OPCODE_NOT_SET);
if (pdu->pdu_type == MESH_PDU_TYPE_NETWORK){ if (pdu->pdu_type == MESH_PDU_TYPE_NETWORK){
btstack_assert( ((mesh_network_pdu_t *) pdu)->len >= 9); btstack_assert( ((mesh_network_pdu_t *) pdu)->len >= 9);
} }