gpio
GPIO (General Purpose Input/Output) bindings for ESP32 Provides functions to control GPIO pins, set their direction, and read/write values
- AssemblyScript
- Zig
- Rust
- TinyGo
- C
- C++
export enum GpioMode {
Disable = 0,
Input = 1,
Output = 2,
OutputOd = 3,
InputOutputOd = 4,
InputOutput = 5
}
export enum GpioError {
Ok = 0,
InvalidArg = 1,
Fail = 2,
NotSupported = 3,
Timeout = 4,
InvalidState = 5
}
export enum GpioPull {
PullupDisable = 0,
PullupEnable = 1,
PulldownDisable = 2,
PulldownEnable = 3
}
export enum GpioIntType {
IntrDisable = 0,
IntrPosedge = 1,
IntrNegedge = 2,
IntrAnyedge = 3,
IntrLowLevel = 4,
IntrHighLevel = 5
}
// @ts-ignore
@external("gpio", "gpio_set_level")
export declare function gpioSetLevel(gpioNum: u32, level: u32): GpioError;
// @ts-ignore
@external("gpio", "gpio_reset_pin")
export declare function gpioResetPin(gpioNum: u32): GpioError;
// @ts-ignore
@external("gpio", "gpio_set_direction")
export declare function gpioSetDirection(gpioNum: u32, mode: GpioMode): GpioError;
// @ts-ignore
@external("gpio", "gpio_config")
export declare function gpioConfig(pinBitMask: u64, mode: GpioMode, pullUpEn: GpioPull, pullDownEn: GpioPull, intrType: GpioIntType): GpioError;
// @ts-ignore
@external("gpio", "gpio_get_level")
export declare function gpioGetLevel(gpioNum: u32): u32;
pub const GpioMode = enum(u32) {
disable = 0,
input = 1,
output = 2,
outputOd = 3,
inputOutputOd = 4,
inputOutput = 5
};
pub const GpioError = enum(u32) {
ok = 0,
invalidArg = 1,
fail = 2,
notSupported = 3,
timeout = 4,
invalidState = 5
};
pub const GpioPull = enum(u32) {
pullupDisable = 0,
pullupEnable = 1,
pulldownDisable = 2,
pulldownEnable = 3
};
pub const GpioIntType = enum(u32) {
intrDisable = 0,
intrPosedge = 1,
intrNegedge = 2,
intrAnyedge = 3,
intrLowLevel = 4,
intrHighLevel = 5
};
pub extern "gpio" fn gpio_set_level(gpio_num: u32, level: u32) GpioError;
pub extern "gpio" fn gpio_reset_pin(gpio_num: u32) GpioError;
pub extern "gpio" fn gpio_set_direction(gpio_num: u32, mode: GpioMode) GpioError;
pub extern "gpio" fn gpio_config(pin_bit_mask: u64, mode: GpioMode, pull_up_en: GpioPull, pull_down_en: GpioPull, intr_type: GpioIntType) GpioError;
pub extern "gpio" fn gpio_get_level(gpio_num: u32) u32;
#[derive(Debug, Clone, Copy)]
#[repr(u32)]
pub enum GpioMode {
Disable = 0,
Input = 1,
Output = 2,
OutputOd = 3,
InputOutputOd = 4,
InputOutput = 5
}
#[derive(Debug, Clone, Copy)]
#[repr(u32)]
pub enum GpioError {
Ok = 0,
InvalidArg = 1,
Fail = 2,
NotSupported = 3,
Timeout = 4,
InvalidState = 5
}
#[derive(Debug, Clone, Copy)]
#[repr(u32)]
pub enum GpioPull {
PullupDisable = 0,
PullupEnable = 1,
PulldownDisable = 2,
PulldownEnable = 3
}
#[derive(Debug, Clone, Copy)]
#[repr(u32)]
pub enum GpioIntType {
IntrDisable = 0,
IntrPosedge = 1,
IntrNegedge = 2,
IntrAnyedge = 3,
IntrLowLevel = 4,
IntrHighLevel = 5
}
#[link(wasm_import_module = "gpio")]
extern "C" {
#[link_name = "gpio_set_level"]
fn unsafe_gpio_set_level(gpio_num: u32, level: u32) -> GpioError;
#[link_name = "gpio_reset_pin"]
fn unsafe_gpio_reset_pin(gpio_num: u32) -> GpioError;
#[link_name = "gpio_set_direction"]
fn unsafe_gpio_set_direction(gpio_num: u32, mode: GpioMode) -> GpioError;
#[link_name = "gpio_config"]
fn unsafe_gpio_config(pin_bit_mask: u64, mode: GpioMode, pull_up_en: GpioPull, pull_down_en: GpioPull, intr_type: GpioIntType) -> GpioError;
#[link_name = "gpio_get_level"]
fn unsafe_gpio_get_level(gpio_num: u32) -> u32;
}
pub fn gpio_set_level(gpio_num: u32, level: u32) -> GpioError {
unsafe {
return unsafe_gpio_set_level(gpio_num, level);
}
}
pub fn gpio_reset_pin(gpio_num: u32) -> GpioError {
unsafe {
return unsafe_gpio_reset_pin(gpio_num);
}
}
pub fn gpio_set_direction(gpio_num: u32, mode: GpioMode) -> GpioError {
unsafe {
return unsafe_gpio_set_direction(gpio_num, mode);
}
}
pub fn gpio_config(pin_bit_mask: u64, mode: GpioMode, pull_up_en: GpioPull, pull_down_en: GpioPull, intr_type: GpioIntType) -> GpioError {
unsafe {
return unsafe_gpio_config(pin_bit_mask, mode, pull_up_en, pull_down_en, intr_type);
}
}
pub fn gpio_get_level(gpio_num: u32) -> u32 {
unsafe {
return unsafe_gpio_get_level(gpio_num);
}
}
package gpio
type GpioMode uint32
const (
Disable GpioMode = 0
Input GpioMode = 1
Output GpioMode = 2
OutputOd GpioMode = 3
InputOutputOd GpioMode = 4
InputOutput GpioMode = 5
)
type GpioError uint32
const (
Ok GpioError = 0
InvalidArg GpioError = 1
Fail GpioError = 2
NotSupported GpioError = 3
Timeout GpioError = 4
InvalidState GpioError = 5
)
type GpioPull uint32
const (
PullupDisable GpioPull = 0
PullupEnable GpioPull = 1
PulldownDisable GpioPull = 2
PulldownEnable GpioPull = 3
)
type GpioIntType uint32
const (
IntrDisable GpioIntType = 0
IntrPosedge GpioIntType = 1
IntrNegedge GpioIntType = 2
IntrAnyedge GpioIntType = 3
IntrLowLevel GpioIntType = 4
IntrHighLevel GpioIntType = 5
)
//go:wasmimport gpio gpio_set_level
func GpioSetLevel(GpioNum uint32, Level uint32) uint32;
//go:wasmimport gpio gpio_reset_pin
func GpioResetPin(GpioNum uint32) uint32;
//go:wasmimport gpio gpio_set_direction
func GpioSetDirection(GpioNum uint32, Mode uint32) uint32;
//go:wasmimport gpio gpio_config
func GpioConfig(PinBitMask uint64, Mode uint32, PullUpEn uint32, PullDownEn uint32, IntrType uint32) uint32;
//go:wasmimport gpio gpio_get_level
func GpioGetLevel(GpioNum uint32) uint32;
typedef enum {
GPIO_MODE_DISABLE,
GPIO_MODE_INPUT,
GPIO_MODE_OUTPUT,
GPIO_MODE_OUTPUT_OD,
GPIO_MODE_INPUT_OUTPUT_OD,
GPIO_MODE_INPUT_OUTPUT
} gpio_mode_t;
typedef enum {
GPIO_ERROR_OK,
GPIO_ERROR_INVALID_ARG,
GPIO_ERROR_FAIL,
GPIO_ERROR_NOT_SUPPORTED,
GPIO_ERROR_TIMEOUT,
GPIO_ERROR_INVALID_STATE
} gpio_error_t;
typedef enum {
GPIO_PULL_PULLUP_DISABLE,
GPIO_PULL_PULLUP_ENABLE,
GPIO_PULL_PULLDOWN_DISABLE,
GPIO_PULL_PULLDOWN_ENABLE
} gpio_pull_t;
typedef enum {
GPIO_INT_TYPE_INTR_DISABLE,
GPIO_INT_TYPE_INTR_POSEDGE,
GPIO_INT_TYPE_INTR_NEGEDGE,
GPIO_INT_TYPE_INTR_ANYEDGE,
GPIO_INT_TYPE_INTR_LOW_LEVEL,
GPIO_INT_TYPE_INTR_HIGH_LEVEL
} gpio_int_type_t;
__attribute__((import_module("gpio")))
__attribute__((import_name("gpio_set_level")))
extern gpio_error_t gpio_set_level(unsigned int gpio_num, unsigned int level);
__attribute__((import_module("gpio")))
__attribute__((import_name("gpio_reset_pin")))
extern gpio_error_t gpio_reset_pin(unsigned int gpio_num);
__attribute__((import_module("gpio")))
__attribute__((import_name("gpio_set_direction")))
extern gpio_error_t gpio_set_direction(unsigned int gpio_num, gpio_mode_t mode);
__attribute__((import_module("gpio")))
__attribute__((import_name("gpio_config")))
extern gpio_error_t gpio_config(unsigned long pin_bit_mask, gpio_mode_t mode, gpio_pull_t pull_up_en, gpio_pull_t pull_down_en, gpio_int_type_t intr_type);
__attribute__((import_module("gpio")))
__attribute__((import_name("gpio_get_level")))
extern unsigned int gpio_get_level(unsigned int gpio_num);
typedef enum {
GPIO_MODE_DISABLE,
GPIO_MODE_INPUT,
GPIO_MODE_OUTPUT,
GPIO_MODE_OUTPUT_OD,
GPIO_MODE_INPUT_OUTPUT_OD,
GPIO_MODE_INPUT_OUTPUT
} gpio_mode_t;
typedef enum {
GPIO_ERROR_OK,
GPIO_ERROR_INVALID_ARG,
GPIO_ERROR_FAIL,
GPIO_ERROR_NOT_SUPPORTED,
GPIO_ERROR_TIMEOUT,
GPIO_ERROR_INVALID_STATE
} gpio_error_t;
typedef enum {
GPIO_PULL_PULLUP_DISABLE,
GPIO_PULL_PULLUP_ENABLE,
GPIO_PULL_PULLDOWN_DISABLE,
GPIO_PULL_PULLDOWN_ENABLE
} gpio_pull_t;
typedef enum {
GPIO_INT_TYPE_INTR_DISABLE,
GPIO_INT_TYPE_INTR_POSEDGE,
GPIO_INT_TYPE_INTR_NEGEDGE,
GPIO_INT_TYPE_INTR_ANYEDGE,
GPIO_INT_TYPE_INTR_LOW_LEVEL,
GPIO_INT_TYPE_INTR_HIGH_LEVEL
} gpio_int_type_t;
extern "C" {
__attribute__((import_module("gpio")))
__attribute__((import_name("gpio_set_level")))
extern gpio_error_t gpio_set_level(unsigned int gpio_num, unsigned int level);
__attribute__((import_module("gpio")))
__attribute__((import_name("gpio_reset_pin")))
extern gpio_error_t gpio_reset_pin(unsigned int gpio_num);
__attribute__((import_module("gpio")))
__attribute__((import_name("gpio_set_direction")))
extern gpio_error_t gpio_set_direction(unsigned int gpio_num, gpio_mode_t mode);
__attribute__((import_module("gpio")))
__attribute__((import_name("gpio_config")))
extern gpio_error_t gpio_config(unsigned long pin_bit_mask, gpio_mode_t mode, gpio_pull_t pull_up_en, gpio_pull_t pull_down_en, gpio_int_type_t intr_type);
__attribute__((import_module("gpio")))
__attribute__((import_name("gpio_get_level")))
extern unsigned int gpio_get_level(unsigned int gpio_num);
}