#pragma once #include #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; } // end of namespace