#pragma once #include "ioport.hpp" namespace JabyEngine { namespace Periphery_IO_Values { __declare_io_struct(JOY_BAUD, uint16_t) { static constexpr JOY_BAUD create() { return JOY_BAUD{0x0088}; } }; __declare_io_struct(JOY_CTRL, uint16_t) { static constexpr auto TXEnable = Bit(0); static constexpr auto SelectJoy = Bit(1); static constexpr auto ACK = Bit(4); static constexpr auto ACKIrqEnable = Bit(12); static constexpr auto PortBSelected = Bit(13); static constexpr auto PortASelected = !PortBSelected; static constexpr JOY_CTRL create_for(uint16_t port) { return JOY_CTRL{static_cast(port << PortBSelected)}.set(TXEnable, SelectJoy, ACKIrqEnable); } static constexpr JOY_CTRL close() { return JOY_CTRL{0}; } }; __declare_io_struct(JOY_MODE, uint16_t) { static constexpr JOY_MODE create() { return JOY_MODE{0x000D}; } }; __declare_io_struct(JOY_RX_DATA, uint8_t) { }; __declare_io_struct(JOY_STAT, uint32_t) { static constexpr auto TXReadyStart = Bit(0); static constexpr auto RXFifoNonEmpty = Bit(1); static constexpr auto TXReadyFinished = Bit(2); static constexpr auto RXParityError = Bit(3); static constexpr auto ACKIrqLow = Bit(7); }; __declare_io_struct(JOY_TX_DATA, uint32_t) { static constexpr JOY_TX_DATA create(uint8_t byte) { return JOY_TX_DATA{byte}; } }; } }