// Raspberry Pi Pico
// https://datasheets.raspberrypi.org/pico/Pico-R3-A4-Pinout.pdf
#elif defined(TARGET_RP2040) || defined(TARGET_RASPBE
                                          RRY_PI_PICO)

#include <stdarg.h>

static inline void attachInterrupt(pin_size_t 
      interruptNumber, voidFuncPtr callback, int mode)
{
   attachInterrupt(interruptNumber, callback, 
                                    (PinStatus) mode);
}

#define TOTAL_ANALOG_PINS       4
#define TOTAL_PINS              30
#define VERSION_BLINK_PIN       LED_BUILTIN
#define IS_PIN_DIGITAL(p)       (((p) >= 0 && (p) < 
                           23) || (p) == LED_BUILTIN)
#define IS_PIN_ANALOG(p)        ((p) >= 26 && (p) < 
                              26 + TOTAL_ANALOG_PINS)
#define IS_PIN_PWM(p)           digitalPinHasPWM(p)
#define IS_PIN_SERVO(p)         (IS_PIN_DIGITAL(p) 
                               && (p) != LED_BUILTIN)
// From the data sheet I2C-0 defaults to GP 4 (SDA)
//  & 5 (SCL) (physical pins 6 & 7)
// However, v2.3.1 of mbed_rp2040 defines WIRE_
// HOWMANY to 1 and uses the non-default GPs 6 & 7:
//#define WIRE_HOWMANY  (1)
//#define PIN_WIRE_SDA            (6u)
//#define PIN_WIRE_SCL            (7u)
#define IS_PIN_I2C(p)           ((p) == PIN_WIRE_SDA
                             || (p) == PIN_WIRE_SCL)
// SPI-0 defaults to GP 16 (RX / MISO), 17 (CSn), 
// 18 (SCK) & 19 (TX / MOSI) (physical pins 21, 22,
// 24, 25)
#define IS_PIN_SPI(p)           ((p) == PIN_SPI_SCK
      || (p) == PIN_SPI_MOSI || (p) == PIN_SPI_MISO
                              || (p) == PIN_SPI_SS)
// UART-0 defaults to GP 0 (TX) & 1 (RX)
#define IS_PIN_SERIAL(p)        ((p) == 0 || (p) ==
  1 || (p) == 4 || (p) == 5 || (p) == 8 || (p) == 9
|| (p) == 12 || (p) == 13 || (p) == 16 || (p) == 17)
#define PIN_TO_DIGITAL(p)       (p)
#define PIN_TO_ANALOG(p)        ((p) - 26)
#define PIN_TO_PWM(p)           (p)
#define PIN_TO_SERVO(p)         (p)
