void ExitApp(void) { AppCleanUp(); WBFS_CloseAll(); DeviceHandler::DestroyInstance(); USB_Deinitialize(); if(Settings.PlaylogUpdate) Playlog_Delete(); // Don't show USB Loader GX in the Wii message board MagicPatches(0); }
void DeviceHandler::UnMountAll() { /* Kill possible USB thread */ KillUSBKeepAliveThread(); for(u32 i = SD; i < MAXDEVICES; i++) UnMount(i); USBStorage2_Deinit(); USB_Deinitialize(); SDHC_Close(); sd.Cleanup(); usb.Cleanup(); }
static void gx_joypad_destroy(void) { int i; for (i = 0; i < MAX_PADS; i++) { #ifdef HAVE_LIBSICKSAXIS ss_close(&dev[i]); USB_Deinitialize(); #endif #ifdef HW_RVL // Commenting this out fixes the Wii remote not reconnecting after core load, exit, etc. // WPAD_Flush(i); // WPADDisconnect(i); #endif } }
static void wiiusb_hid_free(void *data) { wiiusb_hid_t *hid = (wiiusb_hid_t*)data; while (adapters.next) if (remove_adapter(hid, &adapters.next->device) == -1) RARCH_ERR("could not remove device %p\n", adapters.next->device); pad_connection_destroy(hid->slots); // wiiusb_hotplug_deregister_callback(hid->ctx, hid->hp); USB_Deinitialize(); if (hid) free(hid); }
int main(int argc, char **argv) { SYS_SetResetCallback(WiiResetPressed); SYS_SetPowerCallback(WiiPowerPressed); usleep(250*1000); GRRLIB_Init(); GRRLIB_ttfFont *font = GRRLIB_LoadTTF(verdana_ttf, verdana_ttf_size); WPAD_Init(); USB_Initialize(); USB_DeviceChangeNotifyAsync(USB_CLASS_HID, change_notify_cb, NULL); int dev_id = get_device_id(); int fd = open_device(dev_id); struct ds4_input data; memset(&data, 0, sizeof(data)); fetch_data(fd, &data); random_leds(fd); int screenW = rmode->fbWidth, screenH = rmode->efbHeight; float pos_x = screenW/2, pos_y = screenH/2; while (run) { WPAD_ScanPads(); u32 pressed = WPAD_ButtonsDown(0); if (pressed & WPAD_BUTTON_B) { dev_id = get_device_id(); fd = open_device(dev_id); } if (pressed & WPAD_BUTTON_A) { random_leds(fd); } GRRLIB_FillScreen(0x0); GRRLIB_PrintfTTF(15, 15, font, "ds4wii by xerpi | L1: center | R1: random color", 15, 0xFFFFFFFF); u32 color = (r<<24)|(g<<16)|(b<<8)|0xFF; GRRLIB_Circle(pos_x, pos_y, 15, color, 0); GRRLIB_Circle(pos_x, pos_y, 14, color, 0); memset(&data, 0, sizeof(data)); fetch_data(fd, &data); if (data.L1) {pos_x = screenW/2, pos_y = screenH/2;} if (data.R1) {random_leds(fd);} //1920x940 if (data.finger1active) { GRRLIB_Circle((screenW/1920.0f)*data.finger1X, (screenH/940.0f)*data.finger1Y, 10, 0x00FF00FF, 1); } if (data.finger2active) { GRRLIB_Circle((screenW/1920.0f)*data.finger2X, (screenH/940.0f)*data.finger2Y, 10, 0x0000FFFF, 1); } /*char buf1[256]; sprintf(buf1, "aX: %8hi aY: %8hi aZ: %8hi", data.accelX, data.accelY, data.accelZ); char buf2[256]; sprintf(buf2, "gyroX: %8hi gyroY: %8hi gyroZ: %8hi", data.gyroX, data.gyroY, data.gyroZ); GRRLIB_PrintfTTF(15, 30, font, buf1, 14, 0xFFFFFFFF); GRRLIB_PrintfTTF(15, 45, font, buf2, 14, 0xFFFFFFFF); */ #define THRESHOLD 50.0f if (fabs(data.accelX) > THRESHOLD) pos_y -= data.accelX/55.0f; if (fabs(data.accelY) > THRESHOLD) pos_x -= data.accelY/55.0f; if (pressed & WPAD_BUTTON_HOME) run = 0; GRRLIB_Render(); } USB_CloseDevice(&fd); USB_Deinitialize(); GRRLIB_FreeTTF (font); GRRLIB_Exit(); exit(0); return 0; }
void DS3_Cleanup() { psPressed = false; ss_close(&first); USB_Deinitialize(); }