90 lines
2.3 KiB
C++
90 lines
2.3 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
#include "aurora/device/Device.h"
|
|
|
|
|
|
#ifdef AURORA_NATIVE_EXPORTS
|
|
#define AURORA_NATIVE_EXPORT __declspec(dllexport)
|
|
#else
|
|
#define AURORA_NATIVE_EXPORT __declspec(dllimport)
|
|
#endif
|
|
|
|
|
|
namespace lge::pri::aurora {
|
|
|
|
|
|
class AURORA_NATIVE_EXPORT DigitalIO : public DeviceBase
|
|
{
|
|
DECLARE_AS_DEVICE_BASE(DigitalIO, DeviceType::DIGITAL_IO)
|
|
|
|
virtual int writeBit(int address, bool value) = 0;
|
|
/**
|
|
* word = 16bit
|
|
*/
|
|
virtual int writeWord(int address, int16_t value) = 0;
|
|
/**
|
|
* double word = 32bit = 16bit x 2
|
|
*/
|
|
virtual int writeDoubleWord(int address, int32_t value) = 0;
|
|
|
|
/**
|
|
* write bits from start address
|
|
*
|
|
* @param[in] address the address for start to write
|
|
* @param[out] buffer pointer to be written
|
|
* @param[in] count word count
|
|
* It's not buffer size!
|
|
*/
|
|
virtual int writeBitBlock(int address, bool* buffer, size_t count) = 0;
|
|
|
|
/**
|
|
* write words from start address
|
|
*
|
|
* @param[in] address the address for start to write
|
|
* @param[out] buffer pointer to be written
|
|
* @param[in] count word count
|
|
* It's not buffer size!
|
|
*/
|
|
virtual int writeWordBlock(int address, int16_t* buffer, size_t count) = 0;
|
|
|
|
virtual int readBit(int address, bool* value) = 0;
|
|
/**
|
|
* word = 16bit
|
|
*/
|
|
virtual int readWord(int address, int16_t* value) = 0;
|
|
/**
|
|
* double word = 32bit = 16bit x 2
|
|
*/
|
|
virtual int readDoubleWord(int address, int32_t* value) = 0;
|
|
|
|
/**
|
|
* read bits from start address
|
|
*
|
|
* @param[in] address the address for start to read
|
|
* @param[out] buffer pointer to be written
|
|
* @param[in] count word count
|
|
* It's not buffer size!
|
|
*/
|
|
virtual int readBitBlock(int address, bool* buffer, size_t count) = 0;
|
|
|
|
/**
|
|
* read words from start address
|
|
*
|
|
* @param[in] address the address for start to read
|
|
* @param[out] buffer pointer to be written
|
|
* @param[in] count word count
|
|
* It's not buffer size!
|
|
*/
|
|
virtual int readWordBlock(int address, int16_t* buffer, size_t count) = 0;
|
|
};
|
|
|
|
|
|
extern
|
|
auto createMockDigitalIO(
|
|
const DeviceId& id
|
|
) -> std::unique_ptr<DigitalIO>;
|
|
|
|
} // end of namespace
|
|
|