116 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/****************************************************************************
 | 
						|
 | 
						|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
 | 
						|
 | 
						|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
 | 
						|
be copied by any method or incorporated into another program without
 | 
						|
the express written consent of Aerospace C.Power. This Information or any portion
 | 
						|
thereof remains the property of Aerospace C.Power. The Information contained herein
 | 
						|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
 | 
						|
liability for its use in any way and conveys no license or title under
 | 
						|
any patent or copyright and makes no representation or warranty that this
 | 
						|
Information is free from patent or copyright infringement.
 | 
						|
 | 
						|
****************************************************************************/
 | 
						|
#ifndef IOT_I2C_SLAVE_API_H
 | 
						|
#define IOT_I2C_SLAVE_API_H
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
#define IOT_I2C_DIRC_RD 1
 | 
						|
#define IOT_I2C_DIRC_WR 0
 | 
						|
 | 
						|
/*
 | 
						|
enum {
 | 
						|
    IOT_I2C_S_PORT_0 = 0,
 | 
						|
    IOT_I2C_S_PORT_1,
 | 
						|
    IOT_I2C_S_PORT_NUM,
 | 
						|
} IOT_I2C_S_PORT;*/
 | 
						|
#define IOT_I2C_S_PORT_0 0
 | 
						|
#define IOT_I2C_S_PORT_1 1
 | 
						|
#define IOT_I2C_S_PORT_NUM 2
 | 
						|
 | 
						|
typedef void (*iot_i2c_slave_cb)(bool_t);
 | 
						|
 | 
						|
typedef struct _iot_i2c_slave_gpio_sel {
 | 
						|
    uint8_t scl;
 | 
						|
    uint8_t sda;
 | 
						|
} iot_i2c_slave_gpio_sel_t;
 | 
						|
 | 
						|
typedef struct _iot_i2c_slave_cfg {
 | 
						|
    /** i2c port number */
 | 
						|
    uint8_t port;
 | 
						|
    /** i2c slave dev addr */
 | 
						|
    uint32_t addr;
 | 
						|
    /** gpio number select */
 | 
						|
    iot_i2c_slave_gpio_sel_t gpio;
 | 
						|
    /** write done callback */
 | 
						|
    iot_i2c_slave_cb callback;
 | 
						|
} iot_i2c_slave_cfg_t;
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief i2c slave initialize
 | 
						|
 *
 | 
						|
 * @param cfg           the pointer of i2c slave configure structure
 | 
						|
 *
 | 
						|
 * @return              0: slave device init successful
 | 
						|
 * @return              other: slave device init failed
 | 
						|
 */
 | 
						|
uint8_t iot_i2c_slave_init(iot_i2c_slave_cfg_t *cfg);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief i2c slave get recv data num
 | 
						|
 *
 | 
						|
 * @param port          the i2c slave port
 | 
						|
 *
 | 
						|
 * @return              0: slave device init successful
 | 
						|
 * @return              other: slave device init failed
 | 
						|
 */
 | 
						|
uint8_t iot_i2c_s_get_data_num(uint8_t port);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief i2c slave get status
 | 
						|
 *
 | 
						|
 * @param port          the i2c slave port
 | 
						|
 *
 | 
						|
 * @return              status
 | 
						|
 */
 | 
						|
uint32_t iot_i2c_s_get_st(uint8_t port);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief i2c slave clear status
 | 
						|
 *
 | 
						|
 * @param port          the i2c slave port
 | 
						|
 *
 | 
						|
 * @return              None
 | 
						|
 */
 | 
						|
void iot_i2c_s_clear_st(uint8_t port, uint8_t status);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief i2c slave read one byte from fifo
 | 
						|
 *
 | 
						|
 * @param port          the i2c slave port
 | 
						|
 *
 | 
						|
 * @return              read byte
 | 
						|
 */
 | 
						|
uint8_t iot_i2c_s_fifo_read_byte(uint8_t port);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief i2c slave write date
 | 
						|
 *
 | 
						|
 * @param port          the i2c slave port
 | 
						|
 * @param buf           the buffer will be send
 | 
						|
 * @param len           the length of the buffer
 | 
						|
 *
 | 
						|
 * @return              0 for succ otherwise false
 | 
						|
 */
 | 
						|
uint8_t iot_i2c_s_write_data(uint8_t port, uint8_t *buf, uint32_t len);
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* IOT_I2C_SLAVE_API_H */
 |