#ifndef _I2C_H_ #define _I2C_H_ #include void i2c_enumerate_interfaces(void); void i2c_close(int fd); int i2c_open(const char *path); void i2c_set_address(int fd, int address); int i2c_isconnected(void); void i2c_cmd_bootloader(int fd); void i2c_cmd_application(int fd); void i2c_cmd_getinfo(int fd, char *buf, int size); void i2c_cmd_getsignature(int fd, unsigned char *buf, int size); struct blmc_parameter { uint16_t spinup_ticks; uint8_t spinup_tick; uint8_t spinup_step; uint8_t spinup_wait; uint8_t spinup_pwm; uint8_t pwm_min; uint8_t pwm_max; uint16_t current_limit; uint16_t current_max; uint16_t voltage_min; uint16_t crc16; }; void i2c_cmd_getparameters(int fd, struct blmc_parameter *blmc); void i2c_cmd_setparameters(int fd, struct blmc_parameter *blmc, int persistent); int i2c_write_flash(int fd, const char *filename, void (*progress_cb)(int pos, int size)); int i2c_write_flash_buf(int fd, char *data, int size, void (*progress_cb)(int pos, int size)); int i2c_read_flash_buf(int fd, char *data, int size, void (*progress_cb)(int pos, int size)); int i2c_verify_flash_buf(int fd, char *data, int size, void (*progress_cb)(int pos, int size)); void i2c_cmd_setpwm(int fd, int pwm); struct blmc_status { uint8_t pwm_real; uint8_t pwm; uint16_t rpm; uint16_t current; uint16_t voltage; }; void i2c_cmd_getstatus(int fd, struct blmc_status *status); #endif /* _I2C_H_ */