350 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			350 lines
		
	
	
		
			13 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 _IOT_PLC_DEV_TEST_H
							 | 
						||
| 
								 | 
							
								#define _IOT_PLC_DEV_TEST_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "iot_task_api.h"
							 | 
						||
| 
								 | 
							
								#include "iot_proto_dev_test.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								extern "C" {
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define UART_0_BAUD_RATE       9600
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define how many uart's baudrate is supported */
							 | 
						||
| 
								 | 
							
								#define SUPPORTED_BAUD_CNT     4
							 | 
						||
| 
								 | 
							
								/* default uart baudrate' index: 9600 */
							 | 
						||
| 
								 | 
							
								#define DEFAULT_BAUDRATE_INDEX 2
							 | 
						||
| 
								 | 
							
								/* define CKQ operation mode */
							 | 
						||
| 
								 | 
							
								typedef enum {
							 | 
						||
| 
								 | 
							
								    IOT_DEV_TEST_APP_MODE_M2S = 0,
							 | 
						||
| 
								 | 
							
								    IOT_DEV_TEST_APP_MODE_M2M = 1,
							 | 
						||
| 
								 | 
							
								    IOT_DEV_TEST_APP_MODE_MAX
							 | 
						||
| 
								 | 
							
								} iot_dev_test_app_mode;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* indicate how long the collector's mac is vailid, unit: 250ms */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_COLLECTOR_VAILID_CNT       80
							 | 
						||
| 
								 | 
							
								/* indicate whether clear the clollector's mac automaticly or not */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_COLLECTOR_AUTO_CLR         0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define flag to indicate switch to m2m mode or not */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_M2M_MODE_SWITCH_DISABLE    0
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_M2M_MODE_SWITCH_ENABLE     1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* indicate build CIU_TESTER or CIU */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_BUILD_CIU_TESTER           0
							 | 
						||
| 
								 | 
							
								/* indicate whether the dev_test support mutiband or not */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_SUPPORT_MUTIBAND           0
							 | 
						||
| 
								 | 
							
								/* indicate how to send mode cfg, broadcast or unicast,
							 | 
						||
| 
								 | 
							
								 * in HX's application, this should be 0
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_BROADCAST_MODD_CFG         1
							 | 
						||
| 
								 | 
							
								/* indicate whether the dev_test support pushed-data or not */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_HANDLE_PUSH_DATA_EN        0
							 | 
						||
| 
								 | 
							
								/* enable or disable to read the meter which belongs to the collector */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_SUPPORT_CT_MR_EN           0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define flag indicating local m2m sub mode */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_M2M_SUBMODE_CIU            0
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_M2M_SUBMODE_CIUTESTER      1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define flag to indicate CKQ addr is set or not */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_ADDR_NOT_SET          0
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_ADDR_SET              1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define flag to indicate succeed to query CIU addr or not*/
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_QUERY_CIU_ADDR_FAIL   0
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_QUERY_CIU_ADDR_SUCC   1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define priorities for message to be handle */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_TASK_QUEUE_HP         0
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_TASK_QUEUE_LP         1
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_TASK_QUEUE_MAX_PRIO   2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_TASK_LINK_ID          2
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_TASK_POOL_SIZE        128
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* message type */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_MAC_MSG               0
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_TIMER_MSG             1
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_UART_RECV_MSG         2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* message id for timer */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_TIMER_CHECK           1 /* check cache data in buffer */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_TIMER_QUERY_ADDR      2 /* query addr at m2m ciu mode */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* check cache data in sendq interval, unit is ms */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_PERIODIC_TIMER_INTERVAL  (250)
							 | 
						||
| 
								 | 
							
								/* count for boardcast sta connection_less's mode config interval */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_BCAST_TIMER_CNT          4
							 | 
						||
| 
								 | 
							
								/* max life-span cnt, which decide how long will the buff keep the frame info */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_MAX_LIFE_SPAN_CNT        24
							 | 
						||
| 
								 | 
							
								/* parameter sent to sta for meter reading timeout config, uint is 100ms */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_CFG_MR_TIMEOUT           16
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* query interval when query addr at m2m ciu mode, unit is ms */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_QUERY_ADDR_TIMER_INTERVAL  (1000)
							 | 
						||
| 
								 | 
							
								/* max cnt for querying ciu addr at m2m ciu mode */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_QUERY_ADDR_CNT_MAX       3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Macro to define msdu pkt pool number*/
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_POOL_NUM                 8
							 | 
						||
