Moved files to common, protocol and doc directory
This commit is contained in:
1 parent
225de7a847
commit
f412570739
98 files changed
-210
No files matched your search
-27
@@ -1,27 +0,0 @@
|
||||
Codes are released under each license. See heading of each file for details.
|
||||
|
||||
Modified BSD license:
|
||||
ps2.c
|
||||
ps2.h
|
||||
adb.c
|
||||
adb.h
|
||||
|
||||
GPLv2 or later:
|
||||
other codes
|
||||
|
||||
PJRC's license:
|
||||
print.c
|
||||
print.h
|
||||
pjrc/
|
||||
|
||||
GPLv2 or GPLv3 or OBJECTIVE DEVELOPMENT's commercial license:
|
||||
vusb/
|
||||
|
||||
|
||||
|
||||
|
||||
This software includes following codes from other parties.
|
||||
- V-USB from OBJECTIVE DEVELOPMENT
|
||||
http://www.obdev.at/products/vusb/index.html
|
||||
- Teensy example codes from PJRC
|
||||
http://www.pjrc.com/teensy/
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
-183
@@ -1,183 +0,0 @@
|
||||
/*
|
||||
Copyright 2011 Jun Wako <[email protected]>
|
||||
|
||||
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 <stdint.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include "usb_keycodes.h"
|
||||
#include "usb_keyboard.h"
|
||||
#if defined(MOUSEKEY_ENABLE) || defined(PS2_MOUSE_ENABLE)
|
||||
#include "usb_mouse.h"
|
||||
#endif
|
||||
#ifdef EXTRAKEY_ENABLE
|
||||
#include "usb_extra.h"
|
||||
#endif
|
||||
#include "debug.h"
|
||||
#include "host.h"
|
||||
#include "util.h"
|
||||
|
||||
|
||||
#ifdef NKRO_ENABLE
|
||||
bool keyboard_nkro = false;
|
||||
#endif
|
||||
|
||||
static report_keyboard_t report0;
|
||||
static report_keyboard_t report1;
|
||||
report_keyboard_t *keyboard_report = &report0;
|
||||
report_keyboard_t *keyboard_report_prev = &report1;
|
||||
|
||||
static inline void add_key_byte(uint8_t code);
|
||||
static inline void add_key_bit(uint8_t code);
|
||||
|
||||
|
||||
uint8_t host_keyboard_leds(void)
|
||||
{
|
||||
return usb_keyboard_leds;
|
||||
}
|
||||
|
||||
/* keyboard report operations */
|
||||
void host_add_key(uint8_t key)
|
||||
{
|
||||
#ifdef NKRO_ENABLE
|
||||
if (keyboard_nkro) {
|
||||
add_key_bit(key);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
add_key_byte(key);
|
||||
}
|
||||
|
||||
void host_add_mod_bit(uint8_t mod)
|
||||
{
|
||||
keyboard_report->mods |= mod;
|
||||
}
|
||||
|
||||
void host_set_mods(uint8_t mods)
|
||||
{
|
||||
keyboard_report->mods = mods;
|
||||
}
|
||||
|
||||
void host_add_code(uint8_t code)
|
||||
{
|
||||
if (IS_MOD(code)) {
|
||||
host_add_mod_bit(MOD_BIT(code));
|
||||
} else {
|
||||
host_add_key(code);
|
||||
}
|
||||
}
|
||||
|
||||
void host_swap_keyboard_report(void)
|
||||
{
|
||||
uint8_t sreg = SREG;
|
||||
cli();
|
||||
report_keyboard_t *tmp = keyboard_report_prev;
|
||||
keyboard_report_prev = keyboard_report;
|
||||
keyboard_report = tmp;
|
||||
SREG = sreg;
|
||||
}
|
||||
|
||||
void host_clear_keyboard_report(void)
|
||||
{
|
||||
keyboard_report->mods = 0;
|
||||
for (int8_t i = 0; i < REPORT_KEYS; i++) {
|
||||
keyboard_report->keys[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t host_has_anykey(void)
|
||||
{
|
||||
uint8_t cnt = 0;
|
||||
for (int i = 0; i < REPORT_KEYS; i++) {
|
||||
if (keyboard_report->keys[i])
|
||||
cnt++;
|
||||
}
|
||||
return cnt;
|
||||
}
|
||||
|
||||
uint8_t host_get_first_key(void)
|
||||
{
|
||||
#ifdef NKRO_ENABLE
|
||||
if (keyboard_nkro) {
|
||||
uint8_t i = 0;
|
||||
for (; i < REPORT_KEYS && !keyboard_report->keys[i]; i++)
|
||||
;
|
||||
return i<<3 | biton(keyboard_report->keys[i]);
|
||||
}
|
||||
#endif
|
||||
return keyboard_report->keys[0];
|
||||
}
|
||||
|
||||
|
||||
void host_send_keyboard_report(void)
|
||||
{
|
||||
usb_keyboard_send_report(keyboard_report);
|
||||
}
|
||||
|
||||
#if defined(MOUSEKEY_ENABLE) || defined(PS2_MOUSE_ENABLE)
|
||||
void host_mouse_send(report_mouse_t *report)
|
||||
{
|
||||
usb_mouse_send(report->x, report->y, report->v, report->h, report->buttons);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef EXTRAKEY_ENABLE
|
||||
void host_system_send(uint16_t data)
|
||||
{
|
||||
usb_extra_system_send(data);
|
||||
}
|
||||
|
||||
void host_consumer_send(uint16_t data)
|
||||
{
|
||||
static uint16_t last_data = 0;
|
||||
if (data == last_data) return;
|
||||
last_data = data;
|
||||
|
||||
usb_extra_consumer_send(data);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static inline void add_key_byte(uint8_t code)
|
||||
{
|
||||
// TODO: fix ugly code
|
||||
int8_t i = 0;
|
||||
int8_t empty = -1;
|
||||
for (; i < REPORT_KEYS; i++) {
|
||||
if (keyboard_report_prev->keys[i] == code) {
|
||||
keyboard_report->keys[i] = code;
|
||||
break;
|
||||
}
|
||||
if (empty == -1 &&
|
||||
keyboard_report_prev->keys[i] == 0 &&
|
||||
keyboard_report->keys[i] == 0) {
|
||||
empty = i;
|
||||
}
|
||||
}
|
||||
if (i == REPORT_KEYS) {
|
||||
if (empty != -1) {
|
||||
keyboard_report->keys[empty] = code;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static inline void add_key_bit(uint8_t code)
|
||||
{
|
||||
if ((code>>3) < REPORT_KEYS) {
|
||||
keyboard_report->keys[code>>3] |= 1<<(code&7);
|
||||
} else {
|
||||
debug("add_key_bit: can't add: "); phex(code); debug("\n");
|
||||
}
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Reference in new issue
Block a user