controller does not subclass responder
This commit is contained in:
parent
9127ad45b9
commit
5bc4c58b0e
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,9 @@
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "responder.h"
|
||||
#include "message.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
namespace RDM {
|
||||
|
||||
|
@ -31,7 +33,6 @@ namespace RDM {
|
|||
* @brief The Controller class
|
||||
*/
|
||||
class Controller
|
||||
: public Responder
|
||||
{
|
||||
public:
|
||||
Controller();
|
||||
|
|
|
@ -174,20 +174,6 @@ void Responder::receive(const std::vector<uint8_t> &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<uint16_t>(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<uint16_t>(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<uint16_t>(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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -42,17 +42,13 @@ public:
|
|||
void receive(const std::vector<uint8_t>& data);
|
||||
|
||||
protected:
|
||||
virtual void send();
|
||||
virtual void send(const std::vector<uint8_t>& 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<Message*> queued_messages_;
|
||||
|
||||
|
|
Loading…
Reference in New Issue