mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
smaller improvements
This commit is contained in:
parent
42c10c5780
commit
71ceaeb6f7
4 changed files with 42 additions and 42 deletions
|
@ -571,8 +571,7 @@ async def arq_open_data_channel():
|
||||||
while static.CHANNEL_STATE == 'SENDING_SIGNALLING':
|
while static.CHANNEL_STATE == 'SENDING_SIGNALLING':
|
||||||
time.sleep(0.01)
|
time.sleep(0.01)
|
||||||
#print("wir warten 2 sekunden...")
|
#print("wir warten 2 sekunden...")
|
||||||
await asyncio.sleep(2)
|
await asyncio.sleep(4)
|
||||||
|
|
||||||
|
|
||||||
connection_frame = bytearray(14)
|
connection_frame = bytearray(14)
|
||||||
connection_frame[:1] = bytes([225])
|
connection_frame[:1] = bytes([225])
|
||||||
|
@ -583,6 +582,7 @@ async def arq_open_data_channel():
|
||||||
|
|
||||||
while static.CHANNEL_STATE == 'SENDING_SIGNALLING':
|
while static.CHANNEL_STATE == 'SENDING_SIGNALLING':
|
||||||
time.sleep(0.01)
|
time.sleep(0.01)
|
||||||
|
|
||||||
modem.transmit_signalling(connection_frame)
|
modem.transmit_signalling(connection_frame)
|
||||||
|
|
||||||
|
|
||||||
|
@ -639,7 +639,7 @@ async def arq_disconnect():
|
||||||
while static.CHANNEL_STATE == 'SENDING_SIGNALLING':
|
while static.CHANNEL_STATE == 'SENDING_SIGNALLING':
|
||||||
time.sleep(0.01)
|
time.sleep(0.01)
|
||||||
|
|
||||||
await asyncio.sleep(5)
|
await asyncio.sleep(4)
|
||||||
modem.transmit_signalling(disc_frame)
|
modem.transmit_signalling(disc_frame)
|
||||||
|
|
||||||
logging.info("DISC ["+ str(static.MYCALLSIGN, 'utf-8') + "]< X >["+ str(static.DXCALLSIGN, 'utf-8') + "] [BER."+str(static.BER)+"]")
|
logging.info("DISC ["+ str(static.MYCALLSIGN, 'utf-8') + "]< X >["+ str(static.DXCALLSIGN, 'utf-8') + "] [BER."+str(static.BER)+"]")
|
||||||
|
|
39
modem.py
39
modem.py
|
@ -55,16 +55,16 @@ class RF():
|
||||||
output_device_index=static.AUDIO_OUTPUT_DEVICE, #static.AUDIO_OUTPUT_DEVICE
|
output_device_index=static.AUDIO_OUTPUT_DEVICE, #static.AUDIO_OUTPUT_DEVICE
|
||||||
)
|
)
|
||||||
#--------------------------------------------START DECODER THREAD
|
#--------------------------------------------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_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_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_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()
|
FREEDV_DECODER_THREAD_14.start()
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,16 +97,12 @@ class RF():
|
||||||
|
|
||||||
#--------------------------------------------------------------------------------------------------------
|
#--------------------------------------------------------------------------------------------------------
|
||||||
def transmit_signalling(self,ack_buffer):
|
def transmit_signalling(self,ack_buffer):
|
||||||
#print(ack_buffer)
|
|
||||||
#static.ARQ_STATE = 'SENDING_ACK'
|
|
||||||
|
|
||||||
state_before_transmit = static.CHANNEL_STATE
|
state_before_transmit = static.CHANNEL_STATE
|
||||||
static.CHANNEL_STATE = 'SENDING_SIGNALLING'
|
static.CHANNEL_STATE = 'SENDING_SIGNALLING'
|
||||||
|
|
||||||
static.PTT_STATE = True
|
static.PTT_STATE = True
|
||||||
self.my_rig.set_ptt(self.hamlib_ptt_type,1)
|
self.my_rig.set_ptt(self.hamlib_ptt_type,1)
|
||||||
|
|
||||||
|
|
||||||
self.c_lib.freedv_open.restype = ctypes.POINTER(ctypes.c_ubyte)
|
self.c_lib.freedv_open.restype = ctypes.POINTER(ctypes.c_ubyte)
|
||||||
freedv = self.c_lib.freedv_open(static.FREEDV_SIGNALLING_MODE)
|
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)
|
bytes_per_frame = int(self.c_lib.freedv_get_bits_per_modem_frame(freedv)/8)
|
||||||
|
@ -140,10 +136,8 @@ class RF():
|
||||||
|
|
||||||
self.my_rig.set_ptt(self.hamlib_ptt_type,0)
|
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 = state_before_transmit
|
||||||
#static.CHANNEL_STATE = 'RECEIVING_SIGNALLING'
|
|
||||||
#static.ARQ_STATE = 'RECEIVING_DATA'
|
|
||||||
self.c_lib.freedv_close(freedv)
|
self.c_lib.freedv_close(freedv)
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
#--------------------------------------------------------------------------------------------------------
|
#--------------------------------------------------------------------------------------------------------
|
||||||
|
@ -156,7 +150,8 @@ class RF():
|
||||||
static.CHANNEL_STATE = 'SENDING_DATA'
|
static.CHANNEL_STATE = 'SENDING_DATA'
|
||||||
|
|
||||||
self.c_lib.freedv_open.restype = ctypes.POINTER(ctypes.c_ubyte)
|
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_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
|
static.FREEDV_DATA_PAYLOAD_PER_FRAME = static.FREEDV_DATA_BYTES_PER_FRAME -2
|
||||||
|
|
||||||
|
@ -236,8 +231,6 @@ class RF():
|
||||||
static.MYCALLSIGN_CRC8 + \
|
static.MYCALLSIGN_CRC8 + \
|
||||||
payload_data
|
payload_data
|
||||||
|
|
||||||
#print(arqframe)
|
|
||||||
|
|
||||||
buffer = bytearray(static.FREEDV_DATA_PAYLOAD_PER_FRAME) # create TX buffer
|
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
|
buffer[:len(arqframe)] = arqframe # set buffersize to length of data which will be send
|
||||||
|
|
||||||
|
@ -252,10 +245,11 @@ class RF():
|
||||||
|
|
||||||
# -------------- transmit audio
|
# -------------- transmit audio
|
||||||
self.stream_tx.write(bytes(txbuffer))
|
self.stream_tx.write(bytes(txbuffer))
|
||||||
#static.ARQ_STATE = 'IDLE'
|
|
||||||
static.CHANNEL_STATE = 'RECEIVING_SIGNALLING'
|
static.CHANNEL_STATE = 'RECEIVING_SIGNALLING'
|
||||||
static.PTT_STATE = False
|
static.PTT_STATE = False
|
||||||
self.my_rig.set_ptt(self.hamlib_ptt_type,0)
|
self.my_rig.set_ptt(self.hamlib_ptt_type,0)
|
||||||
|
|
||||||
self.c_lib.freedv_close(freedv)
|
self.c_lib.freedv_close(freedv)
|
||||||
#--------------------------------------------------------------------------------------------------------
|
#--------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -310,7 +304,7 @@ class RF():
|
||||||
nin = self.c_lib.freedv_nin(freedv)
|
nin = self.c_lib.freedv_nin(freedv)
|
||||||
#nin = int(nin*(static.AUDIO_SAMPLE_RATE_RX/static.MODEM_SAMPLE_RATE))
|
#nin = int(nin*(static.AUDIO_SAMPLE_RATE_RX/static.MODEM_SAMPLE_RATE))
|
||||||
data_in = self.stream_rx.read(nin, exception_on_overflow = False)
|
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
|
#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
|
nbytes = self.c_lib.freedv_rawdatarx(freedv, bytes_out, data_in) # demodulate audio
|
||||||
#logging.debug(self.c_lib.freedv_get_rx_status(freedv))
|
#logging.debug(self.c_lib.freedv_get_rx_status(freedv))
|
||||||
|
@ -320,8 +314,9 @@ class RF():
|
||||||
stuck_in_sync_counter += 1
|
stuck_in_sync_counter += 1
|
||||||
if self.c_lib.freedv_get_rx_status(freedv) == 10:
|
if self.c_lib.freedv_get_rx_status(freedv) == 10:
|
||||||
stuck_in_sync_10_counter += 1
|
stuck_in_sync_10_counter += 1
|
||||||
self.c_lib.freedv_set_sync(freedv, 0)
|
#self.c_lib.freedv_set_sync(freedv, 0)
|
||||||
logging.warning("MODEM | SYNC 10 TRIGGER | M:" + str(mode))
|
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:
|
if stuck_in_sync_counter == 33 and self.c_lib.freedv_get_rx_status(freedv) == 10:
|
||||||
logging.critical("MODEM | stuck in sync #1")
|
logging.critical("MODEM | stuck in sync #1")
|
||||||
|
@ -440,6 +435,14 @@ class RF():
|
||||||
bytes_out = (ctypes.c_ubyte * bytes_per_frame)
|
bytes_out = (ctypes.c_ubyte * bytes_per_frame)
|
||||||
bytes_out = bytes_out() #get pointer to bytes_out
|
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):
|
def calculate_ber(self,freedv):
|
||||||
Tbits = self.c_lib.freedv_get_total_bits(freedv)
|
Tbits = self.c_lib.freedv_get_total_bits(freedv)
|
||||||
Terrs = self.c_lib.freedv_get_total_bit_errors(freedv)
|
Terrs = self.c_lib.freedv_get_total_bit_errors(freedv)
|
||||||
|
|
19
sock.py
19
sock.py
|
@ -45,7 +45,7 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
|
||||||
# CQ CQ CQ -----------------------------------------------------
|
# CQ CQ CQ -----------------------------------------------------
|
||||||
if data == 'CQCQCQ':
|
if data == 'CQCQCQ':
|
||||||
asyncio.run(data_handler.transmit_cq())
|
asyncio.run(data_handler.transmit_cq())
|
||||||
self.request.sendall(b'CALLING CQ')
|
#######self.request.sendall(b'CALLING CQ')
|
||||||
|
|
||||||
|
|
||||||
# PING ----------------------------------------------------------
|
# 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 = threading.Thread(target=data_handler.arq_connect, name="ARQ_CONNECT")
|
||||||
#ARQ_CONNECT_THREAD.start()
|
#ARQ_CONNECT_THREAD.start()
|
||||||
asyncio.run(data_handler.arq_connect())
|
asyncio.run(data_handler.arq_connect())
|
||||||
self.request.sendall(bytes("CONNECTING", encoding))
|
########self.request.sendall(bytes("CONNECTING", encoding))
|
||||||
#data_handler.arq_connect()
|
#data_handler.arq_connect()
|
||||||
# ARQ DISCONNECT FROM CALLSIGN ----------------------------------------
|
# ARQ DISCONNECT FROM CALLSIGN ----------------------------------------
|
||||||
if data == 'ARQ:DISCONNECT':
|
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 = threading.Thread(target=data_handler.arq_disconnect, name="ARQ_DISCONNECT")
|
||||||
#ARQ_DISCONNECT_THREAD.start()
|
#ARQ_DISCONNECT_THREAD.start()
|
||||||
asyncio.run(data_handler.arq_disconnect())
|
asyncio.run(data_handler.arq_disconnect())
|
||||||
self.request.sendall(bytes("DISCONNECTING", encoding))
|
########self.request.sendall(bytes("DISCONNECTING", encoding))
|
||||||
#data_handler.arq_disconnect()
|
#data_handler.arq_disconnect()
|
||||||
|
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
|
||||||
if data.startswith('ARQ:DATA:') and static.ARQ_STATE == 'CONNECTED':
|
if data.startswith('ARQ:DATA:') and static.ARQ_STATE == 'CONNECTED':
|
||||||
static.ARQ_READY_FOR_DATA = False
|
static.ARQ_READY_FOR_DATA = False
|
||||||
logging.info("CMD | NEW ARQ DATA")
|
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())
|
asyncio.run(data_handler.arq_open_data_channel())
|
||||||
#data_handler.arq_open_data_channel()
|
#data_handler.arq_open_data_channel()
|
||||||
|
|
||||||
|
@ -122,15 +122,12 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
|
||||||
else:
|
else:
|
||||||
static.MYCALLSIGN = bytes(callsign[1], encoding)
|
static.MYCALLSIGN = bytes(callsign[1], encoding)
|
||||||
static.MYCALLSIGN_CRC8 = helpers.get_crc_8(static.MYCALLSIGN)
|
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))
|
logging.info("CMD | MYCALLSIGN: " + str(static.MYCALLSIGN))
|
||||||
|
|
||||||
|
|
||||||
if data == 'GET:MYCALLSIGN':
|
if data == 'GET:MYCALLSIGN':
|
||||||
self.request.sendall(bytes(static.MYCALLSIGN, encoding))
|
self.request.sendall(bytes(static.MYCALLSIGN, encoding))
|
||||||
|
|
||||||
#if data == 'GET:MYCALLSIGN_CRC8':
|
|
||||||
# self.request.sendall(bytes(static.MYCALLSIGN_CRC8, encoding))
|
|
||||||
|
|
||||||
if data == 'GET:DXCALLSIGN':
|
if data == 'GET:DXCALLSIGN':
|
||||||
self.request.sendall(bytes(static.DXCALLSIGN, encoding))
|
self.request.sendall(bytes(static.DXCALLSIGN, encoding))
|
||||||
|
@ -140,7 +137,8 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
|
||||||
"PTT_STATE": str(static.PTT_STATE),
|
"PTT_STATE": str(static.PTT_STATE),
|
||||||
"CHANNEL_STATE": str(static.CHANNEL_STATE),
|
"CHANNEL_STATE": str(static.CHANNEL_STATE),
|
||||||
"TNC_STATE": str(static.TNC_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)
|
jsondata = json.dumps(output)
|
||||||
self.request.sendall(bytes(jsondata, encoding))
|
self.request.sendall(bytes(jsondata, encoding))
|
||||||
|
@ -161,9 +159,7 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
|
||||||
self.request.sendall(bytes(jsondata, encoding))
|
self.request.sendall(bytes(jsondata, encoding))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if data.startswith('GET:RX_BUFFER:'):
|
if data.startswith('GET:RX_BUFFER:'):
|
||||||
|
|
||||||
data = data.split('GET:RX_BUFFER:')
|
data = data.split('GET:RX_BUFFER:')
|
||||||
bufferposition = int(data[1])-1
|
bufferposition = int(data[1])-1
|
||||||
if bufferposition == -1:
|
if bufferposition == -1:
|
||||||
|
@ -177,6 +173,7 @@ class CMDTCPRequestHandler(socketserver.BaseRequestHandler):
|
||||||
if data == 'DEL:RX_BUFFER':
|
if data == 'DEL:RX_BUFFER':
|
||||||
static.RX_BUFFER = []
|
static.RX_BUFFER = []
|
||||||
|
|
||||||
|
#self.request.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,6 @@ PTT_STATE = False
|
||||||
# FreeDV Defaults
|
# FreeDV Defaults
|
||||||
FREEDV_RECEIVE = True
|
FREEDV_RECEIVE = True
|
||||||
|
|
||||||
FREEDV_DATA_MODE = 12 #check if we can delete this
|
|
||||||
FREEDV_SIGNALLING_MODE = 14
|
FREEDV_SIGNALLING_MODE = 14
|
||||||
|
|
||||||
FREEDV_DATA_BYTES_PER_FRAME = 0
|
FREEDV_DATA_BYTES_PER_FRAME = 0
|
||||||
|
@ -84,6 +83,7 @@ AUDIO_OUTPUT_DEVICE = 1
|
||||||
MODEM_SAMPLE_RATE = 8000 #8000
|
MODEM_SAMPLE_RATE = 8000 #8000
|
||||||
AUDIO_FRAMES_PER_BUFFER = 2048
|
AUDIO_FRAMES_PER_BUFFER = 2048
|
||||||
AUDIO_CHANNELS = 1
|
AUDIO_CHANNELS = 1
|
||||||
|
AUDIO_RMS = 0
|
||||||
#---------------------------------
|
#---------------------------------
|
||||||
|
|
||||||
#ARQ DEFAULTS
|
#ARQ DEFAULTS
|
||||||
|
|
Loading…
Reference in a new issue