smaller improvements

This commit is contained in:
DJ2LS 2021-03-09 16:45:27 +01:00 committed by GitHub
parent 42c10c5780
commit 71ceaeb6f7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 42 additions and 42 deletions

View file

@ -571,9 +571,8 @@ async def arq_open_data_channel():
while static.CHANNEL_STATE == 'SENDING_SIGNALLING':
time.sleep(0.01)
#print("wir warten 2 sekunden...")
await asyncio.sleep(2)
await asyncio.sleep(4)
connection_frame = bytearray(14)
connection_frame[:1] = bytes([225])
connection_frame[1:2] = static.DXCALLSIGN_CRC8
@ -583,6 +582,7 @@ async def arq_open_data_channel():
while static.CHANNEL_STATE == 'SENDING_SIGNALLING':
time.sleep(0.01)
modem.transmit_signalling(connection_frame)
@ -639,7 +639,7 @@ async def arq_disconnect():
while static.CHANNEL_STATE == 'SENDING_SIGNALLING':
time.sleep(0.01)
await asyncio.sleep(5)
await asyncio.sleep(4)
modem.transmit_signalling(disc_frame)
logging.info("DISC ["+ str(static.MYCALLSIGN, 'utf-8') + "]< X >["+ str(static.DXCALLSIGN, 'utf-8') + "] [BER."+str(static.BER)+"]")

View file

