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_ */
							 |