208 lines
8.2 KiB
C
208 lines
8.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 _INCLUDE_IOT_PLC_DEMO_H_
|
|
#define _INCLUDE_IOT_PLC_DEMO_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/********************** FOR USER CONFIGURATION ** START ***********************/
|
|
|
|
#define DEMO_APP_DEBUG_EN 1 /* enable data print debug or not.
|
|
demo_app_data_print() */
|
|
|
|
#define DEMO_PRINT_DEBUG 1 /* enable data print debug or not */
|
|
|
|
#define DEMO_APP_CTRL_LED 1 /* enable led function or not */
|
|
|
|
/********************** FOR USER CONFIGURATION ** END *************************/
|
|
|
|
/********************** FOR DEMO CONFIGURATION ** START ***********************/
|
|
|
|
#if DEMO_APP_DEBUG_EN
|
|
|
|
#define DEMO_APP_LOG_BUF_LEN (256) /* define the buffer length for
|
|
debug infon printing */
|
|
#endif /* DEMO_APP_DEBUG_EN */
|
|
|
|
#define DEMO_UART_RCV_BUF_LEN 256 /*demo uart recv buffer */
|
|
|
|
/* for demo debug print function */
|
|
#if DEMO_PRINT_DEBUG
|
|
|
|
#define DEMO_DEBUG_LOG(X0, X1, X2, X3, X4, X5, X6) \
|
|
iot_cus_printf((char *)X0, (int)X1, (int)X2, (int)X3, (int)X4, \
|
|
(int)X5, (int)X6);
|
|
|
|
#else /*DEMO_PRINT_DEBUG*/
|
|
|
|
#define DEMO_DEBUG_LOG(X0, X1, X2, X3, X4, X5, X6)
|
|
|
|
#endif /*DEMO_PRINT_DEBUG*/
|
|
|
|
#define DEMO_INFO(x0, x1, x2, x3, x4, x5, x6) \
|
|
DEMO_DEBUG_LOG("\r\n>>DEMO INFOR : " x0 "<<\r\n", x1, x2, x3, x4, \
|
|
x5, x6)
|
|
|
|
#define DEMO_ERROR(x0, x1, x2, x3, x4, x5, x6) \
|
|
DEMO_DEBUG_LOG("\r\n##DEMO ERROR : " x0 "##\r\n", x1, x2, x3, x4, \
|
|
x5, x6)
|
|
|
|
/* led configuration */
|
|
#define DEMO_LED_LIGHT_UP_FLAG 0 /* Low led pin level */
|
|
#define DEMO_LED_LIGHT_DOWN_FLAG 1 /* High led pin level */
|
|
#define DEMO_LED_TMR_PERIO 225 /* Time in micro-seconds. */
|
|
#define DEMO_LED_BLINK_RX_TM (DEMO_LED_TMR_PERIO)
|
|
#define DEMO_LED_BLINK_TX_TM (DEMO_LED_TMR_PERIO*4) /* 1S */
|
|
#define DEMO_LED_TM_FOREVER (-1)
|
|
#define DEMO_LED_RX_CONTINUE_TM 2000 /* 2s */
|
|
#define DEMO_LED_TX_CONTINUE_TM DEMO_LED_TM_FOREVER /* always blinking */
|
|
|
|
/* led attribute descriptor */
|
|
typedef struct _demo_led_struct {
|
|
uint32_t blink_time;
|
|
uint16_t load_perio;
|
|
uint16_t cur_perio;
|
|
uint16_t status;
|
|
uint8_t pin;
|
|
} dm_led_t;
|
|
|
|
/* led device descriptor */
|
|
typedef struct _demo_led_entity {
|
|
timer_id_t tmr_id; /* To triger repeatedly works. */
|
|
os_mutex_h sem_h;
|
|
dm_led_t tx; /* Designed to blinking all the time. */
|
|
dm_led_t rx; /* Designed to blinking when there are packets from
|
|
PLC-layer. */
|
|
} dm_led_dev_t;
|
|
|
|
/* msg task descriptor */
|
|
typedef struct _demo_msg_task {
|
|
iot_task_h handle; /* Task handle. */
|
|
iot_task_config_t cfg; /* Keep the task configuration. */
|
|
} dm_msg_task_t;
|
|
|
|
/* msg descriptor */
|
|
typedef struct _demo_msg {
|
|
iot_task_msg_t msg; /* The main entity of message. */
|
|
void *data; /* The user data inside this message. */
|
|
} dm_msg_t;
|
|
|
|
#define DEMO_APP_LINK_ID 2 /* maximum number of app connections */
|
|
|
|
typedef struct demo_device {
|
|
uint8_t rmt_valid; /* Indicates if the remote device is ready. */
|
|
uint8_t link_id; /* dev connections number. */
|
|
uint8_t dev_ready; /* Indicates if this local device is ready. */
|
|
uint8_t dev_role; /* This local device role, CCO or STA ... */
|
|
uint32_t dev_type; /* device type */
|
|
uint8_t mac_addr[IOT_MAC_ADDR_LEN];/* MAC of this local device. */
|
|
uint8_t cco_addr[IOT_MAC_ADDR_LEN];/* MAC of CCO in this topo. */
|
|
uint8_t rmt_addr[IOT_MAC_ADDR_LEN];/* MAC of remote device we
|
|
communicate with. */
|
|
uint32_t nid; /* The network ID of this topo. */
|
|
} dm_dev_t;
|
|
|
|
/* timer period to print core temperature. unit is ms */
|
|
#define DEMO_APP_TEMP_PRINT_TMR_PERIOD (5000)
|
|
/* timer period to check associated sta. unit is ms */
|
|
#define DEMO_APP_ASSOC_CHECK_TMR_PERIOD (1000)
|
|
/* minimum count of tmr period wait for sta to associate */
|
|
#define DEMO_APP_MIN_ASSOC_PERIODS (20)
|
|
/* medium count of tmr period wait for sta to associate */
|
|
#define DEMO_APP_MED_ASSOC_PERIODS (60)
|
|
/* maximum count of tmr period wait for sta to associate */
|
|
#define DEMO_APP_MAX_ASSOC_PERIODS (120)
|
|
/* count of whitelist entries to retrieve */
|
|
#define DEMO_APP_WL_QR_CNT (200)
|
|
/* size of bitmap. unit is byte */
|
|
#define DEMO_APP_BIT_MAP_SIZE (IOT_APP_WL_PIB_ADDR_CNT / 8 + 1)
|
|
|
|
/* demo app entity descriptor */
|
|
typedef struct _app_demo_entity {
|
|
iot_uart_h cmd_uart;
|
|
dm_msg_task_t msg_task; /* This task will process all messages and events
|
|
that from this very module. */
|
|
dm_led_dev_t led;
|
|
iot_plc_app_h app_hdl; /* The handle of this DEMO APP. */
|
|
uint32_t app_reg; /* Indicates if this APP has registered
|
|
to PLC-layer. */
|
|
dm_dev_t dev; /* Device information. */
|
|
timer_id_t tmr_assoc_check; /* timer id for associated sta check*/
|
|
uint8_t addr_bitmap[DEMO_APP_BIT_MAP_SIZE];
|
|
/* array used to mark associated sta */
|
|
uint32_t assoc_timeout_period; /* period of associated timeout */
|
|
uint32_t periods_count; /* count for tmr periods */
|
|
uint8_t assoc_done; /* label for all stas associated to network */
|
|
} app_dm_entity_t;
|
|
|
|
/* demo msg type */
|
|
typedef enum {
|
|
E_DEMO_MSG_START = 0,
|
|
E_DEMO_MSG_FROM_MAC, /* message type from plc */
|
|
E_DEMO_MSG_TIMER, /* message type from timer */
|
|
E_DEMO_MSG_PROCESS, /* message type from process */
|
|
E_DEMO_MSG_END
|
|
} e_msg_t;
|
|
|
|
/* demo message id */
|
|
typedef enum {
|
|
E_CMD_ID_START,
|
|
E_CMD_ID_RCV_FROM_PLC, /* message id of plc */
|
|
E_CMD_ID_RCV_FROM_UART, /* message id of uart */
|
|
E_CMD_ID_RCV_FROM_CLI, /* message id of cli */
|
|
E_CMD_ID_TMR_ASSOC_CHECK, /* message id of check connect */
|
|
E_CMD_ID_END
|
|
} e_cmd_id_t;;
|
|
|
|
/* demo event type */
|
|
typedef enum {
|
|
E_EVENT_START = 0,
|
|
E_EVENT_TIMR, /* timer event */
|
|
E_EVENT_END = 31
|
|
} e_ev_t;
|
|
|
|
#define DEMO_EVENT_VALID(ev) ((ev) <= E_EVENT_END && (ev) >= E_EVENT_START)
|
|
|
|
#ifndef EVENT_BIT
|
|
#define EVENT_BIT(n) (1 << (n))
|
|
#endif
|
|
|
|
/* demo task configuration */
|
|
#define DEMO_PLC_CMD_PRIO 3 /* plc application priority */
|
|
#define DEMO_TASK_MSG_PRIO 0 /* message priority */
|
|
#define DEMO_MSG_HANDLE_TASK_PRIO 8 /* task priority */
|
|
#define DEMO_MSG_TASK_PRIO_QUE 1 /* task message queue count */
|
|
#define DEMO_MSG_PENDING_LIMIT 64 /* task message count */
|
|
|
|
#define DEMO_MSG_VALID(msg) ((msg) > E_DEMO_MSG_START && (msg) < E_DEMO_MSG_END)
|
|
|
|
#define DEMO_TMR_PERIO 225 /* Time in micro-seconds. */
|
|
#define DEMO_RUN_STAMP_TM (DEMO_TMR_PERIO * 120) /* 30S */
|
|
#define DEMO_APP_QUERY_TM (DEMO_TMR_PERIO * 8) /* 2S */
|
|
#define DEMO_APP_SAMPL_TM (DEMO_TMR_PERIO * 20) /* 5S */
|
|
|
|
#define DEMO_APP_CONNLESS_RETRY_CNT (1) /* Retry cnt for conn less pkt */
|
|
|
|
/********************** FOR DEMO CONFIGURATION ** END *************************/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _INCLUDE_IOT_PLC_DEMO_H_ */
|
|
|