diff --git a/io.hpp b/io.hpp index bdeedec..ea4bbcc 100644 --- a/io.hpp +++ b/io.hpp @@ -188,14 +188,14 @@ static constexpr uintptr_t PORT_D_INPUT_REG_ADDR = 0; static constexpr auto getBus(const P pin) { // Upper 4 bits of pin encode which port this pin is on - uint8_t port = static_cast(pin) >> 4 & 0x0F; + const auto port = static_cast(pin) >> 4 & 0x0F; return static_cast(port); } static constexpr auto getPinBit(const P pin) { // Lower 4 bits of pin encode which pin bit it is - uint8_t pinBit = static_cast(pin) & 0x0F; + const auto pinBit = static_cast(pin) & 0x0F; return pinBit; } @@ -307,12 +307,12 @@ class Pin { constexpr auto bus = detail::getBus(pin); constexpr auto pinBit = detail::getPinBit(pin); - detail::reg_ptr_t dirRegPtr = detail::getRegPtr(); + auto dirRegPtr = detail::getRegPtr(); if (dir == Dir::IN) - *dirRegPtr &= ~(1 << pinBit); + *dirRegPtr = *dirRegPtr & ~(1 << pinBit); else if (dir == Dir::OUT) - *dirRegPtr |= (1 << pinBit); + *dirRegPtr = *dirRegPtr | (1 << pinBit); } } @@ -322,12 +322,12 @@ class Pin { constexpr auto bus = detail::getBus(pin); constexpr auto pinBit = detail::getPinBit(pin); - detail::reg_ptr_t portRegPtr = detail::getRegPtr(); + auto portRegPtr = detail::getRegPtr(); if (enable) - *portRegPtr |= (1 << pinBit); + *portRegPtr = *portRegPtr | (1 << pinBit); else - *portRegPtr &= ~(1 << pinBit); + *portRegPtr = *portRegPtr & ~(1 << pinBit); } } @@ -337,12 +337,12 @@ class Pin { constexpr auto bus = detail::getBus(pin); constexpr auto pinBit = detail::getPinBit(pin); - detail::reg_ptr_t portRegPtr = detail::getRegPtr(); + auto portRegPtr = detail::getRegPtr(); if (value) - *portRegPtr |= (1 << pinBit); + *portRegPtr = *portRegPtr | (1 << pinBit); else - *portRegPtr &= ~(1 << pinBit); + *portRegPtr = *portRegPtr & ~(1 << pinBit); } } @@ -353,11 +353,11 @@ class Pin { constexpr auto pinBit = detail::getPinBit(pin); #ifdef HARDWARE_TOGGLE - detail::reg_ptr_t pinRegPtr = detail::getRegPtr(); - *pinRegPtr |= (1 << pinBit); + auto pinRegPtr = detail::getRegPtr(); + *pinRegPtr = *pinRegPtr | (1 << pinBit); #else - detail::reg_ptr_t portRegPtr = detail::getRegPtr(); - *portRegPtr ^= (1 << pinBit); + auto portRegPtr = detail::getRegPtr(); + *portRegPtr = *portRegPtr ^ (1 << pinBit); #endif } } @@ -368,7 +368,7 @@ class Pin { constexpr auto bus = detail::getBus(pin); constexpr auto pinBit = detail::getPinBit(pin); - detail::reg_ptr_t pinRegPtr = detail::getRegPtr(); + auto pinRegPtr = detail::getRegPtr(); if (*pinRegPtr >> pinBit & 1) return true; @@ -406,7 +406,7 @@ class Port { [[gnu::always_inline]] static inline void dir(const Dir dir) { if constexpr (port != Bus::NONE) { - detail::reg_ptr_t dirRegPtr = detail::getRegPtr(); + auto dirRegPtr = detail::getRegPtr(); if (dir == Dir::IN) *dirRegPtr = 0x00; @@ -418,7 +418,7 @@ class Port { [[gnu::always_inline]] static inline void pullup(const bool enable) { if constexpr (port != Bus::NONE) { - detail::reg_ptr_t portRegPtr = detail::getRegPtr(); + auto portRegPtr = detail::getRegPtr(); if (enable) *portRegPtr = 0xFF; @@ -430,7 +430,7 @@ class Port { [[gnu::always_inline]] static inline void write([[maybe_unused]] const uint8_t value) { if constexpr (port != Bus::NONE) { - detail::reg_ptr_t portRegPtr = detail::getRegPtr(); + auto portRegPtr = detail::getRegPtr(); *portRegPtr = value; } } @@ -439,10 +439,10 @@ class Port { { if constexpr (port != Bus::NONE) { #ifdef HARDWARE_TOGGLE - detail::reg_ptr_t pinRegPtr = detail::getRegPtr(); + auto pinRegPtr = detail::getRegPtr(); *pinRegPtr = 0xFF; #else - detail::reg_ptr_t portRegPtr = detail::getRegPtr(); + auto portRegPtr = detail::getRegPtr(); *portRegPtr = ~(*portRegPtr); #endif } @@ -451,8 +451,7 @@ class Port { [[gnu::always_inline]] static inline uint8_t read() { if constexpr (port != Bus::NONE) { - detail::reg_ptr_t pinRegPtr = detail::getRegPtr(); - + auto pinRegPtr = detail::getRegPtr(); return *pinRegPtr; } return 0x00;