コード例 #1
0
ファイル: ide.c プロジェクト: asmforce/osdev
IdeError ideWriteSector( const void *buffer, IdeChannel channel, IdeDrive drive, u32 sector )
{
  ChannelCli( channel );

  if( !waitWhileBusy(channel) )  return IdeErrorTimeOut;

  WriteReg( channel, IdeRegNSec, 1 );
  WriteReg( channel, IdeReg0Sec, sector & 0x000000FF );
  WriteReg( channel, IdeReg1Sec, (sector & 0x0000FF00) >> 8 );
  WriteReg( channel, IdeReg2Sec, (sector & 0x00FF0000) >> 16 );
  WriteReg( channel, IdeReg3Sec, 0xE0 | ((sector & 0x0F000000)>>24) | ((drive & 0x1)<<4) );

  if( !waitWhileBusy(channel) )  return IdeErrorTimeOut;
  if( !waitUntilReady(channel) )  return IdeErrorTimeOut;

  WriteReg( channel, IdeRegCommand, IdeCmdWrite );

  if( !waitWhileBusy(channel) )  return IdeErrorTimeOut;
  if( !waitUntilDrq(channel) )  return IdeErrorTimeOut;
  if( (ReadReg(channel,IdeRegStatus) & IdeStatusError) )
  {
    u8 error = ReadReg( channel, IdeRegError );
    ResetController( channel );
    return error;
  };

  ASM("cld ; rep ; outsw" :: "d" (channel + IdeRegData), "c" (0x100), "S" (buffer) );

  ChannelSti( channel );
  return 0;
};
コード例 #2
0
BOOL
CST202T_SATA::SetLookAhead(
    )
{
    BYTE bError = 0;
    BYTE bStatus = 0;

    // select device
    SelectDevice();

    // wait for device to acknowledge selection
    WaitForDisc(WAIT_TYPE_NOT_BUSY, 100);
    WaitForDisc(WAIT_TYPE_READY, 1000);
    WaitOnBusy(TRUE);

    // write command
    WriteFeature(ATA_ENABLE_LOOKAHEAD);
    WriteCommand(ATAPI_CMD_SET_FEATURES);

    // wait for device to respond to command
    WaitOnBusy(TRUE);
    WaitForDisc(WAIT_TYPE_NOT_BUSY, 200);

    // check response
    bStatus = GetBaseStatus();
    bError = GetError();
    if ((bStatus & ATA_STATUS_ERROR) && (bError & ATA_ERROR_ABORTED)) {
        DEBUGMSG(ZONE_ERROR, (_T(
            "Atapi!CDisk::SetLookAhead> Failed to enable read look-ahead; status(%02X), error(%02X)\r\n"
            ), bStatus, bError));
        ResetController(FALSE);
        return FALSE;
    }

    return TRUE;
}
コード例 #3
0
ファイル: vGenTest.cpp プロジェクト: Axadiw/MFIGamepadFeeder
int main()
{
	DWORD dwRes;

#if 0
	// Clean-up vXbox devices
	dwRes = UnPlugForce(1);
	dwRes = UnPlugForce(2);
	dwRes = UnPlugForce(3);
	dwRes = UnPlugForce(4);

#endif // 0

	// Display status and wait
	C_DisplayStatus();
	getchar();

	UCHAR nSlots = 100;
	dwRes = GetNumEmptyBusSlots(&nSlots);
	DisplayError(dwRes);

	SHORT vJoyVer = GetvJoyVersion();
	BOOL exist = (STATUS_SUCCESS == isVBusExist());
	BYTE Led[4];
	XINPUT_VIBRATION Vib;
	LONG MaxX;
	char c[3];
	BOOL Plugged, UnPlugged, Pressed, GetN;
	UINT iSlot;


	// Plug-in vBox device 1, Display status and wait
	dwRes = isControllerPluggedIn(1, &Plugged);
	DisplayError(dwRes);
	dwRes = PlugIn(1);
	DisplayError(dwRes);
	dwRes = isControllerPluggedIn(1, &Plugged);
	DisplayError(dwRes);
	dwRes = ResetController(1);
	DisplayError(dwRes);


	C_DisplayStatus();
	getchar();

	// Interactive: Ask user which device to acquire
	HDEVICE h1 = C_AcqDevice();
	getchar();
	C_DisplayDeviceInfo(h1);
	getchar();
	getchar();
	C_DisplayStatus();
	C_DisplayAllDeviceCtrls();

	// Loop through interactive tests
	C_Test(h1);

	//dwRes = ResetControllerDPad(4);
	getchar();
	return (0);	
}
コード例 #4
0
ファイル: menu_osd.cpp プロジェクト: LibXenonProject/xmplayer
extern "C" void mplayer_osd_draw(int level)
{
	if ((mplayer_get_pause() == 1) && (first_enter == 1)) {
		ResetController();
		first_enter = 0;
	}	
	//Y-osd button used because libmenu is off
	GuiTrigger osdMenu;
	osdMenu.SetButtonOnlyTrigger(-1, 0, PAD_BUTTON_Y);
	GuiButton osdBtn(20, 20);
	osdBtn.SetTrigger(&osdMenu);
	osdBtn.SetSelectable(false);
	mainWindow->Append(&osdBtn);
	if (osd_show) {

		double duration = mplayer_get_duration();
		double elapsed = mplayer_get_elapsed();

		struct XenosSurface * img = video_osd_progress_bar_front->GetImage();
		float pourcents = (float) (elapsed * 100) / (float) duration;
		float width = (float) osd_duration_bar_width * (pourcents / 100.0);
		img->width = width;

		format_time(osd_duration, duration);
		format_time(osd_cur_time, elapsed);

		video_osd_info_cur_time->SetText(osd_cur_time);
		video_osd_info_duration->SetText(osd_duration);

		if (last_level != level) {
			video_osd_info_filename->SetText(mplayer_get_filename());
			video_osd_info_filename->SetMaxWidth(644);
			video_osd_info_filename->SetScroll(SCROLL_HORIZONTAL);
		}

		video_osd_progress_bar_front->SetImage(img, img->width, img->height);

		video_osd_play->SetVisible(false);
		video_osd_pause->SetVisible(false);
		video_osd_stop->SetVisible(false);
		video_osd_rewind->SetVisible(false);
		video_osd_forward->SetVisible(false);
		video_osd_next->SetVisible(false);
		video_osd_prev->SetVisible(false);

		switch (mplayer_get_status()) {
		case 1:
			video_osd_play->SetVisible(true);
			break;
		case 2:
			video_osd_pause->SetVisible(true);
			break;
		case 3:
			video_osd_stop->SetVisible(true);
			break;
		case 4:
			video_osd_rewind->SetVisible(true);
			break;
		case 5:
			video_osd_forward->SetVisible(true);
			break;
		case 6:
			video_osd_next->SetVisible(true);
			break;
		case 7:
			video_osd_prev->SetVisible(true);
			break;

		default:
			break;
		}

		// show file info
		if (osd_display_info) {
			if (!video_osd_infobar->IsVisible())
				video_osd_infobar->SetVisible(true);
		} else {
			if (video_osd_infobar->IsVisible())
				video_osd_infobar->SetVisible(false);
		}

		if (level == 3) {
			if (!osd_options_window->IsVisible())
				osd_options_window->SetVisible(true);
		} else {
			if (osd_options_window->IsVisible())
				osd_options_window->SetVisible(false);
				osd_display_info = 0;
				osd_display_option_subtitle = 0;
				osd_display_option_audio = 0;
				osd_display_option_video = 0;
		}
	} else {
		osd_display_info = 0;
	}
	OsdSubtitlesOptions();
	OsdAudioOptions();
	OsdVideoOptions();
	Menu_Frame();
	last_level = level;
	mainWindow->Draw();
	if (level == 3) { //this fixes non intended key-presses when osd is not 3 (like when seekbar is present)
		UpdatePads();
		for (int i = 0; i < 4; i++) {
			mainWindow->Update(&userInput[i]);
		}
		if ((mplayer_get_pause() == 1) && (osdBtn.GetState() == STATE_CLICKED)) {
			osd_level = 1;
			osd_display_info = 0;
			osd_display_option_subtitle = 0;
			osd_display_option_audio = 0;
			osd_display_option_video = 0;

		}
	}
	mainWindow->Remove(&osdBtn);
}