146 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			146 lines
		
	
	
		
			4.2 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 _APP_CUS_TASK_H_
 | ||
|  | #define _APP_CUS_TASK_H_
 | ||
|  | 
 | ||
|  | #include "app_common.h"
 | ||
|  | #include "app_types.h"
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  |   extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #define APP_CUS_HANDLE_TASK_PRIO        (8)
 | ||
|  | #define APP_CUS_PENDING_LIMIT           (32)
 | ||
|  | #define APP_CUS_TASK_PRIO_QUE           (1)
 | ||
|  | #define APP_CUS_TASK_TIMER_PERIOD_MS    (1000)
 | ||
|  | 
 | ||
|  | typedef void (*iot_cus_task_mismatch_dlt645_proc_fn)(iot_pkt_t *pkt645); | ||
|  | 
 | ||
|  | typedef struct _iot_cus_task_t { | ||
|  |     /* task handle. */ | ||
|  |     iot_task_h          task; | ||
|  |     /* uart handle. */ | ||
|  |     iot_uart_h          uart_h; | ||
|  |     /* timer handle. */ | ||
|  |     timer_id_t          peroid_timer; | ||
|  | } iot_cus_task_t; | ||
|  | 
 | ||
|  | /* message type for customer task. */ | ||
|  | typedef enum { | ||
|  |     E_CUS_MSG_START = 0, | ||
|  |     /* customer task message from uart. */ | ||
|  |     E_CUS_MSG_FROM_UART, | ||
|  |     /* customer task message from customer task. */ | ||
|  |     E_CUS_MSG_FROM_CUSTASK, | ||
|  |     /* customer task message from main task. */ | ||
|  |     E_CUS_MSG_FROM_MAINTASK, | ||
|  |     /* customer task message from timer. */ | ||
|  |     E_CUS_MSG_FROM_TIMER, | ||
|  |     E_CUS_MSG_END | ||
|  | } iot_cus_task_msg_e; | ||
|  | 
 | ||
|  | /* message id for customer task. */ | ||
|  | typedef enum { | ||
|  |     E_CUS_MSG_ID_START = 0, | ||
|  |     /* customer task receive bytes from uart. */ | ||
|  |     E_CUS_MSG_ID_BYTES_RECV, | ||
|  |     /* customer task send bytes to uart or other task. */ | ||
|  |     E_CUS_MSG_ID_BYTES_SEND, | ||
|  |     /* customer task receive dlt645 frame from main task or uart. */ | ||
|  |     E_CUS_MSG_ID_645PKT_RECV, | ||
|  |     /* period timer of customer task triggered. */ | ||
|  |     E_CUS_MSG_ID_TMR_TRIGGER, | ||
|  |     /* on line or off line event to customer task. */ | ||
|  |     E_CUS_MSG_ID_ONOFF_LINE, | ||
|  |     E_CUS_MSG_ID_END | ||
|  | } iot_cus_task_msg_id_e; | ||
|  | 
 | ||
|  | #define APP_CUS_MSG_VALID(msg) ((msg)>E_CUS_MSG_START && (msg)<E_CUS_MSG_END)
 | ||
|  | 
 | ||
|  | typedef struct { | ||
|  |     /* The main entity of message. */ | ||
|  |     iot_task_msg_t      msg; | ||
|  |     /* The user data inside this message. */ | ||
|  |     void                *data; | ||
|  | } iot_cus_task_msg_t; | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cus_task_init() - Initialize customer task. | ||
|  |  * | ||
|  |  * @param None. | ||
|  |  * | ||
|  |  * @return ERR_OK : Initialize done; | ||
|  |  * @return ERR_FAIL : Initialize failed; | ||
|  |  */ | ||
|  | uint32_t iot_cus_task_init(void); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cus_task_msg_post() - Post message to customer task. | ||
|  |  * | ||
|  |  * @param [in] msg_type : message type, see iot_cus_task_msg_e. | ||
|  |  * @param [in] msg_id : message id, see iot_cus_task_msg_id_e. | ||
|  |  * @param [in] data : message data. | ||
|  |  * | ||
|  |  * @return ERR_OK : message post done; | ||
|  |  * @return ERR_FAIL : message post failed; | ||
|  |  */ | ||
|  | uint32_t iot_cus_task_msg_post(uint16_t msg_type, uint16_t msg_id, | ||
|  |     iot_pkt_t *data); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cus_task_onoffline_report() - report on/off line event to | ||
|  |  *          customer task. | ||
|  |  * | ||
|  |  * @param [in] dev_mac : device mac address. | ||
|  |  * @param [in] status : STA_ONLINE_EVENT or STA_OFFLINE_EVENT. | ||
|  |  * | ||
|  |  * @return ERR_OK : event report done; | ||
|  |  * @return ERR_FAIL : event report failed; | ||
|  |  */ | ||
|  | uint32_t iot_cus_task_onoffline_report(uint8_t *dev_mac, uint8_t status); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cus_task_mismatch_dlt645_handle_set() - set a handle for mismatch | ||
|  |  *          dlt645 frame. | ||
|  |  * | ||
|  |  * @param [in] handle. | ||
|  |  * | ||
|  |  * @return None. | ||
|  |  */ | ||
|  | void iot_cus_task_mismatch_dlt645_handle_set( | ||
|  |     iot_cus_task_mismatch_dlt645_proc_fn handle); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cus_task_get_uart_handle() - get uart handle. | ||
|  |  * | ||
|  |  * @param None. | ||
|  |  * | ||
|  |  * @return uart handle. | ||
|  |  */ | ||
|  | iot_uart_h iot_cus_task_get_uart_handle(void); | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief iot_cus_task_set_uart_handle() - set uart handle. | ||
|  |  * | ||
|  |  * @param [in] uart_h : uart handle. | ||
|  |  * | ||
|  |  * @return None. | ||
|  |  */ | ||
|  | void iot_cus_task_set_uart_handle(iot_uart_h uart_h); | ||
|  | 
 | ||
|  | #endif /* _APP_CUS_TASK_H_ */
 |