move wokwi files into simulation
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
#ifndef WOKWI_API_H
|
||||
#define WOKWI_API_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
typedef int32_t pin_t;
|
||||
#define NO_PIN ((pin_t)-1)
|
||||
|
||||
enum pin_mode {
|
||||
INPUT = 0,
|
||||
OUTPUT = 1,
|
||||
INPUT_PULLUP = 2,
|
||||
INPUT_PULLDOWN = 3,
|
||||
ANALOG = 4,
|
||||
OUTPUT_LOW = 16,
|
||||
OUTPUT_HIGH = 17,
|
||||
};
|
||||
|
||||
enum edge {
|
||||
RISING = 1,
|
||||
FALLING = 2,
|
||||
BOTH = 3,
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
void *user_data;
|
||||
uint32_t edge;
|
||||
void (*pin_change)(void *user_data, pin_t pin, uint32_t value);
|
||||
} pin_watch_config_t;
|
||||
|
||||
typedef struct {
|
||||
void *user_data;
|
||||
pin_t sck;
|
||||
pin_t mosi;
|
||||
pin_t miso;
|
||||
uint32_t mode;
|
||||
void (*done)(void *user_data, uint8_t *buffer, uint32_t count);
|
||||
uint32_t reserved[8];
|
||||
} spi_config_t;
|
||||
|
||||
typedef uint32_t spi_dev_t;
|
||||
|
||||
typedef struct {
|
||||
void *user_data;
|
||||
uint32_t address;
|
||||
pin_t scl;
|
||||
pin_t sda;
|
||||
bool (*connect)(void *user_data, uint32_t address, bool read);
|
||||
uint8_t (*read)(void *user_data);
|
||||
bool (*write)(void *user_data, uint8_t data);
|
||||
void (*disconnect)(void *user_data);
|
||||
uint32_t reserved[8];
|
||||
} i2c_config_t;
|
||||
|
||||
typedef uint32_t i2c_dev_t;
|
||||
|
||||
typedef uint32_t buffer_t;
|
||||
|
||||
extern __attribute__((export_name("chipInit"))) void chip_init(void);
|
||||
extern __attribute__((import_name("pinInit"))) pin_t pin_init(const char *name, uint32_t mode);
|
||||
extern __attribute__((import_name("pinWatch"))) bool pin_watch(pin_t pin, const pin_watch_config_t *config);
|
||||
extern __attribute__((import_name("pinWatchStop"))) void pin_watch_stop(pin_t pin);
|
||||
extern __attribute__((import_name("pinMode"))) void pin_mode(pin_t pin, uint32_t value);
|
||||
extern __attribute__((import_name("pinRead"))) uint32_t pin_read(pin_t pin);
|
||||
extern __attribute__((import_name("pinWrite"))) void pin_write(pin_t pin, uint32_t value);
|
||||
extern __attribute__((import_name("spiInit"))) spi_dev_t spi_init(const spi_config_t *config);
|
||||
extern __attribute__((import_name("spiStart"))) void spi_start(const spi_dev_t spi, uint8_t *buffer, uint32_t count);
|
||||
extern __attribute__((import_name("spiStop"))) void spi_stop(const spi_dev_t spi);
|
||||
extern __attribute__((import_name("i2cInit"))) i2c_dev_t i2c_init(const i2c_config_t *config);
|
||||
extern __attribute__((import_name("framebufferInit"))) buffer_t framebuffer_init(uint32_t *pixel_width, uint32_t *pixel_height);
|
||||
extern __attribute__((import_name("bufferWrite"))) void buffer_write(buffer_t buffer, uint32_t offset, void *data, uint32_t data_len);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user