/**************************************************************************** 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 __PHY_CHN_EST_H #define __PHY_CHN_EST_H #ifdef __cplusplus extern "C" { #endif #pragma pack(push) /* save the pack status */ #pragma pack(1) /* 1 byte align */ #define IOT_CHANNEL_DUMP_TEST_START (0) #define IOT_CHANNEL_DUMP_TEST_DONE (1) #define IOT_CHANNEL_TEST_END (3) #define IOT_ADA_DUMP_MSG_PKT_SIZE (128) #define IOT_PHY_CHN_DUMP_SIZE (32) typedef enum { ADC_DUMP_TRIG_ORIG_SPD = 0, ADC_DUMP_TRIG_1_2_SPD = 1, ADC_DUMP_TRIG_1_4_SPD = 2, ADC_DUMP_TRIG_1_8_SPD = 3 } iot_phy_chn_dump_rt_speed_t; typedef enum { ADC_DUMP_TRIG_CCA = 0, ADC_DUMP_TRIG_PKT_DECT = 1, ADC_DUMP_TRIG_SYNC_OK = 2, ADC_DUMP_TRIG_FC_DONE = 3, ADC_DUMP_TRIG_FC_CRC_OK = 4, ADC_DUMP_TRIG_FC_CRC_FAIL = 5, ADC_DUMP_TRIG_PB_DONE = 6, ADC_DUMP_TRIG_PB_CRC_OK = 7, ADC_DUMP_TRIG_PB_CRC_FAIL = 8, ADC_DUMP_TRIG_FC_OK_REV_PB = 9, ADC_DUMP_TRIG_PWR_JUMP = 10, ADC_DUMP_TRIG_RX_ERR_RCV_PB = 11, ADC_DUMP_TRIG_TX_UNDERFLOW = 12, ADC_DUMP_TRIG_TX_ST_FILTER = 13, ADC_DUMP_TRIG_RX_ABORT = 14 } iot_phy_chn_dump_trig_mode_t; /******************RX direction******************/ /** * description: runtime dump type * range: 0 ~ 255 * default: 0 * display: noise/trig:FC */ typedef enum { IOT_PHY_CHN_DUMP_NOISE = 0, IOT_PHY_CHN_DUMP_TRIG_THD, IOT_PHY_CHN_DUMP_TRIG_FC, IOT_PHY_CHN_DUMP_RF, } iot_phy_chn_dump_rt_typ_t; /* runtime dump parameters */ typedef struct _iot_phy_chn_dump_rt_param { /** * range: -24 ~ 60 (fix gain) * default: 127 (auto gain) * display: gain:auto/fix */ int8_t gain; /** * range: 0 ~ 96K * default: 96K * display: sample points */ uint32_t size; /** * range: 0 ~ 1000000 ms * default: 30000 * display: timeout */ uint32_t timeout; /** * range: 0,1,2,3 * default: 0 * display: sample speed */ iot_phy_chn_dump_rt_speed_t speed; } iot_phy_chn_dump_rt_param_t; /* trig dump parameters */ typedef struct _iot_phy_chn_dump_trig_param { /** * range: -24 ~ 60 (fix gain) * default: 127 (auto gain) * display: gain:auto/fix */ int8_t gain; /** * range: 0 ~ 96K * default: 96K * display: buffer points */ uint32_t buf_size; /** * range: 0 ~ 96K * default: 96K * display: sample points */ uint32_t sample_size; /** * range: 0 ~ 1000000 ms * default: 30000 * display: timeout */ uint32_t timeout; /** * range: 0,1,2,3 * default: 0 * display: sample speed */ iot_phy_chn_dump_rt_speed_t speed; } iot_phy_chn_dump_trig_param_t; /* trig threshold dump parameters */ typedef struct _iot_phy_chn_dump_trig_thd_param { /** * range: -512 ~ 511 * default: 100 * display: level thrshold */ int16_t thd; iot_phy_chn_dump_trig_param_t trig_common; } iot_phy_chn_dump_trig_thd_param_t; /* trig threshold dump parameters */ typedef struct _iot_phy_chn_dump_trig_phy_param { /** * range: 0 ~ 9 see macro define * default: 4:ADC_DUMP_TRIG_FC_CRC_OK * display: trig id */ iot_phy_chn_dump_trig_mode_t trig_id; iot_phy_chn_dump_trig_param_t trig_common; } iot_phy_chn_dump_trig_phy_param_t; /* rf dump parameters */ typedef struct _iot_phy_chn_dump_rf_rx_param { /** * range: 13 ~ 74 (fix gain) * default: 0 (auto gain) * display: gain:auto/fix */ uint8_t gain; /** * range: 0 ~ 96K, unit is 4 bytes * default: 96K * display: sample points */ uint32_t size; /** * range: 100E6 ~ 1000E6, unit is 1Hz * display: center frequency */ uint32_t lo_freq; /** * range: 1 ~ 0x1FF * default: 0, current option rx filter * display: rx filter */ uint16_t rx_filter; } iot_phy_chn_dump_rf_param_t; /* runtime dump config */ typedef struct _iot_phy_chn_dump_rt_cfg { iot_phy_chn_dump_rt_typ_t dump_typ; union { iot_phy_chn_dump_rt_param_t force_dump; iot_phy_chn_dump_trig_thd_param_t trig_thd; iot_phy_chn_dump_trig_phy_param_t trig_phy; iot_phy_chn_dump_rf_param_t rf_dump; } param; } iot_phy_chn_dump_rt_cfg_t; /* ada dump param */ typedef struct _iot_phy_chn_dump_param{ /* trig point */ uint32_t trig_offset; /* dump result */ uint32_t dump_rst; /* dump max_pwr */ uint32_t max_pwr; } iot_phy_chn_dump_param_t; /* ada dump report */ typedef struct _iot_phy_chn_dump_report { /* configuration */ iot_phy_chn_dump_param_t params; /* dummy data to make it a fixed size */ uint8_t dummy[IOT_PHY_CHN_DUMP_SIZE - sizeof(iot_phy_chn_dump_param_t)]; } iot_phy_chn_dump_report_t; /**************** dump result ******************/ typedef struct _iot_phy_chn_dump_result { int8_t gain; uint8_t* start_ptr; uint32_t len; iot_phy_chn_dump_report_t report; } iot_phy_chn_dump_result; /***************** ipc msg type ******************/ typedef struct _iot_channel_test_msg { uint8_t msg_id; uint8_t data[0]; } iot_channel_test_msg; #pragma pack(pop) /* restore the pack status */ #ifdef __cplusplus } #endif #endif