@ -55,16 +55,16 @@ class RF():
output_device_index=static.AUDIO_OUTPUT_DEVICE, #static.AUDIO_OUTPUT_DEVICE
)
#--------------------------------------------START DECODER THREAD
FREEDV_DECODER_THREAD_10 = threading.Thread(target=self.receive, args=[10], name="FREEDV_DECODER_THREAD")
FREEDV_DECODER_THREAD_10 = threading.Thread(target=self.receive, args=[10], name="FREEDV_DECODER_THREAD_10")
FREEDV_DECODER_THREAD_10.start()
FREEDV_DECODER_THREAD_11 = threading.Thread(target=self.receive, args=[11], name="FREEDV_DECODER_THREAD")
FREEDV_DECODER_THREAD_11 = threading.Thread(target=self.receive, args=[11], name="FREEDV_DECODER_THREAD_11")
FREEDV_DECODER_THREAD_11.start()
FREEDV_DECODER_THREAD_12 = threading.Thread(target=self.receive, args=[12], name="FREEDV_DECODER_THREAD")
FREEDV_DECODER_THREAD_12 = threading.Thread(target=self.receive, args=[12], name="FREEDV_DECODER_THREAD_12")
FREEDV_DECODER_THREAD_12.start()
FREEDV_DECODER_THREAD_14 = threading.Thread(target=self.receive, args=[static.FREEDV_SIGNALLING_MODE], name="FREEDV_DECODER_THREAD")
FREEDV_DECODER_THREAD_14 = threading.Thread(target=self.receive, args=[static.FREEDV_SIGNALLING_MODE], name="FREEDV_DECODER_THREAD_14")
FREEDV_DECODER_THREAD_14.start()
@ -97,16 +97,12 @@ class RF():
#--------------------------------------------------------------------------------------------------------
def transmit_signalling(self,ack_buffer):
#print(ack_buffer)
#static.ARQ_STATE = 'SENDING_ACK'
state_before_transmit = static.CHANNEL_STATE
static.CHANNEL_STATE = 'SENDING_SIGNALLING'
static.CHANNEL_STATE = 'SENDING_SIGNALLING'
static.PTT_STATE = True
self.my_rig.set_ptt(self.hamlib_ptt_type,1)
self.c_lib.freedv_open.restype = ctypes.POINTER(ctypes.c_ubyte)
freedv = self.c_lib.freedv_open(static.FREEDV_SIGNALLING_MODE)
bytes_per_frame = int(self.c_lib.freedv_get_bits_per_modem_frame(freedv)/8)
@ -139,11 +135,9 @@ class RF():
self.stream_tx.write(bytes(txbuffer))
self.my_rig.set_ptt(self.hamlib_ptt_type,0)
static.PTT_STATE = False
static.PTT_STATE = False
static.CHANNEL_STATE = state_before_transmit
#static.CHANNEL_STATE = 'RECEIVING_SIGNALLING'
#static.ARQ_STATE = 'RECEIVING_DATA'
self.c_lib.freedv_close(freedv)
time.sleep(0.5)
#--------------------------------------------------------------------------------------------------------
@ -156,7 +150,8 @@ class RF():
static.CHANNEL_STATE = 'SENDING_DATA'
self.c_lib.freedv_open.restype = ctypes.POINTER(ctypes.c_ubyte)
freedv = self.c_lib.freedv_open(static.FREEDV_DATA_MODE)
freedv = self.c_lib.freedv_open(static.ARQ_DATA_CHANNEL_MODE)
static.FREEDV_DATA_BYTES_PER_FRAME = int(self.c_lib.freedv_get_bits_per_modem_frame(freedv)/8)
static.FREEDV_DATA_PAYLOAD_PER_FRAME = static.FREEDV_DATA_BYTES_PER_FRAME -2
@ -236,8 +231,6 @@ class RF():
static.MYCALLSIGN_CRC8 + \
payload_data
#print(arqframe)
buffer = bytearray(static.FREEDV_DATA_PAYLOAD_PER_FRAME) # create TX buffer
buffer[:len(arqframe)] = arqframe # set buffersize to length of data which will be send
@ -252,10 +245,11 @@ class RF():
# -------------- transmit audio
self.stream_tx.write(bytes(txbuffer))
#static.ARQ_STATE = 'IDLE'
static.CHANNEL_STATE = 'RECEIVING_SIGNALLING'
static.PTT_STATE = False
self.my_rig.set_ptt(self.hamlib_ptt_type,0)
self.c_lib.freedv_close(freedv)
#--------------------------------------------------------------------------------------------------------
@ -310,7 +304,7 @@ class RF():
nin = self.c_lib.freedv_nin(freedv)
#nin = int(nin*(static.AUDIO_SAMPLE_RATE_RX/static.MODEM_SAMPLE_RATE))
data_in = self.stream_rx.read(nin, exception_on_overflow = False)
#print(audioop.rms(data_in, 2))
static.AUDIO_RMS = audioop.rms(data_in, 2)
#self.c_lib.freedv_rawdatarx.argtype = [ctypes.POINTER(ctypes.c_ubyte), data_bytes_out, data_in] # check if really neccessary
nbytes = self.c_lib.freedv_rawdatarx(freedv, bytes_out, data_in) # demodulate audio
#logging.debug(self.c_lib.freedv_get_rx_status(freedv))
@ -320,8 +314,9 @@ class RF():
stuck_in_sync_counter += 1
if self.c_lib.freedv_get_rx_status(freedv) == 10:
stuck_in_sync_10_counter += 1
self.c_lib.freedv_set_sync(freedv, 0)
logging.warning("MODEM | SYNC 10 TRIGGER | M:" + str(mode))
#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:
logging.critical("MODEM | stuck in sync #1")
@ -440,6 +435,14 @@ class RF():
bytes_out = (ctypes.c_ubyte * bytes_per_frame)
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,10):
dummy_mod = bytes(self.c_lib.freedv_nin(freedv))
self.c_lib.freedv_rawdatarx(freedv, bytes_out, dummy_mod)
def calculate_ber(self,freedv):
Tbits = self.c_lib.freedv_get_total_bits(freedv)
Terrs = self.c_lib.freedv_get_total_bit_errors(freedv)

27
sock.py
View file

