Skip to content
Snippets Groups Projects
Commit 6ba14d92 authored by Grigoris Pavlakis's avatar Grigoris Pavlakis
Browse files

Complete rudimentary implementation of parameter reporting function, optimizations shall follow

parent 63510064
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
#include "Service.hpp" #include "Service.hpp"
#define CONFIGLENGTH 5 #define CONFIGLENGTH 5
/** /**
* Implementation of the ST[20] parameter management service, * Implementation of the ST[20] parameter management service,
* as defined in ECSS-E-ST-70-41C * as defined in ECSS-E-ST-70-41C
......
...@@ -12,7 +12,7 @@ ParameterService::ParameterService() { ...@@ -12,7 +12,7 @@ ParameterService::ParameterService() {
* This normally will be initialized with actual values on boot. * This normally will be initialized with actual values on boot.
*/ */
for (int i = 0; i < 5; i++) { // hack just to shut CLion up (warning about range-based for loops) for (int i = 0; i < CONFIGLENGTH; i++) {
paramsList[i].paramId = 0; paramsList[i].paramId = 0;
paramsList[i].settingData = 0; paramsList[i].settingData = 0;
...@@ -45,16 +45,16 @@ Message ParameterService::reportParameter(Message paramId) { ...@@ -45,16 +45,16 @@ Message ParameterService::reportParameter(Message paramId) {
*/ */
Message reqParam(20, 2, Message::TM, 1); // empty TM[20, 2] parameter report message Message reqParam(20, 2, Message::TM, 1); // empty TM[20, 2] parameter report message
uint16_t reqParamId = paramId.readHalfword(); // parameter ID must be accessed only once uint16_t reqParamId = paramId.readUint16(); // parameter ID must be accessed only once
if (paramId.packetType == Message::TC && paramId.serviceType == 20 && paramId.messageType == 1) { if (paramId.packetType == Message::TC && paramId.serviceType == 20 && paramId.messageType == 1) {
for (int i = 0; i < 5; i++) { for (int i = 0; i < CONFIGLENGTH; i++) {
if (paramsList[i].paramId == reqParamId) { if (paramsList[i].paramId == reqParamId) {
reqParam.appendHalfword(paramsList[i].paramId); reqParam.appendUint16(paramsList[i].paramId);
reqParam.appendWord(paramsList[i].settingData); reqParam.appendUint32(paramsList[i].settingData);
break; break;
} }
} }
...@@ -65,4 +65,5 @@ Message ParameterService::reportParameter(Message paramId) { ...@@ -65,4 +65,5 @@ Message ParameterService::reportParameter(Message paramId) {
/*void ParameterService::setParamData(Message paramId) { /*void ParameterService::setParamData(Message paramId) {
}*/ }*/
\ No newline at end of file
...@@ -31,9 +31,13 @@ int main() { ...@@ -31,9 +31,13 @@ int main() {
//ST[20] test //ST[20] test
ParameterService paramService; ParameterService paramService;
Message sentPacket = Message(20, 1, Message::TC, 1); //application id is a dummy number (1) Message sentPacket = Message(20, 1, Message::TC, 1); //application id is a dummy number (1)
sentPacket.appendHalfword(341); //the packet sent contains the ID of the desired parameter sentPacket.appendUint16(341); //the packet sent contains the ID of the desired parameter
Message returnedPacket = paramService.reportParameter(sentPacket); Message returnedPacket = paramService.reportParameter(sentPacket);
std::cout << "Parameter ID: " << returnedPacket.readHalfword() << "Parameter value: " << returnedPacket.readHalfword() << std::endl;
uint16_t id = returnedPacket.readUint16();
uint32_t val = returnedPacket.readUint32();
std::cout << "Parameter ID: " << std::dec << id << std::endl << "Parameter value: " << std::dec << val << std::endl;
return 0; return 0;
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment