Decode reset status messages

This commit is contained in:
Paul Hollinsky
2018-10-09 13:38:54 -04:00
parent d50e6040b3
commit b3184eb1ed
5 changed files with 123 additions and 1 deletions
+16 -1
View File
@@ -152,6 +152,10 @@ bool Device::open() {
return false;
}
internalHandlerCallbackID = com->addMessageCallback(MessageCallback(MessageFilter(Network::Type::Internal), [this](std::shared_ptr<Message> message) {
handleInternalMessage(message);
}));
return true;
}
@@ -159,7 +163,8 @@ bool Device::close() {
if(!com)
return false;
settings = nullptr;
if(internalHandlerCallbackID)
com->removeMessageCallback(internalHandlerCallbackID);
return com->close();
}
@@ -178,4 +183,14 @@ bool Device::goOffline() {
online = false;
return true;
}
void Device::handleInternalMessage(std::shared_ptr<Message> message) {
switch(message->network.getNetID()) {
case Network::NetID::Reset_Status:
latestResetStatus = std::dynamic_pointer_cast<ResetStatusMessage>(message);
break;
default:
break; //std::cout << "HandleInternalMessage got a message from " << message->network << " and it was unhandled!" << std::endl;
}
}
+5
View File
@@ -11,6 +11,7 @@
#include "communication/include/packetizer.h"
#include "communication/include/encoder.h"
#include "communication/include/decoder.h"
#include "communication/message/include/resetstatusmessage.h"
#include "third-party/concurrentqueue/concurrentqueue.h"
namespace icsneo {
@@ -54,18 +55,22 @@ public:
enforcePollingMessageLimit();
}
void handleInternalMessage(std::shared_ptr<Message> message);
std::unique_ptr<IDeviceSettings> settings;
protected:
uint16_t productId = 0;
bool online = false;
int messagePollingCallbackID = 0;
int internalHandlerCallbackID = 0;
std::shared_ptr<Communication> com;
neodevice_t& getWritableNeoDevice() { return data; }
private:
neodevice_t data;
std::shared_ptr<ResetStatusMessage> latestResetStatus;
size_t pollingMessageLimit = 20000;
moodycamel::ConcurrentQueue<std::shared_ptr<Message>> pollingContainer;