static inline uint32_t _pin_mask(gpio_t pin) { return (1 << _pin_num(pin)); }
int gpio_read(gpio_t pin) { return (_SFR_MEM8(_pin_addr(pin)) & (1 << _pin_num(pin))); }
void gpio_clear(gpio_t pin) { GPIO_PinOutClear(_port_num(pin), _pin_num(pin)); }
void gpio_toggle(gpio_t pin) { GPIO_PinOutToggle(_port_num(pin), _pin_num(pin)); }
int gpio_read(gpio_t pin) { return GPIO_PinInGet(_port_num(pin), _pin_num(pin)); }
void gpio_set(gpio_t pin) { GPIO_PinOutSet(_port_num(pin), _pin_num(pin)); }
void gpio_clear(gpio_t pin) { _SFR_MEM8(_port_addr(pin)) &= ~(1 << _pin_num(pin)); }
void gpio_set(gpio_t pin) { _SFR_MEM8(_port_addr(pin)) |= (1 << _pin_num(pin)); }
void gpio_irq_disable(gpio_t pin) { EIMSK &= ~(1 << _pin_num(pin)); }
void gpio_irq_enable(gpio_t pin) { EIMSK |= (1 << _pin_num(pin)); }
/** * @brief Helper function to get CC2538 gpio number from port and pin * * @param[in] pin gpio pin * * @return number of gpio pin, [0 - 31] */ static inline uint8_t _pp_num(gpio_t pin) { return (uint8_t)((_port_num(pin) * GPIO_BITS_PER_PORT) + _pin_num(pin)); }