mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
reuse codec2 mode init for transmission
This commit is contained in:
parent
179f4f7265
commit
db9c5b60b9
37
tnc/modem.py
37
tnc/modem.py
|
@ -148,6 +148,10 @@ class RF:
|
||||||
codec2.api.FREEDV_MODE_FSK_LDPC_1_ADV
|
codec2.api.FREEDV_MODE_FSK_LDPC_1_ADV
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# INIT TX MODES
|
||||||
|
self.freedv_datac0_tx = open_codec2_instance(14)
|
||||||
|
self.freedv_datac1_tx = open_codec2_instance(10)
|
||||||
|
self.freedv_datac3_tx = open_codec2_instance(12)
|
||||||
# --------------------------------------------CREATE PYAUDIO INSTANCE
|
# --------------------------------------------CREATE PYAUDIO INSTANCE
|
||||||
if not TESTMODE:
|
if not TESTMODE:
|
||||||
try:
|
try:
|
||||||
|
@ -402,7 +406,28 @@ class RF:
|
||||||
frames:
|
frames:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
# self.log.debug("[MDM] transmit", mode=mode)
|
|
||||||
|
"""
|
||||||
|
sig0 = 14
|
||||||
|
sig1 = 14
|
||||||
|
datac0 = 14
|
||||||
|
datac1 = 10
|
||||||
|
datac3 = 12
|
||||||
|
fsk_ldpc = 9
|
||||||
|
fsk_ldpc_0 = 200
|
||||||
|
fsk_ldpc_1 = 201
|
||||||
|
"""
|
||||||
|
if mode == int(14):
|
||||||
|
freedv = self.freedv_datac0_tx
|
||||||
|
elif mode == int(14):
|
||||||
|
freedv = self.freedv_datac0_tx
|
||||||
|
elif mode == int(10):
|
||||||
|
freedv = self.freedv_datac1_tx
|
||||||
|
elif mode == int(12):
|
||||||
|
freedv = self.freedv_datac3_tx
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
static.TRANSMITTING = True
|
static.TRANSMITTING = True
|
||||||
start_of_transmission = time.time()
|
start_of_transmission = time.time()
|
||||||
# Toggle ptt early to save some time and send ptt state via socket
|
# Toggle ptt early to save some time and send ptt state via socket
|
||||||
|
@ -413,7 +438,6 @@ class RF:
|
||||||
|
|
||||||
# Open codec2 instance
|
# Open codec2 instance
|
||||||
self.MODE = mode
|
self.MODE = mode
|
||||||
freedv = open_codec2_instance(self.MODE)
|
|
||||||
|
|
||||||
# Get number of bytes per frame for mode
|
# Get number of bytes per frame for mode
|
||||||
bytes_per_frame = int(codec2.api.freedv_get_bits_per_modem_frame(freedv) / 8)
|
bytes_per_frame = int(codec2.api.freedv_get_bits_per_modem_frame(freedv) / 8)
|
||||||
|
@ -506,8 +530,10 @@ class RF:
|
||||||
txbuffer_48k = self.resampler.resample8_to_48(x)
|
txbuffer_48k = self.resampler.resample8_to_48(x)
|
||||||
|
|
||||||
# Explicitly lock our usage of mod_out_queue if needed
|
# Explicitly lock our usage of mod_out_queue if needed
|
||||||
# Deactivated for testing purposes
|
# This could avoid audio problems on slower CPU
|
||||||
self.mod_out_locked = False
|
# we will fill our modout list with all data, then start
|
||||||
|
# processing it in audio callback
|
||||||
|
self.mod_out_locked = True
|
||||||
|
|
||||||
# -------------------------------
|
# -------------------------------
|
||||||
chunk_length = self.AUDIO_FRAMES_PER_BUFFER_TX # 4800
|
chunk_length = self.AUDIO_FRAMES_PER_BUFFER_TX # 4800
|
||||||
|
@ -525,7 +551,7 @@ class RF:
|
||||||
|
|
||||||
self.modoutqueue.append(c)
|
self.modoutqueue.append(c)
|
||||||
|
|
||||||
# Release our mod_out_lock so we can use the queue
|
# Release our mod_out_lock, so we can use the queue
|
||||||
self.mod_out_locked = False
|
self.mod_out_locked = False
|
||||||
|
|
||||||
while self.modoutqueue:
|
while self.modoutqueue:
|
||||||
|
@ -541,7 +567,6 @@ class RF:
|
||||||
# After processing, set the locking state back to true to be prepared for next transmission
|
# After processing, set the locking state back to true to be prepared for next transmission
|
||||||
self.mod_out_locked = True
|
self.mod_out_locked = True
|
||||||
|
|
||||||
self.c_lib.freedv_close(freedv)
|
|
||||||
self.modem_transmit_queue.task_done()
|
self.modem_transmit_queue.task_done()
|
||||||
static.TRANSMITTING = False
|
static.TRANSMITTING = False
|
||||||
threading.Event().set()
|
threading.Event().set()
|
||||||
|
|
Loading…
Reference in a new issue