/*
Не блокирующая реализация I2C для микроконтроллеров STM32F030
Прерывания не используются
SPL используется только для выбора альтернативной функции
При желании можно настроить AF ручками и выкинуть SPL совсем
--------------------------
Автор Zlodey
masya-chel@mail.ru
masya-chel@yandex.ru
--------------------------
Март 2015г.
*/

#ifndef I2C_H	// Блокирую повторное включение этого модуля
#define I2C_H

//#include "main.h"
#include "stm32f4xx.h"  
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_i2c.h"
#include "reference.h"

typedef enum {
    RESULT_OK = 0,
	RESULT_I2C_FLAG_BUSY,
    RESULT_I2C_EVENT_MASTER_MODE_SELECT,
    RESULT_I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED,
    RESULT_I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED,
    RESULT_I2C_EVENT_MASTER_BYTE_TRANSMITTED,
    RESULT_I2C_EVENT_MASTER_BYTE_RECEIVED
} RESULT_I2C;

////////////////////////////////////////////////
//    Секция прототипов локальных функций     //
////////////////////////////////////////////////
void I2C_MyInit(void);
RESULT_I2C I2C_StartTransmission(I2C_TypeDef* I2Cx, uint8_t transmissionDirection,  uint8_t slaveAddress);
RESULT_I2C I2C_WriteData(I2C_TypeDef* I2Cx, uint8_t data);
uint8_t I2C_ReadData(I2C_TypeDef* I2Cx);
void I2C_MyStop(I2C_TypeDef* I2Cx);

#endif
