import os import sys import struct from bin.log import mywrite _CmdTable={ 0x0001:'IOT_FTM_CMD_ID_PING', 0x0002:'IOT_FTM_CMD_ID_READ', 0x0003:'IOT_FTM_CMD_ID_WRITE', 0x0004:'IOT_FTM_CMD_ID_TX', 0x0005:'IOT_FTM_CMD_ID_RX', 0x0006:'IOT_FTM_CMD_ID_TONE', 0x0007:'IOT_FTM_CMD_ID_STS', 0x0008:'IOT_FTM_CMD_ID_SET', 0x0009:'IOT_FTM_CMD_ID_GET', 0x000a:'IOT_FTM_CMD_ID_SCAN', 0X000b:'IOT_FTM_CMD_ID_HWQCFG', 0X000c:'IOT_FTM_CMD_ID_PKTCFG', 0X000d:'IOT_FTM_CMD_ID_TESTCASE', 0X000e:'IOT_FTM_CMD_ID_MAC_RECE', 0X000f:'IOT_FTM_CMD_ID_MAC_RECE_SNIFFER', 0x0010:'IOT_FTM_CMD_ID_RINGCFG', 0x0011:'IOT_FTM_CMD_ID_SET_FILTERSEL', 0x0012:'IOT_FTM_CMD_ID_SET_FILTER', 0x0013:'IOT_FTM_CMD_ID_SET_RINGDIS', 0x0014:'IOT_FTM_CMD_ID_SNIFFERCFG', 0x0015:'IOT_FTM_CMD_ID_RX_MSG_SHOW', 0x0016:'IOT_FTM_CMD_ID_CMD_CFG', 0x0017:'IOT_FTM_CMD_ID_CRC_CFG', 0x0018:'IOT_FTM_CMD_ID_MAC_PING', 0x0019:'IOT_FTM_CMD_ID_SET_TEINID', 0x001A:'IOT_FTM_CMD_ID_CLEAR_COUNT', 0x001B:'IOT_FTM_CMD_ID_SEND_COUNT', 0x001C:'IOT_FTM_CMD_ID_TPUT_TEST', 0x001D:'IOT_FTM_CMD_ID_DIS_HWQ', 0x001E:'IOT_FTM_CMD_ID_LOAD_DATA', 0x001F:'IOT_FTM_CMD_ID_I2C_WRITE', 0x0020:'IOT_FTM_CMD_ID_I2C_READ', 0x0021:'IOT_FTM_CMD_ID_GPIO_OUT', 0x0022:'IOT_FTM_CMD_ID_GPIO_IN', 0x0023:'IOT_FTM_CMD_ID_UART_LOOPBACK', 0x0024:'IOT_FTM_CMD_ID_SPI_FLASH', 0x0025:'IOT_FTM_CMD_ID_READ_CHIPID', 0x0026:'IOT_FTM_CMD_ID_READ_FW_VER', 0x0027:'IOT_FTM_CMD_ID_BURN_MAC', 0x0028:'IOT_FTM_CMD_ID_SEND_REV_DATA', 0x0029:'IOT_FTM_CMD_ID_GOLDEN_REV_DATA', 0x002a:'IOT_FTM_CMD_ID_SET_PHY_PARA', 0x002b:'IOT_FTM_CMD_ID_READ_MAC', 0x002c:'IOT_FTM_CMD_ID_INIT_DONE', 0x002d:'IOT_FTM_CMD_ID_EFUSE_LOCK', 0x002e:'IOT_FTM_CMD_ID_SPUR_MASK_SET', 0x002f:'IOT_FTM_CMD_ID_OEM_MODULETYPE_SET', 0x0030:'IOT_FTM_CMD_ID_OEM_MODULETYPE_GET', 0x0031:'IOT_FTM_CMD_ID_VENDOR_ID_SET', 0x0032:'IOT_FTM_CMD_ID_CHIP_CODE_SET', 0x0033:'IOT_FTM_CMD_ID_CHIP_CODE_GET', 0x0034:'IOT_FTM_CMD_ID_SET_PPM_NID', 0x0035:'IOT_FTM_CMD_ID_GLB_NID_SET', 0x0036:'IOT_FTM_CMD_ID_CUS_CMD', 0x0037:'IOT_FTM_CMD_ID_VENDOR_ID_GET', 0x0038:'IOT_FTM_CMD_ID_CHIP_MMID_GET', 0x0039:'IOT_FTM_CMD_ID_ZC_CIRCUIT_CHECK', 0x003a:'IOT_FTM_CMD_ID_DISABEL_GPIO_RESET', 0x003b:'IOT_FTM_CMD_ID_DUT_CHARGE_VOL_GET', 0x003c:'IOT_FTM_CMD_ID_FW_CRC_CHECK', 0x003d:'IOT_FTM_CMD_ID_DEV_ID_SET', 0x003e:'IOT_FTM_CMD_ID_DEV_ID_GET', 0x003f:'IOT_FTM_CMD_ID_PT_FW_VER_GET', 0x0040:'IOT_FTM_CMD_ID_HW_VER_SET', 0x0041:'IOT_FTM_CMD_ID_HW_VER_GET', 0x0042:'IOT_FTM_CMD_ID_DUT_CHANNEL_VOL_GET', 0x0043:'IOT_FTM_CMD_ID_DUT_TXRX_MODE_SET', 0x0044:'IOT_FTM_CMD_ID_FLASH_ID_GET', 0x0045:'IOT_FTM_CMD_ID_MAC_ADDR_UPDATE', 0x0046:'IOT_FTM_CMD_ID_BURN_IP_INFO', 0x0047:'IOT_FTM_CMD_ID_READ_IP_INFO', 0x0048:'IOT_FTM_CMD_ID_CHIP_MMID_SET', 0x0049:'IOT_FTM_CMD_ID_CHECK_IMG_CRC', 0x004a:'IOT_FTM_CMD_ID_METER_CROSSTALK_SET', 0x004b:'IOT_FTM_CMD_ID_METER_CROSSTALK_GET', 0x004c:'IOT_FTM_CMD_ID_SOFT_RESTART', 0x004d:'IOT_FTM_CMD_ID_EM_EXT_FUNC', 0x004e:'IOT_FTM_CMD_ID_PASSCODE_GET', 0x004f:'IOT_FTM_CMD_ID_EXT_FLASH_CHECK', 0x0050:'IOT_FTM_CMD_ID_BRK_START_STOP_LOOPBACK', 0x0051:'IOT_FTM_CMD_ID_BRK_ENABLE_INT', 0x0052:'IOT_FTM_CMD_ID_BRK_QUERY_TRIGGER_CNT', 0x0053:'IOT_FTM_CMD_ID_READ_BCD_MAC', 0x0054:'IOT_FTM_CMD_ID_LOADER_TSFM', 0x0055:'IOT_FTM_CMD_ID_CHANNEL_ADC_READ', 0x0056:'IOT_FTM_CMD_ID_METER_PORT_UART_LOOPBACK', 0x0057:'IOT_FTM_CMD_ID_SET_PT_FW_VER', 0x0058:'IOT_FTM_CMD_ID_TEMP_CALI_SET', 0x0059:'IOT_FTM_CMD_ID_TEMP_CALI_GET', 0x005A:'IOT_FTM_CMD_ID_MAC_PHY_DIAGNOSTIC', 0x005B:'IOT_FTM_CMD_ID_ADC_CALI_SET', 0x005C:'IOT_FTM_CMD_ID_ADC_CALI_GET', 0x005D:'IOT_FTM_CMD_ID_ADC_READ_REAL', 0x005E:'IOT_FTM_CMD_ID_PHY_RF_TXIQM_CAL_W', 0x005F:'IOT_FTM_CMD_ID_PHY_RF_TXIQM_CAL_R', 0x0060:'IOT_FTM_CMD_ID_RF_PHY_TX_TONE', 0x0061:'IOT_FTM_CMD_ID_RF_SPI_SYNC', 0x0062:'IOT_FTM_CMD_ID_PHY_RF_TXF_CAL_W', 0x0063:'IOT_FTM_CMD_ID_PHY_RF_TXF_CAL_R', 0x0064:'IOT_FTM_CMD_ID_MP_RF_TEST', 0x0065:'IOT_FTM_CMD_ID_RF_TRS_CHK', 0x0066:'IOT_FTM_CMD_ID_EFUSE_CHECK', 0x0067:'IOT_FTM_CMD_ID_MP_RF_CAL_CFG', 0x0068:'IOT_FTM_CMD_ID_MP_RF_CAL_MEAS', 0x0069:'IOT_FTM_CMD_ID_MP_RF_CAL_UPDATE', 0x006A:'IOT_FTM_CMD_ID_POWER_SYNC', 0x006B:'IOT_FTM_CMD_ID_SECURITY_CFG_SET', 0x006C:'IOT_FTM_CMD_ID_SECURITY_CFG_GET', 0x006D:'IOT_FTM_CMD_ID_RF_PHY_TX_TONE_RAW', 0x006E:'IOT_FTM_CMD_ID_TOPO_ADC_DUMP', 0x006F:'IOT_FTM_CMD_ID_IR_LOOPBACK_TEST', 0x0070:'IOT_FTM_CMD_ID_RF_TX_DC_LOOP_CALI', 0x0071:'IOT_FTM_CMD_ID_SET_GET_PT_INFO', 0x0072:'IOT_FTM_CMD_ID_DUMP_TO_MEM', } def ftm_decode(data:bytearray): # 跳过开头的6个字节 src mac 和6个字节 dst mac data=data[12:] # print(data) hdr=struct.unpack("0: index_start=data.find(b'##') index_end=data.find(b'@@') if(index_start>=0 and index_end>=0): try: s=data[:index_start] txt=s.decode("utf-8") mywrite(txt) except Exception as e: pass ftm_decode(data[index_start+2:index_end]) data=data[index_end+2:] if __name__ == "__main__": ftm_handle(bytearray.fromhex("2323000000000000000000000000030000004f0000000b0000004f00050005000910110f0d4040")) ftm_handle(bytearray.fromhex("232300000000000000000000000004000000180000000200000024004040"))