#ifndef I2C_H
#define I2C_H
#include "globals.h"
typedef enum
{
e_i2c_no_err = 1,
e_i2c_err_start_condition, // ошибка установки стартового сигнала на шине
e_i2c_err_sla, // ошибка отправки адреса слейва или нет подтверждения приема от слейва
e_i2c_err_data, // ошибка отправки данных или нет подтверждения приема от слейва
e_i2c_err_internal_soft, // внутренная софтовая ошибка
e_i2c_transfer_ok = 255,
}i2c_errors;
void i2c_init( void );
void i2c_set_addr_slave( u8 addr );
void i2c_reset( void );
u8 i2c_write( u8 *from, u8 len, u8 *bytes_transfer_cnt_in );
u8 i2c_read( u8 *dest, u8 len, u8 *bytes_transfer_cnt_in );
u8 i2c_write_to( u8 *from, u8 len, u8 addr, u8 *bytes_transfer_cnt_in );
u8 i2c_read_from( u8 *dest, u8 len, u8 addr, u8 *bytes_transfer_cnt_in );
i2c_errors i2c_get_last_err( void );
typedef void(*i2c_callback_on_finish)( void );
void i2c_set_callback_func( i2c_callback_on_finish f_ptr );
u8 i2c_is_busy( void );