Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

restructure converters #1825

Merged
merged 6 commits into from
Nov 8, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This is a port of TMK's converter/terminal_usb to QMK.
It supports PS/2 Scan Code Set 3 and runs on USB AVR chips such like PJRC Teensy.
I tested the converter on ATMega32U4 with 1392595(102keys) and 6110345(122keys).

Source code: https://github.com/tmk/tmk_keyboard
Source code: https://github.com/qmk/qmk_firmware.git
Article: http://geekhack.org/index.php?topic=27272.0


Expand All @@ -22,9 +22,9 @@ And VCC and GND, of course. See RESOURCE for keyboard connector pin assign.

BUILD
-----
$ git clone https://github.com/tmk/tmk_keyboard.git
$ cd converter/terminal_usb
$ make
$ git clone https://github.com/qmk/qmk_firmware.git
$ cd qmk_firmware
$ make converter/ibm_terminal:default


RESOURCE
Expand Down
5 changes: 0 additions & 5 deletions keyboards/converter/ibm_terminal/ibm_terminal.c
Original file line number Diff line number Diff line change
@@ -1,6 +1 @@
#include "ibm_terminal.h"

// void matrix_init_kb(void) {

// matrix_init_user();
// }
15 changes: 10 additions & 5 deletions keyboards/converter/usb_usb/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,18 @@ Make example for this keyboard (after setting up your build environment):

See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.

Note that you have to choose the right hardware variant as your subproject, otherwise you will probably have issues.

Troubleshooting & Known Issues
------------------------------
The Pro Micro variant runs at 8MHz, hence the following line in `usb_usb/rules.mk`:
`F_CPU ?= 8000000`
If the firmware doesn't work, try changing that line to
`F_CPU ?= 16000000`
or override the `F_CPU` variable in the `rules.mk` of your keymap.
If something doesn't work, it's probably because of the CPU clock.
Be sure to select the correct subproject (the middle part of the `make` argument) according to your hardware.
If you are sure you have this correct, try changeing the default in `usb_usb/rules.mk` or overriding the value in the `rules.mk` of your keymap.

The Pro Micro variant uses a 3.3V Pro Micro and thus runs at 8MHz, hence the following line in `usb_usb/pro_micro/rules.mk`:
`F_CPU = 8000000`
The converter sold by Hasu runs at 16MHz and so the corresponding line in `usb_usb/hasu/rules.mk` is:
`F_CPU = 16000000`

Getting the Hardware
--------------------
Expand Down
1 change: 1 addition & 0 deletions keyboards/converter/usb_usb/ble/ble.c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "ble.h"
6 changes: 6 additions & 0 deletions keyboards/converter/usb_usb/ble/ble.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#ifndef BLE_H
#define BLE_H

#include QMK_KEYBOARD_H

#endif
13 changes: 13 additions & 0 deletions keyboards/converter/usb_usb/ble/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef CONFIG_BLE_H
#define CONFIG_BLE_H

#undef PRODUCT
#define PRODUCT QMK BLE Adapter
#undef DESCRIPTION
#define DESCRIPTION

// Turn off the mode leds on the BLE module
#define ADAFRUIT_BLE_ENABLE_MODE_LEDS 0
#define ADAFRUIT_BLE_ENABLE_POWER_LED 0

#endif
4 changes: 4 additions & 0 deletions keyboards/converter/usb_usb/ble/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
BLUETOOTH = AdafruitBLE
ADAFRUIT_BLE_ENABLE = yes
OPT_DEFS += -DCATERINA_BOOTLOADER
F_CPU = 8000000
1 change: 1 addition & 0 deletions keyboards/converter/usb_usb/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// do not #include "config_common.h" because the pin names conflict with the USB HID code.
// CUSTOM_MATRIX is defined it that file, though, and we need it, so we define it ourselves.
// It's a hack, yeah...

#define CUSTOM_MATRIX 2

/* USB Device descriptor parameter */
Expand Down
38 changes: 21 additions & 17 deletions keyboards/converter/usb_usb/custom_matrix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "host.h"
#include "keyboard.h"

extern "C" {
#include "quantum.h"
}

