mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-01 04:20:33 +00:00
mesh: improve mesh_upper_transport_find_pdu_for_lower
This commit is contained in:
parent
b624ad1efe
commit
fb68bde833
@ -1012,7 +1012,7 @@ static void mesh_upper_transport_run(void){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static mesh_upper_transport_pdu_t * mesh_upper_transport_find_pdu_for_lower(mesh_pdu_t * pdu_to_find){
|
static mesh_upper_transport_pdu_t * mesh_upper_transport_find_and_remove_pdu_for_lower(mesh_pdu_t * pdu_to_find){
|
||||||
btstack_linked_list_iterator_t it;
|
btstack_linked_list_iterator_t it;
|
||||||
btstack_linked_list_iterator_init(&it, &upper_transport_outgoing_active);
|
btstack_linked_list_iterator_init(&it, &upper_transport_outgoing_active);
|
||||||
mesh_upper_transport_pdu_t * upper_pdu;
|
mesh_upper_transport_pdu_t * upper_pdu;
|
||||||
@ -1047,7 +1047,7 @@ static void mesh_upper_transport_pdu_handler(mesh_transport_callback_type_t call
|
|||||||
switch (pdu->pdu_type){
|
switch (pdu->pdu_type){
|
||||||
case MESH_PDU_TYPE_SEGMENTED:
|
case MESH_PDU_TYPE_SEGMENTED:
|
||||||
// try to find in outgoing active
|
// try to find in outgoing active
|
||||||
upper_pdu = mesh_upper_transport_find_pdu_for_lower(pdu);
|
upper_pdu = mesh_upper_transport_find_and_remove_pdu_for_lower(pdu);
|
||||||
btstack_assert(upper_pdu != NULL);
|
btstack_assert(upper_pdu != NULL);
|
||||||
segmented_pdu = (mesh_segmented_pdu_t *) pdu;
|
segmented_pdu = (mesh_segmented_pdu_t *) pdu;
|
||||||
// free chunks
|
// free chunks
|
||||||
@ -1057,7 +1057,6 @@ static void mesh_upper_transport_pdu_handler(mesh_transport_callback_type_t call
|
|||||||
}
|
}
|
||||||
// free segmented pdu
|
// free segmented pdu
|
||||||
btstack_memory_mesh_segmented_pdu_free(segmented_pdu);
|
btstack_memory_mesh_segmented_pdu_free(segmented_pdu);
|
||||||
// TODO: free segmented_pdu
|
|
||||||
upper_pdu->lower_pdu = NULL;
|
upper_pdu->lower_pdu = NULL;
|
||||||
switch (upper_pdu->pdu_header.pdu_type){
|
switch (upper_pdu->pdu_header.pdu_type){
|
||||||
case MESH_PDU_TYPE_UPPER_SEGMENTED_CONTROL:
|
case MESH_PDU_TYPE_UPPER_SEGMENTED_CONTROL:
|
||||||
@ -1073,7 +1072,7 @@ static void mesh_upper_transport_pdu_handler(mesh_transport_callback_type_t call
|
|||||||
break;
|
break;
|
||||||
case MESH_PDU_TYPE_UPPER_UNSEGMENTED_ACCESS:
|
case MESH_PDU_TYPE_UPPER_UNSEGMENTED_ACCESS:
|
||||||
// find corresponding upper transport pdu and free single segment
|
// find corresponding upper transport pdu and free single segment
|
||||||
upper_pdu = mesh_upper_transport_find_pdu_for_lower(pdu);
|
upper_pdu = mesh_upper_transport_find_and_remove_pdu_for_lower(pdu);
|
||||||
btstack_assert(upper_pdu != NULL);
|
btstack_assert(upper_pdu != NULL);
|
||||||
btstack_assert(upper_pdu->lower_pdu == (mesh_pdu_t *) pdu);
|
btstack_assert(upper_pdu->lower_pdu == (mesh_pdu_t *) pdu);
|
||||||
mesh_network_pdu_free((mesh_network_pdu_t *) pdu);
|
mesh_network_pdu_free((mesh_network_pdu_t *) pdu);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user