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):
|
||||
decompressed_data = lzma.decompress(data)
|
||||
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)
|
||||
DatabaseManager(uri='sqlite:///:memory:').add_message(received_message_dict)
|
||||
result = DatabaseManager(uri='sqlite:///:memory:').add_message(received_message_dict)
|
||||
|
||||
return decompressed_data
|
||||
|
|
|
@ -15,12 +15,17 @@ class SendMessageCommand(TxCommand):
|
|||
self.message = MessageP2P.from_api_params(origin, apiParams)
|
||||
|
||||
def transmit(self, modem):
|
||||
data, data_type = self.arq_data_type_handler.prepare(self.message.to_payload, 'p2pmsg_lzma')
|
||||
iss = ARQSessionISS(self.config, modem,
|
||||
# Convert JSON string to bytes (using UTF-8 encoding)
|
||||
payload = self.message.to_payload().encode('utf-8')
|
||||
json_bytearray = bytearray(payload)
|
||||
data, data_type = self.arq_data_type_handler.prepare(json_bytearray, 'p2pmsg_lzma')
|
||||
iss = ARQSessionISS(self.config,
|
||||
modem,
|
||||
self.message.destination,
|
||||
data,
|
||||
self.state_manager,
|
||||
data_type)
|
||||
data,
|
||||
data_type
|
||||
)
|
||||
|
||||
self.state_manager.register_arq_iss_session(iss)
|
||||
iss.start()
|
||||
|
|
|
@ -6,6 +6,8 @@ from threading import local
|
|||
from message_system_db_model import Base, Station, Status, Attachment, P2PMessage
|
||||
from datetime import datetime
|
||||
import json
|
||||
import structlog
|
||||
|
||||
|
||||
class DatabaseManager:
|
||||
def __init__(self, uri='sqlite:///freedata-messages.db'):
|
||||
|
@ -14,6 +16,11 @@ class DatabaseManager:
|
|||
self.session_factory = sessionmaker(bind=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):
|
||||
if not hasattr(self.thread_local, "session"):
|
||||
self.thread_local.session = scoped_session(self.session_factory)
|
||||
|
@ -71,6 +78,8 @@ class DatabaseManager:
|
|||
|
||||
session.add(new_message)
|
||||
session.commit()
|
||||
|
||||
self.log(f"Added data to database: {new_message.id}")
|
||||
return new_message.id
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
|
|
|
@ -238,7 +238,7 @@ def get_post_radio():
|
|||
return api_response(app.state_manager.get_radio_status())
|
||||
|
||||
@app.route('/freedata/messages', methods=['POST', 'GET'])
|
||||
def post_freedata_message():
|
||||
def get_post_freedata_message():
|
||||
if request.method in ['GET']:
|
||||
result = DatabaseManager(uri='sqlite:///:memory:').get_all_messages_json()
|
||||
return api_response(result)
|
||||
|
|
|
@ -34,7 +34,7 @@ class TestDataFrameFactory(unittest.TestCase):
|
|||
}
|
||||
message = MessageP2P(self.mycall, 'DJ2LS-3', 'Hello World!', [attachment])
|
||||
payload = message.to_payload()
|
||||
|
||||
print(payload)
|
||||
received_message = MessageP2P.from_payload(payload)
|
||||
received_message_dict = MessageP2P.to_dict(received_message, received=True)
|
||||
self.database_manager.add_message(received_message_dict)
|
||||
|
|
Loading…
Reference in a new issue