mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
code cleanup
this isn't the right place for doing tnc changes, but before I forget to change it...
This commit is contained in:
parent
82619ef098
commit
b54463965a
1 changed files with 20 additions and 28 deletions
48
tnc/modem.py
48
tnc/modem.py
|
@ -126,19 +126,24 @@ class RF():
|
||||||
# open codec2 instance
|
# open codec2 instance
|
||||||
self.datac0_freedv = cast(codec2.api.freedv_open(codec2.api.FREEDV_MODE_DATAC0), c_void_p)
|
self.datac0_freedv = cast(codec2.api.freedv_open(codec2.api.FREEDV_MODE_DATAC0), c_void_p)
|
||||||
self.datac0_bytes_per_frame = int(codec2.api.freedv_get_bits_per_modem_frame(self.datac0_freedv)/8)
|
self.datac0_bytes_per_frame = int(codec2.api.freedv_get_bits_per_modem_frame(self.datac0_freedv)/8)
|
||||||
self.datac0_bytes_out = create_string_buffer(self.datac0_bytes_per_frame * 2)
|
self.datac0_payload_per_frame = self.datac0_bytes_per_frame -2
|
||||||
|
self.datac0_n_nom_modem_samples = self.c_lib.freedv_get_n_nom_modem_samples(self.datac0_freedv)
|
||||||
|
self.datac0_n_tx_modem_samples = self.c_lib.freedv_get_n_tx_modem_samples(self.datac0_freedv)
|
||||||
|
self.datac0_n_tx_preamble_modem_samples = self.c_lib.freedv_get_n_tx_preamble_modem_samples(self.datac0_freedv)
|
||||||
|
self.datac0_n_tx_postamble_modem_samples = self.c_lib.freedv_get_n_tx_postamble_modem_samples(self.datac0_freedv)
|
||||||
|
self.datac0_bytes_out = create_string_buffer(self.datac0_bytes_per_frame)
|
||||||
codec2.api.freedv_set_frames_per_burst(self.datac0_freedv,1)
|
codec2.api.freedv_set_frames_per_burst(self.datac0_freedv,1)
|
||||||
self.datac0_buffer = codec2.audio_buffer(2*self.AUDIO_FRAMES_PER_BUFFER_RX)
|
self.datac0_buffer = codec2.audio_buffer(2*self.AUDIO_FRAMES_PER_BUFFER_RX)
|
||||||
|
|
||||||
self.datac1_freedv = cast(codec2.api.freedv_open(codec2.api.FREEDV_MODE_DATAC1), c_void_p)
|
self.datac1_freedv = cast(codec2.api.freedv_open(codec2.api.FREEDV_MODE_DATAC1), c_void_p)
|
||||||
self.datac1_bytes_per_frame = int(codec2.api.freedv_get_bits_per_modem_frame(self.datac1_freedv)/8)
|
self.datac1_bytes_per_frame = int(codec2.api.freedv_get_bits_per_modem_frame(self.datac1_freedv)/8)
|
||||||
self.datac1_bytes_out = create_string_buffer(self.datac1_bytes_per_frame * 2)
|
self.datac1_bytes_out = create_string_buffer(self.datac1_bytes_per_frame)
|
||||||
codec2.api.freedv_set_frames_per_burst(self.datac1_freedv,1)
|
codec2.api.freedv_set_frames_per_burst(self.datac1_freedv,1)
|
||||||
self.datac1_buffer = codec2.audio_buffer(2*self.AUDIO_FRAMES_PER_BUFFER_RX)
|
self.datac1_buffer = codec2.audio_buffer(2*self.AUDIO_FRAMES_PER_BUFFER_RX)
|
||||||
|
|
||||||
self.datac3_freedv = cast(codec2.api.freedv_open(codec2.api.FREEDV_MODE_DATAC3), c_void_p)
|
self.datac3_freedv = cast(codec2.api.freedv_open(codec2.api.FREEDV_MODE_DATAC3), c_void_p)
|
||||||
self.datac3_bytes_per_frame = int(codec2.api.freedv_get_bits_per_modem_frame(self.datac3_freedv)/8)
|
self.datac3_bytes_per_frame = int(codec2.api.freedv_get_bits_per_modem_frame(self.datac3_freedv)/8)
|
||||||
self.datac3_bytes_out = create_string_buffer(self.datac3_bytes_per_frame * 2)
|
self.datac3_bytes_out = create_string_buffer(self.datac3_bytes_per_frame)
|
||||||
codec2.api.freedv_set_frames_per_burst(self.datac3_freedv,1)
|
codec2.api.freedv_set_frames_per_burst(self.datac3_freedv,1)
|
||||||
self.datac3_buffer = codec2.audio_buffer(2*self.AUDIO_FRAMES_PER_BUFFER_RX)
|
self.datac3_buffer = codec2.audio_buffer(2*self.AUDIO_FRAMES_PER_BUFFER_RX)
|
||||||
|
|
||||||
|
@ -304,6 +309,7 @@ class RF():
|
||||||
self.datac0_buffer.pop(self.datac0_nin)
|
self.datac0_buffer.pop(self.datac0_nin)
|
||||||
self.datac0_nin = codec2.api.freedv_nin(self.datac0_freedv)
|
self.datac0_nin = codec2.api.freedv_nin(self.datac0_freedv)
|
||||||
if nbytes == self.datac0_bytes_per_frame:
|
if nbytes == self.datac0_bytes_per_frame:
|
||||||
|
print(len(self.datac0_bytes_out))
|
||||||
self.dataqueue.put([self.datac0_bytes_out, self.datac0_freedv ,self.datac0_bytes_per_frame])
|
self.dataqueue.put([self.datac0_bytes_out, self.datac0_freedv ,self.datac0_bytes_per_frame])
|
||||||
self.get_scatter(self.datac0_freedv)
|
self.get_scatter(self.datac0_freedv)
|
||||||
self.calculate_snr(self.datac0_freedv)
|
self.calculate_snr(self.datac0_freedv)
|
||||||
|
@ -328,6 +334,8 @@ class RF():
|
||||||
self.get_scatter(self.datac3_freedv)
|
self.get_scatter(self.datac3_freedv)
|
||||||
self.calculate_snr(self.datac3_freedv)
|
self.calculate_snr(self.datac3_freedv)
|
||||||
|
|
||||||
|
self.dataqueue.join()
|
||||||
|
|
||||||
return (None, pyaudio.paContinue)
|
return (None, pyaudio.paContinue)
|
||||||
|
|
||||||
|
|
||||||
|
@ -360,38 +368,24 @@ class RF():
|
||||||
state_before_transmit = static.CHANNEL_STATE
|
state_before_transmit = static.CHANNEL_STATE
|
||||||
static.CHANNEL_STATE = 'SENDING_SIGNALLING'
|
static.CHANNEL_STATE = 'SENDING_SIGNALLING'
|
||||||
|
|
||||||
freedv_signalling_mode = 14
|
mod_out = create_string_buffer(self.datac0_n_tx_modem_samples * 2)
|
||||||
|
mod_out_preamble = create_string_buffer(self.datac0_n_tx_preamble_modem_samples * 2)
|
||||||
|
mod_out_postamble = create_string_buffer(self.datac0_n_tx_postamble_modem_samples * 2)
|
||||||
|
|
||||||
freedv = cast(self.c_lib.freedv_open(freedv_signalling_mode), c_void_p)
|
buffer = bytearray(self.datac0_payload_per_frame)
|
||||||
|
|
||||||
self.c_lib.freedv_set_clip(freedv, 1)
|
|
||||||
self.c_lib.freedv_set_tx_bpf(freedv, 1)
|
|
||||||
|
|
||||||
bytes_per_frame = int(self.c_lib.freedv_get_bits_per_modem_frame(freedv) / 8)
|
|
||||||
payload_per_frame = bytes_per_frame - 2
|
|
||||||
n_nom_modem_samples = self.c_lib.freedv_get_n_nom_modem_samples(freedv)
|
|
||||||
n_tx_modem_samples = self.c_lib.freedv_get_n_tx_modem_samples(freedv)
|
|
||||||
n_tx_preamble_modem_samples = self.c_lib.freedv_get_n_tx_preamble_modem_samples(freedv)
|
|
||||||
n_tx_postamble_modem_samples = self.c_lib.freedv_get_n_tx_postamble_modem_samples(freedv)
|
|
||||||
|
|
||||||
mod_out = create_string_buffer(n_tx_modem_samples * 2)
|
|
||||||
mod_out_preamble = create_string_buffer(n_tx_preamble_modem_samples * 2)
|
|
||||||
mod_out_postamble = create_string_buffer(n_tx_postamble_modem_samples * 2)
|
|
||||||
|
|
||||||
buffer = bytearray(payload_per_frame)
|
|
||||||
# set buffersize to length of data which will be send
|
# set buffersize to length of data which will be send
|
||||||
buffer[:len(data_out)] = data_out
|
buffer[:len(data_out)] = data_out
|
||||||
|
|
||||||
crc = ctypes.c_ushort(self.c_lib.freedv_gen_crc16(bytes(buffer), payload_per_frame)) # generate CRC16
|
crc = ctypes.c_ushort(self.c_lib.freedv_gen_crc16(bytes(buffer), self.datac0_payload_per_frame)) # generate CRC16
|
||||||
# convert crc to 2 byte hex string
|
# convert crc to 2 byte hex string
|
||||||
crc = crc.value.to_bytes(2, byteorder='big')
|
crc = crc.value.to_bytes(2, byteorder='big')
|
||||||
buffer += crc # append crc16 to buffer
|
buffer += crc # append crc16 to buffer
|
||||||
data = (ctypes.c_ubyte * bytes_per_frame).from_buffer_copy(buffer)
|
data = (ctypes.c_ubyte * self.datac0_bytes_per_frame).from_buffer_copy(buffer)
|
||||||
|
|
||||||
# modulate DATA and safe it into mod_out pointer
|
# modulate DATA and safe it into mod_out pointer
|
||||||
self.c_lib.freedv_rawdatapreambletx(freedv, mod_out_preamble)
|
self.c_lib.freedv_rawdatapreambletx(self.datac0_freedv, mod_out_preamble)
|
||||||
self.c_lib.freedv_rawdatatx(freedv, mod_out, data)
|
self.c_lib.freedv_rawdatatx(self.datac0_freedv, mod_out, data)
|
||||||
self.c_lib.freedv_rawdatapostambletx(freedv, mod_out_postamble)
|
self.c_lib.freedv_rawdatapostambletx(self.datac0_freedv, mod_out_postamble)
|
||||||
|
|
||||||
self.streambuffer = bytearray()
|
self.streambuffer = bytearray()
|
||||||
self.streambuffer += bytes(mod_out_preamble)
|
self.streambuffer += bytes(mod_out_preamble)
|
||||||
|
@ -424,8 +418,6 @@ class RF():
|
||||||
else:
|
else:
|
||||||
static.CHANNEL_STATE = state_before_transmit
|
static.CHANNEL_STATE = state_before_transmit
|
||||||
|
|
||||||
self.c_lib.freedv_close(freedv)
|
|
||||||
|
|
||||||
return True
|
return True
|
||||||
# --------------------------------------------------------------------------------------------------------
|
# --------------------------------------------------------------------------------------------------------
|
||||||
# GET ARQ BURST FRAME VOM BUFFER AND MODULATE IT
|
# GET ARQ BURST FRAME VOM BUFFER AND MODULATE IT
|
||||||
|
|
Loading…
Reference in a new issue