snr messurement

This commit is contained in:
DJ2LS 2021-03-16 16:37:23 +01:00 committed by GitHub
parent bd5f2a7487
commit c7f85f8505
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 1 deletions

View file

@ -337,6 +337,15 @@ class RF():
dummy_mod = bytes(self.c_lib.freedv_nin(freedv))
self.c_lib.freedv_rawdatarx(freedv, bytes_out, dummy_mod)
#stats = 0
#stats = self.c_lib.freedv_get_modem_extended_stats(freedv, stats);
#print(stats)
# freedv_get_modem_stats(freedv, &sync, &snr_est);
#freedv_get_modem_extended_stats(freedv, &stats);
# demod loop
while (static.CHANNEL_STATE == 'RECEIVING_DATA' and static.ARQ_DATA_CHANNEL_MODE == mode) or (static.CHANNEL_STATE == 'RECEIVING_SIGNALLING' and static.FREEDV_SIGNALLING_MODE == mode):
time.sleep(0.01)
@ -377,6 +386,7 @@ class RF():
# forward data only if broadcast or we are the receiver
if nbytes == bytes_per_frame and bytes(bytes_out[1:2]) == static.MYCALLSIGN_CRC8 or bytes(bytes_out[1:2]) == b'\x01':
self.calculate_ber(freedv)
self.calculate_snr(freedv)
# counter reset for stuck in sync counter
stuck_in_sync_counter = 0
@ -500,3 +510,13 @@ class RF():
self.c_lib.freedv_set_total_bit_errors(freedv, 0)
self.c_lib.freedv_set_total_bits(freedv, 0)
def calculate_snr(self, freedv):
modem_stats_snr = c_float()
modem_stats_sync = c_int()
self.c_lib.freedv_get_modem_stats(freedv,byref(modem_stats_sync), byref(modem_stats_snr))
modem_stats_snr = modem_stats_snr.value
static.SNR = int(modem_stats_snr)
print(static.SNR)

View file

@ -140,7 +140,8 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
"TNC_STATE": str(static.TNC_STATE),
"ARQ_STATE": str(static.ARQ_STATE),
"AUDIO_RMS": str(static.AUDIO_RMS),
"BER": str(static.BER)
"BER": str(static.BER),
"SNR": str(static.SNR)
}
jsondata = json.dumps(output)

View file

@ -61,6 +61,7 @@ FREEDV_SIGNALLING_BYTES_PER_FRAME = 0
FREEDV_SIGNALLING_PAYLOAD_PER_FRAME = 0
BER = 0
SNR = 0
# ---------------------------------
# Audio Defaults