1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
/*
* ExternalSensor.h
*
* Created on: 6 Jan 2019
* Author: jeremy
*/
#ifndef IO_VIRTUALSENSOR_H_
#define IO_VIRTUALSENSOR_H_
#include "ISensor.h"
#include <atomic>
#include <memory>
namespace IO
{
class VirtualSensor : public ISensor
{
public:
VirtualSensor(size_t chan)
{
isDigital = true;
channel = chan;
}
virtual ~VirtualSensor() = default;
virtual short GetData() final
{
return data.exchange(0, std::memory_order_acquire);
}
virtual void SetData(short value) final
{
data.store(value, std::memory_order_release);
}
private:
std::atomic<short> data{};
};
using VirtualSensorPtr = std::unique_ptr<VirtualSensor>;
}
#endif /* IO_VIRTUALSENSOR_H_ */
|