2026-01-26 18:56:53 +09:00

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