| 
								 | 
							
								/* UART received buffer size */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_UART_RECV_BUF_SIZE       512
							 | 
						||
| 
								 | 
							
								/* sta control configuring effective duration, unit is sec */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_MODE_CFG_DUR             30
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* uart frame protocal */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_PROTO_TYPE_TRANSPARENT   0
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_PROTO_TYPE_645_1997      1
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_PROTO_TYPE_645_2007      2
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_PROTO_TYPE_69845         3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define target device type ID */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_TARGET_ID_CCO            0
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_TARGET_ID_STA            1
							 | 
						||
| 
								 | 
							
								/* lenth of data buffer for DL/T 645-2007 cmd handling */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_DATA_BUFF_LEN            200
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* defining target device type identifier mask */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_TARGET_ID_MSK_CCO \
							 | 
						||
| 
								 | 
							
								    (1 << IOT_DEV_TEST_TARGET_ID_CCO)
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_TARGET_ID_MSK_STA \
							 | 
						||
| 
								 | 
							
								    (1 << IOT_DEV_TEST_TARGET_ID_STA)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* rerty invterval , unit is IOT_DEV_TEST_PERIODIC_TIMER_INTERVAL  */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_APP_MAX_RETRY_INTV_CNT     4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* magic code in flash head */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_FLASHINFO_MAGIC1  0xAA55AA55
							 | 
						||
| 
								 | 
							
								/* magic code in flash tail */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_FLASHINFO_MAGIC2  0x55AA55AA
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* max retry count for sending bootup indication */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_BOOT_IND_RETRY_MAX_CNT    3
							 | 
						||
| 
								 | 
							
								/* retry interval for sending bootup indication, uint: 250ms */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_BOOT_IND_RETRY_INTV       4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* reserved flash size for future usage */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_RESVD_FLASH_SIZE          55
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#pragma pack(push)      /* save the pack status */
							 | 
						||
| 
								 | 
							
								#pragma pack(1)         /* 1 byte align */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* writable section layout in PIB */
							 | 
						||
| 
								 | 
							
								typedef struct _iot_dev_test_pib_t {
							 | 
						||
| 
								 | 
							
								    /* 0xAA55AA55, the head of this struct */
							 | 
						||
| 
								 | 
							
								    uint32_t      magic1;
							 | 
						||
| 
								 | 
							
								    /* mac addr for push-data filter */
							 | 
						||
| 
								 | 
							
								    uint8_t       match_mac[IOT_MAC_ADDR_LEN];
							 | 
						||
| 
								 | 
							
								    /* counter of bootup */
							 | 
						||
| 
								 | 
							
								    uint8_t       boot_cnt;
							 | 
						||
| 
								 | 
							
								    /* UART baudrate index */
							 | 
						||
| 
								 | 
							
								    uint8_t       baud_index;
							 | 
						||
| 
								 | 
							
								    /* flag to mark if fix_ppm valid */
							 | 
						||
| 
								 | 
							
								    uint8_t       ppm_valid         : 1,
							 | 
						||
| 
								 | 
							
								    /* flag to mark if tool_ppm valid */
							 | 
						||
| 
								 | 
							
								                  tool_ppm_valid    : 1,
							 | 
						||
| 
								 | 
							
								    /* reserved for future usage */
							 | 
						||
| 
								 | 
							
								                  rsvd              : 6;
							 | 
						||
| 
								 | 
							
								    /* ppm value to be fixing */
							 | 
						||
| 
								 | 
							
								    int8_t        fix_ppm;
							 | 
						||
| 
								 | 
							
								    /* target device address for ppm value */
							 | 
						||
| 
								 | 
							
								    uint8_t       ppm_target_mac[IOT_MAC_ADDR_LEN];
							 | 
						||
| 
								 | 
							
								    /* ppm value from tool */
							 | 
						||
| 
								 | 
							
								    int8_t        tool_ppm;
							 | 
						||
| 
								 | 
							
								    /* reserved for future usage */
							 | 
						||
| 
								 | 
							
								    uint8_t       resv[IOT_DEV_TEST_RESVD_FLASH_SIZE];
							 | 
						||
| 
								 | 
							
								    /* 0x55AA55AA, the tail of this struct */
							 | 
						||
| 
								 | 
							
								    uint32_t      magic2;
							 | 
						||
| 
								 | 
							
								} iot_dev_test_pib_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#pragma pack(pop)   /* restore the pack status */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* store the frame and infor extracted from the frame */
							 | 
						||
