void AR0330_SetHue(int32_t hue) { CyU3PDebugPrint(4, "AR0330_SetHue: %d\r\n", hue); #define SetLow(io) CyU3PGpioSetValue(io, CyFalse) #define SetHigh(io) CyU3PGpioSetValue(io, CyTrue) #define SetBit(io, value) CyU3PGpioSetValue(io, 0 != (value & 0x80)) #if 0 CyU3PReturnStatus_t status; status = CyU3PGpioSetValue(LED_DRIVER_SDI, 0 != (hue & 1)); if (CY_U3P_SUCCESS != status) { CyU3PDebugPrint(4, "AR0330_SetHue: error = %d 0x%x\r\n", status, status); } status = CyU3PGpioSetValue(LED_DRIVER_CLK, 0 != (hue & 2)); if (CY_U3P_SUCCESS != status) { CyU3PDebugPrint(4, "AR0330_SetHue: error = %d 0x%x\r\n", status, status); } status = CyU3PGpioSetValue(LED_DRIVER_ED1, 0 != (hue & 4)); if (CY_U3P_SUCCESS != status) { CyU3PDebugPrint(4, "AR0330_SetHue: error = %d 0x%x\r\n", status, status); } status = CyU3PGpioSetValue(LED_DRIVER_ED2, 0 != (hue & 8)); if (CY_U3P_SUCCESS != status) { CyU3PDebugPrint(4, "AR0330_SetHue: error = %d 0x%x\r\n", status, status); } #else // initialise SetLow(LED_DRIVER_CLK); SetHigh(LED_DRIVER_ED2); SetLow(LED_DRIVER_ED1); CyU3PThreadSleep(1); for (int i = 0; i < 8; ++i) { SetBit(LED_DRIVER_SDI, hue); hue <<= 1; // output bit big endian CyU3PBusyWait(10); //CyU3PThreadSleep(10); SetHigh(LED_DRIVER_CLK); CyU3PBusyWait(10); //CyU3PThreadSleep(10); SetLow(LED_DRIVER_CLK); } //CyU3PThreadSleep(1); CyU3PBusyWait(10); SetHigh(LED_DRIVER_ED1); //CyU3PThreadSleep(10); CyU3PBusyWait(10); SetLow(LED_DRIVER_ED1); //CyU3PThreadSleep(1); CyU3PBusyWait(10); SetLow(LED_DRIVER_ED2); #endif }
/* This function stops the slave FIFO loop application. This shall be called * whenever a RESET or DISCONNECT event is received from the USB host. The * endpoints are disabled and the DMA pipe is destroyed by this function. */ static void NuandRFLinkStop (void) { CyU3PEpConfig_t epCfg; CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS; CyU3PGpioSetValue(GPIO_SYS_RST, CyTrue); CyU3PGpioSetValue(GPIO_RX_EN, CyFalse); CyU3PGpioSetValue(GPIO_TX_EN, CyFalse); /* Flush endpoint memory buffers */ CyU3PUsbFlushEp(BLADE_RF_SAMPLE_EP_PRODUCER); CyU3PUsbFlushEp(BLADE_RF_SAMPLE_EP_CONSUMER); /* Destroy the channels */ CyU3PDmaChannelDestroy(&glChHandleUtoP); if (!loopback_when_created) CyU3PDmaChannelDestroy(&glChHandlePtoU); /* Disable endpoints. */ CyU3PMemSet ((uint8_t *)&epCfg, 0, sizeof (epCfg)); epCfg.enable = CyFalse; /* Disable producer endpoint */ apiRetStatus = CyU3PSetEpConfig(BLADE_RF_SAMPLE_EP_PRODUCER, &epCfg); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PSetEpConfig failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } /* Disable consumer endpoint */ apiRetStatus = CyU3PSetEpConfig(BLADE_RF_SAMPLE_EP_CONSUMER, &epCfg); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PSetEpConfig failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } /* Reset the GPIF */ apiRetStatus = NuandConfigureGpif(GPIF_CONFIG_DISABLED); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "Failed to deinitialize GPIF. Error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } UartBridgeStop(); NuandAllowSuspend(CyTrue); glAppMode = MODE_NO_CONFIG; }
/* Entry function for the gpioOutputThread */ void GpioOutputThread_Entry ( uint32_t input) { CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS; /* Initialize Debug module */ apiRetStatus = CyFxDebugInit(); if (apiRetStatus != CY_U3P_SUCCESS) { /* Error handling */ CyU3PDebugPrint (4, "Debug module initialization failed, error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } /* Initialize GPIO module. */ CyFxGpioInit (); for (;;) { /* Set the GPIO 21 to high */ apiRetStatus = CyU3PGpioSetValue (21, CyTrue); if (apiRetStatus != CY_U3P_SUCCESS) { /* Error handling */ CyU3PDebugPrint (4, "CyU3PGpioSetValue failed, error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } /* Wait for two seconds */ CyU3PThreadSleep(2000); /* Set the GPIO 21 to low */ apiRetStatus = CyU3PGpioSetValue (21, CyFalse); if (apiRetStatus != CY_U3P_SUCCESS) { /* Error handling */ CyU3PDebugPrint (4, "CyU3PGpioSetValue failed, error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } /* Wait for two seconds */ CyU3PThreadSleep(2000); } }
uint16_t uxn1330_write(CyU3PDmaBuffer_t* pBuf) { log_debug ( "uxn1330 write addr %02x\n", gRdwrCmd.header.reg_addr ); switch (gRdwrCmd.header.reg_addr ) { case UXN1330_LP_B: case UXN1330_V18_EN: case UXN1330_VCON_EN: { CyBool_t val = pBuf->buffer[0] ? CyTrue : CyFalse; CyU3PReturnStatus_t ret; ret=CyU3PGpioSetValue( gRdwrCmd.header.reg_addr, val ); if (ret == CY_U3P_SUCCESS) { return 0; } else { log_error ( "gpio write failed: %d\n", ret ); } } break; case UXN1330_VCON_POT: { uint8_t val=pBuf->buffer[0]; return rdwr_vcon_pot(&val, CyTrue); } break; default: log_info("Unhandled uxn1330 write addr: %d\n", gRdwrCmd.header.reg_addr); } return 1; }
void NuandFpgaConfigStop(void) { CyU3PEpConfig_t epCfg; CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS; /* Abort and clear the channel */ CyU3PDmaChannelReset(&glChHandlebladeRFUtoP); /* Flush the endpoint memory */ CyU3PUsbFlushEp(BLADE_FPGA_EP_PRODUCER); /* Destroy the channel */ CyU3PDmaChannelDestroy(&glChHandlebladeRFUtoP); /* Disable endpoints. */ CyU3PMemSet((uint8_t *)&epCfg, 0, sizeof (epCfg)); epCfg.enable = CyFalse; /* Producer endpoint configuration. */ apiRetStatus = CyU3PSetEpConfig(BLADE_FPGA_EP_PRODUCER, &epCfg); if (apiRetStatus != CY_U3P_SUCCESS) { LOG_ERROR(apiRetStatus); CyFxAppErrorHandler (apiRetStatus); } apiRetStatus = NuandConfigureGpif(GPIF_CONFIG_DISABLED); if (apiRetStatus != CY_U3P_SUCCESS) { LOG_ERROR(apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } NuandAllowSuspend(CyTrue); glAppMode = MODE_NO_CONFIG; CyU3PGpioSetValue(GPIO_SYS_RST, CyTrue); }
/* * Reset the image sensor using GPIO. */ void SensorReset(void) { CyU3PReturnStatus_t apiRetStatus; uint16_t preTick, posTick; /* Drive the GPIO low to reset the sensor. */ //apiRetStatus = CyU3PGpioSetValue(SENSOR_POWER_GPIO, CyFalse); apiRetStatus = CyU3PGpioSetValue(SENSOR_RESET_GPIO, CyFalse); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "GPIO Set Value Error, Error Code = %d\n", apiRetStatus); return; } CyU3PDebugPrint(4, "GPIO Set Value\r\n"); /* Wait for some time to allow proper reset. */ uint8_t i = 0; while (i++ < 2){ preTick = CyU3PGetTime(); CyU3PThreadSleep(500); // change the value into 100 from 10. posTick = CyU3PGetTime(); CyU3PDebugPrint(4, "The ticks %d %d \r\n", preTick, posTick); //additional debug //;//CyU3PDebugPrint(4, "cpu pause \r\n"); } /* Drive the GPIO high to bring the sensor out of reset. */ //apiRetStatus = CyU3PGpioSetValue(SENSOR_POWER_GPIO, CyTrue); apiRetStatus = CyU3PGpioSetValue(SENSOR_RESET_GPIO, CyTrue); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "GPIO Set Value Error, Error Code = %d\n", apiRetStatus); return; } /* pause the cpu */ while (i++ < 4){ CyU3PThreadSleep(600); // change the value into 100 from 10. //;//CyU3PDebugPrint(4, "cpu pause \r\n"); } return; }
int FpgaBeginProgram(void) { CyBool_t value; unsigned tEnd; CyU3PReturnStatus_t apiRetStatus; apiRetStatus = CyU3PGpioSetValue(GPIO_nCONFIG, CyFalse); if (apiRetStatus != CY_U3P_SUCCESS) { return apiRetStatus; } tEnd = CyU3PGetTime() + 10; while (CyU3PGetTime() < tEnd); apiRetStatus = CyU3PGpioSetValue(GPIO_nCONFIG, CyTrue); tEnd = CyU3PGetTime() + 1000; do { apiRetStatus = CyU3PGpioGetValue(GPIO_nSTATUS, &value); if (CyU3PGetTime() > tEnd) return -1; } while (!value); return 0; }
/* This function starts the RF data transport mechanism. This is the second * interface of the first and only descriptor. */ static void NuandRFLinkStart(void) { uint16_t size = 0; CyU3PEpConfig_t epCfg; CyU3PDmaChannelConfig_t dmaCfg; CyU3PDmaMultiChannelConfig_t dmaMultiConfig; CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS; CyU3PUSBSpeed_t usbSpeed = CyU3PUsbGetSpeed(); NuandAllowSuspend(CyFalse); NuandGPIOReconfigure(CyTrue, CyTrue); /* Restart the PIB block, due to a bug where 16-bit to 32-bit GPIF transitions mess up the first DMA transaction. Restarting the PIB wipes all of the GPIF configurations */ CyU3PPibClock_t pibClock; apiRetStatus = CyU3PPibDeInit(); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "P-Port DeInitialization failed, Error Code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } /* Initialize the P-Port here */ pibClock.clkDiv = 4; pibClock.clkSrc = CY_U3P_SYS_CLK; pibClock.isHalfDiv = CyFalse; /* Enable DLL for async GPIF */ pibClock.isDllEnable = CyFalse; apiRetStatus = CyU3PPibInit(CyTrue, &pibClock); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "P-Port Initialization failed, Error Code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } CyU3PGpioSetValue(GPIO_SYS_RST, CyTrue); CyU3PGpioSetValue(GPIO_RX_EN, CyFalse); CyU3PGpioSetValue(GPIO_TX_EN, CyFalse); CyU3PGpioSetValue(GPIO_SYS_RST, CyFalse); /* Load the GPIF configuration for loading the RF transceiver */ apiRetStatus = CyU3PGpifLoad(&Rflink_CyFxGpifConfig); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint (4, "CyU3PGpifLoad failed, Error Code = %d\n",apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } /* Start the state machine. */ apiRetStatus = CyU3PGpifSMStart(RFLINK_START, RFLINK_ALPHA_START); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PGpifSMStart failed, Error Code = %d\n",apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } /* Determine max packet size based on USB speed */ switch (usbSpeed) { case CY_U3P_FULL_SPEED: size = 64; break; case CY_U3P_HIGH_SPEED: size = 512; break; case CY_U3P_SUPER_SPEED: size = 1024; break; default: CyU3PDebugPrint (4, "Error! Invalid USB speed.\n"); CyFxAppErrorHandler (CY_U3P_ERROR_FAILURE); break; } CyU3PMemSet ((uint8_t *)&epCfg, 0, sizeof (epCfg)); epCfg.enable = CyTrue; epCfg.epType = CY_U3P_USB_EP_BULK; epCfg.burstLen = (usbSpeed == CY_U3P_SUPER_SPEED ? 15 : 1); epCfg.streams = 0; epCfg.pcktSize = size; /* Producer endpoint configuration */ apiRetStatus = CyU3PSetEpConfig(BLADE_RF_SAMPLE_EP_PRODUCER, &epCfg); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PSetEpConfig failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler (apiRetStatus); } /* Consumer endpoint configuration */ apiRetStatus = CyU3PSetEpConfig(BLADE_RF_SAMPLE_EP_CONSUMER, &epCfg); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PSetEpConfig failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler (apiRetStatus); } // multi variant dmaMultiConfig.size = size * 2; dmaMultiConfig.count = 22; dmaMultiConfig.validSckCount = 2; dmaMultiConfig.prodSckId[0] = BLADE_RF_SAMPLE_EP_PRODUCER_USB_SOCKET; dmaMultiConfig.consSckId[0] = CY_U3P_PIB_SOCKET_2; dmaMultiConfig.consSckId[1] = CY_U3P_PIB_SOCKET_3; dmaMultiConfig.dmaMode = CY_U3P_DMA_MODE_BYTE; dmaMultiConfig.notification = 0; dmaMultiConfig.cb = 0; dmaMultiConfig.prodHeader = 0; dmaMultiConfig.prodFooter = 0; dmaMultiConfig.consHeader = 0; dmaMultiConfig.prodAvailCount = 0; // non multi variant CyU3PMemSet((uint8_t *)&dmaCfg, 0, sizeof(dmaCfg)); dmaCfg.size = size * 2; dmaCfg.count = 22; dmaCfg.prodSckId = BLADE_RF_SAMPLE_EP_PRODUCER_USB_SOCKET; dmaCfg.consSckId = CY_U3P_PIB_SOCKET_3; dmaCfg.dmaMode = CY_U3P_DMA_MODE_BYTE; dmaCfg.notification = 0; dmaCfg.cb = 0; dmaCfg.prodHeader = 0; dmaCfg.prodFooter = 0; dmaCfg.consHeader = 0; dmaCfg.prodAvailCount = 0; apiRetStatus = CyU3PDmaChannelCreate(&glChHandleUtoP, CY_U3P_DMA_TYPE_AUTO, &dmaCfg); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PDmaMultiChannelCreate failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } dmaCfg.prodSckId = CY_U3P_PIB_SOCKET_0; dmaCfg.consSckId = BLADE_RF_SAMPLE_EP_CONSUMER_USB_SOCKET; apiRetStatus = CyU3PDmaChannelCreate(&glChHandlePtoU, CY_U3P_DMA_TYPE_AUTO, &dmaCfg); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PDmaMultiChannelCreate failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } /* Flush the Endpoint memory */ CyU3PUsbFlushEp(BLADE_RF_SAMPLE_EP_PRODUCER); CyU3PUsbFlushEp(BLADE_RF_SAMPLE_EP_CONSUMER); /* Set DMA channel transfer size. */ apiRetStatus = CyU3PDmaChannelSetXfer (&glChHandleUtoP, BLADE_DMA_TX_SIZE); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PDmaChannelSetXfer Failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } apiRetStatus = CyU3PDmaChannelSetXfer (&glChHandlePtoU, BLADE_DMA_TX_SIZE); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PDmaChannelSetXfer Failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } UartBridgeStart(); glAppMode = MODE_RF_CONFIG; }
/* This function starts the RF data transport mechanism. This is the second * interface of the first and only descriptor. */ static void NuandRFLinkStart(void) { uint16_t size = 0; CyU3PEpConfig_t epCfg; CyU3PDmaChannelConfig_t dmaCfg; CyU3PDmaMultiChannelConfig_t dmaMultiConfig; CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS; CyU3PUSBSpeed_t usbSpeed = CyU3PUsbGetSpeed(); NuandAllowSuspend(CyFalse); NuandGPIOReconfigure(CyTrue, CyTrue); CyU3PGpioSetValue(GPIO_SYS_RST, CyTrue); CyU3PGpioSetValue(GPIO_RX_EN, CyFalse); CyU3PGpioSetValue(GPIO_TX_EN, CyFalse); CyU3PGpioSetValue(GPIO_SYS_RST, CyFalse); apiRetStatus = NuandConfigureGpif(GPIF_CONFIG_RF_LINK); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "Failed to configure GPIF, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } /* Determine max packet size based on USB speed */ switch (usbSpeed) { case CY_U3P_FULL_SPEED: size = 64; break; case CY_U3P_HIGH_SPEED: size = 512; break; case CY_U3P_SUPER_SPEED: size = 1024; break; default: CyU3PDebugPrint (4, "Error! Invalid USB speed.\n"); CyFxAppErrorHandler (CY_U3P_ERROR_FAILURE); break; } CyU3PMemSet ((uint8_t *)&epCfg, 0, sizeof (epCfg)); epCfg.enable = CyTrue; epCfg.epType = CY_U3P_USB_EP_BULK; epCfg.burstLen = (usbSpeed == CY_U3P_SUPER_SPEED ? 15 : 1); epCfg.streams = 0; epCfg.pcktSize = size; /* Producer endpoint configuration */ apiRetStatus = CyU3PSetEpConfig(BLADE_RF_SAMPLE_EP_PRODUCER, &epCfg); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PSetEpConfig failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler (apiRetStatus); } /* Consumer endpoint configuration */ apiRetStatus = CyU3PSetEpConfig(BLADE_RF_SAMPLE_EP_CONSUMER, &epCfg); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PSetEpConfig failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler (apiRetStatus); } // multi variant dmaMultiConfig.size = size * 2; dmaMultiConfig.count = 22; dmaMultiConfig.validSckCount = 2; dmaMultiConfig.prodSckId[0] = BLADE_RF_SAMPLE_EP_PRODUCER_USB_SOCKET; dmaMultiConfig.consSckId[0] = CY_U3P_PIB_SOCKET_2; dmaMultiConfig.consSckId[1] = CY_U3P_PIB_SOCKET_3; dmaMultiConfig.dmaMode = CY_U3P_DMA_MODE_BYTE; dmaMultiConfig.notification = 0; dmaMultiConfig.cb = 0; dmaMultiConfig.prodHeader = 0; dmaMultiConfig.prodFooter = 0; dmaMultiConfig.consHeader = 0; dmaMultiConfig.prodAvailCount = 0; // non multi variant CyU3PMemSet((uint8_t *)&dmaCfg, 0, sizeof(dmaCfg)); dmaCfg.size = size * 2; dmaCfg.count = 22; dmaCfg.prodSckId = BLADE_RF_SAMPLE_EP_PRODUCER_USB_SOCKET; dmaCfg.consSckId = CY_U3P_PIB_SOCKET_3; dmaCfg.dmaMode = CY_U3P_DMA_MODE_BYTE; dmaCfg.notification = 0; dmaCfg.cb = 0; dmaCfg.prodHeader = 0; dmaCfg.prodFooter = 0; dmaCfg.consHeader = 0; dmaCfg.prodAvailCount = 0; loopback_when_created = loopback; if (loopback) { dmaCfg.prodSckId = BLADE_RF_SAMPLE_EP_PRODUCER_USB_SOCKET; dmaCfg.consSckId = BLADE_RF_SAMPLE_EP_CONSUMER_USB_SOCKET; } apiRetStatus = CyU3PDmaChannelCreate(&glChHandleUtoP, CY_U3P_DMA_TYPE_AUTO, &dmaCfg); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PDmaMultiChannelCreate failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } if (!loopback) { dmaCfg.prodSckId = CY_U3P_PIB_SOCKET_0; dmaCfg.consSckId = BLADE_RF_SAMPLE_EP_CONSUMER_USB_SOCKET; apiRetStatus = CyU3PDmaChannelCreate(&glChHandlePtoU, CY_U3P_DMA_TYPE_AUTO, &dmaCfg); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PDmaMultiChannelCreate failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } } /* Flush the Endpoint memory */ CyU3PUsbFlushEp(BLADE_RF_SAMPLE_EP_PRODUCER); CyU3PUsbFlushEp(BLADE_RF_SAMPLE_EP_CONSUMER); /* Set DMA channel transfer size. */ apiRetStatus = CyU3PDmaChannelSetXfer (&glChHandleUtoP, BLADE_DMA_TX_SIZE); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PDmaChannelSetXfer Failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } if (!loopback) { apiRetStatus = CyU3PDmaChannelSetXfer (&glChHandlePtoU, BLADE_DMA_TX_SIZE); if (apiRetStatus != CY_U3P_SUCCESS) { CyU3PDebugPrint(4, "CyU3PDmaChannelSetXfer Failed, Error code = %d\n", apiRetStatus); CyFxAppErrorHandler(apiRetStatus); } } UartBridgeStart(); glAppMode = MODE_RF_CONFIG; }