LCOV - code coverage report
Current view: top level - src/AH/Hardware - Arduino-Hardware-Types.hpp (source / functions) Coverage Total Hit
Test: 73449d9b107c772cf65493691543348214e5d5eb Lines: 100.0 % 3 3
Test Date: 2026-06-06 17:44:35 Functions: 100.0 % 2 2
Legend: Lines:     hit not hit

            Line data    Source code
       1              : #pragma once
       2              : 
       3              : #include <AH/Hardware/Hardware-Types.hpp>
       4              : #include <AH/Types/FunctionTraits.hpp>
       5              : 
       6              : #include <AH/Arduino-Wrapper.h> // pin functions and constants
       7              : #include <AH/STL/type_traits>
       8              : 
       9              : #if defined(BOARD_HAS_PIN_REMAP) && !defined(BOARD_USES_HW_GPIO_NUMBERS)
      10              : #error                                                                         \
      11              :     "This library is not compatible with pin remapping. Please disable it by choosing "Tools > Pin Numbering > By GPIO number (legacy)" in the Arduino IDE. See https://github.com/espressif/arduino-esp32/issues/9150 for details"
      12              : #endif
      13              : 
      14              : #if defined(ARDUINO_API_VERSION)
      15              : 
      16              : using ArduinoPin_t = pin_size_t;
      17              : using PinStatus_t = PinStatus;
      18              : using PinMode_t = PinMode;
      19              : using BitOrder_t = BitOrder;
      20              : 
      21              : #else // ARDUINO_API_VERSION
      22              : 
      23              : using ArduinoPin_t =
      24              :     AH::function_traits<decltype(::digitalWrite)>::argument_t<0>;
      25              : using PinStatus_t =
      26              :     AH::function_traits<decltype(::digitalWrite)>::argument_t<1>;
      27              : using PinMode_t = AH::function_traits<decltype(::pinMode)>::argument_t<1>;
      28              : 
      29              : #if defined(ARDUINO_ARCH_SAM) || defined(ARDUINO_ARCH_SAMD)
      30              : using BitOrder_t = BitOrder;
      31              : #else
      32              : using BitOrder_t = uint8_t;
      33              : #endif
      34              : 
      35              : namespace AH_pin_detail {
      36              : constexpr static auto tmp_HIGH = HIGH;
      37              : constexpr static auto tmp_LOW = LOW;
      38              : constexpr static auto tmp_INPUT = INPUT;
      39              : constexpr static auto tmp_OUTPUT = OUTPUT;
      40              : constexpr static auto tmp_INPUT_PULLUP = INPUT_PULLUP;
      41              : } // namespace AH_pin_detail
      42              : #ifdef HIGH
      43              : #undef HIGH
      44              : #define HIGH HIGH
      45              : #endif
      46              : #ifdef LOW
      47              : #undef LOW
      48              : #define LOW LOW
      49              : #endif
      50              : #ifdef INPUT
      51              : #undef INPUT
      52              : #define INPUT INPUT
      53              : #endif
      54              : #ifdef OUTPUT
      55              : #undef OUTPUT
      56              : #define OUTPUT OUTPUT
      57              : #endif
      58              : #ifdef INPUT_PULLUP
      59              : #undef INPUT_PULLUP
      60              : #define INPUT_PULLUP INPUT_PULLUP
      61              : #endif
      62              : constexpr PinStatus_t HIGH = AH_pin_detail::tmp_HIGH;
      63              : constexpr PinStatus_t LOW = AH_pin_detail::tmp_LOW;
      64              : constexpr PinMode_t INPUT = AH_pin_detail::tmp_INPUT;
      65              : constexpr PinMode_t OUTPUT = AH_pin_detail::tmp_OUTPUT;
      66              : constexpr PinMode_t INPUT_PULLUP = AH_pin_detail::tmp_INPUT_PULLUP;
      67              : 
      68              : #endif // ARDUINO_API_VERSION
      69              : 
      70              : BEGIN_AH_NAMESPACE
      71              : 
      72              : template <class T>
      73           34 : constexpr ArduinoPin_t arduino_pin_cast(T t) {
      74           34 :     return static_cast<ArduinoPin_t>(t);
      75              : }
      76          756 : constexpr ArduinoPin_t arduino_pin_cast(pin_t t) { return t.pin; }
      77              : #if (defined(NOT_AN_INTERRUPT) || defined(ARDUINO_API_VERSION)) &&             \
      78              :     !defined(ARDUINO_ARCH_RENESAS)
      79              : using not_an_interrupt_t = decltype(NOT_AN_INTERRUPT);
      80              : /// Type of interrupt indices (result of digitalPinToInterrupt).
      81              : using interrupt_t =
      82              :     std::conditional<std::is_enum<not_an_interrupt_t>::value,
      83              :                      std::underlying_type<not_an_interrupt_t>,
      84              :                      type_identity<not_an_interrupt_t>>::type::type;
      85              : #endif
      86              : 
      87              : END_AH_NAMESPACE
        

Generated by: LCOV version 2.4-beta