@ -45,7 +45,7 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
# CQ CQ CQ -----------------------------------------------------
if data == 'CQCQCQ':
asyncio.run(data_handler.transmit_cq())
self.request.sendall(b'CALLING CQ')
#######self.request.sendall(b'CALLING CQ')
# PING ----------------------------------------------------------
@ -73,7 +73,7 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
#ARQ_CONNECT_THREAD = threading.Thread(target=data_handler.arq_connect, name="ARQ_CONNECT")
#ARQ_CONNECT_THREAD.start()
asyncio.run(data_handler.arq_connect())
self.request.sendall(bytes("CONNECTING", encoding))
########self.request.sendall(bytes("CONNECTING", encoding))
#data_handler.arq_connect()
# ARQ DISCONNECT FROM CALLSIGN ----------------------------------------
if data == 'ARQ:DISCONNECT':
@ -81,7 +81,7 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
#ARQ_DISCONNECT_THREAD = threading.Thread(target=data_handler.arq_disconnect, name="ARQ_DISCONNECT")
#ARQ_DISCONNECT_THREAD.start()
asyncio.run(data_handler.arq_disconnect())
self.request.sendall(bytes("DISCONNECTING", encoding))
########self.request.sendall(bytes("DISCONNECTING", encoding))
#data_handler.arq_disconnect()
@ -91,7 +91,7 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
if data.startswith('ARQ:DATA:') and static.ARQ_STATE == 'CONNECTED':
static.ARQ_READY_FOR_DATA = False
logging.info("CMD | NEW ARQ DATA")
self.request.sendall(b'SENDING ARQ DATA')
########self.request.sendall(b'SENDING ARQ DATA')
asyncio.run(data_handler.arq_open_data_channel())
#data_handler.arq_open_data_channel()
@ -122,16 +122,13 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
else:
static.MYCALLSIGN = bytes(callsign[1], encoding)
static.MYCALLSIGN_CRC8 = helpers.get_crc_8(static.MYCALLSIGN)
self.request.sendall(static.MYCALLSIGN)
########self.request.sendall(static.MYCALLSIGN)
logging.info("CMD | MYCALLSIGN: " + str(static.MYCALLSIGN))
if data == 'GET:MYCALLSIGN':
self.request.sendall(bytes(static.MYCALLSIGN, encoding))
#if data == 'GET:MYCALLSIGN_CRC8':
# self.request.sendall(bytes(static.MYCALLSIGN_CRC8, encoding))
if data == 'GET:DXCALLSIGN':
self.request.sendall(bytes(static.DXCALLSIGN, encoding))
@ -140,7 +137,8 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
"PTT_STATE": str(static.PTT_STATE),
"CHANNEL_STATE": str(static.CHANNEL_STATE),
"TNC_STATE": str(static.TNC_STATE),
"ARQ_STATE": str(static.ARQ_STATE)
"ARQ_STATE": str(static.ARQ_STATE),
"AUDIO_RMS": str(static.AUDIO_RMS)
}
jsondata = json.dumps(output)
self.request.sendall(bytes(jsondata, encoding))
@ -159,11 +157,9 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
}
jsondata = json.dumps(output)
self.request.sendall(bytes(jsondata, encoding))
if data.startswith('GET:RX_BUFFER:'):
data = data.split('GET:RX_BUFFER:')
bufferposition = int(data[1])-1
if bufferposition == -1:
@ -177,7 +173,8 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
if data == 'DEL:RX_BUFFER':
static.RX_BUFFER = []
#self.request.close()

View file

@ -62,7 +62,6 @@ PTT_STATE = False
# FreeDV Defaults
FREEDV_RECEIVE = True
FREEDV_DATA_MODE = 12 #check if we can delete this
FREEDV_SIGNALLING_MODE = 14
FREEDV_DATA_BYTES_PER_FRAME = 0
@ -84,6 +83,7 @@ AUDIO_OUTPUT_DEVICE = 1
MODEM_SAMPLE_RATE = 8000 #8000
AUDIO_FRAMES_PER_BUFFER = 2048
AUDIO_CHANNELS = 1
AUDIO_RMS = 0
#---------------------------------
#ARQ DEFAULTS