void DemoInitialize() { int Status; XAxiVdma_Config *vdmaConfig; int i; /* * Initialize an array of pointers to the 3 frame buffers */ for (i = 0; i < DISPLAY_NUM_FRAMES; i++) { pFrames[i] = frameBuf[i]; } /* * Initialize a timer used for a simple delay */ TimerInitialize(SCU_TIMER_ID); /* * Initialize VDMA driver */ vdmaConfig = XAxiVdma_LookupConfig(VGA_VDMA_ID); if (!vdmaConfig) { xil_printf("No video DMA found for ID %d\r\n", VGA_VDMA_ID); return; } Status = XAxiVdma_CfgInitialize(&vdma, vdmaConfig, vdmaConfig->BaseAddress); if (Status != XST_SUCCESS) { xil_printf("VDMA Configuration Initialization failed %d\r\n", Status); return; } /* * Initialize the Display controller and start it */ Status = DisplayInitialize(&dispCtrl, &vdma, DISP_VTC_ID, DYNCLK_BASEADDR, pFrames, DEMO_STRIDE); if (Status != XST_SUCCESS) { xil_printf("Display Ctrl initialization failed during demo initialization%d\r\n", Status); return; } Status = DisplayStart(&dispCtrl); if (Status != XST_SUCCESS) { xil_printf("Couldn't start display during demo initialization%d\r\n", Status); return; } DemoPrintTest(dispCtrl.framePtr[dispCtrl.curFrame], dispCtrl.vMode.width, dispCtrl.vMode.height, dispCtrl.stride, DEMO_PATTERN_1); return; }
/**************************************************************************** *Descriptions:just like main face,Standby interface.show welcome infomation *Input:void *Output:void *Return:void *Date:20140423 *Author:song *Remark:none ****************************************************************************/ void DemoEnterPrintModule(void) { s32 key = 0; s32 timerid = 0; s32 timerover = AUTORET_TIME; sdkLcdClear(); sdkLcdFillRow(SDK_LCD_LINE1,0, (u8 *)"PRINT MODULE", M_UCTR); sdkLcdFillRow(SDK_LCD_LINE2,0, (u8 *)"1.PRINT TEST", L_UCTR); sdkLcdFillRow(SDK_LCD_LINE3,0, (u8 *)"2.PRINT PHOTO", L_UCTR); sdkLcdFillRow(SDK_LCD_LINE4,0, (u8 *)"3.PRINT QRCODE", L_UCTR); sdkLcdFillRow(SDK_LCD_LINE5,0, (u8 *)"4.PRINT BARCODE", L_UCTR); sdkLcdBrushScreen(); sdkKbFlush(); timerid = sdkSysGetTimerCount(); while (1) { if (sdkSysGetTimerEnd(timerid,timerover)) { DemoShowMainMenu(); return; } key = sdkKbGetKey(); switch (key) { case SDK_KEY_1: DemoPrintTest(); break; //specified line display case SDK_KEY_2: DemoPrintPhotoTest(); break; //terminal screen pixels case SDK_KEY_3: DemoPrintQRcodeTest(); break; //specified photo display case SDK_KEY_4: DemoPrintBarcodeTest(); break; //progressbar display case SDK_KEY_CANCEL: DemoShowMainMenu(); break; //back to mainmenu default:break; } } return ; }
void DemoInitialize() { int Status; XAxiVdma_Config *vdmaConfig; int i; /* * Initialize an array of pointers to the 3 frame buffers */ for (i = 0; i < DISPLAY_NUM_FRAMES; i++) { pFrames[i] = frameBuf[i]; } /* * Initialize VDMA driver */ vdmaConfig = XAxiVdma_LookupConfig(VGA_VDMA_ID); if (!vdmaConfig) { xil_printf("No video DMA found for ID %d\r\n", VGA_VDMA_ID); return; } Status = XAxiVdma_CfgInitialize(&vdma, vdmaConfig, vdmaConfig->BaseAddress); if (Status != XST_SUCCESS) { xil_printf("VDMA Configuration Initialization failed %d\r\n", Status); return; } /* * Initialize the Display controller and start it */ Status = DisplayInitialize(&dispCtrl, &vdma, DISP_VTC_ID, DYNCLK_BASEADDR, pFrames, DEMO_STRIDE); if (Status != XST_SUCCESS) { xil_printf("Display Ctrl initialization failed during demo initialization%d\r\n", Status); return; } Status = DisplayStart(&dispCtrl); if (Status != XST_SUCCESS) { xil_printf("Couldn't start display during demo initialization%d\r\n", Status); return; } /* * Initialize the Interrupt controller and start it. */ Status = fnInitInterruptController(&intc); if(Status != XST_SUCCESS) { xil_printf("Error initializing interrupts"); return; } fnEnableInterrupts(&intc, &ivt[0], sizeof(ivt)/sizeof(ivt[0])); /* * Initialize the Video Capture device */ Status = VideoInitialize(&videoCapt, &intc, &vdma, VID_GPIO_ID, VID_VTC_ID, VID_VTC_IRPT_ID, pFrames, DEMO_STRIDE, DEMO_START_ON_DET); if (Status != XST_SUCCESS) { xil_printf("Video Ctrl initialization failed during demo initialization%d\r\n", Status); return; } /* * Set the Video Detect callback to trigger the menu to reset, displaying the new detected resolution */ VideoSetCallback(&videoCapt, DemoISR, &fRefresh); DemoPrintTest(dispCtrl.framePtr[dispCtrl.curFrame], dispCtrl.vMode.width, dispCtrl.vMode.height, dispCtrl.stride, DEMO_PATTERN_1); return; }
void DemoRun() { int nextFrame = 0; char userInput = 0; /* Flush UART FIFO */ while (XUartPs_IsReceiveData(UART_BASEADDR)) { XUartPs_ReadReg(UART_BASEADDR, XUARTPS_FIFO_OFFSET); } while (userInput != 'q') { DemoPrintMenu(); /* Wait for data on UART */ while (!XUartPs_IsReceiveData(UART_BASEADDR)) {} /* Store the first character in the UART receive FIFO and echo it */ if (XUartPs_IsReceiveData(UART_BASEADDR)) { userInput = XUartPs_ReadReg(UART_BASEADDR, XUARTPS_FIFO_OFFSET); xil_printf("%c", userInput); } switch (userInput) { case '1': DemoChangeRes(); break; case '2': nextFrame = dispCtrl.curFrame + 1; if (nextFrame >= DISPLAY_NUM_FRAMES) { nextFrame = 0; } DisplayChangeFrame(&dispCtrl, nextFrame); break; case '3': DemoPrintTest(pFrames[dispCtrl.curFrame], dispCtrl.vMode.width, dispCtrl.vMode.height, DEMO_STRIDE, DEMO_PATTERN_0); break; case '4': DemoPrintTest(pFrames[dispCtrl.curFrame], dispCtrl.vMode.width, dispCtrl.vMode.height, DEMO_STRIDE, DEMO_PATTERN_1); break; case '5': DemoInvertFrame(dispCtrl.framePtr[dispCtrl.curFrame], dispCtrl.framePtr[dispCtrl.curFrame], dispCtrl.vMode.width, dispCtrl.vMode.height, dispCtrl.stride); break; case '6': nextFrame = dispCtrl.curFrame + 1; if (nextFrame >= DISPLAY_NUM_FRAMES) { nextFrame = 0; } DemoInvertFrame(dispCtrl.framePtr[dispCtrl.curFrame], dispCtrl.framePtr[nextFrame], dispCtrl.vMode.width, dispCtrl.vMode.height, dispCtrl.stride); DisplayChangeFrame(&dispCtrl, nextFrame); break; case 'q': break; default : xil_printf("\n\rInvalid Selection"); TimerDelay(500000); } } return; }
void DemoRun() { int nextFrame = 0; char userInput = 0; u32 locked; XGpio *GpioPtr = &videoCapt.gpio; /* Flush UART FIFO */ while (!XUartLite_IsReceiveEmpty(UART_BASEADDR)) { XUartLite_ReadReg(UART_BASEADDR, XUL_RX_FIFO_OFFSET); } while (userInput != 'q') { fRefresh = 0; DemoPrintMenu(); /* Wait for data on UART */ while (XUartLite_IsReceiveEmpty(UART_BASEADDR) && !fRefresh) {} /* Store the first character in the UART receive FIFO and echo it */ if (!XUartLite_IsReceiveEmpty(UART_BASEADDR)) { userInput = XUartLite_ReadReg(UART_BASEADDR, XUL_RX_FIFO_OFFSET); xil_printf("%c", userInput); } else //Refresh triggered by video detect interrupt { userInput = 'r'; } switch (userInput) { case '1': DemoChangeRes(); break; case '2': nextFrame = dispCtrl.curFrame + 1; if (nextFrame >= DISPLAY_NUM_FRAMES) { nextFrame = 0; } DisplayChangeFrame(&dispCtrl, nextFrame); break; case '3': DemoPrintTest(pFrames[dispCtrl.curFrame], dispCtrl.vMode.width, dispCtrl.vMode.height, DEMO_STRIDE, DEMO_PATTERN_0); break; case '4': DemoPrintTest(pFrames[dispCtrl.curFrame], dispCtrl.vMode.width, dispCtrl.vMode.height, DEMO_STRIDE, DEMO_PATTERN_1); break; case '5': if (videoCapt.state == VIDEO_STREAMING) VideoStop(&videoCapt); else VideoStart(&videoCapt); break; case '6': nextFrame = videoCapt.curFrame + 1; if (nextFrame >= DISPLAY_NUM_FRAMES) { nextFrame = 0; } VideoChangeFrame(&videoCapt, nextFrame); break; case '7': nextFrame = videoCapt.curFrame + 1; if (nextFrame >= DISPLAY_NUM_FRAMES) { nextFrame = 0; } VideoStop(&videoCapt); DemoInvertFrame(pFrames[videoCapt.curFrame], pFrames[nextFrame], videoCapt.timing.HActiveVideo, videoCapt.timing.VActiveVideo, DEMO_STRIDE); VideoStart(&videoCapt); DisplayChangeFrame(&dispCtrl, nextFrame); break; case '8': nextFrame = videoCapt.curFrame + 1; if (nextFrame >= DISPLAY_NUM_FRAMES) { nextFrame = 0; } VideoStop(&videoCapt); DemoScaleFrame(pFrames[videoCapt.curFrame], pFrames[nextFrame], videoCapt.timing.HActiveVideo, videoCapt.timing.VActiveVideo, dispCtrl.vMode.width, dispCtrl.vMode.height, DEMO_STRIDE); VideoStart(&videoCapt); DisplayChangeFrame(&dispCtrl, nextFrame); break; case 'q': break; case 'r': locked = XGpio_DiscreteRead(GpioPtr, 2); xil_printf("%d", locked); break; default : xil_printf("\n\rInvalid Selection"); MB_Sleep(50); } } return; }