Merge branch 'implementation-select'

* implementation-select:
  Move the HARDWARE_IMPLEMENTATION macro into the implementation defintion
  Selectable implementations that appear to work.
  wip implementation select
pull/18/head
Jesse Vincent 9 years ago
commit 2946a9f0e7

@ -1,6 +1,6 @@
#include "KeyboardConfig.h"
Model01Beta_ KeyboardHardware;
HARDWARE_IMPLEMENTATION KeyboardHardware;
// These global proxy functions are a cheap hack to avoid
void led_set_crgb_at(uint8_t i, cRGB crgb) {

@ -1,7 +1,10 @@
#pragma once
#include "implementation/Model01Beta.h"
// These global proxy functions are a cheap hack to avoid
// a circular dependency between the keyboard hardware class
// and the 'userspace' LED implementation. If my C++ were stronger, there woudl
@ -10,3 +13,4 @@ void led_set_crgb_at(uint8_t i, cRGB crgb);
void led_sync(void);

@ -25,6 +25,7 @@ void setup();
#include "generated/keymaps.h"
#include "key_events.h"
extern HARDWARE_IMPLEMENTATION KeyboardHardware;
extern uint8_t matrixState[ROWS][COLS];
extern const Key keymaps[KEYMAPS][ROWS][COLS];

@ -4,6 +4,7 @@
#include "cRGB.h"
#include "KeyboardConfig.h"
#define LED_MODES 7
#define LED_MODE_OFF 0
#define LED_MODE_STEADY 1

@ -2,28 +2,28 @@
#include "WS2812.h"
#include "Model01.h"
Model01_::Model01_(void) {
Model01::Model01(void) {
}
void Model01_::setup(void) {
void Model01::setup(void) {
}
void Model01_::led_set_crgb_at(byte row, byte col, cRGB color) {
void Model01::led_set_crgb_at(byte row, byte col, cRGB color) {
}
cRGB Model01_::get_key_color(byte row, byte col) {
cRGB Model01::get_key_color(byte row, byte col) {
}
void Model01_::led_set_crgb_at(uint8_t i, cRGB crgb) {
void Model01::led_set_crgb_at(uint8_t i, cRGB crgb) {
}
void Model01_::led_sync() {
void Model01::led_sync() {
}
void Model01_::scan_matrix() {
void Model01::scan_matrix() {
//scan the Keyboard matrix looking for connections
for (byte row = 0; row < LEFT_ROWS; row++) {

@ -1,5 +1,8 @@
#pragma once
#define HARDWARE_IMPLEMENTATION Model01
#include "../keymaps.h"
#include "../generated/keymaps.h"
#include "../key_events.h"
@ -13,9 +16,9 @@
class Model01_ {
class Model01 {
public:
Model01_(void);
Model01(void);
void led_sync(void);
void led_set_crgb_at(byte row, byte col, cRGB color);
void led_set_crgb_at(uint8_t i, cRGB crgb);

@ -1,41 +1,41 @@
#include "Model01Beta.h"
sx1509Class Model01Beta_::leftsx1509(LEFT_SX1509_ADDRESS);
sx1509Class Model01Beta_::rightsx1509(RIGHT_SX1509_ADDRESS);
sx1509Class Model01Beta::leftsx1509(LEFT_SX1509_ADDRESS);
sx1509Class Model01Beta::rightsx1509(RIGHT_SX1509_ADDRESS);
WS2812 Model01Beta_::LED(LED_COUNT);
WS2812 Model01Beta::LED(LED_COUNT);
Model01Beta_::Model01Beta_(void) {
Model01Beta::Model01Beta(void) {
}
void Model01Beta_::setup(void) {
void Model01Beta::setup(void) {
pins_setup();
leds_setup();
}
void Model01Beta_::leds_setup() {
void Model01Beta::leds_setup() {
LED.setOutput(LED_DATA_PIN);
LED.setColorOrderGRB(); // Uncomment for RGB color order
}
cRGB Model01Beta_::get_key_color(byte row, byte col) {
cRGB Model01Beta::get_key_color(byte row, byte col) {
return LED.get_crgb_at(key_led_map[row][col]);
}
void Model01Beta_::led_set_crgb_at(uint8_t i, cRGB crgb) {
void Model01Beta::led_set_crgb_at(uint8_t i, cRGB crgb) {
LED.set_crgb_at(i, crgb);
}
void Model01Beta_::led_sync() {
void Model01Beta::led_sync() {
LED.sync();
}
void Model01Beta_::scan_matrix() {
void Model01Beta::scan_matrix() {
//scan the Keyboard matrix looking for connections
for (byte row = 0; row < LEFT_ROWS; row++) {
scan_row(row);
@ -59,7 +59,7 @@ void Model01Beta_::scan_matrix() {
void Model01Beta_::scan_row(byte row) {
void Model01Beta::scan_row(byte row) {
if (left_initted) {
leftsx1509.updatePinState(left_rowpins[row], LOW);
leftsx1509.sendPinStates();
@ -72,14 +72,14 @@ void Model01Beta_::scan_row(byte row) {
}
}
void Model01Beta_::finish_scanning_row(byte row) {
void Model01Beta::finish_scanning_row(byte row) {
if (left_initted)
leftsx1509.updatePinState(left_rowpins[row], HIGH);
if (right_initted)
rightsx1509.updatePinState(right_rowpins[row], HIGH);
}
void Model01Beta_::scan_left_col(byte row, byte col,uint8_t *state) {
void Model01Beta::scan_left_col(byte row, byte col,uint8_t *state) {
//If we see an electrical connection on I->J,
@ -93,7 +93,7 @@ void Model01Beta_::scan_left_col(byte row, byte col,uint8_t *state) {
}
}
void Model01Beta_::scan_right_col(byte row, byte col, uint8_t *state) {
void Model01Beta::scan_right_col(byte row, byte col, uint8_t *state) {
//If we see an electrical connection on I->J,
@ -111,7 +111,7 @@ void Model01Beta_::scan_right_col(byte row, byte col, uint8_t *state) {
boolean Model01Beta_::right_hand_connected(void) {
boolean Model01Beta::right_hand_connected(void) {
if (right_initted) {
return true;
} else {
@ -119,24 +119,24 @@ boolean Model01Beta_::right_hand_connected(void) {
}
}
void Model01Beta_::pins_setup() {
void Model01Beta::pins_setup() {
right_initted = setup_sx1509(rightsx1509, right_colpins, right_rowpins);
left_initted = setup_sx1509(leftsx1509, left_colpins, left_rowpins);
rightsx1509.fetchPinStates();
}
void Model01Beta_::make_input(sx1509Class sx1509, uint8_t pin) {
void Model01Beta::make_input(sx1509Class sx1509, uint8_t pin) {
sx1509.pinDir(pin, INPUT); // Set SX1509 pin 1 as an input
sx1509.writePin(pin, HIGH); // Activate pull-up
}
void Model01Beta_::make_output(sx1509Class sx1509, uint8_t pin) {
void Model01Beta::make_output(sx1509Class sx1509, uint8_t pin) {
sx1509.pinDir(pin, OUTPUT);
sx1509.writePin(pin, HIGH);
}
int Model01Beta_::setup_sx1509 (sx1509Class sx1509, uint8_t colpins[], uint8_t rowpins[]) {
int Model01Beta::setup_sx1509 (sx1509Class sx1509, uint8_t colpins[], uint8_t rowpins[]) {
byte initted;
for (int counter = 0; counter < 10; counter++) {

@ -7,6 +7,10 @@
#include "KeyboardioSX1509.h"
#include "../key_events.h"
#define HARDWARE_IMPLEMENTATION Model01Beta
#define USE_HSV_CURVE 1
// SX1509 I2C address (10)
@ -19,11 +23,10 @@
#define LEFT_COLS 8
#define LEFT_ROWS 4
//class Model01Beta_;
class Model01Beta_ {
class Model01Beta {
public:
Model01Beta_(void);
Model01Beta(void);
void led_sync(void);
void led_set_crgb_at(uint8_t i, cRGB crgb);
cRGB get_key_color(byte row, byte col);
@ -136,4 +139,4 @@ class Model01Beta_ {
#define LED_APOSTROPHE 62
#define LED_MINUS 63
extern Model01Beta_ KeyboardHardware;

Loading…
Cancel
Save