mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-01 04:20:33 +00:00
mesh: remove segmented field from mesh_message_pdu_t
This commit is contained in:
parent
d38a76647a
commit
04050cc707
@ -847,38 +847,28 @@ static void mesh_lower_transport_network_pdu_sent(mesh_network_pdu_t *network_pd
|
|||||||
if (lower_transport_outgoing_segment == network_pdu){
|
if (lower_transport_outgoing_segment == network_pdu){
|
||||||
btstack_assert(lower_transport_outgoing_message != NULL);
|
btstack_assert(lower_transport_outgoing_message != NULL);
|
||||||
|
|
||||||
if (lower_transport_outgoing_message->segmented == false){
|
// of segmented message
|
||||||
// of unsegmented message
|
|
||||||
mesh_message_pdu_t * message_pdu = lower_transport_outgoing_message;
|
|
||||||
lower_transport_outgoing_message = NULL;
|
|
||||||
lower_transport_outgoing_segment = NULL;
|
|
||||||
higher_layer_handler(MESH_TRANSPORT_PDU_SENT, MESH_TRANSPORT_STATUS_SUCCESS, (mesh_pdu_t *) message_pdu);
|
|
||||||
return;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// of segmented message
|
|
||||||
#ifdef LOG_LOWER_TRANSPORT
|
#ifdef LOG_LOWER_TRANSPORT
|
||||||
printf("[+] Lower transport, segmented pdu %p, seq %06x: network pdu %p sent\n", lower_transport_outgoing_message, mesh_message_seq(lower_transport_outgoing_message), network_pdu);
|
printf("[+] Lower transport, segmented pdu %p, seq %06x: network pdu %p sent\n", lower_transport_outgoing_message, mesh_message_seq(lower_transport_outgoing_message), network_pdu);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
lower_transport_outgoing_segment_queued = 0;
|
lower_transport_outgoing_segment_queued = 0;
|
||||||
if (lower_transport_outgoing_trasnmission_complete){
|
if (lower_transport_outgoing_trasnmission_complete){
|
||||||
// handle complete
|
// handle complete
|
||||||
lower_transport_outgoing_trasnmission_complete = 0;
|
lower_transport_outgoing_trasnmission_complete = 0;
|
||||||
lower_transport_outgoing_transmission_timeout = 0;
|
lower_transport_outgoing_transmission_timeout = 0;
|
||||||
mesh_lower_transport_outgoing_complete();
|
mesh_lower_transport_outgoing_complete();
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
if (lower_transport_outgoing_transmission_timeout){
|
|
||||||
// handle timeout
|
|
||||||
lower_transport_outgoing_transmission_timeout = 0;
|
|
||||||
mesh_lower_transport_segment_transmission_fired();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// send next segment
|
|
||||||
mesh_lower_transport_send_next_segment();
|
|
||||||
}
|
}
|
||||||
|
if (lower_transport_outgoing_transmission_timeout){
|
||||||
|
// handle timeout
|
||||||
|
lower_transport_outgoing_transmission_timeout = 0;
|
||||||
|
mesh_lower_transport_segment_transmission_fired();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// send next segment
|
||||||
|
mesh_lower_transport_send_next_segment();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -963,24 +953,16 @@ static void mesh_lower_transport_run(void){
|
|||||||
break;
|
break;
|
||||||
case MESH_PDU_TYPE_MESSAGE:
|
case MESH_PDU_TYPE_MESSAGE:
|
||||||
message_pdu = (mesh_message_pdu_t *) pdu;
|
message_pdu = (mesh_message_pdu_t *) pdu;
|
||||||
if (message_pdu->segmented){
|
//
|
||||||
//
|
printf("[+] Lower transport, segmented pdu %p, seq %06x: run start sending now\n", message_pdu, mesh_message_seq(message_pdu));
|
||||||
printf("[+] Lower transport, segmented pdu %p, seq %06x: run start sending now\n", message_pdu, mesh_message_seq(message_pdu));
|
// start sending segmented pdu
|
||||||
// start sending segmented pdu
|
lower_transport_retry_count = 3;
|
||||||
lower_transport_retry_count = 3;
|
lower_transport_outgoing_message = message_pdu;
|
||||||
lower_transport_outgoing_message = message_pdu;
|
lower_transport_outgoing_transmission_timeout = 0;
|
||||||
lower_transport_outgoing_transmission_timeout = 0;
|
lower_transport_outgoing_trasnmission_complete = 0;
|
||||||
lower_transport_outgoing_trasnmission_complete = 0;
|
mesh_lower_transport_setup_block_ack(message_pdu);
|
||||||
mesh_lower_transport_setup_block_ack(message_pdu);
|
mesh_lower_transport_setup_sending_segmented_pdus();
|
||||||
mesh_lower_transport_setup_sending_segmented_pdus();
|
mesh_lower_transport_send_next_segment();
|
||||||
mesh_lower_transport_send_next_segment();
|
|
||||||
} else {
|
|
||||||
btstack_assert(false);
|
|
||||||
network_pdu = (mesh_network_pdu_t *) btstack_linked_list_get_first_item(&message_pdu->segments);
|
|
||||||
lower_transport_outgoing_message = message_pdu;
|
|
||||||
lower_transport_outgoing_segment = network_pdu;
|
|
||||||
mesh_network_send_pdu(network_pdu);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
btstack_assert(false);
|
btstack_assert(false);
|
||||||
|
@ -139,8 +139,6 @@ typedef struct {
|
|||||||
uint32_t retransmit_timeout_ms;
|
uint32_t retransmit_timeout_ms;
|
||||||
uint32_t ack_opcode;
|
uint32_t ack_opcode;
|
||||||
|
|
||||||
bool segmented;
|
|
||||||
|
|
||||||
// rx/tx: acknowledgement timer / segment transmission timer
|
// rx/tx: acknowledgement timer / segment transmission timer
|
||||||
btstack_timer_source_t acknowledgement_timer;
|
btstack_timer_source_t acknowledgement_timer;
|
||||||
// rx: incomplete timer / tx: resend timer
|
// rx: incomplete timer / tx: resend timer
|
||||||
|
@ -630,7 +630,7 @@ static void mesh_upper_transport_pdu_handler(mesh_transport_callback_type_t call
|
|||||||
if (higher_layer_handler){
|
if (higher_layer_handler){
|
||||||
higher_layer_handler(callback_type, status, (mesh_pdu_t*) network_pdu);
|
higher_layer_handler(callback_type, status, (mesh_pdu_t*) network_pdu);
|
||||||
} else {
|
} else {
|
||||||
mesh_transport_pdu_free(transport_pdu);
|
mesh_network_pdu_free(network_pdu);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -666,7 +666,6 @@ static void mesh_upper_transport_send_segmented_pdu(mesh_transport_pdu_t * trans
|
|||||||
outgoing_segmented_pdu = transport_pdu;
|
outgoing_segmented_pdu = transport_pdu;
|
||||||
mesh_message_pdu_t * message_pdu = &outgoing_segmented_message_singleton;
|
mesh_message_pdu_t * message_pdu = &outgoing_segmented_message_singleton;
|
||||||
message_pdu->pdu_header.pdu_type = MESH_PDU_TYPE_MESSAGE;
|
message_pdu->pdu_header.pdu_type = MESH_PDU_TYPE_MESSAGE;
|
||||||
message_pdu->segmented = true;
|
|
||||||
|
|
||||||
// convert mesh_transport_pdu_t into mesh_message_pdu_t
|
// convert mesh_transport_pdu_t into mesh_message_pdu_t
|
||||||
uint16_t message_offset = 0;
|
uint16_t message_offset = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user