Lines Matching refs:segmented_pdu
60 static void mesh_lower_transport_outgoing_complete(mesh_segmented_pdu_t * segmented_pdu, mesh_trans…
183 …oid mesh_lower_transport_incoming_send_ack_for_segmented_pdu(mesh_segmented_pdu_t * segmented_pdu){ in mesh_lower_transport_incoming_send_ack_for_segmented_pdu() argument
184 uint16_t seq_zero = segmented_pdu->seq & 0x1fff; in mesh_lower_transport_incoming_send_ack_for_segmented_pdu()
185 uint8_t ttl = segmented_pdu->ctl_ttl & 0x7f; in mesh_lower_transport_incoming_send_ack_for_segmented_pdu()
186 uint16_t dest = segmented_pdu->src; in mesh_lower_transport_incoming_send_ack_for_segmented_pdu()
187 uint16_t netkey_index = segmented_pdu->netkey_index; in mesh_lower_transport_incoming_send_ack_for_segmented_pdu()
190 … segmented_pdu, netkey_index, ttl, seq_zero, mesh_node_get_primary_element_address(), dest); in mesh_lower_transport_incoming_send_ack_for_segmented_pdu()
192 …mesh_lower_transport_incoming_send_ack(netkey_index, ttl, dest, seq_zero, segmented_pdu->block_ack… in mesh_lower_transport_incoming_send_ack_for_segmented_pdu()
206 … void mesh_lower_transport_incoming_stop_acknowledgment_timer(mesh_segmented_pdu_t *segmented_pdu){ in mesh_lower_transport_incoming_stop_acknowledgment_timer() argument
207 if ((segmented_pdu->flags & MESH_TRANSPORT_FLAG_ACK_TIMER) == 0) return; in mesh_lower_transport_incoming_stop_acknowledgment_timer()
208 segmented_pdu->flags &= ~MESH_TRANSPORT_FLAG_ACK_TIMER; in mesh_lower_transport_incoming_stop_acknowledgment_timer()
209 btstack_run_loop_remove_timer(&segmented_pdu->acknowledgement_timer); in mesh_lower_transport_incoming_stop_acknowledgment_timer()
212 static void mesh_lower_transport_incoming_stop_incomplete_timer(mesh_segmented_pdu_t *segmented_pdu… in mesh_lower_transport_incoming_stop_incomplete_timer() argument
213 if ((segmented_pdu->flags & MESH_TRANSPORT_FLAG_INCOMPLETE_TIMER) == 0) return; in mesh_lower_transport_incoming_stop_incomplete_timer()
214 segmented_pdu->flags &= ~MESH_TRANSPORT_FLAG_INCOMPLETE_TIMER; in mesh_lower_transport_incoming_stop_incomplete_timer()
215 btstack_run_loop_remove_timer(&segmented_pdu->incomplete_timer); in mesh_lower_transport_incoming_stop_incomplete_timer()
218 …oid mesh_lower_transport_incoming_segmented_message_complete(mesh_segmented_pdu_t * segmented_pdu){ in mesh_lower_transport_incoming_segmented_message_complete() argument
220 mesh_lower_transport_incoming_stop_acknowledgment_timer(segmented_pdu); in mesh_lower_transport_incoming_segmented_message_complete()
221 mesh_lower_transport_incoming_stop_incomplete_timer(segmented_pdu); in mesh_lower_transport_incoming_segmented_message_complete()
223 mesh_peer_t * peer = mesh_peer_for_addr(segmented_pdu->src); in mesh_lower_transport_incoming_segmented_message_complete()
230 …mesh_segmented_pdu_t * segmented_pdu = (mesh_segmented_pdu_t *) btstack_run_loop_get_timer_context… in mesh_lower_transport_incoming_ack_timeout() local
232 printf("ACK: acknowledgement timer fired for %p, send ACK\n", segmented_pdu); in mesh_lower_transport_incoming_ack_timeout()
234 segmented_pdu->flags &= ~MESH_TRANSPORT_FLAG_ACK_TIMER; in mesh_lower_transport_incoming_ack_timeout()
235 mesh_lower_transport_incoming_send_ack_for_segmented_pdu(segmented_pdu); in mesh_lower_transport_incoming_ack_timeout()
239 …mesh_segmented_pdu_t * segmented_pdu = (mesh_segmented_pdu_t *) btstack_run_loop_get_timer_context… in mesh_lower_transport_incoming_incomplete_timeout() local
241 printf("mesh_lower_transport_incoming_incomplete_timeout for %p - give up\n", segmented_pdu); in mesh_lower_transport_incoming_incomplete_timeout()
243 mesh_lower_transport_incoming_segmented_message_complete(segmented_pdu); in mesh_lower_transport_incoming_incomplete_timeout()
245 mesh_segmented_pdu_free(segmented_pdu); in mesh_lower_transport_incoming_incomplete_timeout()
248 …_transport_incoming_start_acknowledgment_timer(mesh_segmented_pdu_t * segmented_pdu, uint32_t time… in mesh_lower_transport_incoming_start_acknowledgment_timer() argument
250 printf("ACK: start rx ack timer for %p, timeout %u ms\n", segmented_pdu, (int) timeout); in mesh_lower_transport_incoming_start_acknowledgment_timer()
252 btstack_run_loop_set_timer(&segmented_pdu->acknowledgement_timer, timeout); in mesh_lower_transport_incoming_start_acknowledgment_timer()
253 …btstack_run_loop_set_timer_handler(&segmented_pdu->acknowledgement_timer, &mesh_lower_transport_in… in mesh_lower_transport_incoming_start_acknowledgment_timer()
254 btstack_run_loop_set_timer_context(&segmented_pdu->acknowledgement_timer, segmented_pdu); in mesh_lower_transport_incoming_start_acknowledgment_timer()
255 btstack_run_loop_add_timer(&segmented_pdu->acknowledgement_timer); in mesh_lower_transport_incoming_start_acknowledgment_timer()
256 segmented_pdu->flags |= MESH_TRANSPORT_FLAG_ACK_TIMER; in mesh_lower_transport_incoming_start_acknowledgment_timer()
259 …er_transport_incoming_restart_incomplete_timer(mesh_segmented_pdu_t * segmented_pdu, uint32_t time… in mesh_lower_transport_incoming_restart_incomplete_timer() argument
262 printf("RX-(re)start incomplete timer for %p, timeout %u ms\n", segmented_pdu, (int) timeout); in mesh_lower_transport_incoming_restart_incomplete_timer()
264 if ((segmented_pdu->flags & MESH_TRANSPORT_FLAG_INCOMPLETE_TIMER) != 0){ in mesh_lower_transport_incoming_restart_incomplete_timer()
265 btstack_run_loop_remove_timer(&segmented_pdu->incomplete_timer); in mesh_lower_transport_incoming_restart_incomplete_timer()
267 btstack_run_loop_set_timer(&segmented_pdu->incomplete_timer, timeout); in mesh_lower_transport_incoming_restart_incomplete_timer()
268 btstack_run_loop_set_timer_handler(&segmented_pdu->incomplete_timer, callback); in mesh_lower_transport_incoming_restart_incomplete_timer()
269 btstack_run_loop_set_timer_context(&segmented_pdu->incomplete_timer, segmented_pdu); in mesh_lower_transport_incoming_restart_incomplete_timer()
270 btstack_run_loop_add_timer(&segmented_pdu->incomplete_timer); in mesh_lower_transport_incoming_restart_incomplete_timer()
271 segmented_pdu->flags |= MESH_TRANSPORT_FLAG_INCOMPLETE_TIMER; in mesh_lower_transport_incoming_restart_incomplete_timer()
490 …mesh_segmented_pdu_t * segmented_pdu = mesh_lower_transport_outgoing_message_for_dst( mesh_network… in mesh_lower_transport_outgoing_process_segment_acknowledgement_message() local
491 if (segmented_pdu == NULL) return; in mesh_lower_transport_outgoing_process_segment_acknowledgement_message()
500 seq_zero_pdu, block_ack, seq_zero_out, segmented_pdu->block_ack); in mesh_lower_transport_outgoing_process_segment_acknowledgement_message()
511 …if ((lower_transport_outgoing_message == segmented_pdu) && lower_transport_outgoing_segment_at_net… in mesh_lower_transport_outgoing_process_segment_acknowledgement_message()
514 … mesh_lower_transport_outgoing_complete(segmented_pdu, MESH_TRANSPORT_STATUS_SEND_ABORT_BY_REMOTE); in mesh_lower_transport_outgoing_process_segment_acknowledgement_message()
526 segmented_pdu->block_ack &= ~block_ack; in mesh_lower_transport_outgoing_process_segment_acknowledgement_message()
528 printf("[+] Updated block_ack %08" PRIx32 "\n", segmented_pdu->block_ack); in mesh_lower_transport_outgoing_process_segment_acknowledgement_message()
531 if (segmented_pdu->block_ack == 0){ in mesh_lower_transport_outgoing_process_segment_acknowledgement_message()
536 …if ((lower_transport_outgoing_message == segmented_pdu) && lower_transport_outgoing_segment_at_net… in mesh_lower_transport_outgoing_process_segment_acknowledgement_message()
539 mesh_lower_transport_outgoing_complete(segmented_pdu, MESH_TRANSPORT_STATUS_SUCCESS); in mesh_lower_transport_outgoing_process_segment_acknowledgement_message()
544 … void mesh_lower_transport_outgoing_stop_acknowledgment_timer(mesh_segmented_pdu_t *segmented_pdu){ in mesh_lower_transport_outgoing_stop_acknowledgment_timer() argument
545 if ((segmented_pdu->flags & MESH_TRANSPORT_FLAG_ACK_TIMER) == 0) return; in mesh_lower_transport_outgoing_stop_acknowledgment_timer()
546 segmented_pdu->flags &= ~MESH_TRANSPORT_FLAG_ACK_TIMER; in mesh_lower_transport_outgoing_stop_acknowledgment_timer()
547 btstack_run_loop_remove_timer(&segmented_pdu->acknowledgement_timer); in mesh_lower_transport_outgoing_stop_acknowledgment_timer()
550 …h_lower_transport_outgoing_restart_segment_transmission_timer(mesh_segmented_pdu_t *segmented_pdu){ in mesh_lower_transport_outgoing_restart_segment_transmission_timer() argument
553 uint32_t timeout = 200 + 50 * (segmented_pdu->ctl_ttl & 0x7f); in mesh_lower_transport_outgoing_restart_segment_transmission_timer()
554 if ((segmented_pdu->flags & MESH_TRANSPORT_FLAG_ACK_TIMER) != 0){ in mesh_lower_transport_outgoing_restart_segment_transmission_timer()
559 …transport, segmented pdu %p, seq %06" PRIx32 ": setup transmission timeout %u ms\n", segmented_pdu, in mesh_lower_transport_outgoing_restart_segment_transmission_timer()
560 segmented_pdu->seq, (int) timeout); in mesh_lower_transport_outgoing_restart_segment_transmission_timer()
563 btstack_run_loop_set_timer(&segmented_pdu->acknowledgement_timer, timeout); in mesh_lower_transport_outgoing_restart_segment_transmission_timer()
564 …btstack_run_loop_set_timer_handler(&segmented_pdu->acknowledgement_timer, &mesh_lower_transport_ou… in mesh_lower_transport_outgoing_restart_segment_transmission_timer()
565 …btstack_run_loop_set_timer_context(&segmented_pdu->acknowledgement_timer, lower_transport_outgoing… in mesh_lower_transport_outgoing_restart_segment_transmission_timer()
566 btstack_run_loop_add_timer(&segmented_pdu->acknowledgement_timer); in mesh_lower_transport_outgoing_restart_segment_transmission_timer()
567 segmented_pdu->flags |= MESH_TRANSPORT_FLAG_ACK_TIMER; in mesh_lower_transport_outgoing_restart_segment_transmission_timer()
570 static void mesh_lower_transport_outgoing_complete(mesh_segmented_pdu_t * segmented_pdu, mesh_trans… in mesh_lower_transport_outgoing_complete() argument
571 btstack_assert(segmented_pdu != NULL); in mesh_lower_transport_outgoing_complete()
573 printf("[+] outgoing_complete %p, ack timer active %u, incomplete active %u\n", segmented_pdu, in mesh_lower_transport_outgoing_complete()
574 …((segmented_pdu->flags & MESH_TRANSPORT_FLAG_ACK_TIMER) != 0), ((segmented_pdu->flags & MESH_TRANS… in mesh_lower_transport_outgoing_complete()
577 mesh_lower_transport_outgoing_stop_acknowledgment_timer(segmented_pdu); in mesh_lower_transport_outgoing_complete()
580 if (lower_transport_outgoing_message == segmented_pdu){ in mesh_lower_transport_outgoing_complete()
583 …ack_linked_list_remove(&lower_transport_outgoing_waiting, (btstack_linked_item_t *) segmented_pdu); in mesh_lower_transport_outgoing_complete()
584 …stack_linked_list_remove(&lower_transport_outgoing_ready, (btstack_linked_item_t *) segmented_pdu); in mesh_lower_transport_outgoing_complete()
588 higher_layer_handler(MESH_TRANSPORT_PDU_SENT, status, (mesh_pdu_t *) segmented_pdu); in mesh_lower_transport_outgoing_complete()
723 …d mesh_lower_transport_outgoing_setup_sending_segmented_pdus(mesh_segmented_pdu_t *segmented_pdu) { in mesh_lower_transport_outgoing_setup_sending_segmented_pdus() argument
724 … pdu %p, seq %06" PRIx32 ": send retry count %u\n", segmented_pdu, segmented_pdu->seq, segmented_p… in mesh_lower_transport_outgoing_setup_sending_segmented_pdus()
726 segmented_pdu->retry_count--; in mesh_lower_transport_outgoing_setup_sending_segmented_pdus()
732 lower_transport_outgoing_message = segmented_pdu; in mesh_lower_transport_outgoing_setup_sending_segmented_pdus()
735 …oid mesh_lower_transport_outgoing_segment_transmission_fired(mesh_segmented_pdu_t *segmented_pdu) { in mesh_lower_transport_outgoing_segment_transmission_fired() argument
737 if (segmented_pdu->retry_count == 0){ in mesh_lower_transport_outgoing_segment_transmission_fired()
738 …r transport, segmented pdu %p, seq %06" PRIx32 ": send failed, retries exhausted\n", segmented_pdu, in mesh_lower_transport_outgoing_segment_transmission_fired()
739 segmented_pdu->seq); in mesh_lower_transport_outgoing_segment_transmission_fired()
740 mesh_lower_transport_outgoing_complete(segmented_pdu, MESH_TRANSPORT_STATUS_SEND_FAILED); in mesh_lower_transport_outgoing_segment_transmission_fired()
745 …ort, segmented pdu %p, seq %06" PRIx32": transmission fired\n", segmented_pdu, segmented_pdu->seq); in mesh_lower_transport_outgoing_segment_transmission_fired()
749 if (lower_transport_outgoing_message == segmented_pdu){ in mesh_lower_transport_outgoing_segment_transmission_fired()
752 …ack_linked_list_remove(&lower_transport_outgoing_waiting, (btstack_linked_item_t *) segmented_pdu); in mesh_lower_transport_outgoing_segment_transmission_fired()
754 …ack_linked_list_add_tail(&lower_transport_outgoing_ready, (btstack_linked_item_t *) segmented_pdu); in mesh_lower_transport_outgoing_segment_transmission_fired()
761 …mesh_segmented_pdu_t * segmented_pdu = (mesh_segmented_pdu_t *) btstack_run_loop_get_timer_context… in mesh_lower_transport_outgoing_segment_transmission_timeout() local
763 …] Lower transport, segmented pdu %p, seq %06" PRIx32 ": transmission timer fired\n", segmented_pdu, in mesh_lower_transport_outgoing_segment_transmission_timeout()
764 segmented_pdu->seq); in mesh_lower_transport_outgoing_segment_transmission_timeout()
766 segmented_pdu->flags &= ~MESH_TRANSPORT_FLAG_ACK_TIMER; in mesh_lower_transport_outgoing_segment_transmission_timeout()
768 …if ((segmented_pdu == lower_transport_outgoing_message) && lower_transport_outgoing_segment_at_net… in mesh_lower_transport_outgoing_segment_transmission_timeout()
771 mesh_lower_transport_outgoing_segment_transmission_fired(segmented_pdu); in mesh_lower_transport_outgoing_segment_transmission_timeout()
943 mesh_segmented_pdu_t * segmented_pdu; in mesh_lower_transport_send_pdu() local
951 segmented_pdu = (mesh_segmented_pdu_t *) pdu; in mesh_lower_transport_send_pdu()
952 segmented_pdu->retry_count = 3; in mesh_lower_transport_send_pdu()
953 mesh_lower_transport_outgoing_setup_block_ack(segmented_pdu); in mesh_lower_transport_send_pdu()
994 …mesh_segmented_pdu_t * segmented_pdu = (mesh_segmented_pdu_t *) btstack_linked_list_iterator_next(… in mesh_lower_transport_can_send_to_dest() local
996 if (segmented_pdu->dst == dest){ in mesh_lower_transport_can_send_to_dest()
1021 …mesh_segmented_pdu_t * segmented_pdu = (mesh_segmented_pdu_t *) btstack_linked_list_pop(&lower_tra… in mesh_lower_transport_reset() local
1022 btstack_memory_mesh_segmented_pdu_free(segmented_pdu); in mesh_lower_transport_reset()