diff --git a/io.hpp b/io.hpp index 6dac4e0..0849d3d 100644 --- a/io.hpp +++ b/io.hpp @@ -236,10 +236,12 @@ static constexpr auto getPIN(const Bus bus) } } +using reg_ptr_t = volatile uint8_t *; + template -static inline volatile uint8_t *getRegPtr() +static inline reg_ptr_t getRegPtr() { - return reinterpret_cast(Address); + return reinterpret_cast(Address); } } // namespace detail @@ -264,7 +266,7 @@ class Pin { constexpr auto bus = detail::getBus(pin); constexpr auto pinBit = detail::getPinBit(pin); - volatile uint8_t *dirRegPtr = detail::getRegPtr(); + detail::reg_ptr_t dirRegPtr = detail::getRegPtr(); if (dir == Dir::IN) *dirRegPtr &= ~(1 << pinBit); @@ -277,7 +279,7 @@ class Pin { constexpr auto bus = detail::getBus(pin); constexpr auto pinBit = detail::getPinBit(pin); - volatile uint8_t *portRegPtr = detail::getRegPtr(); + detail::reg_ptr_t portRegPtr = detail::getRegPtr(); if (enable) *portRegPtr |= (1 << pinBit); @@ -290,7 +292,7 @@ class Pin { constexpr auto bus = detail::getBus(pin); constexpr auto pinBit = detail::getPinBit(pin); - volatile uint8_t *portRegPtr = detail::getRegPtr(); + detail::reg_ptr_t portRegPtr = detail::getRegPtr(); if (value) *portRegPtr |= (1 << pinBit); @@ -304,10 +306,10 @@ class Pin { constexpr auto pinBit = detail::getPinBit(pin); #ifdef HARDWARE_TOGGLE - volatile uint8_t *pinRegPtr = detail::getRegPtr(); + detail::reg_ptr_t pinRegPtr = detail::getRegPtr(); *pinRegPtr |= (1 << pinBit); #else - volatile uint8_t *portRegPtr = detail::getRegPtr(); + detail::reg_ptr_t portRegPtr = detail::getRegPtr(); *portRegPtr ^= (1 << pinBit); #endif } @@ -317,7 +319,7 @@ class Pin { constexpr auto bus = detail::getBus(pin); constexpr auto pinBit = detail::getPinBit(pin); - volatile uint8_t *pinRegPtr = detail::getRegPtr(); + detail::reg_ptr_t pinRegPtr = detail::getRegPtr(); if (*pinRegPtr >> pinBit & 1) return true; @@ -354,7 +356,7 @@ class Port { static inline void dir(const Dir dir) FORCE_INLINE { - volatile uint8_t *dirRegPtr = detail::getRegPtr(); + detail::reg_ptr_t dirRegPtr = detail::getRegPtr(); if (dir == Dir::IN) *dirRegPtr = 0x00; @@ -364,7 +366,7 @@ class Port { static inline void pullup(const bool enable) FORCE_INLINE { - volatile uint8_t *portRegPtr = detail::getRegPtr(); + detail::reg_ptr_t portRegPtr = detail::getRegPtr(); if (enable) *portRegPtr = 0xFF; @@ -374,7 +376,7 @@ class Port { static inline void write(const uint8_t value) FORCE_INLINE { - volatile uint8_t *portRegPtr = detail::getRegPtr(); + detail::reg_ptr_t portRegPtr = detail::getRegPtr(); *portRegPtr = value; } @@ -382,11 +384,11 @@ class Port { static inline void invert() FORCE_INLINE { #ifdef HARDWARE_TOGGLE - volatile uint8_t *pinRegPtr = detail::getRegPtr(); + detail::reg_ptr_t pinRegPtr = detail::getRegPtr(); *pinRegPtr = 0xFF; #else - volatile uint8_t *portRegPtr = detail::getRegPtr(); + detail::reg_ptr_t portRegPtr = detail::getRegPtr(); *portRegPtr = ~(*portRegPtr); #endif @@ -394,7 +396,7 @@ class Port { static inline uint8_t read() FORCE_INLINE { - volatile uint8_t *pinRegPtr = detail::getRegPtr(); + detail::reg_ptr_t pinRegPtr = detail::getRegPtr(); return *pinRegPtr; }