Example #1
0
int setUSBHost(BOOL enter) {
	int trials, x;
	const int maxTrials = 20;
	
	if(vCur_1 < V_MIN_USB_VOLTAGE) {
		refuse_lowvoltage(0);
		return(2);
	}
	
	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
			setLED(LED_RED,FALSE);
	}

	return 0;
}
Example #2
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;
}
Example #3
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;
}
Example #4
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;
}
Example #5
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;
	 	}	
	}
}
Example #6
0
//=================================================================================================
//	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)
		{
		
		}
	}
}