152 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			152 lines
		
	
	
		
			4.6 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_CLI_RATTE_TEST_H
 | ||
|  | #define IOT_CLI_RATTE_TEST_H
 | ||
|  | 
 | ||
|  | /* os shim includes */ | ||
|  | #include "os_types.h"
 | ||
|  | #include "iot_utils_api.h"
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #pragma pack(push)  /* save the pack status */
 | ||
|  | #pragma pack(1)     /* 1 byte align */
 | ||
|  | 
 | ||
|  | #define IOT_PLC_RATE_TEST_INTERVAL              100
 | ||
|  | #define IOT_PLC_RATE_TEST_TICKS_SECOND          (1000 / IOT_PLC_RATE_TEST_INTERVAL)
 | ||
|  | 
 | ||
|  | #define IOT_PLC_RATE_TEST_INIT                  0
 | ||
|  | #define IOT_PLC_RATE_TEST_SENDER                1
 | ||
|  | #define IOT_PLC_RATE_TEST_RECVER                2
 | ||
|  | #define IOT_PLC_RATE_TEST_STOP                  3
 | ||
|  | #define IOT_PLC_RATE_TEST_IN_TEST               4
 | ||
|  | 
 | ||
|  | #define IOT_PLC_RATE_TEST_HEADER_SIZE           100
 | ||
|  | #define IOT_PLC_RATE_TEST_DEFAULT_MSDU_SIZE     520
 | ||
|  | #define IOT_PLC_RATE_TEST_DEFAULT_DURATION      10000
 | ||
|  | #define IOT_PLC_RATE_TEST_MAX_TICKS             50
 | ||
|  | #define IOT_PLC_RATE_TEST_RESULT_TICKS          20
 | ||
|  | #define IOT_PLC_RATE_TEST_STOP_TICKS            10
 | ||
|  | 
 | ||
|  | typedef struct _iot_plc_host_rate_test_t { | ||
|  |     /* if down link rate test */ | ||
|  |     uint8_t                downlink; | ||
|  |     /* rate test state */ | ||
|  |     uint8_t                rate_test_state; | ||
|  |     /* recv packets num */ | ||
|  |     uint16_t               msdu_size; | ||
|  |     /* rate test send rate */ | ||
|  |     uint16_t               send_rate; | ||
|  |     /* rate test duration */ | ||
|  |     uint16_t               test_duration; | ||
|  |     /* recv packets */ | ||
|  |     uint32_t               recv_packets; | ||
|  |     /* rate test id */ | ||
|  |     uint32_t               test_id; | ||
|  |     /* timer for retry sending */ | ||
|  |     timer_id_t             rate_test_timer; | ||
|  |     /* send packet index */ | ||
|  |     uint32_t               send_packet_idx; | ||
|  |     /* packets per second */ | ||
|  |     uint16_t               pakcets_per_second; | ||
|  |     /* ticks count */ | ||
|  |     uint16_t               ticks_count; | ||
|  |     /* dst for rate test */ | ||
|  |     uint8_t                dst[6]; | ||
|  |     uint8_t                rate_test_result; | ||
|  |     /*define which device launch the rate test*/ | ||
|  |     uint8_t                launch_mac[6]; | ||
|  | } iot_plc_host_rate_test_t; | ||
|  | 
 | ||
|  | /** rate test param */ | ||
|  | typedef struct _cli_host_rate_test_param | ||
|  | { | ||
|  |     uint32_t test_id; | ||
|  |     /** if downlink test */ | ||
|  |     uint8_t downlink; | ||
|  |     /** msdu size */ | ||
|  |     uint16_t msdu_size; | ||
|  |     /** send rate */ | ||
|  |     uint16_t send_rate; | ||
|  |     /** test duration */ | ||
|  |     uint16_t test_duration; | ||
|  |     /** test dst addr */ | ||
|  |     uint8_t dst[6]; | ||
|  | } cli_host_rate_test_param; | ||
|  | 
 | ||
|  | /** rate test start ack */ | ||
|  | typedef struct _cli_host_rate_test_param_ack | ||
|  | { | ||
|  |     /** if downlink test */ | ||
|  |     uint8_t downlink; | ||
|  | } cli_host_rate_test_param_ack; | ||
|  | 
 | ||
|  | /** rate test stop */ | ||
|  | typedef struct _cli_host_rate_test_stop | ||
|  | { | ||
|  |     /** if downlink test */ | ||
|  |     uint8_t downlink; | ||
|  | } cli_host_rate_test_stop; | ||
|  | 
 | ||
|  | /** rate test stop ack */ | ||
|  | typedef struct _cli_host_rate_test_stop_ack | ||
|  | { | ||
|  |     /** if downlink test */ | ||
|  |     uint8_t downlink; | ||
|  | } cli_host_rate_test_stop_ack; | ||
|  | 
 | ||
|  | /** rate test packet */ | ||
|  | typedef struct _cli_host_test_rate_packet | ||
|  | { | ||
|  |     /** test id */ | ||
|  |     uint32_t test_id; | ||
|  |     /** packet id */ | ||
|  |     uint32_t packet_idx; | ||
|  |     /** test duration */ | ||
|  |     uint16_t test_duration; | ||
|  | } cli_host_test_rate_packet; | ||
|  | 
 | ||
|  | /** test rate result */ | ||
|  | typedef struct _cli_host_test_rate_result | ||
|  | { | ||
|  |     uint32_t test_id; | ||
|  |     /** result rate */ | ||
|  |     uint32_t recv_pkts; | ||
|  |     /** if downlink test */ | ||
|  |     uint8_t downlink; | ||
|  |     /** test dst addr */ | ||
|  |     uint8_t dst[6]; | ||
|  | } cli_host_test_rate_result; | ||
|  | 
 | ||
|  | void cli_recv_rate_test_packet( | ||
|  |     uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac); | ||
|  | void cli_recv_rate_test_result( | ||
|  |     uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac); | ||
|  | void cli_rate_test_start(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac); | ||
|  | void cli_rate_test_stop(uint8_t *buffer, uint32_t bufferlen, uint8_t *src_mac); | ||
|  | void cli_rate_test_stop_ack(uint8_t *buffer, uint32_t bufferlen); | ||
|  | void iot_cli_rate_test_handle_timer_msg(); | ||
|  | void iot_cli_rate_test_init(); | ||
|  | void iot_cli_rate_test_deinit(); | ||
|  | 
 | ||
|  | #pragma pack(pop)   /* restore the pack status */
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif
 |