summaryrefslogtreecommitdiff
path: root/keyboards/bioi/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/bioi/main.c')
-rw-r--r--keyboards/bioi/main.c388
1 files changed, 0 insertions, 388 deletions
diff --git a/keyboards/bioi/main.c b/keyboards/bioi/main.c
deleted file mode 100644
index eb149eb7cd..0000000000
--- a/keyboards/bioi/main.c
+++ /dev/null
@@ -1,388 +0,0 @@
-/*
-Copyright 2019 Basic I/O Instruments(Scott Wei) <scot.wei@gmail.com>
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <avr/pgmspace.h>
-#include <util/delay.h>
-
-#include "report.h"
-#include "host.h"
-#include "host_driver.h"
-#include "keyboard.h"
-#include "action.h"
-#include "led.h"
-#include "sendchar.h"
-#include "debug.h"
-#include "print.h"
-#ifdef SLEEP_LED_ENABLE
-#include "sleep_led.h"
-#endif
-#include "suspend.h"
-
-#include "usb_descriptor.h"
-#include "lufa.h"
-#include "quantum.h"
-#include <util/atomic.h>
-
-#ifdef NKRO_ENABLE
-#include "keycode_config.h"
-
-extern keymap_config_t keymap_config;
-#endif
-
-#ifdef AUDIO_ENABLE
-#include <audio.h>
-#endif
-
-#ifdef BLUETOOTH_ENABLE
-#ifdef BLUETOOTH_BLUEFRUIT_LE
-#include "bluefruit_le.h"
-#else
-#include "bluetooth.h"
-#endif
-#endif
-
-#ifdef VIRTSER_ENABLE
-#include "virtser.h"
-#endif
-
-#if defined(RGBLIGHT_ENABLE)
-#include "rgblight.h"
-#endif
-
-#ifdef MIDI_ENABLE
-#include "qmk_midi.h"
-#endif
-
-#ifdef RAW_ENABLE
-#include "raw_hid.h"
-#endif
-
-#include "ble.h"
-#include "usart.h"
-
-#include <avr/power.h>
-#include <avr/sleep.h>
-
-bool force_usb = false; //Reserved for FORCE USB Mode function.
-bool force_ble = false; //Reserved for FORCE USB Mode function.
-
-bool usb_connected = false;
-bool ble_enabled = false;
-
-uint32_t kb_idle_timer = 0;
-
-bool usb_state_sent = false;
-
-uint8_t USB_DeviceLastState = 0;
-
-#ifdef RAW_ENABLE
-/** \brief Raw HID Task
- *
- * FIXME: Needs doc
- */
-static void raw_hid_task(void)
-{
- // Create a temporary buffer to hold the read in data from the host
- uint8_t data[RAW_EPSIZE];
- bool data_read = false;
-
- // Device must be connected and configured for the task to run
- if (USB_DeviceState != DEVICE_STATE_Configured)
- return;
-
- Endpoint_SelectEndpoint(RAW_OUT_EPNUM);
-
- // Check to see if a packet has been sent from the host
- if (Endpoint_IsOUTReceived())
- {
- // Check to see if the packet contains data
- if (Endpoint_IsReadWriteAllowed())
- {
- /* Read data */
- Endpoint_Read_Stream_LE(data, sizeof(data), NULL);
- data_read = true;
- }
-
- // Finalize the stream transfer to receive the last packet
- Endpoint_ClearOUT();
-
- if (data_read)
- {
- raw_hid_receive(data, sizeof(data));
- }
- }
-}
-#endif
-
-static void setup_mcu(void)
-{
- /* Disable watchdog if enabled by bootloader/fuses */
- MCUSR &= ~(1 << WDRF);
- wdt_disable();
-
- CLKPR = (1 << CLKPCE);
- CLKPR = (0 << CLKPS3) | (0 << CLKPS2) | (0 << CLKPS1) | (0 << CLKPS0);
-}
-
-static void setup_usb(void)
-{
- // Leonardo needs. Without this USB device is not recognized.
- USB_Disable();
-
- USB_Init();
-
- // for Console_Task
- USB_Device_EnableSOFEvents();
- print_set_sendchar(sendchar);
-}
-
-void power_saving(void)
-{
- power_adc_disable();
- power_usart0_disable();
- power_spi_disable();
- power_twi_disable();
-
- USBCON |= (1 << FRZCLK); // Freeze the USB Clock
- PLLCSR &= ~(1 << PLLE); // Disable the USB Clock (PPL)
- USBCON &= ~(1 << USBE);
-}
-
-void power_recover(void)
-{
-
- USBCON |= (1 << USBE);
- PLLCSR |= (1 << PLLE); // Resume the USB Clock (PPL)
- USBCON &= ~(1 << FRZCLK); // Resume the USB Clock
-
- power_adc_enable();
- power_usart0_enable();
- power_spi_enable();
- power_twi_enable();
-}
-
-void ble_task_init(void)
-{
- kb_idle_timer = timer_read32(); //Mark current time, reserved for further usage;
-}
-
-void ble_task(void)
-{
-
- if (USB_DeviceLastState != USB_DeviceState)
- {
- usb_state_sent = false;
-#ifdef BLE_DEBUG
- send_str(PSTR("USB State Changed\r\n"));
- if (USB_DeviceState == DEVICE_STATE_Unattached)
- {
- send_str(PSTR("USB State Unattached\r\n"));
- }
-#endif
- if (USB_DeviceState == DEVICE_STATE_Powered)
- {
-#ifdef BLE_DEBUG
- send_str(PSTR("USB State Powered\r\n"));
-#endif
- power_recover();
- host_set_driver(&null_driver);
- }
-#ifdef BLE_DEBUG
- if ((USB_DeviceState == DEVICE_STATE_Default))
- {
- send_str(PSTR("USB State Default\r\n"));
- }
- if ((USB_DeviceState == DEVICE_STATE_Addressed))
- {
- send_str(PSTR("USB State Addressed\r\n"));
- }
- if (USB_DeviceState == DEVICE_STATE_Configured)
- {
- send_str(PSTR("USB State Configured\r\n"));
- }
- if (USB_DeviceState > DEVICE_STATE_Unattached)
- {
- }
- else
- {
- //
- }
-#endif
- }
- else
- {
-#ifdef BLE_DEBUG
- if (!usb_state_sent)
- {
- if (USB_DeviceState == DEVICE_STATE_Unattached)
- {
- send_str(PSTR("USB State Stopped at Unattached\r\n"));
- }
- if (USB_DeviceState == DEVICE_STATE_Powered)
- {
- send_str(PSTR("USB State Stopped at Powered\r\n"));
- }
- if ((USB_DeviceState == DEVICE_STATE_Default))
- {
- send_str(PSTR("USB State Stopped at Default\r\n"));
- }
- if ((USB_DeviceState == DEVICE_STATE_Addressed))
- {
- send_str(PSTR("USB State Stopped at Addressed\r\n"));
- }
- if (USB_DeviceState == DEVICE_STATE_Configured)
- {
- send_str(PSTR("USB State Stopped at Configured\r\n"));
- }
- }
-#endif
- if (USB_DeviceState == DEVICE_STATE_Unattached)
- {
- if (host_get_driver() && host_get_driver() != &bluefruit_driver)
- {
-#ifdef BLE_DEBUG
- send_str(PSTR("USB State stopped at Unattached\r\n"));
-#endif
- ble_task_init();
-
- force_usb = 0;
- usb_connected = 0;
-
- //Reinit USB to prepare for next connection.
- USB_Init();
- USB_Detach();
- USB_Attach();
-
-#ifdef BLE_DEBUG
- send_str(PSTR("Loading &bluefruit_driver\r\n"));
-#endif
- host_set_driver(&bluefruit_driver);
- clear_keyboard();
- power_saving();
- }
- else
- {
- //Do nothing if USB is unattached and the driver is &bluefruit_driver
- }
- }
- if (USB_DeviceState == DEVICE_STATE_Configured)
- {
- if (host_get_driver() && host_get_driver() != &lufa_driver)
- {
-#ifdef BLE_DEBUG
- send_str(PSTR("USB State stopped at Configured\r\n"));
-#endif
- power_recover();
-
- usb_connected = 1;
- ble_enabled = 0;
-#ifdef BLE_DEBUG
- send_str(PSTR("Loading &lufa_driver\r\n"));
-#endif
- host_set_driver(&lufa_driver);
- clear_keyboard();
- }
- else
- {
- //Do nothing if the driver is &lufa_driver
- }
- }
-
- usb_state_sent = true;
- }
-
- USB_DeviceLastState = USB_DeviceState;
-}
-
-// Use a custom main() function because the task logic is different from the common one.
-int main(void)
-{
-#ifdef MIDI_ENABLE
- setup_midi();
-#endif
-
- setup_mcu();
-
- keyboard_setup();
-
- setup_usb();
- sei();
-
-#if defined(BLUETOOTH_RN42)
- serial_init();
-#endif
-
- /* wait for USB startup to get ready for debug output */
- uint8_t timeout = 255; // timeout when USB is not available(Bluetooth)
- while (timeout-- && USB_DeviceState != DEVICE_STATE_Configured)
- {
- wait_ms(4);
-#if defined(INTERRUPT_CONTROL_ENDPOINT)
- ;
-#else
- USB_USBTask();
-#endif
- }
-
- print("\nUSB init\n");
-
- keyboard_init();
- host_set_driver(&lufa_driver);
-
- backlight_disable();
- //host_set_driver(&lufa_driver);
- print("Keyboard initialized.\n");
-
- //Init Hardware UART
- usart_init();
-
-#ifdef BLE_DEBUG
- send_str(PSTR("Keyboard has been setup up\r\n"));
-
- if (usb_connected)
- {
- send_str(PSTR("usb_connected=1\r\n"));
- }
- else
- {
- send_str(PSTR("usb_connected=0\r\n"));
- }
-#endif
-
-#ifdef SLEEP_LED_ENABLE
- sleep_led_init();
-#endif
-
-#ifdef VIRTSER_ENABLE
- virtser_init();
-#endif
-
- while (1)
- {
- ble_task();
- keyboard_task();
-
-#ifdef RAW_ENABLE
- raw_hid_task();
-#endif
-
-#if defined(RGBLIGHT_ENABLE)
- rgblight_task();
-#endif
-
-#if !defined(INTERRUPT_CONTROL_ENDPOINT)
- USB_USBTask();
-#endif
- }
-}