From e67c988824f5ec0c965beb412f8ee5953dfd3c8c Mon Sep 17 00:00:00 2001
From: tmk <nobody@nowhere>
Date: Sat, 17 Sep 2011 22:39:50 +0900
Subject: Added Bulegiga iWRAP support into HHKB.(Bluetooth)

---
 vusb/main.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 99 insertions(+)
 create mode 100644 vusb/main.c

(limited to 'vusb/main.c')

diff --git a/vusb/main.c b/vusb/main.c
new file mode 100644
index 0000000000..1bf9035b39
--- /dev/null
+++ b/vusb/main.c
@@ -0,0 +1,99 @@
+/* Name: main.c
+ * Project: hid-mouse, a very simple HID example
+ * Author: Christian Starkjohann
+ * Creation Date: 2008-04-07
+ * Tabsize: 4
+ * Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH
+ * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
+ * This Revision: $Id: main.c 790 2010-05-30 21:00:26Z cs $
+ */
+#include <stdint.h>
+#include <avr/interrupt.h>
+#include <avr/wdt.h>
+#include <avr/sleep.h>
+#include <util/delay.h>
+#include "usbdrv.h"
+#include "oddebug.h"
+#include "vusb.h"
+#include "keyboard.h"
+#include "host.h"
+#include "timer.h"
+#include "uart.h"
+#include "debug.h"
+
+
+#define UART_BAUD_RATE 115200
+
+
+/* This is from main.c of USBaspLoader */
+static void initForUsbConnectivity(void)
+{
+    uint8_t i = 0;
+
+    usbInit();
+    /* enforce USB re-enumerate: */
+    usbDeviceDisconnect();  /* do this while interrupts are disabled */
+    while(--i){         /* fake USB disconnect for > 250 ms */
+        wdt_reset();
+        _delay_ms(1);
+    }
+    usbDeviceConnect();
+    sei();
+}
+
+int main(void)
+{
+    bool suspended = false;
+#if USB_COUNT_SOF
+    uint16_t last_timer = timer_read();
+#endif
+
+    CLKPR = 0x80, CLKPR = 0;
+#ifndef PS2_USE_USART
+    uart_init(UART_BAUD_RATE);
+#endif
+
+    debug_enable = true;
+    print_enable = true;
+
+    debug("keyboard_init()\n");
+    keyboard_init();
+    host_set_driver(vusb_driver());
+
+    debug("initForUsbConnectivity()\n");
+    initForUsbConnectivity();
+
+    debug("main loop\n");
+    while (1) {
+#if USB_COUNT_SOF
+        if (usbSofCount != 0) {
+            suspended = false;
+            usbSofCount = 0;
+            last_timer = timer_read();
+        } else {
+            // Suspend when no SOF in 3ms-10ms(7.1.7.4 Suspending of USB1.1)
+            if (timer_elapsed(last_timer) > 5) {
+                suspended = true;
+/*
+                uart_putchar('S');
+                _delay_ms(1);
+                cli();
+                set_sleep_mode(SLEEP_MODE_PWR_DOWN);
+                sleep_enable();
+                sleep_bod_disable();
+                sei();
+                sleep_cpu();
+                sleep_disable();
+                _delay_ms(10);
+                uart_putchar('W');
+*/
+            }
+        }
+#endif
+        if (!suspended)
+            usbPoll();
+        keyboard_proc();
+        if (!suspended)
+            vusb_transfer_keyboard();
+    }
+}
-- 
cgit v1.2.3