141 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			141 lines
		
	
	
		
			4.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_CUS_PORTS_H__
 | ||
|  | #define __IOT_CUS_PORTS_H__
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief enum _iot_cus_task_port_id_e - List of PIDs. | ||
|  |  */ | ||
|  | enum _iot_cus_task_port_id_e { | ||
|  |     PID_UART        = 0, | ||
|  |     PID_RF          = 1, | ||
|  |     PID_BLE         = 2, | ||
|  |     PID_LORA        = 3, | ||
|  |     PID_ZIGBEE      = 4, | ||
|  |     PID_ETH         = 5, | ||
|  |     PID_MAX | ||
|  | }; | ||
|  | 
 | ||
|  | #define port_valid(p)   ((p) >= PID_UART && (p) < PID_MAX)
 | ||
|  | 
 | ||
|  | #ifndef bit
 | ||
|  | #define bit(b)  (1 << (b))
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief enum _iot_cus_task_port_event_e - List of events. | ||
|  |  */ | ||
|  | enum _iot_cus_task_port_event_e { | ||
|  |     EVT_INVALID     = 0, | ||
|  |     EVT_DOUT_DONE   = bit(0), | ||
|  |     EVT_DIN_DONE    = bit(1), | ||
|  |     EVT_MAX         = bit(2) | ||
|  | }; | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief init_fn() - Initialize the port. | ||
|  |  * @param pid: port id. | ||
|  |  * @param cfg: configuration for this port. | ||
|  |  * @return ERR_FAIL -- Operation failed. | ||
|  |  * @return ERR_OK -- Operation Successful. | ||
|  |  */ | ||
|  | typedef uint32_t (*init_fn)(uint32_t pid, void *cfg); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief ready_fn() - Get status of port. | ||
|  |  * @return 1 -- port is ready. | ||
|  |  * @return 0 -- port is not ready. | ||
|  |  */ | ||
|  | typedef uint32_t (*ready_fn)(void); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief timer_fn() - every XXX ms, this handler will be called. | ||
|  |  * @param t_time: delta time in ms. | ||
|  |  */ | ||
|  | typedef void (*timer_fn)(uint32_t delta); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief write_fn() - write data to the port. | ||
|  |  * @param buf: pointer of buffer. | ||
|  |  * @param length: count of bytes to write. | ||
|  |  * @return -- count of bytes was written. | ||
|  |  */ | ||
|  | typedef int (*write_fn)(char *buf, uint32_t length); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief read_fn() - read data from the port. | ||
|  |  * @param buf: pointer of buffer. | ||
|  |  * @param length: count of bytes to read. | ||
|  |  * @return -- count of bytes was read. | ||
|  |  */ | ||
|  | typedef int (*read_fn)(char *buf, uint32_t length); | ||
|  | 
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief struct _iot_cus_ports_api_t - APIs defination for port driver. | ||
|  |  */ | ||
|  | typedef struct _iot_cus_ports_api_t { | ||
|  |     int         pid; | ||
|  |     init_fn     p_init; | ||
|  |     ready_fn    p_ready; | ||
|  |     timer_fn    p_timer; | ||
|  |     write_fn    p_write; | ||
|  |     read_fn     p_read; | ||
|  | } iot_cus_ports_api_t; | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cus_ports_event_post() - post events to cus-task. | ||
|  |  * @param pid: pid of this port. | ||
|  |  * @param events: event to post. | ||
|  |  */ | ||
|  | void iot_cus_ports_event_post(uint32_t pid, uint32_t events); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cus_ports_init() - Initialize all of the ports. | ||
|  |  * @return ERR_FAIL -- Operation failed. | ||
|  |  * @return ERR_OK -- Operation Successful. | ||
|  |  */ | ||
|  | uint32_t iot_cus_ports_init(void); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cus_ports_timer_handle() - every XXX ms, this handler will be called. | ||
|  |  * @param delta_time: delta time in ms. | ||
|  |  */ | ||
|  | void iot_cus_ports_timer_handle(uint32_t delta_time); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cus_ports_send() - write data to the port. | ||
|  |  * @param port: port number. | ||
|  |  * @param buf: pointer of buffer. | ||
|  |  * @param length: count of bytes to write. | ||
|  |  * @return -- count of bytes was written. | ||
|  |  */ | ||
|  | uint32_t iot_cus_ports_send(uint32_t port, uint8_t *buf, uint32_t len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cus_all_ports_write() - try to write data to all port. | ||
|  |  * @param buf: pointer of buffer. | ||
|  |  * @param length: count of bytes to write. | ||
|  |  * @return -- count of bytes was written. | ||
|  |  */ | ||
|  | void iot_cus_all_ports_write(uint8_t *buf, uint32_t len); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cus_ports_event_handle() - Ports events handle. | ||
|  |  */ | ||
|  | void iot_cus_ports_event_handle(void); | ||
|  | 
 | ||
|  | #endif /* __IOT_CUS_PORTS_H__ */
 |