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