| 
								 | 
							
								typedef struct _frame_pkt_t {
							 | 
						||
| 
								 | 
							
								    /* msdu sequnce number */
							 | 
						||
| 
								 | 
							
								    uint16_t        app_sn;
							 | 
						||
| 
								 | 
							
								    /* dst meter addresss */
							 | 
						||
| 
								 | 
							
								    uint8_t         dst_mac[IOT_MAC_ADDR_LEN];
							 | 
						||
| 
								 | 
							
								    /* type of protocol, see CONN_LESS_PROTO_TYPE_XXX */
							 | 
						||
| 
								 | 
							
								    uint8_t         p_type;
							 | 
						||
| 
								 | 
							
								    /* flag to mark if app_sn valid */
							 | 
						||
| 
								 | 
							
								    uint8_t         sn_valid    :1,
							 | 
						||
| 
								 | 
							
								    /* flag to mark if this package is used for ppm detect. */
							 | 
						||
| 
								 | 
							
								                    ppm_detect  :1,
							 | 
						||
| 
								 | 
							
								    /* reserved for future usage */
							 | 
						||
| 
								 | 
							
								                    rsvd        :6;
							 | 
						||
| 
								 | 
							
								    /* full 645/698 frame */
							 | 
						||
| 
								 | 
							
								    iot_pkt_t       *data;
							 | 
						||
| 
								 | 
							
								} frame_pkt_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* frame infor extracted from the frame */
							 | 
						||
| 
								 | 
							
								typedef struct _frame_info_t {
							 | 
						||
| 
								 | 
							
								    /* life-span counter */
							 | 
						||
| 
								 | 
							
								    uint16_t        span_cnt;
							 | 
						||
| 
								 | 
							
								    /* msdu been sent counter, 0 means the buffer is not used */
							 | 
						||
| 
								 | 
							
								    uint8_t         send_cnt;
							 | 
						||
| 
								 | 
							
								    /* frame data and releated infor */
							 | 
						||
| 
								 | 
							
								    frame_pkt_t     frm;
							 | 
						||
| 
								 | 
							
								} frame_info_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* frame infor pool */
							 | 
						||
| 
								 | 
							
								typedef struct _info_pool_t {
							 | 
						||
| 
								 | 
							
								    /* how many buffers are not used */
							 | 
						||
| 
								 | 
							
								    uint8_t         remain_cnt;
							 | 
						||
| 
								 | 
							
								    /* infor extracted from the frame */
							 | 
						||
| 
								 | 
							
								    frame_info_t    frm_info[IOT_DEV_TEST_POOL_NUM];
							 | 
						||
| 
								 | 
							
								} info_pool_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ppm detect record info */
							 | 
						||
| 
								 | 
							
								typedef struct _iot_dev_test_ppm_detect_info {
							 | 
						||
| 
								 | 
							
								    /* massage seq number */
							 | 
						||
| 
								 | 
							
								    uint16_t            sn;
							 | 
						||
| 
								 | 
							
								    /* ppm for send */
							 | 
						||
| 
								 | 
							
								    int8_t              fix_ppm;
							 | 
						||
| 
								 | 
							
								} iot_dev_test_ppm_detect_info_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct _iot_dev_test_msg {
							 | 
						||
| 
								 | 
							
								    /* standard iot_task message */
							 | 
						||
| 
								 | 
							
								    iot_task_msg_t  msg;
							 | 
						||
| 
								 | 
							
								    /* pointer to message data */
							 | 
						||
| 
								 | 
							
								    void            *data;
							 | 
						||
| 
								 | 
							
								}iot_dev_test_task_msg_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define ppm detect message info record buffer depth */
							 | 
						||
| 
								 | 
							
								#define IOT_DEV_TEST_PPM_DETECT_REC_MAX     10
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define PPM detect state */
							 | 
						||
| 
								 | 
							
								#define PPM_DETECT_STATE_IDLE               0
							 | 
						||
| 
								 | 
							
								#define PPM_DETECT_STATE_DONE               1
							 | 
						||
| 
								 | 
							
								#define PPM_DETECT_STATE_DOING              2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define ppm detect step */
							 | 
						||
| 
								 | 
							
								#define PPM_DETECT_STEP_VALUE               5
							 | 
						||
