12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #ifndef BITBANG_I2C_H
- #define BITBANG_I2C_H
- #include "hw/i2c/i2c.h"
- #define TYPE_GPIO_I2C "gpio_i2c"
- typedef struct bitbang_i2c_interface bitbang_i2c_interface;
- #define BITBANG_I2C_SDA 0
- #define BITBANG_I2C_SCL 1
- typedef enum bitbang_i2c_state {
- STOPPED = 0,
- SENDING_BIT7,
- SENDING_BIT6,
- SENDING_BIT5,
- SENDING_BIT4,
- SENDING_BIT3,
- SENDING_BIT2,
- SENDING_BIT1,
- SENDING_BIT0,
- WAITING_FOR_ACK,
- RECEIVING_BIT7,
- RECEIVING_BIT6,
- RECEIVING_BIT5,
- RECEIVING_BIT4,
- RECEIVING_BIT3,
- RECEIVING_BIT2,
- RECEIVING_BIT1,
- RECEIVING_BIT0,
- SENDING_ACK,
- SENT_NACK
- } bitbang_i2c_state;
- struct bitbang_i2c_interface {
- I2CBus *bus;
- bitbang_i2c_state state;
- int last_data;
- int last_clock;
- int device_out;
- uint8_t buffer;
- int current_addr;
- };
- /**
- * bitbang_i2c_init: in-place initialize the bitbang_i2c_interface struct
- */
- void bitbang_i2c_init(bitbang_i2c_interface *s, I2CBus *bus);
- int bitbang_i2c_set(bitbang_i2c_interface *i2c, int line, int level);
- #endif
|