1272 lines
42 KiB
C
Executable File
1272 lines
42 KiB
C
Executable File
/****************************************************************************
|
|
|
|
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_FTM_MSG_H
|
|
#define IOT_FTM_MSG_H
|
|
|
|
/* os shim includes */
|
|
#include "os_types.h"
|
|
#include "mac_sched_hw.h"
|
|
#include "plc_protocol.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* pack for the structures in the whole file */
|
|
#pragma pack(push) /* save the pack status */
|
|
#pragma pack(1) /* 1 byte align */
|
|
|
|
/* define max packet length for command */
|
|
#define IOT_FTM_CMD_MAX_LEN 8000
|
|
|
|
/* define max packet length for event */
|
|
#define IOT_FTM_EVENT_MAX_LEN 8000
|
|
|
|
#define MAX_FTM_CMD_CNT 6
|
|
#define MAX_FTM_HWQ_NUM 24
|
|
#define MAX_FTM_RF_HWQ_NUM 8
|
|
#define MAX_PKT_SIZE 520
|
|
|
|
/* ftm command id definition */
|
|
#define IOT_FTM_CMD_ID_PING 0x0001 /* ping command for test purose */
|
|
#define IOT_FTM_CMD_ID_READ 0x0002
|
|
#define IOT_FTM_CMD_ID_WRITE 0x0003
|
|
#define IOT_FTM_CMD_ID_TX 0x0004
|
|
#define IOT_FTM_CMD_ID_RX 0x0005
|
|
#define IOT_FTM_CMD_ID_TONE 0x0006
|
|
#define IOT_FTM_CMD_ID_STS 0x0007
|
|
#define IOT_FTM_CMD_ID_SET 0x0008
|
|
#define IOT_FTM_CMD_ID_GET 0x0009
|
|
#define IOT_FTM_CMD_ID_SCAN 0x000a
|
|
#define IOT_FTM_CMD_ID_HWQCFG 0X000b
|
|
#define IOT_FTM_CMD_ID_PKTCFG 0X000c
|
|
#define IOT_FTM_CMD_ID_TESTCASE 0X000d
|
|
#define IOT_FTM_CMD_ID_MAC_RECE 0X000e
|
|
#define IOT_FTM_CMD_ID_MAC_RECE_SNIFFER 0X000f
|
|
#define IOT_FTM_CMD_ID_RINGCFG 0x0010
|
|
#define IOT_FTM_CMD_ID_SET_FILTERSEL 0x0011
|
|
#define IOT_FTM_CMD_ID_SET_FILTER 0x0012
|
|
#define IOT_FTM_CMD_ID_SET_RINGDIS 0x0013
|
|
#define IOT_FTM_CMD_ID_SNIFFERCFG 0x0014
|
|
#define IOT_FTM_CMD_ID_RX_MSG_SHOW 0x0015
|
|
#define IOT_FTM_CMD_ID_CMD_CFG 0x0016
|
|
#define IOT_FTM_CMD_ID_CRC_CFG 0x0017
|
|
#define IOT_FTM_CMD_ID_MAC_PING 0x0018
|
|
#define IOT_FTM_CMD_ID_SET_TEINID 0x0019
|
|
#define IOT_FTM_CMD_ID_CLEAR_COUNT 0x001A
|
|
#define IOT_FTM_CMD_ID_SEND_COUNT 0x001B
|
|
#define IOT_FTM_CMD_ID_TPUT_TEST 0x001C
|
|
#define IOT_FTM_CMD_ID_DIS_HWQ 0x001D
|
|
#define IOT_FTM_CMD_ID_LOAD_DATA 0x001E
|
|
#define IOT_FTM_CMD_ID_I2C_WRITE 0x001F
|
|
#define IOT_FTM_CMD_ID_I2C_READ 0x0020
|
|
#define IOT_FTM_CMD_ID_GPIO_OUT 0x0021
|
|
#define IOT_FTM_CMD_ID_GPIO_IN 0x0022
|
|
#define IOT_FTM_CMD_ID_UART_LOOPBACK 0x0023
|
|
#define IOT_FTM_CMD_ID_SPI_FLASH 0x0024
|
|
#define IOT_FTM_CMD_ID_READ_CHIPID 0x0025
|
|
#define IOT_FTM_CMD_ID_READ_FW_VER 0x0026
|
|
#define IOT_FTM_CMD_ID_BURN_MAC 0x0027
|
|
#define IOT_FTM_CMD_ID_SEND_REV_DATA 0x0028
|
|
#define IOT_FTM_CMD_ID_GOLDEN_REV_DATA 0x0029
|
|
#define IOT_FTM_CMD_ID_SET_PHY_PARA 0x002a
|
|
#define IOT_FTM_CMD_ID_READ_MAC 0x002b
|
|
#define IOT_FTM_CMD_ID_INIT_DONE 0x002c
|
|
#define IOT_FTM_CMD_ID_EFUSE_LOCK 0x002d
|
|
#define IOT_FTM_CMD_ID_SPUR_MASK_SET 0x002e
|
|
#define IOT_FTM_CMD_ID_OEM_MODULETYPE_SET 0x002f
|
|
#define IOT_FTM_CMD_ID_OEM_MODULETYPE_GET 0x0030
|
|
#define IOT_FTM_CMD_ID_VENDOR_ID_SET 0x0031
|
|
#define IOT_FTM_CMD_ID_CHIP_CODE_SET 0x0032
|
|
#define IOT_FTM_CMD_ID_CHIP_CODE_GET 0x0033
|
|
#define IOT_FTM_CMD_ID_SET_PPM_NID 0x0034
|
|
#define IOT_FTM_CMD_ID_GLB_NID_SET 0x0035
|
|
#define IOT_FTM_CMD_ID_CUS_CMD 0x0036
|
|
#define IOT_FTM_CMD_ID_VENDOR_ID_GET 0x0037
|
|
#define IOT_FTM_CMD_ID_CHIP_MMID_GET 0x0038
|
|
#define IOT_FTM_CMD_ID_ZC_CIRCUIT_CHECK 0x0039
|
|
#define IOT_FTM_CMD_ID_DISABEL_GPIO_RESET 0x003a
|
|
#define IOT_FTM_CMD_ID_DUT_CHARGE_VOL_GET 0x003b
|
|
#define IOT_FTM_CMD_ID_FW_CRC_CHECK 0x003c
|
|
#define IOT_FTM_CMD_ID_DEV_ID_SET 0x003d
|
|
#define IOT_FTM_CMD_ID_DEV_ID_GET 0x003e
|
|
#define IOT_FTM_CMD_ID_PT_FW_VER_GET 0x003f
|
|
#define IOT_FTM_CMD_ID_HW_VER_SET 0x0040
|
|
#define IOT_FTM_CMD_ID_HW_VER_GET 0x0041
|
|
#define IOT_FTM_CMD_ID_DUT_CHANNEL_VOL_GET 0x0042
|
|
#define IOT_FTM_CMD_ID_DUT_TXRX_MODE_SET 0x0043
|
|
#define IOT_FTM_CMD_ID_FLASH_ID_GET 0x0044
|
|
#define IOT_FTM_CMD_ID_MAC_ADDR_UPDATE 0x0045
|
|
#define IOT_FTM_CMD_ID_BURN_IP_INFO 0x0046
|
|
#define IOT_FTM_CMD_ID_READ_IP_INFO 0x0047
|
|
#define IOT_FTM_CMD_ID_CHIP_MMID_SET 0x0048
|
|
#define IOT_FTM_CMD_ID_CHECK_IMG_CRC 0x0049
|
|
#define IOT_FTM_CMD_ID_METER_CROSSTALK_SET 0x004a
|
|
#define IOT_FTM_CMD_ID_METER_CROSSTALK_GET 0x004b
|
|
#define IOT_FTM_CMD_ID_SOFT_RESTART 0x004c
|
|
#define IOT_FTM_CMD_ID_EM_EXT_FUNC 0x004d
|
|
#define IOT_FTM_CMD_ID_PASSCODE_GET 0x004e
|
|
#define IOT_FTM_CMD_ID_EXT_FLASH_CHECK 0x004f
|
|
#define IOT_FTM_CMD_ID_BRK_START_STOP_LOOPBACK 0x0050
|
|
#define IOT_FTM_CMD_ID_BRK_ENABLE_INT 0x0051
|
|
#define IOT_FTM_CMD_ID_BRK_QUERY_TRIGGER_CNT 0x0052
|
|
#define IOT_FTM_CMD_ID_READ_BCD_MAC 0x0053
|
|
#define IOT_FTM_CMD_ID_LOADER_TSFM 0x0054
|
|
#define IOT_FTM_CMD_ID_CHANNEL_ADC_READ 0x0055
|
|
#define IOT_FTM_CMD_ID_METER_PORT_UART_LOOPBACK 0x0056
|
|
#define IOT_FTM_CMD_ID_SET_PT_FW_VER 0x0057
|
|
#define IOT_FTM_CMD_ID_TEMP_CALI_SET 0x0058
|
|
#define IOT_FTM_CMD_ID_TEMP_CALI_GET 0x0059
|
|
#define IOT_FTM_CMD_ID_MAC_PHY_DIAGNOSTIC 0x005A
|
|
#define IOT_FTM_CMD_ID_ADC_CALI_SET 0x005B
|
|
#define IOT_FTM_CMD_ID_ADC_CALI_GET 0x005C
|
|
#define IOT_FTM_CMD_ID_ADC_READ_REAL 0x005D
|
|
#define IOT_FTM_CMD_ID_PHY_RF_TXIQM_CAL_W 0x005E
|
|
#define IOT_FTM_CMD_ID_PHY_RF_TXIQM_CAL_R 0x005F
|
|
#define IOT_FTM_CMD_ID_RF_PHY_TX_TONE 0x0060
|
|
#define IOT_FTM_CMD_ID_RF_SPI_SYNC 0x0061
|
|
#define IOT_FTM_CMD_ID_PHY_RF_TXF_CAL_W 0x0062
|
|
#define IOT_FTM_CMD_ID_PHY_RF_TXF_CAL_R 0x0063
|
|
#define IOT_FTM_CMD_ID_MP_RF_TEST 0x0064
|
|
#define IOT_FTM_CMD_ID_RF_TRS_CHK 0x0065
|
|
#define IOT_FTM_CMD_ID_EFUSE_CHECK 0x0066
|
|
#define IOT_FTM_CMD_ID_MP_RF_CAL_CFG 0x0067
|
|
#define IOT_FTM_CMD_ID_MP_RF_CAL_MEAS 0x0068
|
|
#define IOT_FTM_CMD_ID_MP_RF_CAL_UPDATE 0x0069
|
|
#define IOT_FTM_CMD_ID_POWER_SYNC 0x006A
|
|
#define IOT_FTM_CMD_ID_SECURITY_CFG_SET 0x006B
|
|
#define IOT_FTM_CMD_ID_SECURITY_CFG_GET 0x006C
|
|
#define IOT_FTM_CMD_ID_RF_PHY_TX_TONE_RAW 0x006D
|
|
#define IOT_FTM_CMD_ID_TOPO_ADC_DUMP 0x006E
|
|
#define IOT_FTM_CMD_ID_IR_LOOPBACK_TEST 0x006F
|
|
#define IOT_FTM_CMD_ID_RF_TX_DC_LOOP_CALI 0x0070
|
|
#define IOT_FTM_CMD_ID_SET_GET_PT_INFO 0x0071
|
|
#define IOT_FTM_CMD_ID_DUMP_TO_MEM 0x0072
|
|
#define IOT_FTM_CMD_ID_MAX 0x0072 /* total event supported */
|
|
|
|
/* ftm event id definition */
|
|
#define IOT_FTM_EVENT_ID_PONG 0x0001 /* pong event for test purose */
|
|
#define IOT_FTM_EVENT_ID_READ 0x0002
|
|
#define IOT_FTM_EVENT_ID_WRITE 0x0003
|
|
#define IOT_FTM_EVENT_ID_TX 0x0004
|
|
#define IOT_FTM_EVENT_ID_RX 0x0005
|
|
#define IOT_FTM_EVENT_ID_TONE 0x0006
|
|
#define IOT_FTM_EVENT_ID_STS 0x0007
|
|
#define IOT_FTM_EVENT_ID_SET 0x0008
|
|
#define IOT_FTM_EVENT_ID_GET 0x0009
|
|
#define IOT_FTM_EVENT_ID_SCAN 0x000a
|
|
#define IOT_FTM_EVENT_ID_HWQCFG 0X000b
|
|
#define IOT_FTM_EVENT_ID_PKTCFG 0X000c
|
|
#define IOT_FTM_EVENT_ID_TESTCASE 0X000d
|
|
#define IOT_FTM_EVENT_ID_MAC_RECE 0X000e
|
|
#define IOT_FTM_EVENT_ID_MAC_RECE_SNIFFER 0x000f
|
|
#define IOT_FTM_EVENT_ID_RINGCFG 0x0010
|
|
#define IOT_FTM_EVENT_ID_SET_FILTERSEL 0x0011
|
|
#define IOT_FTM_EVENT_ID_SET_FILTER 0x0012
|
|
#define IOT_FTM_EVENT_ID_SET_RINGDIS 0x0013
|
|
#define IOT_FTM_EVENT_ID_SNIFFERCFG 0x0014
|
|
#define IOT_FTM_EVENT_ID_RX_MSG_SHOW 0x0015
|
|
#define IOT_FTM_EVENT_ID_CMDCFG 0x0016
|
|
#define IOT_FTM_EVENT_ID_CRC_CFG 0x0017
|
|
#define IOT_FTM_EVENT_ID_MAC_PING 0x0018
|
|
#define IOT_FTM_EVENT_ID_SET_TEINID 0x0019
|
|
#define IOT_FTM_EVENT_ID_CLEAR_COUNT 0x001A
|
|
#define IOT_FTM_EVENT_ID_SEND_COUNT 0x001B
|
|
#define IOT_FTM_EVENT_ID_TPUT_TEST 0x001C
|
|
#define IOT_FTM_EVENT_ID_DIS_HWQ 0x001D
|
|
#define IOT_FTM_EVENT_ID_LOAD_DATA 0x001E
|
|
#define IOT_FTM_EVENT_ID_I2C_WRITE 0x001F
|
|
#define IOT_FTM_EVENT_ID_I2C_READ 0x0020
|
|
#define IOT_FTM_EVENT_ID_GPIO_OUT 0x0021
|
|
#define IOT_FTM_EVENT_ID_GPIO_IN 0x0022
|
|
#define IOT_FTM_EVENT_ID_UART_LOOPBACK 0x0023
|
|
#define IOT_FTM_EVENT_ID_SPI_FLASH 0x0024
|
|
#define IOT_FTM_EVENT_ID_READ_CHIPID 0x0025
|
|
#define IOT_FTM_EVENT_ID_READ_FW_VER 0x0026
|
|
#define IOT_FTM_EVENT_ID_BURN_MAC 0x0027
|
|
#define IOT_FTM_EVENT_ID_SEND_REV_DATA 0x0028
|
|
#define IOT_FTM_EVENT_ID_GOLDEN_REV_DATA 0x0029
|
|
#define IOT_FTM_EVENT_ID_SET_PHY_PARA 0x002a
|
|
#define IOT_FTM_EVENT_ID_READ_MAC 0x002b
|
|
#define IOT_FTM_EVENT_ID_INIT_DONE 0x002c
|
|
#define IOT_FTM_EVENT_ID_EFUSE_LOCK 0x002d
|
|
#define IOT_FTM_EVENT_ID_SPUR_MASK_SET 0x002e
|
|
#define IOT_FTM_EVENT_ID_OEM_MODULETYPE_SET 0x002f
|
|
#define IOT_FTM_EVENT_ID_OEM_MODULETYPE_GET 0x0030
|
|
#define IOT_FTM_EVENT_ID_VENDOR_ID_SET 0x0031
|
|
#define IOT_FTM_EVENT_ID_CHIP_CODE_SET 0x0032
|
|
#define IOT_FTM_EVENT_ID_CHIP_CODE_GET 0x0033
|
|
#define IOT_FTM_EVENT_ID_SET_PPM_NID 0x0034
|
|
#define IOT_FTM_EVENT_ID_GLB_NID_SET 0x0035
|
|
#define IOT_FTM_EVENT_ID_CUS_CMD 0x0036
|
|
#define IOT_FTM_EVENT_ID_VENDOR_ID_GET 0x0037
|
|
#define IOT_FTM_EVENT_ID_CHIP_MMID_GET 0x0038
|
|
#define IOT_FTM_EVENT_ID_ZC_CIRCUIT_CHECK 0x0039
|
|
#define IOT_FTM_EVENT_ID_DISABEL_GPIO_RESET 0x003a
|
|
#define IOT_FTM_EVENT_ID_DUT_CHARGE_VOL_GET 0x003b
|
|
#define IOT_FTM_EVENT_ID_FW_CRC_CHECK 0x003c
|
|
#define IOT_FTM_EVENT_ID_DEV_ID_SET 0x003d
|
|
#define IOT_FTM_EVENT_ID_DEV_ID_GET 0x003e
|
|
#define IOT_FTM_EVENT_ID_PT_FW_VER_GET 0x003f
|
|
#define IOT_FTM_EVENT_ID_HW_VER_SET 0x0040
|
|
#define IOT_FTM_EVENT_ID_HW_VER_GET 0x0041
|
|
#define IOT_FTM_EVENT_ID_DUT_CHANNEL_VOL_GET 0x0042
|
|
#define IOT_FTM_EVENT_ID_DUT_TXRX_MODE_SET 0x0043
|
|
#define IOT_FTM_EVENT_ID_FLASH_ID_GET 0x0044
|
|
#define IOT_FTM_EVENT_ID_MAC_ADDR_UPDATE 0x0045
|
|
#define IOT_FTM_EVENT_ID_BURN_IP_INFO 0x0046
|
|
#define IOT_FTM_EVENT_ID_READ_IP_INFO 0x0047
|
|
#define IOT_FTM_EVENT_ID_CHIP_MMID_SET 0x0048
|
|
#define IOT_FTM_EVENT_ID_CHECK_IMG_CRC 0x0049
|
|
#define IOT_FTM_EVENT_ID_METER_CROSSTALK_SET 0x004a
|
|
#define IOT_FTM_EVENT_ID_METER_CROSSTALK_GET 0x004b
|
|
#define IOT_FTM_EVENT_ID_SOFT_RESTART 0x004c
|
|
#define IOT_FTM_EVENT_ID_EM_EXT_FUNC 0x004d
|
|
#define IOT_FTM_EVENT_ID_PASSCODE_GET 0x004e
|
|
#define IOT_FTM_EVENT_ID_EXT_FLASH_CHECK 0x004f
|
|
#define IOT_FTM_EVENT_ID_BRK_START_STOP_LOOPBACK 0x0050
|
|
#define IOT_FTM_EVENT_ID_BRK_ENABLE_INT 0x0051
|
|
#define IOT_FTM_EVENT_ID_BRK_QUERY_TRIGGER_CNT 0x0052
|
|
#define IOT_FTM_EVENT_ID_READ_BCD_MAC 0x0053
|
|
#define IOT_FTM_EVENT_ID_LOADER_TSFM 0x0054
|
|
#define IOT_FTM_EVENT_ID_CHANNEL_ADC_READ 0x0055
|
|
#define IOT_FTM_EVENT_ID_METER_PORT_UART_LOOPBACK 0x0056
|
|
#define IOT_FTM_EVENT_ID_SET_PT_FW_VER 0x0057
|
|
#define IOT_FTM_EVENT_ID_TEMP_CALI_SET 0x0058
|
|
#define IOT_FTM_EVENT_ID_TEMP_CALI_GET 0x0059
|
|
#define IOT_FTM_EVENT_ID_MAC_PHY_DIAGNOSTIC 0x005A
|
|
#define IOT_FTM_EVENT_ID_ADC_CALI_SET 0x005B
|
|
#define IOT_FTM_EVENT_ID_ADC_CALI_GET 0x005C
|
|
#define IOT_FTM_EVENT_ID_ADC_READ_REAL 0x005D
|
|
#define IOT_FTM_EVENT_ID_PHY_RF_TXIQM_CAL_W 0x005E
|
|
#define IOT_FTM_EVENT_ID_PHY_RF_TXIQM_CAL_R 0x005F
|
|
#define IOT_FTM_EVENT_ID_RF_PHY_TX_TONE 0x0060
|
|
#define IOT_FTM_EVENT_ID_RF_SPI_SYNC 0x0061
|
|
#define IOT_FTM_EVENT_ID_PHY_RF_TXF_CAL_W 0x0062
|
|
#define IOT_FTM_EVENT_ID_PHY_RF_TXF_CAL_R 0x0063
|
|
#define IOT_FTM_EVENT_ID_MP_RF_TEST 0x0064
|
|
#define IOT_FTM_CMD_ID_RF_TRS_CHK 0x0065
|
|
#define IOT_FTM_EVENT_ID_EFUSE_CHECK 0x0066
|
|
#define IOT_FTM_EVENT_ID_MP_RF_CAL_CFG 0x0067
|
|
#define IOT_FTM_EVENT_ID_MP_RF_CAL_MEAS 0x0068
|
|
#define IOT_FTM_EVENT_ID_MP_RF_CAL_UPDATE 0x0069
|
|
#define IOT_FTM_EVENT_ID_POWER_SYNC 0x006A
|
|
#define IOT_FTM_EVENT_ID_SECURITY_CFG_SET 0x006B
|
|
#define IOT_FTM_EVENT_ID_SECURITY_CFG_GET 0x006C
|
|
#define IOT_FTM_EVENT_ID_RF_PHY_TX_TONE_RAW 0x006D
|
|
#define IOT_FTM_EVENT_ID_TOPO_ADC_DUMP 0x006E
|
|
#define IOT_FTM_EVENT_ID_IR_LOOPBACK_TEST 0x006F
|
|
#define IOT_FTM_EVENT_ID_RF_TX_DC_LOOP_CALI 0x0070
|
|
#define IOT_FTM_EVENT_ID_SET_GET_PT_INFO 0x0071
|
|
#define IOT_FTM_EVENT_ID_DUMP_TO_MEM 0x0072
|
|
#define IOT_FTM_EVENT_ID_MAX 0x0072 /* total event supported */
|
|
|
|
|
|
/* PT K48 ftm command id definition */
|
|
#define IOT_PT_FTM_CMD_ID_PWR_OFF 0x0000
|
|
#define IOT_PT_FTM_CMD_ID_PWR_ON 0x0001
|
|
/* future add */
|
|
#define IOT_PT_FTM_CMD_ID_STATUS_R 0x0006
|
|
#define IOT_PT_FTM_CMD_ID_GET_JIG 0x0007
|
|
#define IOT_PT_FTM_CMD_ID_GET_CURRENT 0x0008
|
|
#define IOT_PT_FTM_CMD_ID_THD_CURRENT 0x0009
|
|
#define IOT_PT_FTM_CMD_ID_VOLTAGE_GET 0x000a
|
|
#define IOT_PT_FTM_CMD_ID_GPIO_LEVEL_SET 0x000b
|
|
#define IOT_PT_FTM_CMD_ID_GPIO_LEVEL_GET 0x000c
|
|
#define IOT_PT_FTM_CMD_ID_PT_RELAY_SET 0x000d
|
|
#define IOT_PT_FTM_CMD_ID_PT_ACK 0x000e
|
|
#define IOT_PT_FTM_CMD_ID_SINGLE_GPIO_LEVEL_SET 0x000f
|
|
#define IOT_PT_FTM_CMD_ID_PT_HARDWARE_ID_GET 0x0010
|
|
|
|
/* future add */
|
|
#define IOT_PT_FTM_CMD_ID_EDGE_RISE 0x0011
|
|
#define IOT_PT_FTM_CMD_ID_EDGE_FALL 0x0012
|
|
#define IOT_PT_FTM_CMD_ID_GPB4_INT_CNT 0x0013
|
|
#define IOT_PT_FTM_CMD_ID_GPB1_2_INT_CNT 0x0014
|
|
#define IOT_PT_FTM_CMD_ID_SET_GPB3_LEVEL 0x0015
|
|
#define IOT_PT_FTM_CMD_ID_DUT_SEC_PULSE_ENABLE 0x0016
|
|
#define IOT_PT_FTM_CMD_ID_DUT_PULSE_ENABLE 0x0017
|
|
#define IOT_PT_FTM_CMD_ID_OPEN_UART1 0x0018
|
|
#define IOT_PT_FTM_CMD_ID_UART1_RECV 0x0019
|
|
#define IOT_PT_FTM_CMD_ID_PT_FW_VER_GET 0x001a
|
|
#define IOT_PT_FTM_CMD_ID_PT_SENSOR_TEMP_GET 0x001c
|
|
|
|
|
|
/* FTM PHY type */
|
|
#define IOT_FTM_PHY_TYPE_PLC 0
|
|
#define IOT_FTM_PHY_TYPE_RF 1
|
|
|
|
/* FTM HWQ type */
|
|
#define IOT_FTM_HWQ_TYPE_PLC 0
|
|
#define IOT_FTM_HWQ_TYPE_RF 1
|
|
|
|
#define IOT_FTM_CMD_DUMP_TYPE_FFT 1
|
|
|
|
/* ftm command from host to target */
|
|
typedef struct _iot_ftm_cmd {
|
|
/* command id, see IOT_FTM_CMD_ID_XXX */
|
|
uint16_t cmd_id;
|
|
/* total data length of the command. one command can be splitted into
|
|
* multiple packets.
|
|
*/
|
|
uint16_t total_len;
|
|
/* data length in current packet */
|
|
uint16_t len;
|
|
/* data in current packet */
|
|
uint8_t data[0];
|
|
} iot_ftm_cmd_t;
|
|
|
|
/* ftm event from target to host */
|
|
typedef struct _iot_ftm_event {
|
|
/* event id, see IOT_FTM_EVENT_ID_XXX */
|
|
uint16_t event_id;
|
|
/* total data length of the event. one event can be splitted into
|
|
* multiple packets.
|
|
*/
|
|
uint16_t total_len;
|
|
/* data length in current packet */
|
|
uint16_t len;
|
|
/* data in current packet */
|
|
uint8_t data[0];
|
|
} iot_ftm_event_t;
|
|
|
|
/* ftm cmd tx from host to target */
|
|
typedef struct _iot_ftm_tx_cmd {
|
|
/* phase */
|
|
uint8_t phase;
|
|
/* mac type */
|
|
uint8_t m_type;
|
|
/* packet type */
|
|
uint16_t p_type;
|
|
/* tx total num */
|
|
uint32_t total_num;
|
|
/* tmi or ext tmi */
|
|
uint8_t mac_tmi;
|
|
} iot_ftm_tx_cmd_t;
|
|
|
|
/* ftm cmd txrx mode set */
|
|
typedef struct _iot_ftm_txrx_mode_cmd {
|
|
/* mode en */
|
|
uint8_t mode_en;
|
|
/* mode value */
|
|
uint8_t mode_val;
|
|
} iot_ftm_txrx_mode_cmd_t;
|
|
|
|
/* define ftm tx cmd parameters */
|
|
typedef enum _iot_ftm_tx_cmdid {
|
|
FTM_CMD_TX_PHASE = 1, /* tx phase id */
|
|
FTM_CMD_TX_CALI, /* tx calibration id */
|
|
FTM_CMD_TX_CSI, /* tx csi dump id */
|
|
FTM_CMD_TX_CSR, /* tx csr detection id */
|
|
FTM_CMD_TX_MODE_OFFSET = 4, /* tx ftm/mp mode id */
|
|
FTM_CMD_TX_BAND, /* tx band id */
|
|
FTM_CMD_TX_GET_GOLDEN_INFO, /* tx query golden info id */
|
|
FTM_CMD_TX_GAIN = 0xFC, /* tx gain set id */
|
|
FTM_CMD_TX_END, /* tx end id */
|
|
FTM_CMD_TX_LONG, /* tx long id */
|
|
FTM_CMD_TX_INIT, /* tx init id */
|
|
} iot_ftm_tx_cmdid_t;
|
|
|
|
/* mp rx command id define */
|
|
typedef enum _iot_ftm_rx_cmdid {
|
|
FTM_CMD_RX_GOLDEN, /* rx pt golden mode */
|
|
FTM_CMD_RX_INIT, /* rx init */
|
|
FTM_CMD_RX_START, /* rx single mode start */
|
|
FTM_CMD_RX_END, /* rx mode end */
|
|
} iot_ftm_rx_cmdid_t;
|
|
|
|
/* ftm cmd read from host to target */
|
|
typedef struct _iot_ftm_read_cmd {
|
|
/* addr */
|
|
uint32_t addr;
|
|
/* len */
|
|
uint16_t len;
|
|
} iot_ftm_read_cmd_t;
|
|
|
|
/* ftm cmd write from host to target */
|
|
typedef struct _iot_ftm_write_cmd {
|
|
/* addr */
|
|
uint32_t addr;
|
|
/* data */
|
|
uint32_t data;
|
|
} iot_ftm_write_cmd_t;
|
|
|
|
typedef struct _ana_i2c_cmd {
|
|
uint8_t reg_id;
|
|
uint32_t wdata;
|
|
uint32_t mask;
|
|
} ana_i2c_cmd_t;
|
|
|
|
/* ftm scan id */
|
|
typedef enum _iot_ftm_scan_id {
|
|
AUTO_ALL =0,
|
|
AUTO_DUMP =1,
|
|
AUTO_UART =2,
|
|
AUTO_VPP =3,
|
|
AUTO_SNR =4,
|
|
AUTO_FA =5,
|
|
AUTO_CSI =6,
|
|
AUTO_LOOPBACK =7,
|
|
AUTO_NF =8,
|
|
AUTO_DC_TX =9,
|
|
AUTO_DC_RX =10,
|
|
AUTO_END =11,
|
|
AUTO_FFT =12,
|
|
} iot_ftm_scan_id_t;
|
|
|
|
/* ext flash cfg*/
|
|
typedef enum _iot_ftm_ext_flash_funcid {
|
|
FTM_CMD_EXT_QUERY, /* quert ext flash chip size */
|
|
FTM_CMD_EXT_CHECK, /* check ext flash */
|
|
} iot_ftm_ext_flash_funcid_t;
|
|
|
|
typedef struct _iot_ftm_ext_flash_cfg {
|
|
uint8_t flash_func;
|
|
uint16_t flash_offset;
|
|
uint16_t flash_index;
|
|
} iot_ftm_ext_flash_cfg_t;
|
|
|
|
typedef struct _iot_ftm_disable_hwq {
|
|
/* hwq num */
|
|
uint8_t hwq_num : 4,
|
|
/* the high 4bit indicates plc or rf, see IOT_FTM_HWQ_TYPE_XXX */
|
|
hwq_type : 4;
|
|
} iot_ftm_disable_hwq_t;
|
|
|
|
typedef struct _phy_proto_parameter_set {
|
|
/* phy protocol type, see PLC_PROTO_TYPE_XXX */
|
|
uint8_t phy_proto : 4,
|
|
/* physical layer type, see IOT_FTM_PHY_TYPE_XXX */
|
|
phy_type : 4;
|
|
union {
|
|
/* when phy_type is IOT_FTM_PHY_TYPE_PLC,
|
|
* plc_band mean band id of plc.
|
|
*/
|
|
uint8_t plc_band;
|
|
/* when phy_type is IOT_FTM_PHY_TYPE_RF,
|
|
* rf_option mean option of rf.
|
|
*/
|
|
uint8_t rf_option;
|
|
};
|
|
union {
|
|
/* when phy_type is IOT_FTM_PHY_TYPE_PLC,
|
|
* plc_maskid mean mask id of plc.
|
|
*/
|
|
uint8_t plc_maskid;
|
|
/* when phy_type is IOT_FTM_PHY_TYPE_RF,
|
|
* rf_channel mean channel of rf.
|
|
*/
|
|
uint8_t rf_channel;
|
|
};
|
|
} phy_proto_parameter_set;
|
|
|
|
/* rf version and phy tx iqm calibration info */
|
|
typedef struct _iot_ftm_phy_rf_ver_txiqm_cal {
|
|
/* tx I MAG balance calibration value, range range: 0~15 */
|
|
uint8_t tx_i_mag : 4,
|
|
/* rf version, see RF_VER_XXX */
|
|
rf_ver : 4;
|
|
/* tx Q MAG balance calibration value, range range: 0~15 */
|
|
uint8_t tx_q_mag;
|
|
/* tx I phase calibration value, range range: 0~31 */
|
|
uint8_t tx_i_phase;
|
|
/* tx Q phase calibration value, range range: 0~31 */
|
|
uint8_t tx_q_phase;
|
|
/* tx I dc calibration value, range range: -127~127 */
|
|
int8_t tx_i_dc;
|
|
/* tx I dc calibration value, range range: -127~127 */
|
|
int8_t tx_q_dc;
|
|
} iot_ftm_phy_rf_ver_txiqm_cal_t;
|
|
|
|
/* rf phy tx fiter calibration info */
|
|
typedef struct _iot_ftm_phy_rf_txf_cal {
|
|
/* flag mark if the value of the corresponding option is valid */
|
|
uint8_t valid_mask;
|
|
/* tx filter bw calibration value for each option */
|
|
uint16_t bw_sel_value[RF_OPTION_MAX];
|
|
} iot_ftm_phy_rf_txf_cal_t;
|
|
|
|
typedef struct _rf_phy_tx_tone_set {
|
|
/* rf tx tone on or off, 1: on, 0: off */
|
|
uint32_t rf_txtone_onoff;
|
|
/* rf option */
|
|
uint32_t rf_option;
|
|
/* local frequence */
|
|
uint32_t freq;
|
|
/* tone num */
|
|
uint32_t tone_num : 13,
|
|
/* tone attenuation */
|
|
tone_att : 3,
|
|
/* reserved for future */
|
|
rsvd : 16;
|
|
} rf_phy_tx_tone_set_t;
|
|
|
|
typedef struct _rf_spi_sync_ctxt {
|
|
/* read or write, 1:write, 0:read */
|
|
uint8_t r_w;
|
|
/* rf spi addr */
|
|
uint16_t spi_addr;
|
|
/* rf spi value */
|
|
uint16_t spi_value;
|
|
} rf_spi_sync_ctxt_t;
|
|
|
|
/* phy tx power sync massage */
|
|
typedef struct _phy_power_sync {
|
|
/* set or get, 1:set, 0:get */
|
|
uint8_t r_w;
|
|
/* tx power, rf:unit is dBm, hplc: unit is dBuV */
|
|
int8_t power;
|
|
/* flag to mark if it is test mode power, only valid for rf msg */
|
|
uint8_t is_test_mode : 1,
|
|
/* test mode code, only valid for rf msg */
|
|
test_mode : 2,
|
|
/* flag to mark if it is for hplc or not */
|
|
is_hplc : 1,
|
|
/* reserved for further use */
|
|
rsvd : 4;
|
|
} phy_power_sync_t;
|
|
|
|
/* topo adc data dump */
|
|
typedef struct _topo_adc_dump {
|
|
/* select dump phase, 1 - phase A, 2 - phase B, 3 - phase C */
|
|
uint8_t phase;
|
|
/* pga 1 gain index */
|
|
uint8_t gain1 : 4,
|
|
/* pga 2 gain index */
|
|
gain2 : 4;
|
|
/* adc data right shift num */
|
|
uint8_t shift_num;
|
|
/* discard num for each sample */
|
|
uint16_t discard_num;
|
|
/* data num for each sample */
|
|
uint16_t data_num;
|
|
/* number of samples to be sampled */
|
|
uint32_t samp_num;
|
|
} topo_adc_dump_t;
|
|
|
|
/* topo adc data dump response */
|
|
typedef struct _topo_adc_dump_rsp {
|
|
/* data buffer address */
|
|
uint32_t data_addr;
|
|
} topo_adc_dump_rsp_t;
|
|
|
|
typedef struct _iot_ftm_mac_recv_sniffer {
|
|
/* sniffer log seq */
|
|
uint32_t seq : 30,
|
|
/* indicates plc or rf, see FTM_INIT_xx_MODE */
|
|
mode : 2;
|
|
/* payload label */
|
|
uint8_t data[0];
|
|
} iot_ftm_mac_recv_sniffer_t;
|
|
|
|
/* define MP rf test case id */
|
|
#define IOT_FTM_MP_RF_CASE_ID_CSI 0
|
|
#define IOT_FTM_MP_RF_CASE_ID_CSR 1
|
|
#define IOT_FTM_MP_RF_CASE_ID_TX_EVM 2
|
|
#define IOT_FTM_MP_RF_CASE_ID_CHG_PHY 3
|
|
#define IOT_FTM_MP_RF_CASE_ID_TX_CALI_BY_SNR 4
|
|
|
|
/* rf power up/down cmd and rf version check request */
|
|
typedef struct _iot_ftm_mp_rf_chk_req {
|
|
/* read reg addr, after power up and power done, 0xffff is invalid addr */
|
|
uint16_t reg_addr;
|
|
} iot_ftm_mp_rf_chk_req_t;
|
|
|
|
/* rf power up/down cmd and rf version check response */
|
|
typedef struct _iot_ftm_mp_rf_chk_rsp {
|
|
/* rf check result, 0: ok, 1: fail */
|
|
uint8_t ret;
|
|
/* read reg value , after power down */
|
|
uint16_t reg_value_pd;
|
|
/* read reg value , after power up */
|
|
uint16_t reg_value_pu;
|
|
/* rf version, see RF_VER_XXX */
|
|
uint8_t ver;
|
|
} iot_ftm_mp_rf_chk_rsp_t;
|
|
|
|
/* MP rf test cmd header */
|
|
typedef struct _iot_ftm_mp_rf_cmd_hdr {
|
|
/* test case id, see IOT_FTM_MP_RF_CASE_ID_XXX */
|
|
uint8_t id;
|
|
/* rf option, see RF_OPTION_XXX */
|
|
uint8_t option;
|
|
/* rf channel, see RF_CHANNEL_XXX */
|
|
uint8_t channel;
|
|
/* payload header, see MCS_ID_XXX */
|
|
uint8_t phr_mcs;
|
|
/* payload msc, see MCS_ID_XXX */
|
|
uint8_t pld_mcs;
|
|
/* payload block size, see BLOCK_SIZE_XXX */
|
|
uint8_t pld_blkz;
|
|
/* dut tx power, unit is dbm */
|
|
int8_t dut_power;
|
|
/* golden tx power, uint is dbm */
|
|
int8_t golden_power;
|
|
/* cmd paload label */
|
|
uint8_t data[0];
|
|
} iot_ftm_mp_rf_cmd_hdr_t;
|
|
|
|
/* MP rf golden test cmd header */
|
|
typedef struct _iot_ftm_mp_rf_cmd_rx {
|
|
/* ftm rx command id, see FTM_CMD_RX_XXX */
|
|
uint8_t id;
|
|
/* rf option, see RF_OPTION_XXX */
|
|
uint8_t option;
|
|
/* rf channel, RF_CHANNEL_ID_XXX */
|
|
uint8_t channel;
|
|
} iot_ftm_mp_rf_cmd_rx_t;
|
|
|
|
/* MP rf test case CSI cmd payload layout */
|
|
typedef struct _iot_ftm_mp_rf_cmd_csi {
|
|
/* threshold of tx rssi */
|
|
int8_t tx_rssi_thr;
|
|
/* threshold of rx rssi */
|
|
int8_t rx_rssi_thr;
|
|
/* Threshold of tx snr */
|
|
int8_t tx_snr_thr;
|
|
/* Threshold of rx snr */
|
|
int8_t rx_snr_thr;
|
|
/* reserved for further use */
|
|
uint8_t rsvd[8];
|
|
} iot_ftm_mp_rf_cmd_csi_t;
|
|
|
|
/* MP rf test case CSR cmd payload layout */
|
|
typedef struct _iot_ftm_mp_rf_cmd_csr {
|
|
/* tx packet count */
|
|
uint16_t packet_num;
|
|
/* wait recv timeout, uint is ms */
|
|
uint16_t timeout;
|
|
/* if set, golden uses test mode power configuration. */
|
|
uint8_t is_test_mode : 1,
|
|
/* reserved field 0 for further use */
|
|
rsvd0 : 7;
|
|
/* golden sends sample packet interval, unit: us. */
|
|
uint16_t interval;
|
|
/* reserved field 0 for further use */
|
|
uint8_t rsvd1[5];
|
|
} iot_ftm_mp_rf_cmd_csr_t;
|
|
|
|
/* MP rf test case TX_EVM cmd payload layout */
|
|
typedef struct _iot_ftm_mp_rf_cmd_tx_evm {
|
|
/* tx packet count */
|
|
uint16_t packet_num;
|
|
/* flag to mark if normal power configuration is used */
|
|
uint8_t is_nor_pwr : 1,
|
|
/* not request rx result flag from golden */
|
|
no_req_flag : 1,
|
|
/* reserved for further use */
|
|
rsvd0 : 6;
|
|
/* DUT sends sample packet interval, unit: us. */
|
|
uint16_t interval;
|
|
/* reserved for further use */
|
|
uint8_t rsvd1[7];
|
|
} iot_ftm_mp_rf_cmd_tx_evm_t;
|
|
|
|
/* MP rf test case TX CALI cmd payload layout */
|
|
typedef struct _iot_ftm_mp_rf_cmd_tx_cali {
|
|
/* tx cali type, see RF_TEST_TX_CALI_REG_IQ_XXX */
|
|
uint8_t type;
|
|
/* step units when changing i/q */
|
|
uint8_t step;
|
|
/* number of times each data is sent repeatedly */
|
|
uint8_t repeat_cnt;
|
|
/* tx I/Q MAG calibration value, range range: 0~15 */
|
|
/* tx I/Q PHASE calibration value, range range: 0~31 */
|
|
/* tx I/Q DC calibration value, range range: -127~127 */
|
|
int8_t i_min;
|
|
int8_t i_max;
|
|
int8_t q_min;
|
|
int8_t q_max;
|
|
/* flag to mark using real data or fitted data */
|
|
uint8_t liner_fit_en : 1,
|
|
/* flag to mark if normal power configuration is used */
|
|
is_nor_pwr : 1,
|
|
/* indicates the number of rounds to send packets */
|
|
rounds : 3,
|
|
/* flag to mark whether to use i/q difference for calibration */
|
|
iq_delta_en : 1,
|
|
/* reserved for further use */
|
|
rsvd : 2;
|
|
/* reserved for further use */
|
|
uint8_t rsvd1[9];
|
|
} iot_ftm_mp_rf_cmd_tx_cali_t;
|
|
|
|
/* MP rf tx dc loop calibraton command */
|
|
typedef struct _iot_ftm_rf_tx_dc_loop_cali {
|
|
/* rf option, see RF_OPTION_XXX */
|
|
uint8_t option;
|
|
/* rf center frequency, unit Hz */
|
|
uint32_t freq;
|
|
/* delay time for obtaining adc data */
|
|
uint8_t interval;
|
|
/* step value of traversing iq */
|
|
uint8_t step;
|
|
/* pa power set */
|
|
uint16_t ldovs;
|
|
/* tx rf_att */
|
|
uint8_t rf_att;
|
|
/* rsvd for future */
|
|
uint8_t rsvd[4];
|
|
} iot_ftm_rf_tx_dc_loop_cali_t;
|
|
|
|
/* MP rf tx dc loop calibraton response */
|
|
typedef struct _iot_ftm_rf_tx_dc_loop_cali_rsp {
|
|
/* test result, see ERR_XXX */
|
|
uint8_t result;
|
|
/* compensation value of DC i */
|
|
int8_t i;
|
|
/* compensation value of DC q */
|
|
int8_t q;
|
|
/* rsvd for future */
|
|
uint8_t rsvd[4];
|
|
} iot_ftm_rf_tx_dc_loop_cali_rsp_t;
|
|
|
|
/* MP rf test CHG PHY cmd payload layout */
|
|
typedef struct _iot_ftm_mp_rf_cmd_chg_phy {
|
|
/* rf option, see RF_OPTION_XXX */
|
|
uint8_t option;
|
|
/* rf channel, RF_CHANNEL_ID_XXX */
|
|
uint8_t channel;
|
|
} iot_ftm_mp_rf_cmd_chg_phy_t;
|
|
|
|
/* MP rf test response header */
|
|
typedef struct _iot_ftm_mp_rf_rsp_hdr {
|
|
/* test result, see ERR_XXX */
|
|
uint8_t result;
|
|
/* test case id, see IOT_FTM_MP_RF_CASE_ID_XXX */
|
|
uint8_t id;
|
|
/* resp payload label */
|
|
uint8_t data[0];
|
|
} iot_ftm_mp_rf_rsp_hdr_t;
|
|
|
|
/* MP rf test CSI response payload layout */
|
|
typedef struct _iot_ftm_mp_rf_rsp_csi {
|
|
/* tx rssi */
|
|
int8_t tx_rssi;
|
|
/* rx rssi */
|
|
int8_t rx_rssi;
|
|
/* tx snr */
|
|
int8_t tx_snr;
|
|
/* rx snr */
|
|
int8_t rx_snr;
|
|
/* tx gain */
|
|
uint8_t tx_gain;
|
|
/* rx gain */
|
|
uint8_t rx_gain;
|
|
/* reserved for further use */
|
|
uint8_t rsvd[14];
|
|
} iot_ftm_mp_rf_rsp_csi_t;
|
|
|
|
/* MP rf test CSR response payload layout */
|
|
typedef struct _iot_ftm_mp_rf_rsp_csr {
|
|
/* rx success count */
|
|
uint16_t rx_cnt;
|
|
/* rx average rssi */
|
|
int8_t avg_rssi;
|
|
/* rx average snr */
|
|
int8_t avg_snr;
|
|
/* reserved for further use */
|
|
uint8_t rsvd[15];
|
|
} iot_ftm_mp_rf_rsp_csr_t;
|
|
|
|
/* MP rf test TX EVM response payload layout */
|
|
typedef struct _iot_ftm_mp_rf_rsp_tx_evm {
|
|
/* rx success count */
|
|
uint16_t rx_cnt;
|
|
/* 10 times the average RSSI of DUT tx evaluated by golden */
|
|
int16_t avg_rssi;
|
|
/* 10 times the average snr of DUT tx evaluated by golden */
|
|
int16_t avg_snr;
|
|
/* reserved for further use */
|
|
uint8_t rsvd[14];
|
|
} iot_ftm_mp_rf_rsp_tx_evm_t;
|
|
|
|
/* TX CALI result structure */
|
|
typedef struct {
|
|
/* rf phy i value of MAG/PHASE register */
|
|
int8_t i;
|
|
/* rf phy q value of MAG/PHASE register */
|
|
int8_t q;
|
|
/* snr */
|
|
float snr;
|
|
} iot_ftm_mp_rf_tx_cali_comen_result_t;
|
|
|
|
/* MP rf test TX CALI response payload layout */
|
|
typedef struct _iot_ftm_mp_rf_rsp_tx_cali {
|
|
/* indicates how many sets of i/q data are available next */
|
|
uint8_t cnt;
|
|
/* TX CALI result payload */
|
|
iot_ftm_mp_rf_tx_cali_comen_result_t result[0];
|
|
} iot_ftm_mp_rf_rsp_tx_cali_t;
|
|
|
|
/* MP rf calibration measurement cfg msg layout */
|
|
typedef struct _iot_ftm_mp_rf_cal_meas_cfg {
|
|
/* configure golden to measurement mode, 1 - enable / 0 - disable */
|
|
uint8_t meas_en;
|
|
/* rf option */
|
|
uint8_t option;
|
|
/* rf channel */
|
|
uint8_t ch;
|
|
/* communication power between DUT and golden (HPLC), uint is dBuV */
|
|
uint8_t comm_pwr;
|
|
/* communication power between DUT and golden (HPLC), see MAC_TMI_XX */
|
|
uint8_t comm_tmi;
|
|
} iot_ftm_mp_rf_cal_meas_cfg_t;
|
|
|
|
/* MP rf calibration measurement req msg layout */
|
|
typedef struct _iot_ftm_mp_rf_tx_cal_update {
|
|
/* tx I MAG balance calibration value, range range: 0~15 */
|
|
uint8_t tx_i_mag;
|
|
/* tx Q MAG balance calibration value, range range: 0~15 */
|
|
uint8_t tx_q_mag;
|
|
/* tx I phase calibration value, range range: 0~31 */
|
|
uint8_t tx_i_phase;
|
|
/* tx Q phase calibration value, range range: 0~31 */
|
|
uint8_t tx_q_phase;
|
|
/* tx I dc calibration value, range range: -127~127 */
|
|
int8_t tx_i_dc;
|
|
/* tx Q dc calibration value, range range: -127~127 */
|
|
int8_t tx_q_dc;
|
|
/* filter bandwidth sel value */
|
|
uint16_t filter_bw_sel;
|
|
/* options corresponding to filter bandwidth sel value */
|
|
uint8_t filter_option;
|
|
/* flag to mark if member tx_i_mag and tx_q_mag needs to be updated to RF */
|
|
uint8_t tx_iq_mag_update : 1,
|
|
/* flag to mark if member tx_i_phase and tx_q_phase needs to be updated
|
|
* to RF.
|
|
*/
|
|
tx_iq_phase_update : 1,
|
|
/* flag to mark if member tx_i_dc and tx_q_dc needs to be updated to RF */
|
|
tx_iq_dc_update : 1,
|
|
/* flag to mark if member filter_bw_sel needs to be updated to RF */
|
|
filter_update : 1,
|
|
/* reserved for further use */
|
|
rsvd : 4;
|
|
} iot_ftm_mp_rf_tx_cal_update_t;
|
|
|
|
|
|
/* MP rf calibration measurement req msg layout -- */
|
|
typedef struct _iot_ftm_mp_rf_cal_meas_req {
|
|
/* tx calibration update info */
|
|
iot_ftm_mp_rf_tx_cal_update_t tx_cal;
|
|
/* receiving LO frequency used in measurement, uint is Hz*/
|
|
uint32_t lo_freq;
|
|
/* index of tone signal in fft result */
|
|
uint16_t tone_idx;
|
|
/* index of dc signal in fft result */
|
|
uint16_t dc_idx;
|
|
/* index of img signal in fft result */
|
|
uint16_t img_idx;
|
|
/* wait meas result timeout, uint is 1ms */
|
|
uint16_t timeout;
|
|
/* request meas try cnt */
|
|
uint8_t try_cnt;
|
|
/* average number of measurements */
|
|
uint8_t avg_cnt;
|
|
/* reserved for further use */
|
|
uint8_t rsvd[3];
|
|
} iot_ftm_mp_rf_cal_meas_req_t;
|
|
|
|
/* MP rf calibration measurement response msg layout */
|
|
typedef struct _iot_ftm_mp_rf_cal_meas_rsp {
|
|
/* error code, see ERR_XX */
|
|
uint8_t err_no;
|
|
/* tone signal power, no gain compensation */
|
|
uint32_t tone_pwr;
|
|
/* dc signal power, no gain compensation */
|
|
uint32_t dc_pwr;
|
|
/* img signal power, no gain compensation */
|
|
uint32_t img_pwr;
|
|
/* receive gain, uint is 0.01 */
|
|
uint16_t gain;
|
|
/* reserved for further use */
|
|
uint8_t rsvd[4];
|
|
} iot_ftm_mp_rf_cal_meas_rsp_t;
|
|
|
|
typedef struct _iot_ftm_loader_tsfm_cfg{
|
|
uint16_t pulse_high_dur;
|
|
uint16_t pulse_low_dur;
|
|
uint32_t chara_bit_dur;
|
|
uint8_t data[2];
|
|
}iot_ftm_loader_tsfm_cfg;
|
|
|
|
/* security data struct */
|
|
typedef struct _iot_ftm_security_cfg {
|
|
/* security data version */
|
|
uint8_t version;
|
|
/* security data length */
|
|
uint16_t len;
|
|
/* security data */
|
|
uint8_t data[0];
|
|
}iot_ftm_security_cfg_t;
|
|
|
|
typedef enum _iot_ftm_pt_info_operation_type {
|
|
PT_INFO_OPERATION_GET, /* get pt info operation */
|
|
PT_INFO_OPERATION_SET, /* set pt info operation */
|
|
} iot_ftm_pt_info_operation_type;
|
|
|
|
/* pt info */
|
|
typedef struct _iot_ftm_pt_info_hdr {
|
|
uint8_t operation_type;
|
|
} iot_ftm_pt_info_hdr_t;
|
|
|
|
typedef struct _iot_ftm_get_pt_info {
|
|
/* indicate the result, 0:pass, 1:fail */
|
|
uint8_t ret;
|
|
/* the golden mac */
|
|
uint8_t golden_mac[IOT_MAC_ADDR_LEN];
|
|
/* the bcd format of the time when pt taken */
|
|
uint8_t year;
|
|
uint8_t month;
|
|
uint8_t day;
|
|
uint8_t hour;
|
|
uint8_t min;
|
|
/* the fw version of golden */
|
|
uint32_t golden_fw_ver;
|
|
/* the version of pt tool */
|
|
uint32_t pt_tool_ver;
|
|
/* the fw version of pt board */
|
|
uint32_t pt_board_ver;
|
|
/* the fw version of dut */
|
|
uint32_t dut_fw_ver;
|
|
} iot_ftm_get_pt_info_t;
|
|
|
|
typedef struct _iot_ftm_set_pt_info {
|
|
/* the golden mac */
|
|
uint8_t golden_mac[IOT_MAC_ADDR_LEN];
|
|
/* the bcd format of the time when pt taken */
|
|
uint8_t year;
|
|
uint8_t month;
|
|
uint8_t day;
|
|
uint8_t hour;
|
|
uint8_t min;
|
|
/* the fw version of golden */
|
|
uint32_t golden_fw_ver;
|
|
/* the version of pt tool */
|
|
uint32_t pt_tool_ver;
|
|
/* the fw version of pt board */
|
|
uint32_t pt_board_ver;
|
|
} iot_ftm_set_pt_info_t;
|
|
|
|
typedef struct _iot_ftm_dump_to_mem_req {
|
|
/* dump which type of data into memory, see IOT_FTM_CMD_DUMP_TYPE_XXX */
|
|
uint8_t dump_type;
|
|
/* gain, unit is 1 dB */
|
|
int8_t gain;
|
|
} iot_ftm_dump_to_mem_req_t;
|
|
|
|
typedef struct _iot_ftm_dump_to_mem_rsp {
|
|
/* indicate the result, 0: success, 1: fail */
|
|
uint8_t ret;
|
|
/* dump which type of data into memory, see IOT_FTM_CMD_DUMP_TYPE_XXX */
|
|
uint8_t dump_type;
|
|
/* gain, unit is 1 dB */
|
|
int8_t gain;
|
|
/* dump data memory address */
|
|
uint32_t dump_addr;
|
|
/* dump data len, unit is 1 byte */
|
|
uint32_t dump_len;
|
|
} iot_ftm_dump_to_mem_rsp_t;
|
|
|
|
#if (IOT_MP_SUPPORT == 0)
|
|
/* ftm tx type id */
|
|
typedef enum _iot_ftm_tx_type_id {
|
|
DT_BCN =0,
|
|
DT_SOF ,
|
|
DT_SACK ,
|
|
DT_RTS_CTS ,
|
|
DT_SOUND ,
|
|
DT_RSOF ,
|
|
DT_END ,
|
|
} iot_ftm_tx_type_id_t;
|
|
|
|
/* tx case cfg */
|
|
typedef struct _mpdu_send_case_cfg {
|
|
uint32_t interval_time; //unit 1'ms
|
|
uint32_t packe_num; // total numbers
|
|
uint32_t user_updata_time;
|
|
} mpdu_send_case_cfg;
|
|
|
|
/* tx packet cfg */
|
|
typedef struct _mpdu_send_pkt_cfg {
|
|
uint8_t proto : 4,
|
|
/* the high 4bit indicates plc or rf, see FTM_INIT_xx_MODE */
|
|
work_mode : 4;
|
|
uint8_t qid;
|
|
uint8_t bcast;
|
|
uint8_t delimiter_type;
|
|
uint32_t nid;
|
|
uint32_t dtei;
|
|
uint32_t stei;
|
|
uint8_t tmi;
|
|
uint8_t ext_tmi;
|
|
uint8_t lid;
|
|
uint8_t pb_num;
|
|
uint8_t need_ack;
|
|
uint8_t need_encry; //encryption
|
|
uint8_t need_decrypt; //decrypt
|
|
uint32_t avln_idx_in_desc;
|
|
uint32_t key_table_idx_in_desc;
|
|
uint32_t key_idx_in_desc;
|
|
uint8_t hw_retry_cnt;
|
|
uint8_t phase;
|
|
uint8_t pkt_idx;
|
|
} mpdu_send_pkt_cfg;
|
|
|
|
/* rf tx packet cfg */
|
|
typedef struct _mpdu_rf_send_pkt_cfg {
|
|
uint8_t proto : 4,
|
|
/* the high 4bit indicates plc or rf, see FTM_INIT_xx_MODE */
|
|
work_mode : 4;
|
|
uint8_t qid;
|
|
uint8_t bcast;
|
|
uint8_t delimiter_type;
|
|
uint32_t nid;
|
|
uint32_t dtei;
|
|
uint32_t stei;
|
|
uint8_t phr_mcs;
|
|
uint8_t pld_mcs;
|
|
uint8_t pld_idx;
|
|
uint8_t pb_num;
|
|
uint8_t need_ack;
|
|
uint8_t rx_result;
|
|
uint8_t snr;
|
|
uint8_t load;
|
|
uint8_t ext_dli;
|
|
uint8_t pkt_idx;
|
|
} mpdu_rf_send_pkt_cfg;
|
|
|
|
typedef struct _pkt_data_cfg {
|
|
uint32_t data_len;
|
|
uint8_t *data_pkt;
|
|
}pkt_data_cfg_t;
|
|
|
|
typedef struct _cmd_cfg {
|
|
uint8_t st_flag;
|
|
uint8_t r_flag;
|
|
uint8_t r_start_flag;
|
|
uint8_t r_end_flag;
|
|
uint8_t phase;
|
|
uint8_t idle_bit;
|
|
uint8_t req_int;
|
|
uint8_t rx_rate_mode;
|
|
uint8_t narrow_band;
|
|
uint32_t enable_bitmap;
|
|
uint32_t start_time;
|
|
uint32_t end_time;
|
|
} cmd_cfg_t;
|
|
|
|
typedef struct _mpdu_send_pkt_cfg_list {
|
|
mpdu_send_pkt_cfg pktcfg;
|
|
uint8_t qenable;
|
|
} mpdu_send_pkt_cfg_list;
|
|
|
|
typedef struct _mpdu_rf_send_pkt_cfg_list {
|
|
mpdu_rf_send_pkt_cfg pktcfg;
|
|
uint8_t qenable;
|
|
} mpdu_rf_send_pkt_cfg_list;
|
|
|
|
typedef struct _pkt_cfg_list {
|
|
mpdu_send_pkt_cfg_list sg_spg_gp_pktcfg_list[MAX_FTM_HWQ_NUM];
|
|
mpdu_rf_send_pkt_cfg_list rf_pktcfg_list[MAX_FTM_RF_HWQ_NUM];
|
|
}pkt_cfg_list;
|
|
|
|
typedef struct _send_case_ctxt{
|
|
pkt_cfg_list pktcfg_list;
|
|
mpdu_send_case_cfg casecfg;
|
|
uint8_t case_num;
|
|
}send_case_ctxt_t;
|
|
|
|
/* sche test cfg*/
|
|
typedef struct _sche_cfg {
|
|
uint8_t ping_cmd_num;
|
|
uint32_t ping_bcn_period;
|
|
uint8_t pong_cmd_num;
|
|
uint32_t pong_bcn_period;
|
|
cmd_cfg_t cmd_cfg[MAX_FTM_CMD_CNT];
|
|
} sche_cfg_t;
|
|
|
|
/* tx mode cfg */
|
|
typedef struct _txq_cfg {
|
|
uint8_t hwqid; // dbg mode 0-4, sch mode 0-24
|
|
uint8_t qtype; // 0 - tdma; 1 - csma
|
|
uint8_t qcap; // 0-4 for connectionless lid
|
|
} txq_cfg_t;
|
|
|
|
typedef struct _mpdu_send_mode_cfg {
|
|
/* 0: sch; 1: dbg mode */
|
|
uint8_t tx_mode : 4,
|
|
/* the high 4bit indicates plc or rf, see FTM_INIT_xx_MODE */
|
|
work_mode : 4;
|
|
txq_cfg_t qcfg[MAX_FTM_HWQ_NUM]; // dbg cfg struct for hwq
|
|
} mpdu_send_mode_cfg;
|
|
|
|
/* rx result */
|
|
typedef struct _rx_report {
|
|
uint32_t time_used;
|
|
uint32_t rx_mpdus;
|
|
uint32_t succ_mpdus;
|
|
uint32_t total_bytes;
|
|
} rx_report_t;
|
|
typedef struct _ring_cfg {
|
|
uint8_t cfg_type;
|
|
uint8_t cfg_offset;
|
|
uint8_t cfg_enable;
|
|
} ring_cfg_t;
|
|
typedef struct _rx_cfg {
|
|
uint8_t ring_id : 4,
|
|
/* the high 4bit indicates plc or rf, see FTM_INIT_xx_MODE */
|
|
work_mode : 4;
|
|
uint8_t ring_sz;
|
|
uint32_t buf_sz;
|
|
uint8_t bufsz_filter_sel;
|
|
uint8_t filter;
|
|
ring_cfg_t ringcfg[2]; //desc and pb
|
|
uint8_t cert_flag;
|
|
} rx_cfg_t;
|
|
typedef struct _rx_filter_sel {
|
|
uint8_t ring_id;
|
|
uint8_t bufsz_filtr_sel;
|
|
} filter_sel_t;
|
|
typedef struct _rx_filter {
|
|
uint8_t ring_id;
|
|
uint8_t filter;
|
|
} filter_t;
|
|
typedef struct _sniffer_cfg {
|
|
uint8_t enable;
|
|
uint8_t sel; //0: all desc+pb 1: only desc 2: only pb
|
|
uint16_t pb_dump_len; //pb
|
|
} sniffer_cfg_t;
|
|
|
|
typedef struct _crc_cfg {
|
|
/* generate crc mode */
|
|
uint8_t fccs_by_sw;
|
|
uint8_t pb_crc_by_sw;
|
|
uint8_t bcn_crc_by_sw;
|
|
/* check mode */
|
|
uint8_t is_verify_fc;
|
|
uint8_t is_verify_pb;
|
|
uint8_t is_verify_payload;
|
|
} crc_cfg_t;
|
|
|
|
typedef struct _mac_ping_tput {
|
|
uint32_t stei;
|
|
uint32_t dtei;
|
|
uint32_t nid;
|
|
uint8_t tmi;
|
|
uint8_t ext_tmi;
|
|
uint8_t pb_num;
|
|
uint32_t cont;
|
|
uint8_t ping_or_tput; //0:ping 1:tput
|
|
} mac_ping_tput_t;
|
|
|
|
typedef struct _tei_nid_cfg {
|
|
uint32_t stei;
|
|
uint32_t nid;
|
|
} tei_nid_t;
|
|
typedef struct _rx_tput_cfg {
|
|
uint8_t tput_enable;
|
|
uint8_t tput_time;
|
|
} rx_tput_cfg;
|
|
|
|
/*******************global bariable**********************/
|
|
/* mpdu_send_cfg*/
|
|
typedef struct _g_ftm_mpdu_send_cfg {
|
|
send_case_ctxt_t *g_mpdu_sendcase;
|
|
pkt_data_cfg_t pkt_data_cfg[MAX_FTM_HWQ_NUM];
|
|
timer_id_t send_pkt;
|
|
uint8_t tx_msg_cnt;
|
|
} g_ftm_mpdu_send_cfg;
|
|
|
|
/* sniffer_cfg*/
|
|
typedef struct _g_ftm_sniffer_cfg {
|
|
sniffer_cfg_t *g_sniffer_cfg;
|
|
/* sniffer log seq */
|
|
uint32_t sniffer_log_seq : 30,
|
|
/* reserved */
|
|
rsv : 2;
|
|
} g_ftm_sniffer_cfg;
|
|
|
|
/* ping and tput cfg*/
|
|
typedef struct _g_ftm_ping_tput_cfg {
|
|
rx_tput_cfg *rec_tput_cfg;
|
|
timer_id_t tput_timer_id;
|
|
uint32_t start_time_stamp;
|
|
uint32_t rx_sof_count;
|
|
uint32_t rx_sof_right_count;
|
|
uint32_t rx_beacon_count;
|
|
uint32_t rx_beacon_right_count;
|
|
uint32_t rx_pkt_seqnum;
|
|
} g_ftm_ping_tput_cfg;
|
|
|
|
/* sche test cfg*/
|
|
typedef struct _g_ftm_sche_cfg {
|
|
uint8_t ping_cmd_num;
|
|
uint8_t pong_cmd_num;
|
|
uint32_t ping_bcn_period;
|
|
uint32_t pong_bcn_period;
|
|
hw_sched_cmd_t *ping_cmdlist;
|
|
hw_sched_cmd_t *pong_cmdlist;
|
|
hw_sched_cmd_t *rf_ping_cmdlist;
|
|
hw_sched_cmd_t *rf_pong_cmdlist;
|
|
timer_id_t cmdlist_sch;
|
|
uint8_t sched_flag;
|
|
} g_ftm_sche_cfg;
|
|
|
|
/* crc_cfg*/
|
|
typedef struct _g_ftm_crc_cfg {
|
|
iot_pkt_t *ftm_msdu;
|
|
crc_cfg_t g_crc_cfg;
|
|
} g_ftm_crc_cfg;
|
|
|
|
/* global variable*/
|
|
typedef struct _g_ftm {
|
|
g_ftm_mpdu_send_cfg ftm_mpdu_send_cfg;
|
|
g_ftm_sniffer_cfg ftm_sniffer_cfg;
|
|
g_ftm_ping_tput_cfg ftm_ping_tput_cfg;
|
|
uint8_t rx_msg_show;
|
|
g_ftm_sche_cfg ftm_sche_cfg;
|
|
g_ftm_crc_cfg ftm_crc_cfg;
|
|
uint32_t nid_for_sync_ppm;
|
|
uint8_t cert_flag;
|
|
uint8_t hwq_inited : 1,
|
|
rf_hwq_inited : 1,
|
|
/*see FTM_INIT_WORK_MODE */
|
|
plc_rf_mode : 2,
|
|
rev0 : 4;
|
|
} g_ftm;
|
|
|
|
#endif/* IOT_MP_SUPPORT == 0 */
|
|
|
|
/**
|
|
* @brief ftm_send_msg_helper() -ftm send msg
|
|
* @param int msgid -msg id
|
|
* @param iot_pkt_t *buffer -send buffer
|
|
* @param bool_t *need_free -need free or not
|
|
* @return void
|
|
*/
|
|
void ftm_send_msg_helper(int msgid, iot_pkt_t *buffer, bool_t *need_free);
|
|
|
|
#pragma pack(pop) /* restore the pack status */
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* IOT_FTM_MSG_H */
|