| 
								 | 
							
								#define PPM_DETECT_STEP_MAX_CNT             4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ppm detect control descriptor */
							 | 
						||
| 
								 | 
							
								typedef struct _iot_dev_test_ppm_detec_desc {
							 | 
						||
| 
								 | 
							
								    /* target address of the ppm detect */
							 | 
						||
| 
								 | 
							
								    uint8_t             ppm_target_mac[IOT_MAC_ADDR_LEN];
							 | 
						||
| 
								 | 
							
								    /* pm value detected */
							 | 
						||
| 
								 | 
							
								    int8_t              fix_ppm;
							 | 
						||
| 
								 | 
							
								    /* ppm detect state */
							 | 
						||
| 
								 | 
							
								    uint8_t             ppm_detect_state;
							 | 
						||
| 
								 | 
							
								    /* ppm detect message info record buffer */
							 | 
						||
| 
								 | 
							
								    iot_dev_test_ppm_detect_info_t ppm_detect_rec[\
							 | 
						||
| 
								 | 
							
								        IOT_DEV_TEST_PPM_DETECT_REC_MAX];
							 | 
						||
| 
								 | 
							
								    /* update index for ppm_detect_rec */
							 | 
						||
| 
								 | 
							
								    uint8_t             ppm_detect_rec_idx;
							 | 
						||
| 
								 | 
							
								    /* the number of valid information in "ppm_detect_rec" buffer */
							 | 
						||
| 
								 | 
							
								    uint8_t             ppm_detect_rec_cnt;
							 | 
						||
| 
								 | 
							
								    /* detecting ppm index */
							 | 
						||
| 
								 | 
							
								    uint8_t             ppm_detect_cnt;
							 | 
						||
| 
								 | 
							
								} iot_dev_test_ppm_detec_desc_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct _iot_dev_test_task_data {
							 | 
						||
| 
								 | 
							
								    /* app sending sequnce number for msdu */
							 | 
						||
| 
								 | 
							
								    uint16_t            app_sn;
							 | 
						||
| 
								 | 
							
								    /* sequence number for pushed-data pkt */
							 | 
						||
| 
								 | 
							
								    uint16_t            pushed_seq;
							 | 
						||
| 
								 | 
							
								    /* sequence number for config data */
							 | 
						||
| 
								 | 
							
								    uint16_t            config_seq;
							 | 
						||
| 
								 | 
							
								    /* handle of the ping iot_task */
							 | 
						||
| 
								 | 
							
								    iot_task_h          task_handle;
							 | 
						||
| 
								 | 
							
								    /* a flag indicating if app registered successfully */
							 | 
						||
| 
								 | 
							
								    uint8_t             app_registered;
							 | 
						||
| 
								 | 
							
								    /* link id used for sending msdu */
							 | 
						||
| 
								 | 
							
								    uint8_t             link_id;
							 | 
						||
| 
								 | 
							
								    /* tx link type, see IOT_DEV_TEST_LINK_TYPE_XX */
							 | 
						||
| 
								 | 
							
								    uint8_t             tx_link_type;
							 | 
						||
| 
								 | 
							
								    /* indication for device is ready for data transmition or not */
							 | 
						||
| 
								 | 
							
								    uint8_t             dev_ready;
							 | 
						||
| 
								 | 
							
								    /* device type */
							 | 
						||
| 
								 | 
							
								    uint8_t             dev_type;
							 | 
						||
| 
								 | 
							
								    /* role of local device */
							 | 
						||
| 
								 | 
							
								    uint8_t             dev_role;
							 | 
						||
| 
								 | 
							
								    /* operation mode of local device */
							 | 
						||
| 
								 | 
							
								    uint8_t             dev_mode;
							 | 
						||
| 
								 | 
							
								    /* flag indicating m2m test mode or not */
							 | 
						||
| 
								 | 
							
								    uint8_t             m2m_sub_mode;
							 | 
						||
| 
								 | 
							
								    /* user type */
							 | 
						||
| 
								 | 
							
								    uint8_t             user_type;
							 | 
						||
| 
								 | 
							
								    /* mac address of local device */
							 | 
						||
| 
								 | 
							
								    uint8_t             mac_addr[IOT_MAC_ADDR_LEN];
							 | 
						||
| 
								 | 
							
								    /* mac address of qsxj meter */
							 | 
						||
| 
								 | 
							
								    uint8_t             qsxj_addr[IOT_MAC_ADDR_LEN];
							 | 
						||
| 
								 | 
							
								    /* flag indicate in m2m mode, check receive pkt dst mac with self */
							 | 
						||
| 
								 | 
							
								    uint8_t             m2m_check_addr;
							 | 
						||
| 
								 | 
							
								    /* flag indicate in m2m ciu mode, succeed to query ciu addr or not */
							 | 
						||
| 
								 | 
							
								    uint8_t             m2m_ciu_query_addr;
							 | 
						||
| 
								 | 
							
								    /* frequency band value, see PLC_LIB_FREQ_BAND_X */
							 | 
						||
| 
								 | 
							
								    uint8_t             band_id;
							 | 
						||
| 
								 | 
							
								    /* flag to mark if ext configuration is enabled.
							 | 
						||
| 
								 | 
							
								     * 1 means enable, 0 means disable
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    uint8_t             ext_cfg_en;
							 | 
						||
| 
								 | 
							
								    /* ext configuration */
							 | 
						||
| 
								 | 
							
								    dev_test_ext_cfg_t  ext_cfg;
							 | 
						||
| 
								 | 
							
								    /* handle of this app */
							 | 
						||
| 
								 | 
							
								    iot_plc_app_h       app_handle;
							 | 
						||
| 
								 | 
							
								    /* timer to call api periodically */
							 | 
						||
| 
								 | 
							
								    timer_id_t          periodic_tm;
							 | 
						||
| 
								 | 
							
								    /* timer to query ciu addr periodically */
							 | 
						||
| 
								 | 
							
								    timer_id_t          query_addr_tm;
							 | 
						||
| 
								 | 
							
								    /* counter for querying addr at m2m ciu mode */
							 | 
						||
| 
								 | 
							
								    uint8_t             query_addr_cnt;
							 | 
						||
| 
								 | 
							
								    /* com for upper host */
							 | 
						||
| 
								 | 
							
								    void*               host_com;
							 | 
						||
| 
								 | 
							
								    /* frame infor pool */
							 | 
						||
| 
								 | 
							
								    info_pool_t         info_pool;
							 | 
						||
| 
								 | 
							
								    /* record the pib section's address */
							 | 
						||
| 
								 | 
							
								    uint8_t             *section;
							 | 
						||
| 
								 | 
							
								    /* flash info stored in PIB */
							 | 
						||
| 
								 | 
							
								    iot_dev_test_pib_t  flashinfo;
							 | 
						||
| 
								 | 
							
								    /* flag to indicate sending bootup indication is enabled or not */
							 | 
						||
| 
								 | 
							
								    uint32_t            boot_ind_en;
							 | 
						||
| 
								 | 
							
								    /* app SN for msdu data reporting's de-reprocessing*/
							 | 
						||
| 
								 | 
							
								    uint32_t            stored_app_sn;
							 | 
						||
| 
								 | 
							
								    /* collector's address */
							 | 
						||
| 
								 | 
							
								    uint8_t             collector[IOT_MAC_ADDR_LEN];
							 | 
						||
| 
								 | 
							
								    /* indicate whether the collector's address is vaild or not */
							 | 
						||
| 
								 | 
							
								    uint16_t            collector_vaild     :1,
							 | 
						||
| 
								 | 
							
								    /* indicate how long the collector's address will be vaild */
							 | 
						||
| 
								 | 
							
								                        collector_vaild_cnt :15;
							 | 
						||
| 
								 | 
							
								    /* ppm ctrl desc */
							 | 
						||
| 
								 | 
							
								    iot_dev_test_ppm_detec_desc_t ppm_desc;
							 | 
						||
| 
								 | 
							
								    /* dlt645-2007 data buffer */
							 | 
						||
| 
								 | 
							
								    uint8_t             data_buf[IOT_DEV_TEST_DATA_BUFF_LEN];
							 | 
						||
| 
								 | 
							
								}iot_dev_test_task_data_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * brief: entry for dev_test app
							 | 
						||
| 
								 | 
							
								 * @return:
							 | 
						||
| 
								 | 
							
								 * @retval: ERR_PENDING - if app want to delay the plc network formation.
							 | 
						||
| 
								 | 
							
								 * @retval: other       - plc network formation will be started automatically.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t app_dev_test_entry();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif  //_IOT_PLC_DEV_TEST_H
							 | 
						||
| 
								 | 
							
								
							 |