From 597ea2c7cda1e82e58973c4009ed481dd69f7b1e Mon Sep 17 00:00:00 2001 From: Gatsby Van Date: Tue, 20 Feb 2024 17:40:18 +0800 Subject: [PATCH] formatted --- df_datalink_ge/src/hardware/headless.c | 1019 ++++++++++++------------ df_datalink_ge/src/hardware/headless.h | 5 +- df_datalink_ge/src/main.c | 30 +- 3 files changed, 553 insertions(+), 501 deletions(-) diff --git a/df_datalink_ge/src/hardware/headless.c b/df_datalink_ge/src/hardware/headless.c index df596ab..642e7bc 100644 --- a/df_datalink_ge/src/hardware/headless.c +++ b/df_datalink_ge/src/hardware/headless.c @@ -1,7 +1,6 @@ -/***************************************************************************//** - * @file ad9371/src/app/headless.c +/******************************************************************************* * @file ad9371/src/app/headless.c * @brief Implementation of Main Function. -******************************************************************************** + ******************************************************************************** * Copyright 2017(c) Analog Devices, Inc. * * All rights reserved. @@ -34,7 +33,7 @@ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*******************************************************************************/ + *******************************************************************************/ /***************************** Include Files ********************************/ #include "headless.h" @@ -47,9 +46,9 @@ /************************** Variable Definitions *****************************/ -//XGpio GpioFreqCtrl; -//XGpio GpioGainCtrl; -//XGpio GpioAttnCtrl; +// XGpio GpioFreqCtrl; +// XGpio GpioGainCtrl; +// XGpio GpioAttnCtrl; XScuGic Intc; /************************** Function Prototypes ******************************/ @@ -66,23 +65,24 @@ int HARDWARE_initialize() Status = HARDWARE_ad9371Config(); - if (Status != ADIERR_OK){ - return ADIERR_FAILED; + if (Status != ADIERR_OK) + { + return ADIERR_FAILED; } -// /**********************************************************/ -// /************ AD9371 Dynamical Reconfiguration ************/ -// /**********************************************************/ -// Status = HW_ad9371DynamicCfgInit(); -// if (Status != ADIERR_OK){ -// printf("HW:: AD9371 dynamic configuration initialization failed!\n"); -// return ADIERR_FAILED; -// } -// -// printf("HW:: AD9371 ready to be reconfigured!\n"); -// -// // main loop -// while(1); + // /**********************************************************/ + // /************ AD9371 Dynamical Reconfiguration ************/ + // /**********************************************************/ + // Status = HW_ad9371DynamicCfgInit(); + // if (Status != ADIERR_OK){ + // HW_PRINT("HW:: AD9371 dynamic configuration initialization failed!\n"); + // return ADIERR_FAILED; + // } + // + // HW_PRINT("HW:: AD9371 ready to be reconfigured!\n"); + // + // // main loop + // while(1); // never reach return ADIERR_OK; @@ -101,69 +101,76 @@ int HARDWARE_ad9371Config(void) /*********** Initialize Configuration Interface ***********/ /**********************************************************/ Status = CMB_initPlatform(); - if (Status != ADIERR_OK){ - return ADIERR_FAILED; - } - - Status = HW_adiCfgProfileInit(); - if (Status != ADIERR_OK){ + if (Status != ADIERR_OK) + { return ADIERR_FAILED; } - printf("HW:: Initialize configuration interface done!\n"); + Status = HW_adiCfgProfileInit(); + if (Status != ADIERR_OK) + { + return ADIERR_FAILED; + } + + HW_PRINT("HW:: Initialize configuration interface done!\n"); /**********************************************************/ /****************** AD9528 Configuration ******************/ /**********************************************************/ Status = HW_9528Config(ad9528Init); - if (Status != ADIERR_OK){ + if (Status != ADIERR_OK) + { return ADIERR_FAILED; } - printf("HW:: AD9528 configuration done!\n"); + HW_PRINT("HW:: AD9528 configuration done!\n"); Status = HW_9528GetLockStatus(ad9528Init, ®508); - if (Status != ADIERR_OK){ + if (Status != ADIERR_OK) + { return ADIERR_FAILED; } - printf("HW:: AD9528 REG508: 0x%02x\n",reg508); + HW_PRINT("HW:: AD9528 REG508: 0x%02x\n", reg508); /**********************************************************/ /****************** AD9371 Configuration ******************/ /**********************************************************/ Status = HW_9371Config(ad9528Init, &mykDevice); - if (Status != ADIERR_OK){ + if (Status != ADIERR_OK) + { return ADIERR_FAILED; } Status = HW_9371CheckJesdStatus(&mykDevice, &framerStatus, - &obsFramerStatus, &deframerStatus); - if (Status != ADIERR_OK){ + &obsFramerStatus, &deframerStatus); + if (Status != ADIERR_OK) + { return ADIERR_FAILED; } - else { + else + { // typical value: 0x3E - printf("HW:: RxFramerStatus = 0x%x\n", framerStatus); + HW_PRINT("HW:: RxFramerStatus = 0x%x\n", framerStatus); // typical value: 0x3E - printf("HW:: OrxFramerStatus = 0x%x\n", obsFramerStatus); + HW_PRINT("HW:: OrxFramerStatus = 0x%x\n", obsFramerStatus); // typical value: 0x28 - printf("HW:: DeframerStatus = 0x%x\n", deframerStatus); + HW_PRINT("HW:: DeframerStatus = 0x%x\n", deframerStatus); } - printf("HW:: All configuration done!\n"); + HW_PRINT("HW:: All configuration done!\n"); return ADIERR_OK; } // this function is NOT safe -//int HW_ad9371DynamicCfgInit(void) +// int HW_ad9371DynamicCfgInit(void) //{ // int Status; // // Status = HW_setupIntrSystem(INTC_DEVICE_ID, &Intc); // if (Status != XST_SUCCESS) { -// printf("HW: HW_setupIntrSystem() failed!\n"); +// HW_PRINT("HW: HW_setupIntrSystem() failed!\n"); // return XST_FAILURE; // } // @@ -171,7 +178,7 @@ int HARDWARE_ad9371Config(void) // Status |= XGpio_Initialize(&GpioGainCtrl, GAIN_CTRL_DEVICE_ID); // Status |= XGpio_Initialize(&GpioAttnCtrl, ATTN_CTRL_DEVICE_ID); // if (Status != XST_SUCCESS) { -// printf("HW: GPIO init failed!\n"); +// HW_PRINT("HW: GPIO init failed!\n"); // return XST_FAILURE; // } // @@ -206,78 +213,80 @@ int HARDWARE_ad9371Config(void) /*****************************************************************************/ /* -* -* This function setups the interrupt system. -* -* @param DeviceId is the unique identifier for a GIC device. -* @param GicPtr is a pointer to the instance of the INTC. -* -* @return -* - XST_SUCCESS if successful, -* - XST_FAILURE.if not succesful -* -* @note None. -* -******************************************************************************/ -int HW_setupIntrSystem(u16 DeviceId, XScuGic * GicPtr) + * + * This function setups the interrupt system. + * + * @param DeviceId is the unique identifier for a GIC device. + * @param GicPtr is a pointer to the instance of the INTC. + * + * @return + * - XST_SUCCESS if successful, + * - XST_FAILURE.if not succesful + * + * @note None. + * + ******************************************************************************/ +int HW_setupIntrSystem(u16 DeviceId, XScuGic *GicPtr) { - int Status; - XScuGic_Config *CfgPtr; + int Status; + XScuGic_Config *CfgPtr; - /* - * Initialize the interrupt controller driver so that it is ready to - * use. - */ - CfgPtr = XScuGic_LookupConfig(DeviceId); - if (!CfgPtr) { - printf("No interrupt config found for %d\n", DeviceId); - return XST_FAILURE; - } + /* + * Initialize the interrupt controller driver so that it is ready to + * use. + */ + CfgPtr = XScuGic_LookupConfig(DeviceId); + if (!CfgPtr) + { + HW_PRINT("No interrupt config found for %d\n", DeviceId); + return XST_FAILURE; + } - Status = XScuGic_CfgInitialize(GicPtr, CfgPtr, CfgPtr->CpuBaseAddress); - if (Status != XST_SUCCESS) { - printf("No interrupt config found for %d\n", DeviceId); - return XST_FAILURE; - } + Status = XScuGic_CfgInitialize(GicPtr, CfgPtr, CfgPtr->CpuBaseAddress); + if (Status != XST_SUCCESS) + { + HW_PRINT("No interrupt config found for %d\n", DeviceId); + return XST_FAILURE; + } - Xil_ExceptionInit(); - Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT, - (Xil_ExceptionHandler)XScuGic_InterruptHandler, - (void *)GicPtr); - Xil_ExceptionEnable(); + Xil_ExceptionInit(); + Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT, + (Xil_ExceptionHandler)XScuGic_InterruptHandler, + (void *)GicPtr); + Xil_ExceptionEnable(); - return XST_SUCCESS; + return XST_SUCCESS; } - -int HW_connectIntr(XScuGic *GicPtr,u32 IntrId,Xil_InterruptHandler Handler, - void *CallBackRef, u8 Priority, u8 Trigger) +int HW_connectIntr(XScuGic *GicPtr, u32 IntrId, Xil_InterruptHandler Handler, + void *CallBackRef, u8 Priority, u8 Trigger) { - int Status; - // Register interrupt handler - Status = XScuGic_Connect(GicPtr, IntrId, (Xil_InterruptHandler)Handler, - CallBackRef); - if(Status != XST_SUCCESS) - { - return XST_FAILURE; - } - XScuGic_SetPriorityTriggerType(GicPtr, IntrId, Priority, Trigger); + int Status; + // Register interrupt handler + Status = XScuGic_Connect(GicPtr, IntrId, (Xil_InterruptHandler)Handler, + CallBackRef); + if (Status != XST_SUCCESS) + { + return XST_FAILURE; + } + XScuGic_SetPriorityTriggerType(GicPtr, IntrId, Priority, Trigger); - XScuGic_Enable(GicPtr, IntrId); + XScuGic_Enable(GicPtr, IntrId); - return XST_SUCCESS; + return XST_SUCCESS; } - int HW_adiCfgProfileInit(void) { - if (!ad9528Init) { - printf("Cannot find ad9528 configuration profile with name 'ad9528Init'!"); + if (!ad9528Init) + { + HW_PRINT("Cannot find ad9528 configuration profile with name 'ad9528Init'!"); return ADIERR_FAILED; } - if (!&mykDevice) { - printf("Cannot find ad9371 configuration profile with name 'mykDevice'!"); + if (!&mykDevice) + { + HW_PRINT("Cannot find ad9371 configuration profile with name 'mykDevice'!"); return ADIERR_FAILED; } @@ -293,7 +302,6 @@ int HW_adiCfgProfileInit(void) return ADIERR_OK; } - int HW_9528Config(ad9528Device_t *clockAD9528_device) { ADI_ERR error; @@ -303,44 +311,46 @@ int HW_9528Config(ad9528Device_t *clockAD9528_device) /* Perform a hard reset on the AD9528 DUT */ error = AD9528_resetDevice(clockAD9528_device); - if (error != ADIERR_OK) { - printf("AD9528_resetDevice() failed\n"); + if (error != ADIERR_OK) + { + HW_PRINT("AD9528_resetDevice() failed\n"); return ADIERR_FAILED; } error = AD9528_initDeviceDataStruct(clockAD9528_device, - clockAD9528_device->pll1Settings->vcxo_Frequency_Hz, - clockAD9528_device->pll1Settings->refA_Frequency_Hz, - clockAD9528_device->outputSettings->outFrequency_Hz[1]); - if (error != ADIERR_OK) { - printf("AD9528_initDeviceDataStruct() failed\n"); + clockAD9528_device->pll1Settings->vcxo_Frequency_Hz, + clockAD9528_device->pll1Settings->refA_Frequency_Hz, + clockAD9528_device->outputSettings->outFrequency_Hz[1]); + if (error != ADIERR_OK) + { + HW_PRINT("AD9528_initDeviceDataStruct() failed\n"); return ADIERR_FAILED; } /* Initialize the AD9528 by writing all SPI registers */ error = AD9528_initialize(clockAD9528_device); - if (error != ADIERR_OK) { - printf("WARNING: AD9528_initialize() issues.\n"); + if (error != ADIERR_OK) + { + HW_PRINT("WARNING: AD9528_initialize() issues.\n"); } return ADIERR_OK; } - int HW_9528GetLockStatus(ad9528Device_t *device, uint8_t *reg508) { ADI_ERR error; error = CMB_SPIReadByte(device->spiSettings, AD9528_ADDR_STATUS_READBACK0, reg508); - if (error != ADIERR_OK) { - printf("HW_9528GetLockStatus failed.\n"); + if (error != ADIERR_OK) + { + HW_PRINT("HW_9528GetLockStatus failed.\n"); return ADIERR_FAILED; } return ADIERR_OK; } - int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice) { ADI_ERR error; @@ -352,32 +362,32 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice uint8_t arm_minor; uint8_t arm_release; uint32_t initCalMask = TX_BB_FILTER | ADC_TUNER | TIA_3DB_CORNER | DC_OFFSET | - TX_ATTENUATION_DELAY | RX_GAIN_DELAY | FLASH_CAL | - PATH_DELAY | TX_LO_LEAKAGE_INTERNAL | TX_QEC_INIT | - LOOPBACK_RX_LO_DELAY | LOOPBACK_RX_RX_QEC_INIT | - RX_LO_DELAY | RX_QEC_INIT ; + TX_ATTENUATION_DELAY | RX_GAIN_DELAY | FLASH_CAL | + PATH_DELAY | TX_LO_LEAKAGE_INTERNAL | TX_QEC_INIT | + LOOPBACK_RX_LO_DELAY | LOOPBACK_RX_RX_QEC_INIT | + RX_LO_DELAY | RX_QEC_INIT; uint8_t errorFlag = 0; uint8_t errorCode = 0; uint32_t initCalsCompleted; uint32_t trackingCalMask = TRACK_ORX1_QEC | TRACK_ORX2_QEC | TRACK_RX1_QEC | - TRACK_RX2_QEC | TRACK_TX1_QEC | TRACK_TX2_QEC; + TRACK_RX2_QEC | TRACK_TX1_QEC | TRACK_TX2_QEC; /* Allocating memory for the errorString */ errorString = NULL; - - /*************************************************************************/ /***** Mykonos Initialization Sequence *****/ /*************************************************************************/ /* Perform a hard reset on the MYKONOS DUT (Toggle RESETB pin on device) */ - if ((mykError = MYKONOS_resetDevice(mykDevice)) != MYKONOS_ERR_OK) { + if ((mykError = MYKONOS_resetDevice(mykDevice)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } - if ((mykError = MYKONOS_initialize(mykDevice)) != MYKONOS_ERR_OK) { + if ((mykError = MYKONOS_initialize(mykDevice)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } @@ -387,7 +397,8 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice /*************************************************************************/ if ((mykError = MYKONOS_checkPllsLockStatus(mykDevice, - &pllLockStatus)) != MYKONOS_ERR_OK) { + &pllLockStatus)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } @@ -397,7 +408,8 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice /*************************************************************************/ if ((mykError = MYKONOS_enableMultichipSync(mykDevice, 1, - &mcsStatus)) != MYKONOS_ERR_OK) { + &mcsStatus)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } @@ -418,61 +430,70 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice /*************************************************************************/ if ((mykError = MYKONOS_enableMultichipSync(mykDevice, 0, - &mcsStatus)) != MYKONOS_ERR_OK) { + &mcsStatus)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } if ((mcsStatus & 0x0B) == 0x0B) - printf("MCS successful\n"); + HW_PRINT("MCS successful\n"); else - printf("MCS failed\n"); + HW_PRINT("MCS failed\n"); /*************************************************************************/ /***** Mykonos Load ARM file *****/ /*************************************************************************/ - if (pllLockStatus & 0x01) { - printf("CLKPLL locked\n"); - if ((mykError = MYKONOS_initArm(mykDevice)) != MYKONOS_ERR_OK) { + if (pllLockStatus & 0x01) + { + HW_PRINT("CLKPLL locked\n"); + if ((mykError = MYKONOS_initArm(mykDevice)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } if ((mykError = MYKONOS_loadArmFromBinary(mykDevice, - &firmware_Mykonos_M3_bin[0], firmware_Mykonos_M3_bin_len)) != MYKONOS_ERR_OK) { + &firmware_Mykonos_M3_bin[0], firmware_Mykonos_M3_bin_len)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } - } else { - printf("CLKPLL not locked (0x%x)\n", pllLockStatus); + } + else + { + HW_PRINT("CLKPLL not locked (0x%x)\n", pllLockStatus); error = ADIERR_FAILED; goto error_2; } /* Read back the version of the ARM binary loaded into the Mykonos ARM memory */ if ((mykError = MYKONOS_getArmVersion(mykDevice, &arm_major, &arm_minor, - &arm_release, NULL)) == MYKONOS_ERR_OK) - printf("AD9371 ARM version %d.%d.%d\n", arm_major, arm_minor, arm_release); + &arm_release, NULL)) == MYKONOS_ERR_OK) + HW_PRINT("AD9371 ARM version %d.%d.%d\n", arm_major, arm_minor, arm_release); /*************************************************************************/ /***** Mykonos Set RF PLL Frequencies *****/ /*************************************************************************/ if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, RX_PLL, - mykDevice->rx->rxPllLoFrequency_Hz)) != MYKONOS_ERR_OK) { + mykDevice->rx->rxPllLoFrequency_Hz)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, TX_PLL, - mykDevice->tx->txPllLoFrequency_Hz)) != MYKONOS_ERR_OK) { + mykDevice->tx->txPllLoFrequency_Hz)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, SNIFFER_PLL, - mykDevice->obsRx->snifferPllLoFrequency_Hz)) != MYKONOS_ERR_OK) { + mykDevice->obsRx->snifferPllLoFrequency_Hz)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } @@ -481,167 +502,180 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice mdelay(200); if ((mykError = MYKONOS_checkPllsLockStatus(mykDevice, - &pllLockStatus)) != MYKONOS_ERR_OK) { + &pllLockStatus)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } if ((pllLockStatus & 0x0F) == 0x0F) - printf("PLLs locked\n"); - else { - printf("PLLs not locked (0x%x)\n", pllLockStatus); + HW_PRINT("PLLs locked\n"); + else + { + HW_PRINT("PLLs not locked (0x%x)\n", pllLockStatus); error = ADIERR_FAILED; goto error_2; } -// /*************************************************************************/ -// /***** Mykonos Set GPIOs *****/ -// /*************************************************************************/ -// -// if ((mykGpioErr = MYKONOS_setRx1GainCtrlPin(mykDevice, 0, 0, 0, 0, -// 0)) != MYKONOS_ERR_GPIO_OK) { -// errorString = getGpioMykonosErrorMessage(mykGpioErr); -// goto error_11; -// } -// -// if ((mykGpioErr = MYKONOS_setRx2GainCtrlPin(mykDevice, 0, 0, 0, 0, -// 0)) != MYKONOS_ERR_GPIO_OK) { -// errorString = getGpioMykonosErrorMessage(mykGpioErr); -// goto error_11; -// } -// -// if ((mykGpioErr = MYKONOS_setTx1AttenCtrlPin(mykDevice, 0, 0, 0, 0, -// 0)) != MYKONOS_ERR_GPIO_OK) { -// errorString = getGpioMykonosErrorMessage(mykGpioErr); -// goto error_11; -// } -// -// if ((mykGpioErr = MYKONOS_setTx2AttenCtrlPin(mykDevice, 0, 0, 0, -// 0)) != MYKONOS_ERR_GPIO_OK) { -// errorString = getGpioMykonosErrorMessage(mykGpioErr); -// goto error_11; -// } -// -// if ((mykGpioErr = MYKONOS_setupGpio(mykDevice)) != MYKONOS_ERR_GPIO_OK) { -// errorString = getGpioMykonosErrorMessage(mykGpioErr); -// goto error_11; -// } -// -// /*************************************************************************/ -// /***** Mykonos Set manual gains values *****/ -// /*************************************************************************/ -// -// if ((mykError = MYKONOS_setRx1ManualGain(mykDevice, 255)) != MYKONOS_ERR_OK) { -// errorString = getMykonosErrorMessage(mykError); -// goto error_11; -// } -// -// if ((mykError = MYKONOS_setRx2ManualGain(mykDevice, 255)) != MYKONOS_ERR_OK) { -// errorString = getMykonosErrorMessage(mykError); -// goto error_11; -// } -// -// if ((mykError = MYKONOS_setObsRxManualGain(mykDevice, OBS_RX1_TXLO, -// 255)) != MYKONOS_ERR_OK) { -// errorString = getMykonosErrorMessage(mykError); -// goto error_11; -// } -// -// if ((mykError = MYKONOS_setObsRxManualGain(mykDevice, OBS_RX2_TXLO, -// 255)) != MYKONOS_ERR_OK) { -// errorString = getMykonosErrorMessage(mykError); -// goto error_11; -// } -// -// if ((mykError = MYKONOS_setObsRxManualGain(mykDevice, OBS_SNIFFER_A, -// 255)) != MYKONOS_ERR_OK) { -// errorString = getMykonosErrorMessage(mykError); -// goto error_11; -// } -// -// if ((mykError = MYKONOS_setObsRxManualGain(mykDevice, OBS_SNIFFER_B, -// 255)) != MYKONOS_ERR_OK) { -// errorString = getMykonosErrorMessage(mykError); -// goto error_11; -// } -// -// if ((mykError = MYKONOS_setObsRxManualGain(mykDevice, OBS_SNIFFER_C, -// 255)) != MYKONOS_ERR_OK) { -// errorString = getMykonosErrorMessage(mykError); -// goto error_11; -// } -// -// /*************************************************************************/ -// /***** Mykonos Initialize attenuations *****/ -// /*************************************************************************/ -// -// mykError = MYKONOS_setTx1Attenuation(mykDevice, 10000); -// if (mykError != MYKONOS_ERR_OK) { -// errorString = getMykonosErrorMessage(mykError); -// goto error_11; -// } -// -// mykError = MYKONOS_setTx2Attenuation(mykDevice, 10000); -// if (mykError != MYKONOS_ERR_OK) { -// errorString = getMykonosErrorMessage(mykError); -// goto error_11; -// } + // /*************************************************************************/ + // /***** Mykonos Set GPIOs *****/ + // /*************************************************************************/ + // + // if ((mykGpioErr = MYKONOS_setRx1GainCtrlPin(mykDevice, 0, 0, 0, 0, + // 0)) != MYKONOS_ERR_GPIO_OK) { + // errorString = getGpioMykonosErrorMessage(mykGpioErr); + // goto error_11; + // } + // + // if ((mykGpioErr = MYKONOS_setRx2GainCtrlPin(mykDevice, 0, 0, 0, 0, + // 0)) != MYKONOS_ERR_GPIO_OK) { + // errorString = getGpioMykonosErrorMessage(mykGpioErr); + // goto error_11; + // } + // + // if ((mykGpioErr = MYKONOS_setTx1AttenCtrlPin(mykDevice, 0, 0, 0, 0, + // 0)) != MYKONOS_ERR_GPIO_OK) { + // errorString = getGpioMykonosErrorMessage(mykGpioErr); + // goto error_11; + // } + // + // if ((mykGpioErr = MYKONOS_setTx2AttenCtrlPin(mykDevice, 0, 0, 0, + // 0)) != MYKONOS_ERR_GPIO_OK) { + // errorString = getGpioMykonosErrorMessage(mykGpioErr); + // goto error_11; + // } + // + // if ((mykGpioErr = MYKONOS_setupGpio(mykDevice)) != MYKONOS_ERR_GPIO_OK) { + // errorString = getGpioMykonosErrorMessage(mykGpioErr); + // goto error_11; + // } + // + // /*************************************************************************/ + // /***** Mykonos Set manual gains values *****/ + // /*************************************************************************/ + // + // if ((mykError = MYKONOS_setRx1ManualGain(mykDevice, 255)) != MYKONOS_ERR_OK) { + // errorString = getMykonosErrorMessage(mykError); + // goto error_11; + // } + // + // if ((mykError = MYKONOS_setRx2ManualGain(mykDevice, 255)) != MYKONOS_ERR_OK) { + // errorString = getMykonosErrorMessage(mykError); + // goto error_11; + // } + // + // if ((mykError = MYKONOS_setObsRxManualGain(mykDevice, OBS_RX1_TXLO, + // 255)) != MYKONOS_ERR_OK) { + // errorString = getMykonosErrorMessage(mykError); + // goto error_11; + // } + // + // if ((mykError = MYKONOS_setObsRxManualGain(mykDevice, OBS_RX2_TXLO, + // 255)) != MYKONOS_ERR_OK) { + // errorString = getMykonosErrorMessage(mykError); + // goto error_11; + // } + // + // if ((mykError = MYKONOS_setObsRxManualGain(mykDevice, OBS_SNIFFER_A, + // 255)) != MYKONOS_ERR_OK) { + // errorString = getMykonosErrorMessage(mykError); + // goto error_11; + // } + // + // if ((mykError = MYKONOS_setObsRxManualGain(mykDevice, OBS_SNIFFER_B, + // 255)) != MYKONOS_ERR_OK) { + // errorString = getMykonosErrorMessage(mykError); + // goto error_11; + // } + // + // if ((mykError = MYKONOS_setObsRxManualGain(mykDevice, OBS_SNIFFER_C, + // 255)) != MYKONOS_ERR_OK) { + // errorString = getMykonosErrorMessage(mykError); + // goto error_11; + // } + // + // /*************************************************************************/ + // /***** Mykonos Initialize attenuations *****/ + // /*************************************************************************/ + // + // mykError = MYKONOS_setTx1Attenuation(mykDevice, 10000); + // if (mykError != MYKONOS_ERR_OK) { + // errorString = getMykonosErrorMessage(mykError); + // goto error_11; + // } + // + // mykError = MYKONOS_setTx2Attenuation(mykDevice, 10000); + // if (mykError != MYKONOS_ERR_OK) { + // errorString = getMykonosErrorMessage(mykError); + // goto error_11; + // } /*************************************************************************/ /***** Mykonos ARM Initialization Calibrations *****/ /*************************************************************************/ if ((mykError = MYKONOS_runInitCals(mykDevice, - (initCalMask & ~TX_LO_LEAKAGE_EXTERNAL))) != MYKONOS_ERR_OK) { + (initCalMask & ~TX_LO_LEAKAGE_EXTERNAL))) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } if ((mykError = MYKONOS_waitInitCals(mykDevice, 60000, &errorFlag, - &errorCode)) != MYKONOS_ERR_OK) { + &errorCode)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } - if ((errorFlag != 0) || (errorCode != 0)) { + if ((errorFlag != 0) || (errorCode != 0)) + { /*** < Info: abort init cals > ***/ if ((mykError = MYKONOS_abortInitCals(mykDevice, - &initCalsCompleted)) != MYKONOS_ERR_OK) { + &initCalsCompleted)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } if (initCalsCompleted) - printf("Completed calibrations: %x\n", (unsigned int)initCalsCompleted); - } else - printf("Calibrations completed successfully\n"); + HW_PRINT("Completed calibrations: %x\n", (unsigned int)initCalsCompleted); + } + else + HW_PRINT("Calibrations completed successfully\n"); /*************************************************************************/ /***** Mykonos ARM Initialization External LOL Calibrations with PA *****/ /*************************************************************************/ /* Please ensure PA is enabled operational at this time */ - if (initCalMask & TX_LO_LEAKAGE_EXTERNAL) { + if (initCalMask & TX_LO_LEAKAGE_EXTERNAL) + { if ((mykError = MYKONOS_runInitCals(mykDevice, - TX_LO_LEAKAGE_EXTERNAL)) != MYKONOS_ERR_OK) { + TX_LO_LEAKAGE_EXTERNAL)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } if ((mykError = MYKONOS_waitInitCals(mykDevice, 60000, &errorFlag, - &errorCode)) != MYKONOS_ERR_OK) { + &errorCode)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } - if ((errorFlag != 0) || (errorCode != 0)) { + if ((errorFlag != 0) || (errorCode != 0)) + { /*** < Info: abort init cals > ***/ if ((mykError = MYKONOS_abortInitCals(mykDevice, - &initCalsCompleted)) != MYKONOS_ERR_OK) { + &initCalsCompleted)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } - } else - printf("External LOL Calibrations completed successfully\n"); + } + else + HW_PRINT("External LOL Calibrations completed successfully\n"); } /*************************************************************************/ @@ -649,7 +683,8 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice /*************************************************************************/ if ((mykError = MYKONOS_enableSysrefToRxFramer(mykDevice, - 1)) != MYKONOS_ERR_OK) { + 1)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } @@ -657,7 +692,8 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice * transmitting CGS from the RxFramer> ***/ if ((mykError = MYKONOS_enableSysrefToObsRxFramer(mykDevice, - 1)) != MYKONOS_ERR_OK) { + 1)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } @@ -665,18 +701,20 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice * transmitting CGS from the ObsRxFramer> ***/ if ((mykError = MYKONOS_enableSysrefToDeframer(mykDevice, - 0)) != MYKONOS_ERR_OK) { + 0)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } - if ((mykError = MYKONOS_resetDeframer(mykDevice)) != MYKONOS_ERR_OK) { + if ((mykError = MYKONOS_resetDeframer(mykDevice)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } - if ((mykError = MYKONOS_enableSysrefToDeframer(mykDevice, - 1)) != MYKONOS_ERR_OK) { + if ((mykError = MYKONOS_enableSysrefToDeframer(mykDevice, 1)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } @@ -704,29 +742,33 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice /*************************************************************************/ if ((mykError = MYKONOS_enableTrackingCals(mykDevice, - trackingCalMask)) != MYKONOS_ERR_OK) { + trackingCalMask)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } /*** < Info: Allow Rx1/2 QEC tracking and Tx1/2 QEC tracking to run when in the radioOn state - * Tx calibrations will only run if radioOn and the obsRx path is set to OBS_INTERNAL_CALS > ***/ + * Tx calibrations will only run if radioOn and the obsRx path is set to OBS_INTERNAL_CALS > ***/ /*** < Info: Function to turn radio on, Enables transmitters and receivers * that were setup during MYKONOS_initialize() > ***/ - if ((mykError = MYKONOS_radioOn(mykDevice)) != MYKONOS_ERR_OK) { + if ((mykError = MYKONOS_radioOn(mykDevice)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } /*** < Info: Allow TxQEC to run when User: is not actively using ORx receive path > ***/ if ((mykError = MYKONOS_setObsRxPathSource(mykDevice, - OBS_RXOFF)) != MYKONOS_ERR_OK) { + OBS_RXOFF)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } if ((mykError = MYKONOS_setObsRxPathSource(mykDevice, - OBS_INTERNALCALS)) != MYKONOS_ERR_OK) { + OBS_INTERNALCALS)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } @@ -734,28 +776,28 @@ int HW_9371Config(ad9528Device_t *clockAD9528_device, mykonosDevice_t *mykDevice mdelay(1000); if ((mykError = MYKONOS_setObsRxPathSource(mykDevice, - OBS_RX1_SNIFFERLO)) != MYKONOS_ERR_OK) { + OBS_RX1_SNIFFERLO)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); goto error_11; } Xil_DCacheInvalidateRange(DDR_MEM_BASEADDR + 0x800000, 16384 * 8); - printf("Done\n"); + HW_PRINT("Done\n"); return 0; error_11: - printf("%s", errorString); + HW_PRINT("%s", errorString); error_2: -// axi_clkgen_remove(rx_clkgen); + // axi_clkgen_remove(rx_clkgen); return FAILURE; } - int HW_9371CheckJesdStatus(mykonosDevice_t *mykDevice, uint8_t *framerStatus, - uint8_t *obsFramerStatus, uint8_t *deframerStatus) + uint8_t *obsFramerStatus, uint8_t *deframerStatus) { mykonosErr_t mykError; const char *errorString; @@ -767,19 +809,24 @@ int HW_9371CheckJesdStatus(mykonosDevice_t *mykDevice, uint8_t *framerStatus, /*************************************************************************/ if ((mykError = MYKONOS_readRxFramerStatus(mykDevice, - framerStatus)) != MYKONOS_ERR_OK) { + framerStatus)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); return ADIERR_FAILED; } - else { + else + { // typical value: 0x3E } if ((mykError = MYKONOS_readOrxFramerStatus(mykDevice, - obsFramerStatus)) != MYKONOS_ERR_OK) { + obsFramerStatus)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); return ADIERR_FAILED; - } else { + } + else + { // typical value: 0x3E } @@ -788,17 +835,19 @@ int HW_9371CheckJesdStatus(mykonosDevice_t *mykDevice, uint8_t *framerStatus, /*************************************************************************/ if ((mykError = MYKONOS_readDeframerStatus(mykDevice, - deframerStatus)) != MYKONOS_ERR_OK) { + deframerStatus)) != MYKONOS_ERR_OK) + { errorString = getMykonosErrorMessage(mykError); return ADIERR_FAILED; - } else { + } + else + { // typical value: 0x28 } return ADIERR_OK; } - int HW_9371SmallFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz) { mykonosErr_t mykError = MYKONOS_ERR_OK; @@ -806,58 +855,57 @@ int HW_9371SmallFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz) /* * Move the device into the radio off state. */ - if((mykError = MYKONOS_radioOff(mykDevice)) != MYKONOS_ERR_OK) + if ((mykError = MYKONOS_radioOff(mykDevice)) != MYKONOS_ERR_OK) { - printf("Turn radio off failed!\n\r"); + HW_PRINT("Turn radio off failed!\n\r"); return ADIERR_FAILED; } /* * Program the new local oscillator (LO) frequency. Check if PLL is locked. */ - if((mykError = MYKONOS_setRfPllFrequency(mykDevice, TX_PLL, - freq_Hz)) != MYKONOS_ERR_OK) + if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, TX_PLL, + freq_Hz)) != MYKONOS_ERR_OK) { - printf("Set TX PLL failed!\n\r"); + HW_PRINT("Set TX PLL failed!\n\r"); return ADIERR_FAILED; } mykError = MYKONOS_checkPllsLockStatus(mykDevice, &pllLockStatus); if ((pllLockStatus & 0x07) != 0x07) { /*** < Info: Clock, Rx and Tx PLLs not locked > ***/ - printf("Not all PLLs locked, lock status: 0x%02x\n", pllLockStatus); + HW_PRINT("Not all PLLs locked, lock status: 0x%02x\n", pllLockStatus); } /* * Reset the external channel. */ -// If((mykError = MYKONOS_resetExtTxLolChannel(mykDevice, TX1_TX2)) -// != MYKONOS_ERR_OK) ; //where TX1_TX2 is part of the enum mykonosTxChannels_t -// { -// printf("Reset external channel FAILED!"); -// } + // If((mykError = MYKONOS_resetExtTxLolChannel(mykDevice, TX1_TX2)) + // != MYKONOS_ERR_OK) ; //where TX1_TX2 is part of the enum mykonosTxChannels_t + // { + // HW_PRINT("Reset external channel FAILED!"); + // } /* * Move the device back into the radio on state. */ if ((mykError = MYKONOS_radioOn(mykDevice)) != MYKONOS_ERR_OK) { - printf("Turn radio on failed!\n\r"); + HW_PRINT("Turn radio on failed!\n\r"); return ADIERR_FAILED; } /* * Reenable tracking calibrations. */ -// If((mykError = MYKONOS_MYKONOS_setObsRxPathSource(mykDevice, OBS_INTERNALCALS)) -// != MYKONOS_ERR_OK) ; //where TX1_TX2 is part of the enum mykonosTxChannels_t -// { -// printf("Reenable tracking calibrations FAILED!"); -// } + // If((mykError = MYKONOS_MYKONOS_setObsRxPathSource(mykDevice, OBS_INTERNALCALS)) + // != MYKONOS_ERR_OK) ; //where TX1_TX2 is part of the enum mykonosTxChannels_t + // { + // HW_PRINT("Reenable tracking calibrations FAILED!"); + // } return ADIERR_OK; } - int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz) { mykonosErr_t mykError = MYKONOS_ERR_OK; @@ -873,77 +921,71 @@ int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz) /* * Move the device into the radio off state. */ - if((mykError = MYKONOS_radioOff(mykDevice)) != MYKONOS_ERR_OK) + if ((mykError = MYKONOS_radioOff(mykDevice)) != MYKONOS_ERR_OK) { - printf("Turn radio off failed!\n\r"); + HW_PRINT("Turn radio off failed!\n\r"); return ADIERR_FAILED; } /* * Program the new local oscillator (LO) frequency. Check if PLL is locked. */ - if((mykError = MYKONOS_setRfPllFrequency(mykDevice, TX_PLL, - freq_Hz)) != MYKONOS_ERR_OK) + if ((mykError = MYKONOS_setRfPllFrequency(mykDevice, TX_PLL, + freq_Hz)) != MYKONOS_ERR_OK) { - printf("Set TX PLL failed!\n\r"); + HW_PRINT("Set TX PLL failed!\n\r"); return ADIERR_FAILED; } mykError = MYKONOS_checkPllsLockStatus(mykDevice, &pllLockStatus); if ((pllLockStatus & 0x07) != 0x07) { /*** < Info: Clock, Rx and Tx PLLs not locked > ***/ - printf("Not all PLLs locked, lock status: 0x%02x\n", pllLockStatus); + HW_PRINT("Not all PLLs locked, lock status: 0x%02x\n", pllLockStatus); } /* * Rerun the initialization calibrations. */ uint32_t initCalMask = TX_QEC_INIT | LOOPBACK_RX_LO_DELAY | - LOOPBACK_RX_RX_QEC_INIT | RX_LO_DELAY | RX_QEC_INIT; - if ((mykError = MYKONOS_runInitCals(mykDevice, initCalMask)) - != MYKONOS_ERR_OK) + LOOPBACK_RX_RX_QEC_INIT | RX_LO_DELAY | RX_QEC_INIT; + if ((mykError = MYKONOS_runInitCals(mykDevice, initCalMask)) != MYKONOS_ERR_OK) { - printf("Rerun the initialization calibrations FAILED!"); + HW_PRINT("Rerun the initialization calibrations FAILED!"); return ADIERR_FAILED; } if ((mykError = MYKONOS_waitInitCals(mykDevice, 60000, &errorFlag, - &errorCode)) != MYKONOS_ERR_OK) + &errorCode)) != MYKONOS_ERR_OK) { - printf("Initialize calibration TIME OUT!"); + HW_PRINT("Initialize calibration TIME OUT!"); return ADIERR_FAILED; } if ((errorFlag != 0) || (errorCode != 0)) { - printf("initial cals error!\n\r"); + HW_PRINT("initial cals error!\n\r"); - if((mykError = MYKONOS_getInitCalStatus(mykDevice, &initCalStatus)) - != MYKONOS_ERR_OK) + if ((mykError = MYKONOS_getInitCalStatus(mykDevice, &initCalStatus)) != MYKONOS_ERR_OK) { /*** < User log error return value to debug why init failed > ***/ } - //abort init calibrations - if((mykError = MYKONOS_abortInitCals(mykDevice, &initCalsCompleted)) - != MYKONOS_ERR_OK) + // abort init calibrations + if ((mykError = MYKONOS_abortInitCals(mykDevice, &initCalsCompleted)) != MYKONOS_ERR_OK) { /*** < User log error return value to debug why init failed > ***/ - } - if(initCalsCompleted) + if (initCalsCompleted) { /*** < which calls had completed, per the mask > ***/ } - if((mykError = MYKONOS_readArmCmdStatus(mykDevice, &errorWord, - &statusWord)) != MYKONOS_ERR_OK) + if ((mykError = MYKONOS_readArmCmdStatus(mykDevice, &errorWord, + &statusWord)) != MYKONOS_ERR_OK) { /*** < User log error return value to debug why init failed > ***/ } - if((mykError = MYKONOS_readArmCmdStatusByte(mykDevice, 2, &status)) - != MYKONOS_ERR_OK) + if ((mykError = MYKONOS_readArmCmdStatusByte(mykDevice, 2, &status)) != MYKONOS_ERR_OK) { - } - if(status!=0) + if (status != 0) { /*** < Arm Mailbox Status Error errorWord > ***/ /*** < Pending Flag per opcode statusWord, this follows the mask > ***/ @@ -955,184 +997,181 @@ int HW_9371LargeFrequencyChange(mykonosDevice_t *mykDevice, uint64_t freq_Hz) */ if ((mykError = MYKONOS_radioOn(mykDevice)) != MYKONOS_ERR_OK) { - printf("Turn radio on failed!\n\r"); + HW_PRINT("Turn radio on failed!\n\r"); return ADIERR_FAILED; } return ADIERR_OK; } +// void FreqIntrHandler(void *CallbackRef) +// { +// XGpio *GpioPtr = (XGpio *)CallbackRef; +// uint8_t IntrStatus; +// uint32_t NewFreqHz; +// IntrStatus = XGpio_InterruptGetStatus(GpioPtr); -//void FreqIntrHandler(void *CallbackRef) -//{ -// XGpio *GpioPtr = (XGpio *)CallbackRef; -// uint8_t IntrStatus; -// uint32_t NewFreqHz; -// IntrStatus = XGpio_InterruptGetStatus(GpioPtr); -// -// if (IntrStatus & XGPIO_IR_CH1_MASK) -// { -// /* Clear the Interrupt */ -// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH1_MASK); -// -// NewFreqHz = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_1); -// if (NewFreqHz != mykDevice.tx->txPllLoFrequency_Hz) -// { -// if (NewFreqHz > 300000000 && NewFreqHz < 6000000000) -// { -// if (abs(NewFreqHz - mykDevice.tx->txPllLoFrequency_Hz) <= 100000000) -// { -// HW_9371SmallFrequencyChange(&mykDevice, NewFreqHz); -// } -// else -// { -// HW_9371LargeFrequencyChange(&mykDevice, NewFreqHz); -// } -// mykDevice.tx->txPllLoFrequency_Hz = NewFreqHz; -// printf("New Tx frequency set to %d Hz!\n",NewFreqHz); -// } -// else -// { -// printf("The desired Tx Frequency is out of range(300 ~ 6000 MHz)!\n"); -// } -// } -// } -// -// if (IntrStatus & XGPIO_IR_CH2_MASK) -// { -// /* Clear the Interrupt */ -// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH2_MASK); -// -// NewFreqHz = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_2); -// if (NewFreqHz != mykDevice.rx->rxPllLoFrequency_Hz) -// { -// if (NewFreqHz > 300000000 && NewFreqHz < 6000000000) -// { -// if (abs(NewFreqHz - mykDevice.rx->rxPllLoFrequency_Hz) <= 100000000) -// { -// HW_9371SmallFrequencyChange(&mykDevice, NewFreqHz); -// } -// else -// { -// HW_9371LargeFrequencyChange(&mykDevice, NewFreqHz); -// } -// mykDevice.rx->rxPllLoFrequency_Hz = NewFreqHz; -// printf("New Rx frequency set to %d Hz!\n",NewFreqHz); -// } -// else -// { -// printf("The desired Rx Frequency is out of range(300 ~ 6000 MHz)!\n"); -// } -// } -// } -//} -// -// -//void GainIntrHandler(void *CallbackRef) -//{ -// XGpio *GpioPtr = (XGpio *)CallbackRef; -// uint8_t IntrStatus; -// uint32_t NewRxGain; -// IntrStatus = XGpio_InterruptGetStatus(GpioPtr); -// -// if (IntrStatus & XGPIO_IR_CH1_MASK) -// { -// /* Clear the Interrupt */ -// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH1_MASK); -// -// NewRxGain = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_1); -// if (NewRxGain != mykDevice.rx->rxGainCtrl->rx1GainIndex) -// { -// if ((NewRxGain >= 195) && (NewRxGain <= 255)) -// { -// MYKONOS_setRx1ManualGain(&mykDevice, NewRxGain); -// mykDevice.rx->rxGainCtrl->rx1GainIndex = NewRxGain; -// char buf[BUFSIZ]; -// sprintf(buf, "%u", NewRxGain); -// printf("New Rx1 gain index set to %s!\n",buf); -// } -// else -// { -// printf("The desired Rx1 gain index is out of range(195 ~ 255), 0.5dB per stage!\n"); -// } -// } -// } -// -// if (IntrStatus & XGPIO_IR_CH2_MASK) -// { -// /* Clear the Interrupt */ -// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH2_MASK); -// -// NewRxGain = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_2); -// if (NewRxGain != mykDevice.rx->rxGainCtrl->rx2GainIndex) -// { -// if ((NewRxGain >= 195) && (NewRxGain <= 255)) -// { -// MYKONOS_setRx2ManualGain(&mykDevice, NewRxGain); -// mykDevice.rx->rxGainCtrl->rx2GainIndex = NewRxGain; -// char buf[BUFSIZ]; -// sprintf(buf, "%u", NewRxGain); -// printf("New Rx2 gain index set to %s!\n",buf); -// } -// else -// { -// printf("The desired Rx2 gain index is out of range(195 ~ 255), 0.5dB per stage!\n"); -// } -// } -// } -//} -// -// -//void AttnIntrHandler(void *CallbackRef) -//{ -// XGpio *GpioPtr = (XGpio *)CallbackRef; -// uint8_t IntrStatus; -// uint32_t NewTxAttn; -// IntrStatus = XGpio_InterruptGetStatus(GpioPtr); -// -// if (IntrStatus & XGPIO_IR_CH1_MASK) -// { -// /* Clear the Interrupt */ -// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH1_MASK); -// -// NewTxAttn = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_1); -// if (NewTxAttn != mykDevice.tx->tx1Atten_mdB) -// { -// if ((NewTxAttn >= 0) && (NewTxAttn <= 41950)) -// { -// MYKONOS_setTx1Attenuation(&mykDevice, NewTxAttn); -// mykDevice.tx->tx1Atten_mdB = NewTxAttn; -// char buf[BUFSIZ]; -// sprintf(buf, "%u", NewTxAttn); -// printf("New Tx1 attenuation set to %s dBm!\n",buf); -// } -// else -// { -// printf("The desired Tx1 attenuation is out of range(0 ~ 41950 dBm), 50 dBm step!\n"); -// } -// } -// } -// -// if (IntrStatus & XGPIO_IR_CH2_MASK) -// { -// /* Clear the Interrupt */ -// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH2_MASK); -// -// NewTxAttn = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_2); -// if (NewTxAttn != mykDevice.tx->tx2Atten_mdB) -// { -// if ((NewTxAttn >= 0) && (NewTxAttn <= 41950)) -// { -// MYKONOS_setTx2Attenuation(&mykDevice, NewTxAttn); -// mykDevice.tx->tx2Atten_mdB = NewTxAttn; -// char buf[BUFSIZ]; -// sprintf(buf, "%u", NewTxAttn); -// printf("New Tx2 attenuation set to %s dBm!\n",buf); -// } -// else -// { -// printf("The desired Tx2 attenuation is out of range(0 ~ 41950 dBm), 50 dBm step!\n"); -// } -// } -// } -//} +// if (IntrStatus & XGPIO_IR_CH1_MASK) +// { +// /* Clear the Interrupt */ +// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH1_MASK); + +// NewFreqHz = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_1); +// if (NewFreqHz != mykDevice.tx->txPllLoFrequency_Hz) +// { +// if (NewFreqHz > 300000000 && NewFreqHz < 6000000000) +// { +// if (abs(NewFreqHz - mykDevice.tx->txPllLoFrequency_Hz) <= 100000000) +// { +// HW_9371SmallFrequencyChange(&mykDevice, NewFreqHz); +// } +// else +// { +// HW_9371LargeFrequencyChange(&mykDevice, NewFreqHz); +// } +// mykDevice.tx->txPllLoFrequency_Hz = NewFreqHz; +// HW_PRINT("New Tx frequency set to %d Hz!\n", NewFreqHz); +// } +// else +// { +// HW_PRINT("The desired Tx Frequency is out of range(300 ~ 6000 MHz)!\n"); +// } +// } +// } + +// if (IntrStatus & XGPIO_IR_CH2_MASK) +// { +// /* Clear the Interrupt */ +// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH2_MASK); + +// NewFreqHz = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_2); +// if (NewFreqHz != mykDevice.rx->rxPllLoFrequency_Hz) +// { +// if (NewFreqHz > 300000000 && NewFreqHz < 6000000000) +// { +// if (abs(NewFreqHz - mykDevice.rx->rxPllLoFrequency_Hz) <= 100000000) +// { +// HW_9371SmallFrequencyChange(&mykDevice, NewFreqHz); +// } +// else +// { +// HW_9371LargeFrequencyChange(&mykDevice, NewFreqHz); +// } +// mykDevice.rx->rxPllLoFrequency_Hz = NewFreqHz; +// HW_PRINT("New Rx frequency set to %d Hz!\n", NewFreqHz); +// } +// else +// { +// HW_PRINT("The desired Rx Frequency is out of range(300 ~ 6000 MHz)!\n"); +// } +// } +// } +// } + +// void GainIntrHandler(void *CallbackRef) +// { +// XGpio *GpioPtr = (XGpio *)CallbackRef; +// uint8_t IntrStatus; +// uint32_t NewRxGain; +// IntrStatus = XGpio_InterruptGetStatus(GpioPtr); + +// if (IntrStatus & XGPIO_IR_CH1_MASK) +// { +// /* Clear the Interrupt */ +// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH1_MASK); + +// NewRxGain = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_1); +// if (NewRxGain != mykDevice.rx->rxGainCtrl->rx1GainIndex) +// { +// if ((NewRxGain >= 195) && (NewRxGain <= 255)) +// { +// MYKONOS_setRx1ManualGain(&mykDevice, NewRxGain); +// mykDevice.rx->rxGainCtrl->rx1GainIndex = NewRxGain; +// char buf[BUFSIZ]; +// sHW_PRINT(buf, "%u", NewRxGain); +// HW_PRINT("New Rx1 gain index set to %s!\n", buf); +// } +// else +// { +// HW_PRINT("The desired Rx1 gain index is out of range(195 ~ 255), 0.5dB per stage!\n"); +// } +// } +// } + +// if (IntrStatus & XGPIO_IR_CH2_MASK) +// { +// /* Clear the Interrupt */ +// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH2_MASK); + +// NewRxGain = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_2); +// if (NewRxGain != mykDevice.rx->rxGainCtrl->rx2GainIndex) +// { +// if ((NewRxGain >= 195) && (NewRxGain <= 255)) +// { +// MYKONOS_setRx2ManualGain(&mykDevice, NewRxGain); +// mykDevice.rx->rxGainCtrl->rx2GainIndex = NewRxGain; +// char buf[BUFSIZ]; +// sHW_PRINT(buf, "%u", NewRxGain); +// HW_PRINT("New Rx2 gain index set to %s!\n", buf); +// } +// else +// { +// HW_PRINT("The desired Rx2 gain index is out of range(195 ~ 255), 0.5dB per stage!\n"); +// } +// } +// } +// } + +// void AttnIntrHandler(void *CallbackRef) +// { +// XGpio *GpioPtr = (XGpio *)CallbackRef; +// uint8_t IntrStatus; +// uint32_t NewTxAttn; +// IntrStatus = XGpio_InterruptGetStatus(GpioPtr); + +// if (IntrStatus & XGPIO_IR_CH1_MASK) +// { +// /* Clear the Interrupt */ +// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH1_MASK); + +// NewTxAttn = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_1); +// if (NewTxAttn != mykDevice.tx->tx1Atten_mdB) +// { +// if ((NewTxAttn >= 0) && (NewTxAttn <= 41950)) +// { +// MYKONOS_setTx1Attenuation(&mykDevice, NewTxAttn); +// mykDevice.tx->tx1Atten_mdB = NewTxAttn; +// char buf[BUFSIZ]; +// sHW_PRINT(buf, "%u", NewTxAttn); +// HW_PRINT("New Tx1 attenuation set to %s dBm!\n", buf); +// } +// else +// { +// HW_PRINT("The desired Tx1 attenuation is out of range(0 ~ 41950 dBm), 50 dBm step!\n"); +// } +// } +// } + +// if (IntrStatus & XGPIO_IR_CH2_MASK) +// { +// /* Clear the Interrupt */ +// XGpio_InterruptClear(GpioPtr, XGPIO_IR_CH2_MASK); + +// NewTxAttn = XGpio_DiscreteRead(GpioPtr, AXI_GPIO_BANK_2); +// if (NewTxAttn != mykDevice.tx->tx2Atten_mdB) +// { +// if ((NewTxAttn >= 0) && (NewTxAttn <= 41950)) +// { +// MYKONOS_setTx2Attenuation(&mykDevice, NewTxAttn); +// mykDevice.tx->tx2Atten_mdB = NewTxAttn; +// char buf[BUFSIZ]; +// sHW_PRINT(buf, "%u", NewTxAttn); +// HW_PRINT("New Tx2 attenuation set to %s dBm!\n", buf); +// } +// else +// { +// HW_PRINT("The desired Tx2 attenuation is out of range(0 ~ 41950 dBm), 50 dBm step!\n"); +// } +// } +// } +// } diff --git a/df_datalink_ge/src/hardware/headless.h b/df_datalink_ge/src/hardware/headless.h index 41efed4..384f8cf 100644 --- a/df_datalink_ge/src/hardware/headless.h +++ b/df_datalink_ge/src/hardware/headless.h @@ -1,7 +1,7 @@ /* * headless.h * - * Created on: 2021Äê6ÔÂ8ÈÕ + * Created on: 2021��6��8�� * Author: Josh */ @@ -30,7 +30,8 @@ /**************************** Type Definitions *******************************/ /***************** Macros (Inline Functions) Definitions *********************/ - +#define HW_PRINT(...) __asm__("nop") +// #define HW_PRINT(...) printf(__VA_ARGS__) /************************** Variable Definitions *****************************/ /************************** Function Prototypes ******************************/ diff --git a/df_datalink_ge/src/main.c b/df_datalink_ge/src/main.c index 16748f0..412672d 100644 --- a/df_datalink_ge/src/main.c +++ b/df_datalink_ge/src/main.c @@ -51,33 +51,39 @@ void ScuTimer_IntrHandler(void *context); void Systembus_RxIntrHandler(void *context); void Systembus_TxIntrHandler(void *context); /************************** Constant Definitions *****************************/ -struct callback_desc phy_callback_desc = { +struct callback_desc phy_callback_desc = +{ .callback = Phy_IntrHandler, .ctx = NULL }; -struct callback_desc periodicpull_callback_desc = { +struct callback_desc periodicpull_callback_desc = +{ .callback = PeriodicPull_Handler, .ctx = NULL }; -struct callback_desc sysbus_rx_callback_desc = { +struct callback_desc sysbus_rx_callback_desc = +{ .callback = Systembus_RxIntrHandler, .ctx = NULL }; -struct callback_desc sysbus_tx_callback_desc = { +struct callback_desc sysbus_tx_callback_desc = +{ .callback = Systembus_TxIntrHandler, .ctx = NULL }; -struct callback_desc scutm_callback_desc = { +struct callback_desc scutm_callback_desc = +{ .callback = ScuTimer_IntrHandler, .ctx = NULL }; -L2_CONFIG linkConfig = { +L2_CONFIG linkConfig = +{ .myType = L2_NODE_HEAD, .clustId = 1, .myId = 1, @@ -99,16 +105,22 @@ L2_CONFIG linkConfig = { // .tmcInstPtr = NULL // }; -static PHY_CONFIG phyConfig = { +static PHY_CONFIG phyConfig = +{ .devId = 0, .baseAddr = PHY_BASEADDR, .antBramId = PHY_ANTCONFIG_BRAM_DEVICE_ID, .txBramId = PHY_TXBUFF_BRAM_DEVICE_ID, .rxBramId = PHY_RXBUFF_BRAM_DEVICE_ID, - .hwXadcId = PHY_HW_XADC_DEVICE_ID + .hwXadcId = PHY_HW_XADC_DEVICE_ID, + .get_clk_state = NULL, + .get_ad_lock_state = NULL, + .get_ad0_temp = NULL, + .get_ad1_temp = NULL }; -TMC_CONFIG tmcConfig = { +TMC_CONFIG tmcConfig = +{ .baseAddr = TIME_CONTROLLER_BASEADDR, .reset = 10 };