mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
some fixes to transmit messages..
This commit is contained in:
parent
eb3a74e146
commit
2a98731b5d
5 changed files with 24 additions and 9 deletions
|
@ -82,8 +82,9 @@ class ARQDataTypeHandler:
|
||||||
def handle_p2pmsg_lzma(self, data):
|
def handle_p2pmsg_lzma(self, data):
|
||||||
decompressed_data = lzma.decompress(data)
|
decompressed_data = lzma.decompress(data)
|
||||||
self.log(f"Handling LZMA compressed P2PMSG data: {len(decompressed_data)} Bytes from {len(data)} Bytes")
|
self.log(f"Handling LZMA compressed P2PMSG data: {len(decompressed_data)} Bytes from {len(data)} Bytes")
|
||||||
received_message_obj = MessageP2P.from_payload(decompressed_data)
|
decompressed_json_string = decompressed_data.decode('utf-8')
|
||||||
|
received_message_obj = MessageP2P.from_payload(decompressed_json_string)
|
||||||
received_message_dict = MessageP2P.to_dict(received_message_obj, received=True)
|
received_message_dict = MessageP2P.to_dict(received_message_obj, received=True)
|
||||||
DatabaseManager(uri='sqlite:///:memory:').add_message(received_message_dict)
|
result = DatabaseManager(uri='sqlite:///:memory:').add_message(received_message_dict)
|
||||||
|
|
||||||
return decompressed_data
|
return decompressed_data
|
||||||
|
|
|
@ -15,12 +15,17 @@ class SendMessageCommand(TxCommand):
|
||||||
self.message = MessageP2P.from_api_params(origin, apiParams)
|
self.message = MessageP2P.from_api_params(origin, apiParams)
|
||||||
|
|
||||||
def transmit(self, modem):
|
def transmit(self, modem):
|
||||||
data, data_type = self.arq_data_type_handler.prepare(self.message.to_payload, 'p2pmsg_lzma')
|
# Convert JSON string to bytes (using UTF-8 encoding)
|
||||||
iss = ARQSessionISS(self.config, modem,
|
payload = self.message.to_payload().encode('utf-8')
|
||||||
self.message.destination,
|
json_bytearray = bytearray(payload)
|
||||||
data,
|
data, data_type = self.arq_data_type_handler.prepare(json_bytearray, 'p2pmsg_lzma')
|
||||||
|
iss = ARQSessionISS(self.config,
|
||||||
|
modem,
|
||||||
|
self.message.destination,
|
||||||
self.state_manager,
|
self.state_manager,
|
||||||
data_type)
|
data,
|
||||||
|
data_type
|
||||||
|
)
|
||||||
|
|
||||||
self.state_manager.register_arq_iss_session(iss)
|
self.state_manager.register_arq_iss_session(iss)
|
||||||
iss.start()
|
iss.start()
|
||||||
|
|
|
@ -6,6 +6,8 @@ from threading import local
|
||||||
from message_system_db_model import Base, Station, Status, Attachment, P2PMessage
|
from message_system_db_model import Base, Station, Status, Attachment, P2PMessage
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import json
|
import json
|
||||||
|
import structlog
|
||||||
|
|
||||||
|
|
||||||
class DatabaseManager:
|
class DatabaseManager:
|
||||||
def __init__(self, uri='sqlite:///freedata-messages.db'):
|
def __init__(self, uri='sqlite:///freedata-messages.db'):
|
||||||
|
@ -14,6 +16,11 @@ class DatabaseManager:
|
||||||
self.session_factory = sessionmaker(bind=self.engine)
|
self.session_factory = sessionmaker(bind=self.engine)
|
||||||
Base.metadata.create_all(self.engine)
|
Base.metadata.create_all(self.engine)
|
||||||
|
|
||||||
|
def log(self, message, isWarning=False):
|
||||||
|
msg = f"[{type(self).__name__}]: {message}"
|
||||||
|
logger = self.logger.warn if isWarning else self.logger.info
|
||||||
|
logger(msg)
|
||||||
|
|
||||||
def get_thread_scoped_session(self):
|
def get_thread_scoped_session(self):
|
||||||
if not hasattr(self.thread_local, "session"):
|
if not hasattr(self.thread_local, "session"):
|
||||||
self.thread_local.session = scoped_session(self.session_factory)
|
self.thread_local.session = scoped_session(self.session_factory)
|
||||||
|
@ -71,6 +78,8 @@ class DatabaseManager:
|
||||||
|
|
||||||
session.add(new_message)
|
session.add(new_message)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
|
self.log(f"Added data to database: {new_message.id}")
|
||||||
return new_message.id
|
return new_message.id
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
session.rollback()
|
session.rollback()
|
||||||
|
|
|
@ -238,7 +238,7 @@ def get_post_radio():
|
||||||
return api_response(app.state_manager.get_radio_status())
|
return api_response(app.state_manager.get_radio_status())
|
||||||
|
|
||||||
@app.route('/freedata/messages', methods=['POST', 'GET'])
|
@app.route('/freedata/messages', methods=['POST', 'GET'])
|
||||||
def post_freedata_message():
|
def get_post_freedata_message():
|
||||||
if request.method in ['GET']:
|
if request.method in ['GET']:
|
||||||
result = DatabaseManager(uri='sqlite:///:memory:').get_all_messages_json()
|
result = DatabaseManager(uri='sqlite:///:memory:').get_all_messages_json()
|
||||||
return api_response(result)
|
return api_response(result)
|
||||||
|
|
|
@ -34,7 +34,7 @@ class TestDataFrameFactory(unittest.TestCase):
|
||||||
}
|
}
|
||||||
message = MessageP2P(self.mycall, 'DJ2LS-3', 'Hello World!', [attachment])
|
message = MessageP2P(self.mycall, 'DJ2LS-3', 'Hello World!', [attachment])
|
||||||
payload = message.to_payload()
|
payload = message.to_payload()
|
||||||
|
print(payload)
|
||||||
received_message = MessageP2P.from_payload(payload)
|
received_message = MessageP2P.from_payload(payload)
|
||||||
received_message_dict = MessageP2P.to_dict(received_message, received=True)
|
received_message_dict = MessageP2P.to_dict(received_message, received=True)
|
||||||
self.database_manager.add_message(received_message_dict)
|
self.database_manager.add_message(received_message_dict)
|
||||||
|
|
Loading…
Reference in a new issue