From 13342fabc51f41ba87ba7fad4530bea9932b309b Mon Sep 17 00:00:00 2001 From: Juan Ma Date: Wed, 16 Jun 2021 17:22:27 -0400 Subject: [PATCH] Functional with no errors --- .../schc_machines/lorawan/ack_on_error_receiver.py | 10 +++++++++- .../code/schc_machines/lorawan/ack_on_error_sender.py | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/fragmentation_layer/code/schc_machines/lorawan/ack_on_error_receiver.py b/fragmentation_layer/code/schc_machines/lorawan/ack_on_error_receiver.py index 805efb7..3bb413c 100644 --- a/fragmentation_layer/code/schc_machines/lorawan/ack_on_error_receiver.py +++ b/fragmentation_layer/code/schc_machines/lorawan/ack_on_error_receiver.py @@ -54,7 +54,15 @@ def generate_message(self, mtu): self._logger_.schc_message(message) return message else: - return None + ack = SCHCAck( + rule_id=self.sm.__rule_id__, + protocol=self.sm.protocol.id, + c=True, + dtag=self.sm.__dtag__, + w=self.sm.__cw__ + ) + ack.add_padding() + return ack else: return None diff --git a/fragmentation_layer/code/schc_machines/lorawan/ack_on_error_sender.py b/fragmentation_layer/code/schc_machines/lorawan/ack_on_error_sender.py index daf1d3b..fd9bb9e 100644 --- a/fragmentation_layer/code/schc_machines/lorawan/ack_on_error_sender.py +++ b/fragmentation_layer/code/schc_machines/lorawan/ack_on_error_sender.py @@ -43,6 +43,7 @@ def __generate_tiles__(self): self._logger_.debug("{} tiles generated".format(len(sm.tiles))) self.sm.state = self.sm.states["sending_phase"] self.sm.state.enter_state() + self.sm.message_to_send.clear() return class SendingPhase(SCHCSender.SenderState): @@ -184,6 +185,7 @@ def receive_schc_ack(self, schc_message): self.sm.__cw__ = schc_message.header.w.w self.sm.state = self.sm.states["resending_phase"] self.sm.state.enter_state() + self.sm.message_to_send.clear() return else: # self.sm.__cw__ == schc_message.header.w.w: if schc_message.header.c.c: @@ -213,6 +215,7 @@ def receive_schc_ack(self, schc_message): self.sm.retransmission_timer.stop() self.sm.state = self.sm.states["resending_phase"] self.sm.state.enter_state() + self.sm.message_to_send.clear() return else: self.sm.state = self.sm.states["error"] @@ -230,6 +233,7 @@ def receive_schc_ack(self, schc_message): self.sm.state = self.sm.states["resending_phase"] self.sm.retransmission_timer.stop() self.sm.state.enter_state() + self.sm.message_to_send.clear() return else: self.sm.sent_tiles.clear() @@ -238,6 +242,7 @@ def receive_schc_ack(self, schc_message): self.sm.__cw__ += 1 self.sm.__fcn__ = self.sm.protocol.WINDOW_SIZE - 1 self.sm.state.enter_state() + self.sm.message_to_send.clear() return def on_expiration_time(self, alarm):