INT32S resource_init(void) { #if (defined RESOURCE_DEV_TYPE) && (RESOURCE_DEV_TYPE == DEVICE_SPI || RESOURCE_DEV_TYPE == DEVICE_NAND) resource_handle=nv_open((INT8U *) "GPRS.PAK"); if (resource_handle == 0xFFFF) { DBG_PRINT("Failed to open resource %s from SPI flash\r\n", "GPRS.PAK"); return STATUS_FAIL; } #elif (defined RESOURCE_DEV_TYPE) && (RESOURCE_DEV_TYPE == DEVICE_SD) OSTimeDly(5); _devicemount(FS_SD); resource_handle = open((char*) "C:\\GPRS.PAK", O_RDONLY); if (resource_handle < 0) { DBG_PRINT("Failed to open file %s from SD card\r\n", "GPRS.PAK"); return STATUS_FAIL; } #endif return STATUS_OK; }
int setUSBHost(BOOL enter) { int trials, x; const int maxTrials = 20; if (enter){ SetSystemClockRate(48); //48MHz for Host mode setLED(LED_GREEN,FALSE); for (trials = 0; trials < maxTrials; trials++) { setLED(LED_RED,TRUE); x = _devicemount(1); setLED(LED_RED,FALSE); if (x == C_USBDevicesmountOK) break; wait (1000); } if (trials < maxTrials) { setLED(LED_GREEN,TRUE); wait(1000); USBHost_Flag = C_USBDevicesmountOK; } } else { // unmount USB devices; if(_deviceunmount(1) != 0x00) USBHost_Flag = C_USBDiskPlugOut; else USBHost_Flag = C_USBDevicesUnmount; *P_USBH_Config = 0; *P_USBH_INTEN = 0; SetSystemClockRate(CLOCK_RATE); //set clock to non usb host value } return 0; }
int SystemIntoUDisk() { int ret,i; SysDisableWaitMode(3); SysIntoHighSpeed(); MaxLUN = -1; R_NAND_Present=0; R_SDC_Present=0; //no have SD modify by haoyu 2007.1.29 for(i=0 ; i<10 ; i++) { ret = DrvSDCInitial(); if(ret==0) { R_SDC_Present=1; // SD Card Initial Success MaxLUN++; break; _deviceunmount(0); } } USB_TimeOut_Enable(); USB_Initial(); USB_Reset(); USB_ServiceLoop(1); *P_USBD_Config=0x00; *P_USBD_INTEN=0x00; if(1 == R_SDC_Present) { _devicemount(0); } SysEnableWaitMode( 3 ); return 0; }
int SystemIntoUDisk(unsigned int serviceloop) { extern flash *RHM_FlashPtr; //RHM , *FP_RHM_FlashPtr; int i; #ifdef USBRP int fl_size = USB_Flash_init((flash *)0, 0); flash FL; int flash_execution_buf[fl_size]; RHM_FlashPtr = &FL; for(i=0; i<N_USB_LUN; i++) { FP_USB_Lun_Define[i] = &USB_Lun_Define[i]; if( USB_Lun_Define[i].unLunType == LunType_NOR) { USB_Lun_Define[i].rhmLunData = (unsigned long) RHM_FlashPtr; } } FL.flash_exe_buf = (void *) &flash_execution_buf[0]; USB_Flash_init(&FL, 1); #endif SysDisableWaitMode(3); SetSystemClockRate(48); if(serviceloop) { R_NAND_Present=0; MaxLUN = 0; R_SDC_Present=1; _deviceunmount(0); USB_TimeOut_Enable(); USB_Initial(); USB_Reset(); if(serviceloop == USB_CLIENT_SETUP_ONLY) { return(1); } } if(!serviceloop) { int tmp; long j; tmp = R_USB_State_Machine; for(j=0; j<100000; j++) { USB_ServiceLoop(0); if(R_USB_State_Machine > 0 && R_USB_State_Machine <= SCSI_CSW_Stage) { goto xxx; } else { if (!(j % 50)) { context.keystroke = keyCheck(0); if (context.keystroke) break; } } } if (tmp == 0 && R_USB_State_Machine == 0) { SetSystemClockRate(CLOCK_RATE); return(2); } if(R_USB_State_Machine == 0xf5f5) { SetSystemClockRate(CLOCK_RATE); return(2); } if(!(R_USB_State_Machine > 0 && R_USB_State_Machine <= SCSI_CSW_Stage)) { SysEnableWaitMode(3); RHM_FlashPtr = 0; SetSystemClockRate(CLOCK_RATE); return 1; } } xxx: if (LED_GREEN) setLED(LED_GREEN,FALSE); else // for USB before reading config file, or if config corrupted setLED(0x040,FALSE); if (LED_RED) setLED(LED_RED,TRUE); else // for USB before reading config file, or if config corrupted setLED(0x200,TRUE); //TODO: log entering USB device mode USB_ServiceLoop(1); *P_USBD_Config=0x00; *P_USBD_INTEN=0x00; if(1 == R_SDC_Present) { _devicemount(0); } SysEnableWaitMode( 3 ); R_USB_State_Machine == 0xf5f5; //CS: THIS LOOKS LIKE A BUG -- A TEST; NOT AN ASSIGNMENT! RHM_FlashPtr = 0; if (LED_RED) setLED(LED_RED,FALSE); else // for USB before reading config file, or if config corrupted setLED(0x200,FALSE); SetSystemClockRate(CLOCK_RATE); return 0; }
int SystemIntoUDisk(unsigned int serviceloop) { extern flash *RHM_FlashPtr; //RHM , *FP_RHM_FlashPtr; int i; char strLog[60]; #ifdef USBRP int fl_size = USB_Flash_init((flash *)0, 0); flash FL; int flash_execution_buf[fl_size]; RHM_FlashPtr = &FL; if(vCur_1 < V_MIN_USB_VOLTAGE) { refuse_lowvoltage(0); return(2); } for(i=0; i<N_USB_LUN; i++) { FP_USB_Lun_Define[i] = &USB_Lun_Define[i]; if( USB_Lun_Define[i].unLunType == LunType_NOR) { USB_Lun_Define[i].rhmLunData = (unsigned long) RHM_FlashPtr; } } FL.flash_exe_buf = (void *) &flash_execution_buf[0]; USB_Flash_init(&FL, 1); #endif SysDisableWaitMode(3); SetSystemClockRate(48); if(serviceloop) { R_NAND_Present=0; MaxLUN = 0; R_SDC_Present=1; _deviceunmount(0); USB_TimeOut_Enable(); USB_Initial(); USB_Reset(); if(serviceloop == USB_CLIENT_SETUP_ONLY) { return(1); } } if(!serviceloop) { int tmp; long j; tmp = R_USB_State_Machine; for(j=0; j<100000; j++) { USB_ServiceLoop(0); if(R_USB_State_Machine > 0 && R_USB_State_Machine <= SCSI_CSW_Stage) { goto xxx; } else { KeyScan_ServiceLoop(); if (!(j % 0x40)) { context.keystroke = keyCheck(0); if (context.keystroke) break; } } } if (tmp == 0 && R_USB_State_Machine == 0) { SetSystemClockRate(CLOCK_RATE); _devicemount(0); return(2); } if(R_USB_State_Machine == 0xf5f5) { SetSystemClockRate(CLOCK_RATE); _devicemount(0); return(2); } if(!(R_USB_State_Machine > 0 && R_USB_State_Machine <= SCSI_CSW_Stage)) { SysEnableWaitMode(3); RHM_FlashPtr = 0; SetSystemClockRate(CLOCK_RATE); return 1; } } xxx: if (LED_GREEN) setLED(LED_GREEN,FALSE); else // for USB before reading config file, or if config corrupted setLED(0x040,FALSE); if (LED_RED) setLED(LED_RED,TRUE); else // for USB before reading config file, or if config corrupted setLED(0x200,TRUE); USB_ServiceLoop(1); *P_USBD_Config=0x00; *P_USBD_INTEN=0x00; if(1 == R_SDC_Present) { _devicemount(0); } SysEnableWaitMode( 3 ); RHM_FlashPtr = 0; strcpy(strLog, "returned from USB Device Mode"); logString(strLog, ASAP, LOG_NORMAL); if (LED_RED) setLED(LED_RED,FALSE); else // for USB before reading config file, or if config corrupted setLED(0x200,FALSE); SetSystemClockRate(CLOCK_RATE); return 0; }
void card_detect_demo(void) { INT8U err; INT32U msg_id; INT32S nRet; card_detect_q = OSQCreate(card_detect_area, 1); if (card_detect_q == NULL) while(1); card_detect_set_cf_callback(cf_card_plug_in_out); card_detect_set_sdms_callback(sdms_card_plug_in_out); card_detect_set_usb_h_callback(usb_h_plug_in_out); card_detect_set_usb_d_callback(usb_d_plug_in_out); card_detect_init(TYPE_CF|TYPE_SD|TYPE_MS|TYPE_USBH|TYPE_USBD|TYPE_NAND); if(card_detection(C_CFC)) { nRet = _devicemount(FS_CF); if(!nRet) DBG_PRINT("CF MOUNT Success\r\n"); else DBG_PRINT("CF MOUNT Fail!!!\r\n"); } if(card_detection(C_SDC)) { nRet = _devicemount(FS_SD); if(!nRet) DBG_PRINT("SD MOUNT Success\r\n"); else DBG_PRINT("SD MOUNT Fail!!!\r\n"); } if(card_detection(C_MSC)) { nRet = _devicemount(FS_MS); if(!nRet) DBG_PRINT("MS MOUNT Success\r\n"); else DBG_PRINT("MS MOUNT Fail!!!\r\n"); } if(card_detection(C_USBH)) { nRet = _devicemount(FS_USBH); if(!nRet) DBG_PRINT("USB Host MOUNT Success\r\n"); else DBG_PRINT("USB Host MOUNT Fail!!!\r\n"); } if(card_detection(C_USBD)) { DBG_PRINT("USBD plug in\r\n"); } if(card_detection(C_NAND)) { nRet = _devicemount(FS_NAND1); if(!nRet) DBG_PRINT("NAND1 MOUNT Success\r\n"); else DBG_PRINT("NAND1 MOUNT Fail!!!\r\n"); } if(card_detection(C_XDC)) { nRet = _devicemount(FS_XD); if(!nRet) DBG_PRINT("XD MOUNT Success\r\n"); else DBG_PRINT("XD MOUNT Fail!!!\r\n"); } while(1) { msg_id = (INT32U) OSQPend(card_detect_q, 0, &err); switch(msg_id) { case CF_PLUG_IN: cfc_detection(); if(card_detection(C_CFC)) { nRet = _devicemount(FS_CF); if(!nRet) DBG_PRINT("CF PLUG-IN & MOUNT-SUCCESS\r\n"); else DBG_PRINT("CF PLUG-IN & MOUNT-FAIL!!!\r\n"); } break; case CF_PLUG_OUT: disk_safe_exit(FS_CF); nRet = _deviceunmount(FS_CF); if(!nRet) DBG_PRINT("CF PLUG-OUT & UN-MOUNT-SUCCESS\r\n"); else DBG_PRINT("CF PLUG-OUT & UN-MOUNT-FAIL!!!\r\n"); break; case SDMSXD_PLUG_IN: sdms_detection(); if(card_detection(C_SDC)) { nRet = _devicemount(FS_SD); if(!nRet) DBG_PRINT("SD PLUG-IN & MOUNT-SUCCESS\r\n"); else DBG_PRINT("SD PLUG-IN & MOUNT-FAIL!!!\r\n"); } else if(card_detection(C_MSC)) { nRet = _devicemount(FS_MS); if(!nRet) DBG_PRINT("MS PLUG-IN & MOUNT-SUCCESS\r\n"); else DBG_PRINT("MS PLUG-IN & MOUNT-FAIL!!!\r\n"); } else if(card_detection(C_XDC)) { nRet = _devicemount(FS_XD); if(!nRet) DBG_PRINT("XD PLUG-IN & MOUNT-SUCCESS\r\n"); else DBG_PRINT("XD PLUG-IN & MOUNT-FAIL!!!\r\n"); } break; case SDMSXD_PLUG_OUT: if(card_detection(C_SDC)) { disk_safe_exit(FS_SD); nRet = _deviceunmount(FS_SD); if(!nRet) DBG_PRINT("SD PLUG-OUT & UN-MOUNT-SUCCESS\r\n"); else DBG_PRINT("SD PLUG-OUT & UN-MOUNT-FAIL!!!\r\n"); } else if(card_detection(C_MSC)) { disk_safe_exit(FS_MS); nRet = _deviceunmount(FS_MS); if(!nRet) DBG_PRINT("MS PLUG-OUT & UN-MOUNT-SUCCESS\r\n"); else DBG_PRINT("MS PLUG-OUT & UN-MOUNT-FAIL!!!\r\n"); } else if(card_detection(C_XDC)) { disk_safe_exit(FS_XD); nRet = _deviceunmount(FS_XD); if(!nRet) DBG_PRINT("XD PLUG-OUT & UN-MOUNT-SUCCESS\r\n"); else DBG_PRINT("XD PLUG-OUT & UN-MOUNT-FAIL!!!\r\n"); } break; case USB_H_PLUG_IN: if(card_detection(C_USBH)) { nRet = _devicemount(FS_USBH); if(!nRet) DBG_PRINT("USB Host PLUG-IN & MOUNT-SUCCESS\r\n"); else DBG_PRINT("USB Host PLUG-IN & MOUNT-FAIL!!!\r\n"); } break; case USB_H_PLUG_OUT: if(!card_detection(C_USBH)) { disk_safe_exit(FS_USBH); nRet = _deviceunmount(FS_USBH); if(!nRet) DBG_PRINT("USB Host PLUG-OUT & UN-MOUNT-SUCCESS\r\n"); else DBG_PRINT("USB Host PLUG-OUT & UN-MOUNT-FAIL!!!\r\n"); } break; case USB_D_PLUG_IN: if(card_detection(C_USBD)) { DBG_PRINT("USB Device PLUG-IN\r\n"); } break; case USB_D_PLUG_OUT: if(!card_detection(C_USBD)) { DBG_PRINT("USB Device PLUG-OUT\r\n"); } break; } } }
//================================================================================================= // Platform demo code //================================================================================================= void Platform_Demo_Code(void) { char video_path[32] ="C:\\Demo0091NBA.avi"; char audio_path[32] = "C:\\happy.mp3"; char image_path1[32] = "C:\\chen52.jpg"; char image_path2[32] = "C:\\chen53.jpg"; INT8S volume; INT32S nRet; INT32U decode_output_ptr; AUDIO_ARGUMENT audio_arg; IMAGE_ARGUMENT image_arg; VIDEO_ARGUMENT video_arg; VIDEO_INFO information; MEDIA_SOURCE src; AUDIO_CODEC_STATUS audio_status; IMAGE_CODEC_STATUS image_status; VIDEO_CODEC_STATUS video_status; while(1) { if(_devicemount(USE_DISK)) // Mount device { DBG_PRINT("Mount Disk Fail[%d]\r\n", USE_DISK); #if USE_DISK == FS_NAND1 nRet = _format(FS_NAND1, FAT32_Type); DrvNand_flush_allblk(); _deviceunmount(FS_NAND1); #endif } else { DBG_PRINT("Mount Disk success[%d]\r\n", USE_DISK); break; } } switch(USE_DISK) { case FS_SD: gp_memcpy((INT8S*)video_path, (INT8S*)"C:\\Demo0091NBA.avi", sizeof(video_path)); gp_memcpy((INT8S*)audio_path, (INT8S*)"C:\\happy.mp3", sizeof(audio_path)); gp_memcpy((INT8S*)image_path1, (INT8S*)"C:\\chen52.jpg", sizeof(image_path1)); gp_memcpy((INT8S*)image_path2, (INT8S*)"C:\\chen53.jpg", sizeof(image_path2)); break; case FS_NAND1: gp_memcpy((INT8S*)video_path, (INT8S*)"A:\\Demo0091NBA.avi", sizeof(video_path)); gp_memcpy((INT8S*)audio_path, (INT8S*)"A:\\happy.mp3", sizeof(audio_path)); gp_memcpy((INT8S*)image_path1, (INT8S*)"A:\\chen52.jpg", sizeof(image_path1)); gp_memcpy((INT8S*)image_path2, (INT8S*)"A:\\chen53.jpg", sizeof(image_path2)); break; case FS_USBH: gp_memcpy((INT8S*)video_path, (INT8S*)"G:\\Demo0091NBA.avi", sizeof(video_path)); gp_memcpy((INT8S*)audio_path, (INT8S*)"G:\\happy.mp3", sizeof(audio_path)); gp_memcpy((INT8S*)image_path1, (INT8S*)"G:\\chen52.jpg", sizeof(image_path1)); gp_memcpy((INT8S*)image_path2, (INT8S*)"G:\\chen53.jpg", sizeof(image_path2)); break; } // Initialize display device #if C_DISPLAY_DEVICE >= C_TV_QVGA tv_init(); #if C_DISPLAY_DEVICE == C_TV_QVGA tv_start (TVSTD_NTSC_J_NONINTL, TV_QVGA, TV_NON_INTERLACE); #elif C_DISPLAY_DEVICE == C_TV_VGA tv_start (TVSTD_NTSC_J, TV_HVGA, TV_INTERLACE); #elif C_DISPLAY_DEVICE == C_TV_D1 tv_start (TVSTD_NTSC_J, TV_D1, TV_NON_INTERLACE); #else while(1); #endif #else tft_init(); tft_start(C_DISPLAY_DEVICE); #endif user_defined_video_codec_entrance(); audio_decode_entrance(); image_decode_entrance(); video_decode_entrance(); adc_key_scan_init(); //init key scan volume = 0x3F; nRet = C_DISPLAY_DEV_HPIXEL*C_DISPLAY_DEV_VPIXEL*2; decode_output_ptr = (INT32U) gp_malloc_align(nRet, 64);//malloc decode frame buffer while(!decode_output_ptr); while(1) { adc_key_scan(); if(ADKEY_IO1) { //play audio if(video_decode_status() == VIDEO_CODEC_PROCESS_END) { src.type = SOURCE_TYPE_FS; src.type_ID.FileHandle = open(audio_path, O_RDONLY); src.Format.AudioFormat = MP3; audio_arg.Main_Channel = 1; // Use DAC Channel A+B audio_arg.L_R_Channel = 3; // Left + Right Channel audio_arg.mute = 0; audio_arg.volume = volume; // volume level = 0~63 G_snd_info.Speed = 12; //for speed control(golbal var) G_snd_info.Pitch = 12; //for pitch control(golbal var) audio_status = audio_decode_start(audio_arg, src); } } else if(ADKEY_IO2) { if(audio_decode_status(audio_arg) == AUDIO_CODEC_PROCESSING) audio_decode_stop(audio_arg); } else if(ADKEY_IO3) { //play image if(video_decode_status() == VIDEO_CODEC_PROCESS_END) { src.type = SOURCE_TYPE_FS; if((nRet++ % 2) == 0) src.type_ID.FileHandle = (INT32U)open(image_path1, O_RDONLY); else src.type_ID.FileHandle = (INT32U)open(image_path2, O_RDONLY); image_arg.OutputBufPtr=(INT8U *)decode_output_ptr; //decode output buffer image_arg.OutputBufWidth = C_DISPLAY_DEV_HPIXEL; //width of output buffer image_arg.OutputBufHeight = C_DISPLAY_DEV_VPIXEL; //Heigh of output buffer image_arg.OutputWidth = C_DISPLAY_DEV_HPIXEL; //scaler width of output image image_arg.OutputHeight = C_DISPLAY_DEV_VPIXEL; //scaler Heigh of output image image_arg.OutBoundaryColor = 0x008080; image_arg.ScalerOutputRatio = FIT_OUTPUT_SIZE; image_arg.OutputFormat = IMAGE_OUTPUT_FORMAT_YUYV; image_decode_start(image_arg, src); while (1) { image_status=image_decode_status(); if (image_status == IMAGE_CODEC_DECODE_END) { video_codec_show_image(C_DISPLAY_DEVICE, (INT32U)decode_output_ptr, C_DISPLAY_DEVICE,IMAGE_OUTPUT_FORMAT_YUYV); break; } else if(image_status==IMAGE_CODEC_DECODE_FAIL) { DBG_PRINT("image decode failed\r\n"); break; } } image_encode_stop(); close(src.type_ID.FileHandle); } } else if(ADKEY_IO4) { audio_arg.Main_Channel = 1; if(audio_decode_status(audio_arg) == AUDIO_CODEC_PROCESS_END) { DBG_PRINT("video_decode_start\r\n"); video_arg.bScaler = TRUE; video_arg.bUseDefBuf = FALSE; video_arg.DisplayWidth = C_DISPLAY_DEV_HPIXEL; video_arg.DisplayHeight = C_DISPLAY_DEV_VPIXEL; video_arg.DisplayBufferWidth = C_DISPLAY_DEV_HPIXEL; video_arg.DisplayBufferHeight = C_DISPLAY_DEV_VPIXEL; video_arg.OutputFormat = IMAGE_OUTPUT_FORMAT_YUYV; src.type = SOURCE_TYPE_FS; src.Format.VideoFormat = MJPEG; src.type_ID.FileHandle = open(video_path, O_RDONLY); if(src.type_ID.FileHandle < 0) { DBG_PRINT("file open fail\r\n"); close(src.type_ID.FileHandle); continue; } video_status = video_decode_paser_header(&information, video_arg, src); if(video_status != VIDEO_CODEC_STATUS_OK) { DBG_PRINT("paser header fail !!!\r\n"); continue; } video_decode_start(video_arg, src); audio_decode_volume(volume); } } else if(ADKEY_IO5) { if(video_decode_status() == VIDEO_CODEC_PROCESSING) { video_decode_stop(); DBG_PRINT("video_decode_stop\r\n"); } } else if(ADKEY_IO6) { } else if(ADKEY_IO7) { } else if(ADKEY_IO8) { } } }