From 5bc4c58b0ec45aaa621d2ec6fa93c94c51d73b89 Mon Sep 17 00:00:00 2001 From: Kevin Matz Date: Tue, 10 Aug 2021 13:02:58 -0400 Subject: [PATCH] controller does not subclass responder --- rdm/controller.cpp | 7 +-- rdm/controller.h | 5 +- rdm/responder.cpp | 111 ++++++++++++--------------------------------- rdm/responder.h | 4 -- 4 files changed, 34 insertions(+), 93 deletions(-) diff --git a/rdm/controller.cpp b/rdm/controller.cpp index 8d4a804..a3dd042 100644 --- a/rdm/controller.cpp +++ b/rdm/controller.cpp @@ -30,12 +30,9 @@ namespace RDM { * @brief Controller::Controller */ Controller::Controller() - : Responder() - , next_transaction_(0) + : next_transaction_(0) { - deviceModelID = 2; - deviceModelDescription = "Basic RDM Controller"; - deviceProductCategory = PRODUCT_CATEGORY_CONTROL_CONTROLLER; + } diff --git a/rdm/controller.h b/rdm/controller.h index a6646fe..b002185 100644 --- a/rdm/controller.h +++ b/rdm/controller.h @@ -23,7 +23,9 @@ */ #pragma once -#include "responder.h" +#include "message.h" + +#include namespace RDM { @@ -31,7 +33,6 @@ namespace RDM { * @brief The Controller class */ class Controller - : public Responder { public: Controller(); diff --git a/rdm/responder.cpp b/rdm/responder.cpp index b1e637f..dacf324 100644 --- a/rdm/responder.cpp +++ b/rdm/responder.cpp @@ -174,20 +174,6 @@ void Responder::receive(const std::vector &data) } -/** - * @brief Responder::send - */ -void Responder::send() -{ - if (queued_messages_.empty()) - return; - - auto message = queued_messages_.front(); - queued_messages_.pop(); - send(message); -} - - /** * @brief Responder::send * @param data @@ -250,46 +236,38 @@ void Responder::send(Message *message) */ void Responder::receive(const Message *message) { - Message * response = nullptr; - if (message->commandClass == DISCOVERY_COMMAND || - message->commandClass == GET_COMMAND || - message->commandClass == SET_COMMAND) - { - // 6.2.8.1 Message Count field for Controller Generated Messages - // The Message Count shall be set to 0x00 in all controller generated requests. - if (message->messageCount != 0) - return; + if (message->commandClass != DISCOVERY_COMMAND || + message->commandClass != GET_COMMAND || + message->commandClass != SET_COMMAND) + return; - response = new Message(); - response->source = id; - response->destination = message->source; - response->subDevice = message->subDevice; - response->propertyID = message->propertyID; - response->transaction = message->transaction; - } + // 6.2.8.1 Message Count field for Controller Generated Messages + // The Message Count shall be set to 0x00 in all controller generated requests. + if (message->messageCount != 0) + return; + + auto response = new Message(); + response->source = id; + response->destination = message->source; + response->subDevice = message->subDevice; + response->propertyID = message->propertyID; + response->transaction = message->transaction; switch (message->commandClass) { case DISCOVERY_COMMAND: rxDiscovery(message, response); - return; - case DISCOVERY_COMMAND_RESPONSE: - rxDiscoveryResponse(message); - return; + break; case GET_COMMAND: rxGet(message, response); - return; - case GET_COMMAND_RESPONSE: - rxGetResponse(message); - return; + break; case SET_COMMAND: rxSet(message, response); - return; - case SET_COMMAND_RESPONSE: - rxSetResponse(message); - return; + break; default: - return; + break; } + delete message; + message = nullptr; } @@ -301,17 +279,7 @@ void Responder::rxDiscovery(__attribute__((unused)) const Message *message, Message* response) { response->commandClass = DISCOVERY_COMMAND_RESPONSE; - send(response); -} - - -/** - * @brief Responder::rxDiscoveryResponse - * @param message - */ -void Responder::rxDiscoveryResponse(__attribute__((unused)) const Message *message) -{ - + queued_messages_.push(response); } @@ -331,14 +299,14 @@ void Responder::rxGet(const Message *message, { response->responseType = RESPONSE_TYPE_NACK_REASON; response->appendData(NR_SUB_DEVICE_OUT_OF_RANGE); - send(response); + queued_messages_.push(response); return; } if (message->subDevice == 0) { get(message, response); - send(response); + queued_messages_.push(response); return; } @@ -346,22 +314,12 @@ void Responder::rxGet(const Message *message, { response->responseType = RESPONSE_TYPE_NACK_REASON; response->appendData(NR_SUB_DEVICE_OUT_OF_RANGE); - send(response); + queued_messages_.push(response); return; } sub_devices_.at(message->subDevice)->get(message, response); - send(response); -} - - -/** - * @brief Responder::rxGetResponse - * @param message - */ -void Responder::rxGetResponse(__attribute__((unused)) const Message *message) -{ - + queued_messages_.push(response); } @@ -375,7 +333,7 @@ void Responder::rxSet(const Message *message, if (message->subDevice == 0) { set(message, response); - send(response); + queued_messages_.push(response); return; } @@ -389,7 +347,6 @@ void Responder::rxSet(const Message *message, queued_messages_.push(rsp); } delete response; - send(); return; } @@ -397,22 +354,12 @@ void Responder::rxSet(const Message *message, { response->responseType = RESPONSE_TYPE_NACK_REASON; response->appendData(NR_SUB_DEVICE_OUT_OF_RANGE); - send(response); + queued_messages_.push(response); return; } sub_devices_.at(message->subDevice)->set(message, response); - send(response); -} - - -/** - * @brief Responder::rxSetResponse - * @param message - */ -void Responder::rxSetResponse(__attribute__((unused)) const Message *message) -{ - + queued_messages_.push(response); } diff --git a/rdm/responder.h b/rdm/responder.h index 578647b..cfa3fcb 100644 --- a/rdm/responder.h +++ b/rdm/responder.h @@ -42,17 +42,13 @@ public: void receive(const std::vector& data); protected: - virtual void send(); virtual void send(const std::vector& data); virtual void send(Message* message); virtual void receive(const Message* message); virtual void rxDiscovery(const Message* message, Message* response); - virtual void rxDiscoveryResponse(const Message* message); virtual void rxGet(const Message* message, Message* response); - virtual void rxGetResponse(const Message* message); virtual void rxSet(const Message* message, Message* response); - virtual void rxSetResponse(const Message* message); std::queue queued_messages_;