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