mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
Deliver frequency offset info to frame handler
This commit is contained in:
parent
16786d4a7e
commit
4d0bef497b
|
@ -363,9 +363,32 @@ class Demodulator():
|
|||
# data[1] = freedv session
|
||||
# data[2] = bytes_per_frame
|
||||
# data[3] = snr
|
||||
self.data_queue_received.put([data[0], data[1], data[2], data[3]])
|
||||
|
||||
item = {
|
||||
'payload': data[0],
|
||||
'freedv': data[1],
|
||||
'bytes_per_frame': data[2],
|
||||
'snr': data[3],
|
||||
'frequency_offset': self.get_frequency_offset(data[1]),
|
||||
}
|
||||
|
||||
self.data_queue_received.put(item)
|
||||
self.modem_received_queue.task_done()
|
||||
|
||||
def get_frequency_offset(self, freedv: ctypes.c_void_p) -> float:
|
||||
"""
|
||||
Ask codec2 for the calculated (audio) frequency offset of the received signal.
|
||||
|
||||
:param freedv: codec2 instance to query
|
||||
:type freedv: ctypes.c_void_p
|
||||
:return: Offset of audio frequency in Hz
|
||||
:rtype: float
|
||||
"""
|
||||
modemStats = codec2.MODEMSTATS()
|
||||
codec2.api.freedv_get_modem_extended_stats(freedv, ctypes.byref(modemStats))
|
||||
offset = round(modemStats.foff) * (-1)
|
||||
return offset
|
||||
|
||||
def demodulate_audio(
|
||||
self,
|
||||
audiobuffer: codec2.audio_buffer,
|
||||
|
|
|
@ -152,10 +152,14 @@ class DISPATCHER():
|
|||
# [2] bytes_per_frame
|
||||
# [3] snr
|
||||
self.new_process_data(
|
||||
bytes_out=data[0], freedv=data[1], bytes_per_frame=data[2], snr=data[3]
|
||||
data['payload'],
|
||||
data['freedv'],
|
||||
data['bytes_per_frame'],
|
||||
data['snr'],
|
||||
data['frequency_offset'],
|
||||
)
|
||||
|
||||
def new_process_data(self, bytes_out, freedv, bytes_per_frame: int, snr) -> None:
|
||||
def new_process_data(self, bytes_out, freedv, bytes_per_frame: int, snr, offset) -> None:
|
||||
# get frame as dictionary
|
||||
deconstructed_frame = self.frame_factory.deconstruct(bytes_out)
|
||||
frametype = deconstructed_frame["frame_type_int"]
|
||||
|
@ -174,7 +178,7 @@ class DISPATCHER():
|
|||
MODEM_TRANSMIT_QUEUE,
|
||||
self.arq_sessions)
|
||||
|
||||
handler.handle(deconstructed_frame, snr, 0, freedv, bytes_per_frame)
|
||||
handler.handle(deconstructed_frame, snr, offset, freedv, bytes_per_frame)
|
||||
|
||||
def old_process_data(self, bytes_out, freedv, bytes_per_frame: int, snr) -> None:
|
||||
"""
|
||||
|
|
Loading…
Reference in a new issue