diff --git a/rims_app/proto/gpio.proto b/rims_app/proto/gpio.proto index 7bff9f9290b..0490260d584 100644 --- a/rims_app/proto/gpio.proto +++ b/rims_app/proto/gpio.proto @@ -38,6 +38,7 @@ message IngressMessage message EgressMessage { + // in response to given request_id optional uint32 request_id = 255; oneof data { diff --git a/rims_app/proto/log.proto b/rims_app/proto/log.proto index 1816e9874a9..c84c18e2682 100644 --- a/rims_app/proto/log.proto +++ b/rims_app/proto/log.proto @@ -4,8 +4,6 @@ import "nanopb.proto"; package log; // TODO add error -// TODO change the message layout so that it has the same structure as other messages -// TODO add message for controlling LogLevel enum LogLevel { TRACE = 0; @@ -23,10 +21,7 @@ message LogLevelRequest message LogLevelResponse { - oneof data - { // for compatybility - LogLevel logLevel = 1; - } + LogLevel logLevel = 1; }; message LogEntry diff --git a/rims_app/proto/message.proto b/rims_app/proto/message.proto index 8374ea8c386..d8d60509bc1 100644 --- a/rims_app/proto/message.proto +++ b/rims_app/proto/message.proto @@ -19,8 +19,9 @@ enum Error { UnknownId = 7; } -message ErrorMessage{ -Error error = 1; +message ErrorMessage +{ + Error error = 1; } message Message diff --git a/rims_app/src/power_control.cpp b/rims_app/src/ctrl.cpp similarity index 99% rename from rims_app/src/power_control.cpp rename to rims_app/src/ctrl.cpp index aae25b98c96..97b973f6a76 100644 --- a/rims_app/src/power_control.cpp +++ b/rims_app/src/ctrl.cpp @@ -1,7 +1,6 @@ -#include "power_control.hpp" +#include "ctrl.hpp" #include "common.hpp" -#include "ctrl_pb_helpers.hpp" #include "log.hpp" #include "proto/ctrl.pb.h" #include "zephyr.hpp" @@ -9,11 +8,9 @@ #include #include -#include #include #include #include -#include namespace rims { diff --git a/rims_app/src/power_control.hpp b/rims_app/src/ctrl.hpp similarity index 100% rename from rims_app/src/power_control.hpp rename to rims_app/src/ctrl.hpp diff --git a/rims_app/src/log.cpp b/rims_app/src/log.cpp index 14bf15ee950..6f8bb5d2657 100644 --- a/rims_app/src/log.cpp +++ b/rims_app/src/log.cpp @@ -5,6 +5,7 @@ #include namespace rims { + K_FIFO_DEFINE(klogFifoQueue); fifo_queue logEgressQueue{klogFifoQueue}; diff --git a/rims_app/src/log.hpp b/rims_app/src/log.hpp index ad92f4c9c46..11a880ff7e8 100644 --- a/rims_app/src/log.hpp +++ b/rims_app/src/log.hpp @@ -20,7 +20,7 @@ enum class LogLevel : int { // Critical = 5 }; -extern fifo_queue logIngressFifoQueueBuffer; +extern fifo_queue logIngressQueue; extern fifo_queue logEgressQueue; static LogLevel g_logLevel = LogLevel::Trace; diff --git a/rims_app/src/main.cpp b/rims_app/src/main.cpp index 744525eaf05..b8786719943 100644 --- a/rims_app/src/main.cpp +++ b/rims_app/src/main.cpp @@ -4,9 +4,9 @@ #include "messenger.hpp" #include "operation.hpp" #include "placement_unique_ptr.hpp" -#include "power_control.hpp" +#include "ctrl.hpp" #include "temperature_measurements.hpp" -#include "thread_analyzer.hpp" +#include "utilization.hpp" #include "uart.hpp" #include "zero_cross_detection.hpp" diff --git a/rims_app/src/messenger.cpp b/rims_app/src/messenger.cpp index 283683f5723..ce2476034c0 100644 --- a/rims_app/src/messenger.cpp +++ b/rims_app/src/messenger.cpp @@ -1,13 +1,14 @@ #include "messenger.hpp" #include "error.hpp" +#include "function.hpp" #include "log.hpp" #include "message_type_id.hpp" #include "operation.hpp" #include "config.hpp" #include "gpio.hpp" -#include "power_control.hpp" +#include "ctrl.hpp" #include "temperature_measurements.hpp" #include "uart.hpp" @@ -125,8 +126,8 @@ inline std::expected skip_bytes(pb_istream_t &stream, std::size return {}; } -inline std::expectedskip_field(pb_istream_t &stream, pb_wire_type_t wire_type){ - if(not pb_skip_field(&stream, wire_type)){ +inline std::expected skip_field(pb_istream_t &stream, pb_wire_type_t wire_type) { + if (not pb_skip_field(&stream, wire_type)) { return std::unexpected{read_error{}}; } return {}; @@ -391,7 +392,7 @@ struct SubsystemMessages { uint32_t subsystem_id; std::reference_wrapper ingress; std::reference_wrapper egress; - uint32_t tag; + uint32_t tag; }; constexpr std::array subsystems = { // @@ -442,12 +443,12 @@ std::expected read_varint_field(pb_istream_t &stream, uint3 std::expected MessengerThread::defaultHandler(uint32_t subsystem_id, void *request, WireFormatID id, pb_istream_t &stream, AsyncUART *dev) { // pb::decode is a nanopb decode wrapped in c++ expected - pb_istream_t peek = stream; // safe: pb_istream_t is a copyable struct - uint64_t request_id = TRY(read_varint_field(peek, reqtag(subsystem_id))); + pb_istream_t peek = stream; + // each message contains a 'request_id' fields which can be read here + uint64_t request_id = TRY(read_varint_field(peek, reqtag(subsystem_id))); CHECK(pb::decode(stream, ingress(subsystem_id), request)); callback_t callback = UartCallback{dev, &egress(subsystem_id), id}; - // we need to read request_id from decoded message, this field is always of id 1 putActiveRequest(subsystem_id, request_id, std::move(callback)); return {}; @@ -455,42 +456,27 @@ std::expected MessengerThread::defaultHandler(uint32_t subsystem_id std::expected MessengerThread::handle_temperatureIngressMsg(WireFormatID id, pb_istream_t &stream, AsyncUART *dev) { // try to decode stream, and put it to IngressQueue - if (not temperatureIngressQueue.try_produce([&](temperature_IngressMessage &request) { - return defaultHandler(temperature_receiver_tag, &request, id, stream, dev); - })) - return std::unexpected{messenger::request_queue_full{}}; + if (not temperatureIngressQueue.try_produce([&](temperature_IngressMessage &request) { return defaultHandler(temperature_receiver_tag, &request, id, stream, dev); })) return std::unexpected{messenger::request_queue_full{}}; return {}; } std::expected MessengerThread::handle_ctrlIngressMsg(WireFormatID id, pb_istream_t &stream, AsyncUART *dev) { - if (not ctrlIngressQueue.try_produce([&](ctrl_IngressMessage &request) { - return defaultHandler(ctrl_receiver_tag, &request, id, stream, dev); - })) - return std::unexpected{messenger::request_queue_full{}}; + if (not ctrlIngressQueue.try_produce([&](ctrl_IngressMessage &request) { return defaultHandler(ctrl_receiver_tag, &request, id, stream, dev); })) return std::unexpected{messenger::request_queue_full{}}; return {}; } std::expected MessengerThread::handle_configIngressMsg(WireFormatID id, pb_istream_t &stream, AsyncUART *dev) { - if (not configIngressQueue.try_produce([&](config_IngressMessage &request) { - return defaultHandler(config_receiver_tag, &request, id, stream, dev); - })) - return std::unexpected{messenger::request_queue_full{}}; + if (not configIngressQueue.try_produce([&](config_IngressMessage &request) { return defaultHandler(config_receiver_tag, &request, id, stream, dev); })) return std::unexpected{messenger::request_queue_full{}}; return {}; } std::expected MessengerThread::handle_gpioIngressMsg(WireFormatID id, pb_istream_t &stream, AsyncUART *dev) { - if (not gpioIngressQueue.try_produce([&](gpio_IngressMessage &request) { - return defaultHandler(gpio_receiver_tag, &request, id, stream, dev); - })) - return std::unexpected{messenger::request_queue_full{}}; + if (not gpioIngressQueue.try_produce([&](gpio_IngressMessage &request) { return defaultHandler(gpio_receiver_tag, &request, id, stream, dev); })) return std::unexpected{messenger::request_queue_full{}}; return {}; } std::expected MessengerThread::handle_opIngressMsg(WireFormatID id, pb_istream_t &stream, AsyncUART *dev) { - if (not operationIngressQueue.try_produce([&](op_IngressMessage &request) { - return defaultHandler(operation_receiver_tag, &request, id, stream, dev); - })) - return std::unexpected{messenger::request_queue_full{}}; + if (not operationIngressQueue.try_produce([&](op_IngressMessage &request) { return defaultHandler(operation_receiver_tag, &request, id, stream, dev); })) return std::unexpected{messenger::request_queue_full{}}; return {}; } diff --git a/rims_app/src/operation.cpp b/rims_app/src/operation.cpp index b424a84ebea..80b6b07b1bb 100644 --- a/rims_app/src/operation.cpp +++ b/rims_app/src/operation.cpp @@ -3,12 +3,10 @@ #include "error.hpp" #include "inplace_vector.hpp" #include "log.hpp" - -#include "power_control.hpp" +#include "messenger.hpp" #include "pid.hpp" -#include "proto/ctrl.pb.h" -#include "proto/operation.pb.h" #include "zephyr.hpp" +#include "ctrl.hpp" #include #include @@ -18,7 +16,6 @@ #include #include -#include "messenger.hpp" namespace rims { template diff --git a/rims_app/src/thread_analyzer.cpp b/rims_app/src/utilization.cpp similarity index 94% rename from rims_app/src/thread_analyzer.cpp rename to rims_app/src/utilization.cpp index 41ba8b975f3..7cdbf70d0c1 100644 --- a/rims_app/src/thread_analyzer.cpp +++ b/rims_app/src/utilization.cpp @@ -1,7 +1,7 @@ -#include "thread_analyzer.hpp" +#include "utilization.hpp" -#include "log.hpp" #include +#include "log.hpp" namespace rims { diff --git a/rims_app/src/thread_analyzer.hpp b/rims_app/src/utilization.hpp similarity index 100% rename from rims_app/src/thread_analyzer.hpp rename to rims_app/src/utilization.hpp