diff --git a/Server/CMakeLists.txt b/Server/CMakeLists.txt index ef53145..ce930a3 100644 --- a/Server/CMakeLists.txt +++ b/Server/CMakeLists.txt @@ -19,6 +19,7 @@ set(SOURCES_SERVER src/server.cpp src/RequestAdapter.cpp src/network/RequestHandler.cpp + src/data_storage.cpp ) set(HEADERS_SERVER @@ -26,6 +27,8 @@ set(HEADERS_SERVER include/Server.h include/RequestHandler.h include/RequestAdapter.h + include/sqlite_orm.h + include/data_storage.h ) # Create the library diff --git a/Server/include/Server.h b/Server/include/Server.h index 464346f..c8b17d8 100644 --- a/Server/include/Server.h +++ b/Server/include/Server.h @@ -12,6 +12,7 @@ #include "RequestBuilder.h" #include "RequestHandler.h" #include "../Capsule/src/capsule.h" +#include "data_storage.h" #include "Log.h" @@ -54,6 +55,8 @@ private slots: QMap> subscriptionMap; QList clients; sqlite3 *database; + SqliteDB *sqlDatabase; + QSerialPort *serialPort; RequestHandler requestHandler; diff --git a/Server/include/data_storage.h b/Server/include/data_storage.h index 44409ae..8fa7669 100644 --- a/Server/include/data_storage.h +++ b/Server/include/data_storage.h @@ -1,3 +1,6 @@ +#ifndef SQLITEDB_H +#define SQLITEDB_H + #include #include #include @@ -145,3 +148,5 @@ class SqliteDB { Storage storage; }; + +#endif /* SQLITEDB_H */ diff --git a/Server/src/data_storage.cpp b/Server/src/data_storage.cpp index 1879968..3c8d581 100644 --- a/Server/src/data_storage.cpp +++ b/Server/src/data_storage.cpp @@ -1,4 +1,5 @@ #include "../include/data_storage.h" +#include SqliteDB::SqliteDB() : storage(sqlite_orm::make_storage(this->PATH_TO_DB, @@ -7,7 +8,7 @@ SqliteDB::SqliteDB() sqlite_orm::make_column("ts", &AV_uplink_pkt::ts), sqlite_orm::make_column("order_id", &AV_uplink_pkt::order_id), sqlite_orm::make_column("order_value", &AV_uplink_pkt::order_value) - ), + ), sqlite_orm::make_table("AV_DOWNLINK", sqlite_orm::make_column("id", &AV_downlink_pkt::id, sqlite_orm::primary_key()), sqlite_orm::make_column("ts", &AV_downlink_pkt::ts), @@ -51,7 +52,7 @@ storage.sync_schema(); SqliteDB::~SqliteDB() {} int SqliteDB::write_pkt(const Packet pkt) { - + switch(pkt.type) { case PacketType::AV_UPLINK: { AV_uplink_pkt* avUpPkt = pkt.av_up_pkt; @@ -93,7 +94,16 @@ int SqliteDB::write_pkt(const Packet pkt) { return 0; } -int SqliteDB::read_pkt(uint32_t pkt_id, Packet pkt) {} +int SqliteDB::read_pkt(uint32_t pkt_id, Packet pkt) { + if(auto packet = storage.get_pointer(pkt_id)){ + std::cout << "user = " << packet->id << " " << (uint32_t)packet->order_id << " " << (uint32_t)packet->order_value << std::endl; + return 1; + }else{ + std::cout << "no user with id " << pkt_id << std::endl; + return 0; +} + +} int SqliteDB::flushAvUp() { if (buffer_av_up.empty()) {return 1;} diff --git a/Server/src/server.cpp b/Server/src/server.cpp index e84efb0..d09c990 100644 --- a/Server/src/server.cpp +++ b/Server/src/server.cpp @@ -25,6 +25,7 @@ #include "Setup.h" #include "packet_helper.h" #include +#include #define DB_ERROR_MESSAGE_PREFIX "The Databse couldn't be open, and produce the following error message" @@ -43,6 +44,7 @@ Server::Server(QObject *parent) : QTcpServer(parent), requestHandler(this), seri int Server::setup_db() { + sqlDatabase = new SqliteDB(); QString db_path = (QCoreApplication::applicationDirPath() + "/../data.db"); int exit = sqlite3_open(db_path.toStdString().c_str(), &database); /*sqlite3* DB; */ @@ -464,5 +466,21 @@ void Server::simulateJsonData() { #ifdef RF_PROTOCOL_FIREHORN gsePacket.loadcell_raw = distTemp(gen); #endif - handleSerialPacket(CAPSULE_ID::GSE_TELEMETRY, (uint8_t *)&gsePacket, sizeof(gsePacket)); + + struct AV_uplink_pkt uplink_test = { + 12, + 2, + 4, + 5 + };// Debug print right after initialization + + Packet dbPacket = { + AV_UPLINK, + &uplink_test, + nullptr, + nullptr + }; + sqlDatabase->write_pkt(dbPacket); + sqlDatabase->read_pkt(12, dbPacket); + // handleSerialPacket(CAPSULE_ID::GSE_TELEMETRY, (uint8_t *)&gsePacket, sizeof(gsePacket)); }