int main(void) { int xCoOd = 0, yCoOd = 0; char pressure = 0, touched = 0; unsigned int i = 0; unsigned char *dest; unsigned char *src; SetupIntc(); SetUpLCD(); /* configuring the base ceiling */ RasterDMAFBConfig(SOC_LCDC_0_REGS, (unsigned int)(g_pucBuffer+PALETTE_OFFSET), (unsigned int)(g_pucBuffer+PALETTE_OFFSET) + sizeof(g_pucBuffer) - 2 - PALETTE_OFFSET, FRAME_BUFFER_0); RasterDMAFBConfig(SOC_LCDC_0_REGS, (unsigned int)(g_pucBuffer+PALETTE_OFFSET), (unsigned int)(g_pucBuffer+PALETTE_OFFSET) + sizeof(g_pucBuffer) - 2 - PALETTE_OFFSET, FRAME_BUFFER_1); src = (unsigned char *) palette_32b; dest = (unsigned char *) (g_pucBuffer+PALETTE_OFFSET); // Copy palette info into buffer for( i = PALETTE_OFFSET; i < (PALETTE_SIZE+PALETTE_OFFSET); i++) { *dest++ = *src++; } // copy splash screen /*src = (unsigned char *)&splash[40]; for(; i < LCD_SIZE; i++) { *dest++ = *src++; }*/ GrOffScreen16BPPInit(&g_sSHARP480x272x16Display, g_pucBuffer, LCD_WIDTH, LCD_HEIGHT); // Initialize a drawing context. GrContextInit(&sContext, &g_sSHARP480x272x16Display); /* enable End of frame interrupt */ RasterEndOfFrameIntEnable(SOC_LCDC_0_REGS); /* enable raster */ RasterEnable(SOC_LCDC_0_REGS); /* Enable display panel backlight and power */ ConfigRasterDisplayEnable(); DisplayGR(); SoundInit(); // TS init PeripheralsSetup(); InitTouchScreen(); // Loop forever handling widget messages. while(1) { while(!touched) { ReadAxis(2, &pressure, &touched); } /* Resolving the coordinates of the touched location.*/ ResolveCoordinates(&xCoOd, &yCoOd); do { WidgetPointerMessage(WIDGET_MSG_PTR_DOWN, xCoOd, yCoOd); // Process any messages in the widget message queue. WidgetMessageQueueProcess(); ResolveCoordinates(&xCoOd, &yCoOd); ReadAxis(2, &pressure, &touched); }while(touched); WidgetPointerMessage(WIDGET_MSG_PTR_UP, xCoOd, yCoOd); WidgetMessageQueueProcess(); } }
//***************************************************************************** // // This is the main loop that runs the application. // //***************************************************************************** int main(void) { tRectangle sRect; unsigned int i; unsigned char *src, *dest; // //configures arm interrupt controller to generate raster interrupt // SetupIntc(); // //Configures raster to display image // SetUpLCD(); /* configuring the base ceiling */ RasterDMAFBConfig(SOC_LCDC_0_REGS, (unsigned int)(g_pucBuffer+PALETTE_OFFSET), (unsigned int)(g_pucBuffer+PALETTE_OFFSET) + sizeof(g_pucBuffer) - 2 - PALETTE_OFFSET, 0); RasterDMAFBConfig(SOC_LCDC_0_REGS, (unsigned int)(g_pucBuffer+PALETTE_OFFSET), (unsigned int)(g_pucBuffer+PALETTE_OFFSET) + sizeof(g_pucBuffer) - 2 - PALETTE_OFFSET, 1); // Copy palette info into buffer src = (unsigned char *) palette_32b; dest = (unsigned char *) (g_pucBuffer+PALETTE_OFFSET); for( i = 4; i < (PALETTE_SIZE+4); i++) { *dest++ = *src++; } GrOffScreen16BPPInit(&g_sSHARP480x272x16Display, g_pucBuffer, LCD_WIDTH, LCD_HEIGHT); GrContextInit(&g_sContext, &g_sSHARP480x272x16Display); /* enable End of frame interrupt */ RasterEndOfFrameIntEnable(SOC_LCDC_0_REGS); /* enable raster */ RasterEnable(SOC_LCDC_0_REGS); ConfigRasterDisplayEnable(); // // Fill the top 15 rows of the screen with blue to create the banner. // sRect.sXMin = 0; sRect.sYMin = 0; sRect.sXMax = GrContextDpyWidthGet(&g_sContext) - 1; sRect.sYMax = DISPLAY_BANNER_HEIGHT; // // Set the banner background. // GrContextForegroundSet(&g_sContext, DISPLAY_BANNER_BG); GrRectFill(&g_sContext, &sRect); // // Put a white box around the banner. // GrContextForegroundSet(&g_sContext, ClrWhite); GrRectDraw(&g_sContext, &sRect); // // Put the application name in the middle of the banner. // GrContextFontSet(&g_sContext, &g_sFontCm20); GrStringDrawCentered(&g_sContext, "usb host keyboard", -1, GrContextDpyWidthGet(&g_sContext) / 2, 10, 0); // //Setup the interrupt controller // #ifdef _TMS320C6X SetupDSPINTCInt(); ConfigureDSPINTCIntUSB(); #else SetupAINTCInt(); ConfigureAINTCIntUSB(); #endif DelayTimerSetup(); // // Calculate the number of characters that will fit on a line. // Make sure to leave a small border for the text box. // g_ulCharsPerLine = (GrContextDpyWidthGet(&g_sContext) - 4) / GrFontMaxWidthGet(&g_sFontCm20); // // Calculate the number of lines per usable text screen. This requires // taking off space for the top and bottom banners and adding a small bit // for a border. // g_ulLinesPerScreen = (GrContextDpyHeightGet(&g_sContext) - (2*(DISPLAY_BANNER_HEIGHT + 1)))/ GrFontHeightGet(&g_sFontCm20); // // Register the host class drivers. // USBHCDRegisterDrivers(0, g_ppHostClassDrivers, g_ulNumHostClassDrivers); // Open an instance of the keyboard driver. The keyboard does not need // to be present at this time, this just save a place for it and allows // the applications to be notified when a keyboard is present. // g_ulKeyboardInstance = USBHKeyboardOpen(KeyboardCallback, g_pucBuffer, KEYBOARD_MEMORY_SIZE); // // Initialize the power configuration. This sets the power enable signal // to be active high and does not enable the power fault. // USBHCDPowerConfigInit(0, USBHCD_VBUS_AUTO_HIGH); // // Initialize the host controller stack. // USBHCDInit(0, g_pHCDPool, HCD_MEMORY_SIZE); // // Call the main loop for the Host controller driver. // USBHCDMain(); // // Initial update of the screen. // UpdateStatus(); // // The main loop for the application. // while(1) { switch(g_eUSBState) { // // This state is entered when they keyboard is first detected. // case STATE_KEYBOARD_INIT: { // // Initialized the newly connected keyboard. // USBHKeyboardInit(g_ulKeyboardInstance); // // Proceed to the keyboard connected state. // g_eUSBState = STATE_KEYBOARD_CONNECTED; // // Update the screen now that the keyboard has been // initialized. // UpdateStatus(); break; } case STATE_KEYBOARD_UPDATE: { // // If the application detected a change that required an // update to be sent to the keyboard to change the modifier // state then call it and return to the connected state. // g_eUSBState = STATE_KEYBOARD_CONNECTED; USBHKeyboardModifierSet(g_ulKeyboardInstance, g_ulModifiers); break; } case STATE_KEYBOARD_CONNECTED: { // // Nothing is currently done in the main loop when the keyboard // is connected. // break; } case STATE_UNKNOWN_DEVICE: { // // Nothing to do as the device is unknown. // break; } case STATE_NO_DEVICE: { // // Nothing is currently done in the main loop when the keyboard // is not connected. // break; } default: { break; } } // // Periodic call the main loop for the Host controller driver. // USBHCDMain(); } }
//***************************************************************************** // // The main code for the application. It sets up the peripherals, displays the // splash screens, and then manages the interaction between the game and the // screen saver. // //***************************************************************************** int main(void) { tRectangle sRect; #ifndef _TMS320C6X unsigned int index; #endif SetupIntc(); /* Configuring UART2 instance for serial communication. */ UARTStdioInit(); #ifdef _TMS320C6X CacheEnableMAR((unsigned int)0xC0000000, (unsigned int)0x20000000); CacheEnable(L1PCFG_L1PMODE_32K | L1DCFG_L1DMODE_32K | L2CFG_L2MODE_256K); #else /* Sets up 'Level 1" page table entries. * The page table entry consists of the base address of the page * and the attributes for the page. The following operation is to * setup one-to-one mapping page table for DDR memeory range and set * the atributes for the same. The DDR memory range is from 0xC0000000 * to 0xDFFFFFFF. Thus the base of the page table ranges from 0xC00 to * 0xDFF. Cache(C bit) and Write Buffer(B bit) are enabled only for * those page table entries which maps to DDR RAM and internal RAM. * All the pages in the DDR range are provided with R/W permissions */ for(index = 0; index < (4*1024); index++) { if((index >= 0xC00 && index < 0xE00)|| (index == 0x800)) { pageTable[index] = (index << 20) | 0x00000C1E; } else { pageTable[index] = (index << 20) | 0x00000C12; } } /* Configures translation table base register * with pagetable base address. */ CP15TtbSet((unsigned int )pageTable); /* Enables MMU */ CP15MMUEnable(); /* Enable Instruction Cache */ CP15ICacheEnable(); /* Enable Data Cache */ CP15DCacheEnable(); #endif SetUpLCD(); ConfigureFrameBuffer(); GrOffScreen16BPPInit(&g_sSHARP480x272x16Display0, (unsigned char *)g_pucBuffer0, LCD_WIDTH, LCD_HEIGHT); GrOffScreen16BPPInit(&g_sSHARP480x272x16Display1, (unsigned char *)g_pucBuffer1, LCD_WIDTH, LCD_HEIGHT); // Initialize a drawing context. GrContextInit(&sContext0, &g_sSHARP480x272x16Display0); GrContextInit(&sContext1, &g_sSHARP480x272x16Display1); /* enable End of frame interrupt */ RasterEndOfFrameIntEnable(SOC_LCDC_0_REGS); /* enable raster */ RasterEnable(SOC_LCDC_0_REGS); PeripheralsSetup(); I2C0IntRegister(4); AIC31Init(); ToneLoopInit(); /* Start playing the tone */ ToneLoopStart(); // TS init TouchInit(); GrContextForegroundSet(&sContext0, ClrBlack); GrContextForegroundSet(&sContext1, ClrBlack); sRect.sXMin = GAME_X - 1; sRect.sYMin = GAME_Y - 1; sRect.sXMax = GAME_X + GAME_W; sRect.sYMax = GAME_Y + GAME_H; GrRectFill(&sContext0, &sRect); GrRectFill(&sContext1, &sRect); GrImageDraw(&sContext0, g_pucTILogo128x96, GAME_X, GAME_Y); GrImageDraw(&sContext1, g_pucTILogo128x96, GAME_X, GAME_Y); Delay(0x5FFFFF); // Confiure and start timer2 Timer2Config(); Timer2Start(); // Loop forever. while(1) { // Display the main screen. if(MainScreen()) { // The button was pressed, so start the game. PlayGame(); } else { // The button was not pressed during the timeout period, so start // the screen saver. ScreenSaver(); } } }
void InitializeSlides() { /* copy background image into all slide image arrays */ memcpy((void *)&bannerImage[HW_VAL], (const void *)bgImage, WIDTH * HEIGHT * 2 + PALETTE); memcpy((void *)&choiceImage[HW_VAL], (const void *)bgImage, WIDTH * HEIGHT * 2 + PALETTE); memcpy((void *)ðernetImage[HW_VAL], (const void *)bgImage, WIDTH * HEIGHT * 2 + PALETTE); memcpy((void *)&gpioImage[HW_VAL], (const void *)bgImage, WIDTH * HEIGHT * 2 + PALETTE); memcpy((void *)&i2cImage[HW_VAL], (const void *)bgImage, WIDTH * HEIGHT * 2 + PALETTE); memcpy((void *)&introImage[HW_VAL], (const void *)bgImage, WIDTH * HEIGHT * 2 + PALETTE); memcpy((void *)&mcaspImage[HW_VAL], (const void *)bgImage, WIDTH * HEIGHT * 2 + PALETTE); memcpy((void *)&menuImage[HW_VAL], (const void *)bgImage, WIDTH * HEIGHT * 2 + PALETTE); memcpy((void *)&rtcImage[HW_VAL], (const void *)bgImage, WIDTH * HEIGHT * 2 + PALETTE); memcpy((void *)&spiImage[HW_VAL], (const void *)bgImage, WIDTH * HEIGHT * 2 + PALETTE); memcpy((void *)&timerImage[HW_VAL], (const void *)bgImage, WIDTH * HEIGHT * 2 + PALETTE); memcpy((void *)&uartImage[HW_VAL], (const void *)bgImage, WIDTH * HEIGHT * 2 + PALETTE); memcpy((void *)&usbMouseImage[HW_VAL], (const void *)bgImage, WIDTH * HEIGHT * 2 + PALETTE); /* initialize drawing context on all slides */ GrOffScreen16BPPInit(&g_sDisplayBanner, (unsigned char *)bannerImage, WIDTH, HEIGHT); GrOffScreen16BPPInit(&g_sDisplayChoice, (unsigned char *)choiceImage, WIDTH, HEIGHT); GrOffScreen16BPPInit(&g_sDisplayEthernet, (unsigned char *)ethernetImage, WIDTH, HEIGHT); GrOffScreen16BPPInit(&g_sDisplayGpio, (unsigned char *)gpioImage, WIDTH, HEIGHT); GrOffScreen16BPPInit(&g_sDisplayI2c, (unsigned char *)i2cImage, WIDTH, HEIGHT); GrOffScreen16BPPInit(&g_sDisplayIntro, (unsigned char *)introImage, WIDTH, HEIGHT); GrOffScreen16BPPInit(&g_sDisplayMcasp, (unsigned char *)mcaspImage, WIDTH, HEIGHT); GrOffScreen16BPPInit(&g_sDisplayMenu, (unsigned char *)menuImage, WIDTH, HEIGHT); GrOffScreen16BPPInit(&g_sDisplayRtc, (unsigned char *)rtcImage, WIDTH, HEIGHT); GrOffScreen16BPPInit(&g_sDisplaySpi, (unsigned char *)spiImage, WIDTH, HEIGHT); GrOffScreen16BPPInit(&g_sDisplayTimer, (unsigned char *)timerImage, WIDTH, HEIGHT); GrOffScreen16BPPInit(&g_sDisplayUart, (unsigned char *)uartImage, WIDTH, HEIGHT); GrOffScreen16BPPInit(&g_sDisplayUsbMouse, (unsigned char *)usbMouseImage, WIDTH, HEIGHT); GrContextInit(&sContextBanner, &g_sDisplayBanner); GrContextInit(&sContextChoice, &g_sDisplayChoice); GrContextInit(&sContextEthernet, &g_sDisplayEthernet); GrContextInit(&sContextGpio, &g_sDisplayGpio); GrContextInit(&sContextI2c, &g_sDisplayI2c); GrContextInit(&sContextIntro, &g_sDisplayIntro); GrContextInit(&sContextMcasp, &g_sDisplayMcasp); GrContextInit(&sContextMenu, &g_sDisplayMenu); GrContextInit(&sContextRtc, &g_sDisplayRtc); GrContextInit(&sContextSpi, &g_sDisplaySpi); GrContextInit(&sContextTimer, &g_sDisplayTimer); GrContextInit(&sContextUart, &g_sDisplayUart); GrContextInit(&sContextUsbMouse, &g_sDisplayUsbMouse); /* Draw graphics and text to all slides */ draw_choice_slide(); draw_ethernet_slide(); draw_gpio_slide(); draw_i2c_slide(); draw_intro_slide(); draw_mcasp_slide(); draw_menu_slide(); draw_rtc_slide(); draw_spi_slide(); draw_timer_slide(); draw_uart_slide(); draw_usbmouse_slide(); }
//***************************************************************************** // // This is the main loop that runs the application. // //***************************************************************************** static int main(void) { // tRectangle sRect; unsigned int index, i; unsigned char *src, *dest; /* Sets up 'Level 1" page table entries. * The page table entry consists of the base address of the page * and the attributes for the page. The following operation is to * setup one-to-one mapping page table for DDR memeory range and set * the atributes for the same. The DDR memory range is from 0xC0000000 * to 0xDFFFFFFF. Thus the base of the page table ranges from 0xC00 to * 0xDFF. Cache(C bit) and Write Buffer(B bit) are enabled only for * those page table entries which maps to DDR RAM and internal RAM. * All the pages in the DDR range are provided with R/W permissions */ #ifdef DMA_MODE for(index = 0; index < (4*1024); index++) { if((index >= 0xC00 && index < 0xE00)|| (index == 0x800)) { pageTable[index] = (index << 20) | 0x00000C1E; } else { pageTable[index] = (index << 20) | 0x00000C12; } } /* Configures translation table base register * with pagetable base address. */ CP15TtbSet((unsigned int )pageTable); /* Enables MMU */ CP15MMUEnable(); /* Enable Data Cache */ CP15DCacheEnable(); /* Disable Instruction Cache*/ CP15ICacheDisable(); #endif #if 0 // No LCD -- ertl-liyixiao // //configures arm interrupt controller to generate raster interrupt // SetupIntc(); // //Configures raster to display image // SetUpLCD(); /* configuring the base ceiling */ RasterDMAFBConfig(SOC_LCDC_0_REGS, (unsigned int)(g_pucBuffer+PALETTE_OFFSET), (unsigned int)(g_pucBuffer+PALETTE_OFFSET) + sizeof(g_pucBuffer) - 2 - PALETTE_OFFSET, 0); RasterDMAFBConfig(SOC_LCDC_0_REGS, (unsigned int)(g_pucBuffer+PALETTE_OFFSET), (unsigned int)(g_pucBuffer+PALETTE_OFFSET) + sizeof(g_pucBuffer) - 2 - PALETTE_OFFSET, 1); // Copy palette info into buffer src = (unsigned char *) palette_32b; dest = (unsigned char *) (g_pucBuffer+PALETTE_OFFSET); for( i = 4; i < (PALETTE_SIZE+4); i++) { *dest++ = *src++; } GrOffScreen16BPPInit(&g_sSHARP480x272x16Display, g_pucBuffer, LCD_WIDTH, LCD_HEIGHT); // Initialize a drawing context. GrContextInit(&g_sContext, &g_sSHARP480x272x16Display); /* enable End of frame interrupt */ RasterEndOfFrameIntEnable(SOC_LCDC_0_REGS); /* enable raster */ RasterEnable(SOC_LCDC_0_REGS); ConfigRasterDisplayEnable(); // // Fill the top 15 rows of the screen with blue to create the banner. // sRect.sXMin = 0; sRect.sYMin = 0; sRect.sXMax = GrContextDpyWidthGet(&g_sContext) - 1; sRect.sYMax = DISPLAY_BANNER_HEIGHT; GrContextForegroundSet(&g_sContext, ClrDarkBlue); GrRectFill(&g_sContext, &sRect); // // Put a white box around the banner. // GrContextForegroundSet(&g_sContext, ClrWhite); GrRectDraw(&g_sContext, &sRect); // // Put the application name in the middle of the banner. // GrContextFontSet(&g_sContext, &g_sFontCm20); GrStringDrawCentered(&g_sContext, "usb-dev-msc", -1, GrContextDpyWidthGet(&g_sContext) / 2, 10, 0); // // Initialize the idle timeout and reset all flags. // g_ulIdleTimeout = 0; g_ulFlags = 0; // // Initialize the state to idle. // g_eMSCState = MSC_DEV_IDLE; // // Draw the status bar and set it to idle. // UpdateStatus("Idle", 1); #endif //SetupAINTCInt(); //ConfigureAINTCIntUSB(); //DelayTimerSetup(); #if 0 // No LCD SystickConfigure(SysTickHandler); SystickPeriodSet(10); SystickEnable(); #endif USBDMSCInit(0, (tUSBDMSCDevice *)&g_sMSCDevice); #ifdef DMA_MODE Cppi41DmaInit(USB_INSTANCE, epInfo, NUMBER_OF_ENDPOINTS); for(;g_bufferIndex < NUM_OF_RX_BDs; g_bufferIndex++) { dataBuffer = (unsigned char *)cppiDmaAllocBuffer(); doDmaRxTransfer(USB_INSTANCE, USB_MSC_BUFER_SIZE, dataBuffer, g_sMSCDevice.psPrivateData->ucOUTEndpoint); } #endif #if 0 // No LCD -- ertl-liyixiao // // Drop into the main loop. // // // Drop into the main loop. // while(1) { switch(g_eMSCState) { case MSC_DEV_READ: { // // Update the screen if necessary. // if(g_ulFlags & FLAG_UPDATE_STATUS) { UpdateStatus("Reading", 0); g_ulFlags &= ~FLAG_UPDATE_STATUS; } // // If there is no activity then return to the idle state. // if(g_ulIdleTimeout == 0) { UpdateStatus("Idle ", 0); g_eMSCState = MSC_DEV_IDLE; } break; } case MSC_DEV_WRITE: { // // Update the screen if necessary. // if(g_ulFlags & FLAG_UPDATE_STATUS) { UpdateStatus("Writing ", 0); g_ulFlags &= ~FLAG_UPDATE_STATUS; } // // If there is no activity then return to the idle state. // if(g_ulIdleTimeout == 0) { UpdateStatus("Idle ", 0); g_eMSCState = MSC_DEV_IDLE; } break; } case MSC_DEV_IDLE: default: { break; } } } #endif }