2021-08-12 13:13:00 -04:00
|
|
|
/*
|
|
|
|
target.h
|
|
|
|
|
|
|
|
Copyright (c) 2021 Kevin Matz (kevin.matz@gmail.com)
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
|
|
in the Software without restriction, including without limitation the rights
|
|
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included in all
|
|
|
|
copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
|
SOFTWARE.
|
|
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "rdmnet.h"
|
2021-08-17 14:19:56 -04:00
|
|
|
#include "rpt.h"
|
2021-08-12 13:13:00 -04:00
|
|
|
#include "llrp.h"
|
|
|
|
|
|
|
|
namespace RDMnet {
|
|
|
|
namespace LLRP {
|
|
|
|
|
|
|
|
/**
|
2021-08-13 12:03:11 -04:00
|
|
|
* @brief 5.1.2 LLRP Target
|
|
|
|
* LLRP Targets receive and act on LLRP discovery and configuration commands.
|
|
|
|
* LLRP Targets enable remote administration of network configuration. All
|
|
|
|
* Brokers, Controllers, and Devices also operate as LLRP Targets.
|
2021-08-12 13:13:00 -04:00
|
|
|
*/
|
|
|
|
class Target
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
Target();
|
|
|
|
virtual ~Target();
|
2021-08-13 12:03:11 -04:00
|
|
|
|
|
|
|
virtual void setup() = 0; //!< listens on LLRP_PORT
|
2021-08-13 16:07:40 -04:00
|
|
|
|
|
|
|
void receiveLLRP(std::shared_ptr<LLRP::Pdu> frame);
|
|
|
|
|
|
|
|
virtual void receiveProbeRequest(std::shared_ptr<LLRP::ProbeRequest::Pdu> pdu);
|
2021-08-13 12:03:11 -04:00
|
|
|
virtual void sendProbeReply() {};
|
2021-08-17 14:19:56 -04:00
|
|
|
virtual void receiveRdmCommand(std::shared_ptr<RPT::COMMAND::Pdu> pdu);
|
2021-08-13 16:07:40 -04:00
|
|
|
virtual void receiveRDM(const RDM::MsgPtr) = 0;
|
2021-08-12 13:13:00 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace LLRP
|
|
|
|
} // namespace RDMnet
|