From 1b18000d3220d7c6beb3219f909a6ae6ea4255c9 Mon Sep 17 00:00:00 2001 From: DJ2LS <75909252+DJ2LS@users.noreply.github.com> Date: Sat, 17 Apr 2021 17:42:25 +0200 Subject: [PATCH] fixed watchdog not beeing started --- data_handler.py | 6 +++++- main.py | 3 +++ modem.py | 35 ++++++++++++++++++++++++++--------- 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/data_handler.py b/data_handler.py index 8d69aea3..dc53c109 100644 --- a/data_handler.py +++ b/data_handler.py @@ -515,7 +515,11 @@ def open_dc_and_transmit(data_out, mode, n_frames): #on a new transmission we reset the timer static.ARQ_START_OF_TRANSMISSION = int(time.time()) - + + + # lets wait a little bit + time.sleep(1) + # transmit data arq_transmit(data_out) diff --git a/main.py b/main.py index a269b08f..c5d195df 100644 --- a/main.py +++ b/main.py @@ -37,3 +37,6 @@ if __name__ == '__main__': CMD_SERVER_THREAD = threading.Thread(target=sock.start_cmd_socket, name="cmd server") CMD_SERVER_THREAD.start() + + WATCHDOG_SERVER_THREAD = threading.Thread(target=helpers.watchdog, name="watchdog") + WATCHDOG_SERVER_THREAD.start() diff --git a/modem.py b/modem.py index 5ac9db21..940cfe9d 100644 --- a/modem.py +++ b/modem.py @@ -259,6 +259,7 @@ class RF(): buffer += crc # append crc16 to buffer data = (ctypes.c_ubyte * static.FREEDV_DATA_BYTES_PER_FRAME).from_buffer_copy(buffer) + self.c_lib.freedv_rawdatatx(freedv, mod_out, data) # modulate DATA and safe it into mod_out pointer self.c_lib.freedv_rawdatapostambletx(freedv, mod_out_postamble) @@ -302,6 +303,7 @@ class RF(): buffer += crc # append crc16 to buffer data = (ctypes.c_ubyte * static.FREEDV_DATA_BYTES_PER_FRAME).from_buffer_copy(buffer) + self.c_lib.freedv_rawdatatx(freedv, mod_out, data) # modulate DATA and safe it into mod_out pointer self.c_lib.freedv_rawdatapostambletx(freedv, mod_out_postamble) @@ -400,8 +402,8 @@ class RF(): static.AUDIO_RMS = audioop.rms(data_in, 2) nbytes = self.c_lib.freedv_rawdatarx(freedv, bytes_out, data_in) # demodulate audio # logging.debug(self.c_lib.freedv_get_rx_status(freedv)) - print("listening-" + str(mode) + " - " + "nin: " + str(nin) + " - " + str(self.c_lib.freedv_get_rx_status(freedv))) - print(static.CHANNEL_STATE) + ##print("listening-" + str(mode) + " - " + "nin: " + str(nin) + " - " + str(self.c_lib.freedv_get_rx_status(freedv))) + ##print(static.CHANNEL_STATE) # -------------STUCK IN SYNC DETECTOR stuck_in_sync_counter += 1 @@ -409,6 +411,8 @@ class RF(): stuck_in_sync_10_counter += 1 if mode != 14: self.c_lib.freedv_set_sync(freedv, 0) + + logging.warning("MODEM | SYNC 10 TRIGGER | M:" + str(mode) + " | " + str(static.CHANNEL_STATE)) if stuck_in_sync_counter == 33 and self.c_lib.freedv_get_rx_status(freedv) == 10: @@ -530,10 +534,18 @@ class RF(): # DO UNSYNC AFTER LAST BURST by checking the frame nums agains the total frames per burst if frame == n_frames_per_burst: logging.debug("LAST FRAME ---> UNSYNC") + print("jahallo alles erhalten") + + bytes_out = (ctypes.c_ubyte * bytes_per_frame) + bytes_out = bytes_out() # get pointer to bytes_out + + + self.stream_rx.read(static.AUDIO_FRAMES_PER_BUFFER, exception_on_overflow=False) + self.c_lib.freedv_set_sync(freedv, 0) # FORCE UNSYNC - for i in range(0, 3): - dummy_mod = bytes(self.c_lib.freedv_nin(freedv)) - self.c_lib.freedv_rawdatarx(freedv, bytes_out, dummy_mod) + #for i in range(0, 3): + # dummy_mod = bytes(self.c_lib.freedv_nin(freedv)) + # self.c_lib.freedv_rawdatarx(freedv, bytes_out, dummy_mod) # clear bytes_out buffer to be ready for next frames after successfull decoding @@ -541,10 +553,15 @@ class RF(): bytes_out = bytes_out() # get pointer to bytes_out if mode == 14: - self.c_lib.freedv_set_sync(freedv, 0) - for i in range(0, 3): - dummy_mod = bytes(self.c_lib.freedv_nin(freedv)) - self.c_lib.freedv_rawdatarx(freedv, bytes_out, dummy_mod) + print("mmmmmh") + bytes_out = (ctypes.c_ubyte * bytes_per_frame) + bytes_out = bytes_out() # get pointer to bytes_out + + # self.c_lib.freedv_set_sync(freedv, 0) + # self.stream_rx.read(static.AUDIO_FRAMES_PER_BUFFER, exception_on_overflow=False) + #for i in range(0, 3): + # dummy_mod = bytes(self.c_lib.freedv_nin(freedv)) + # self.c_lib.freedv_rawdatarx(freedv, bytes_out, dummy_mod) else: # for debugging purposes to receive all data pass