/* KEY CODE to Matrix
*
Expand Down Expand Up @@ -62,7 +65,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.


// Integrated key state of all keyboards
static report_keyboard_t keyboard_report;
static report_keyboard_t local_keyboard_report;

static bool matrix_is_mod = false;

Expand Down Expand Up @@ -98,13 +101,13 @@ extern "C"
}

static void or_report(report_keyboard_t report) {
// integrate reports into keyboard_report
keyboard_report.mods |= report.mods;
// integrate reports into local_keyboard_report
local_keyboard_report.mods |= report.mods;
for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) {
if (IS_ANY(report.keys[i])) {
for (uint8_t j = 0; j < KEYBOARD_REPORT_KEYS; j++) {
if (! keyboard_report.keys[j]) {
keyboard_report.keys[j] = report.keys[i];
if (! local_keyboard_report.keys[j]) {
local_keyboard_report.keys[j] = report.keys[i];
break;
}
}
Expand All @@ -130,17 +133,17 @@ extern "C"
last_time_stamp4 = kbd_parser4.time_stamp;

// clear and integrate all reports
keyboard_report = {};
local_keyboard_report = {};
or_report(kbd_parser1.report);
or_report(kbd_parser2.report);
or_report(kbd_parser3.report);
or_report(kbd_parser4.report);

matrix_is_mod = true;

dprintf("state: %02X %02X", keyboard_report.mods, keyboard_report.reserved);
dprintf("state: %02X %02X", local_keyboard_report.mods, local_keyboard_report.reserved);
for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) {
dprintf(" %02X", keyboard_report.keys[i]);
dprintf(" %02X", local_keyboard_report.keys[i]);
}
dprint("\r\n");
} else {
Expand Down Expand Up @@ -177,12 +180,12 @@ extern "C"
uint8_t code = CODE(row, col);

if (IS_MOD(code)) {
if (keyboard_report.mods & ROW_BITS(code)) {
if (local_keyboard_report.mods & ROW_BITS(code)) {
return true;
}
}
for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) {
if (keyboard_report.keys[i] == code) {
if (local_keyboard_report.keys[i] == code) {
return true;
}
}
Expand All @@ -192,14 +195,14 @@ extern "C"
matrix_row_t matrix_get_row(uint8_t row) {
uint16_t row_bits = 0;

if (IS_MOD(CODE(row, 0)) && keyboard_report.mods) {
row_bits |= keyboard_report.mods;
if (IS_MOD(CODE(row, 0)) && local_keyboard_report.mods) {
row_bits |= local_keyboard_report.mods;
}

for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) {
if (IS_ANY(keyboard_report.keys[i])) {
if (row == ROW(keyboard_report.keys[i])) {
row_bits |= ROW_BITS(keyboard_report.keys[i]);
if (IS_ANY(local_keyboard_report.keys[i])) {
if (row == ROW(local_keyboard_report.keys[i])) {
row_bits |= ROW_BITS(local_keyboard_report.keys[i]);
}
}
}
Expand All @@ -209,9 +212,9 @@ extern "C"
uint8_t matrix_key_count(void) {
uint8_t count = 0;

count += bitpop(keyboard_report.mods);
count += bitpop(local_keyboard_report.mods);
for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) {
if (IS_ANY(keyboard_report.keys[i])) {
if (IS_ANY(local_keyboard_report.keys[i])) {
count++;
}
}
Expand All @@ -233,6 +236,7 @@ extern "C"
kbd2.SetReport(0, 0, 2, 0, 1, &usb_led);
kbd3.SetReport(0, 0, 2, 0, 1, &usb_led);
kbd4.SetReport(0, 0, 2, 0, 1, &usb_led);
led_set_kb(usb_led);
}

};
1 change: 1 addition & 0 deletions keyboards/converter/usb_usb/hasu/hasu.c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "hasu.h"
6 changes: 6 additions & 0 deletions keyboards/converter/usb_usb/hasu/hasu.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#ifndef HASU_H
#define HASU_H

#include QMK_KEYBOARD_H

#endif
1 change: 1 addition & 0 deletions keyboards/converter/usb_usb/hasu/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
F_CPU = 16000000
9 changes: 0 additions & 9 deletions keyboards/converter/usb_usb/keymaps/ble/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,4 @@

#include "../../config.h"

#undef PRODUCT
#define PRODUCT QMK BLE Adapter
#undef DESCRIPTION
#define DESCRIPTION

// Turn off the mode leds on the BLE module
#define ADAFRUIT_BLE_ENABLE_MODE_LEDS 0
#define ADAFRUIT_BLE_ENABLE_POWER_LED 0

#endif
3 changes: 0 additions & 3 deletions keyboards/converter/usb_usb/keymaps/ble/rules.mk

This file was deleted.

1 change: 1 addition & 0 deletions keyboards/converter/usb_usb/pro_micro/pro_micro.c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "pro_micro.h"
6 changes: 6 additions & 0 deletions keyboards/converter/usb_usb/pro_micro/pro_micro.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#ifndef PRO_MICRO_H
#define PRO_MICRO_H

#include QMK_KEYBOARD_H

#endif
1 change: 1 addition & 0 deletions keyboards/converter/usb_usb/pro_micro/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
F_CPU = 8000000
10 changes: 9 additions & 1 deletion keyboards/converter/usb_usb/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,15 @@ MCU = atmega32u4
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 8000000

# Since there are different hardware variations of these adapters and since these
# have different CPU clocks, the clock speed should be set in the rules.mk file of the
# respective hardware variantion (i.e. subproject). For example, in /pro_micro/rules.mk
# this is set to 8000000.
# The value here is only a fallback and is ignored if it is defined in the subproject.
F_CPU ?= 16000000

DEFAULT_FOLDER = converter/usb_usb/hasu


#
Expand Down
2 changes: 1 addition & 1 deletion keyboards/converter/usb_usb/usb_usb.c
Original file line number Diff line number Diff line change
@@ -1 +1 @@
#include "usb_usb.h"
#include "usb_usb.h"