First pass at turning the implementation side into a class

pull/18/head
Jesse Vincent 9 years ago
parent cc9546bdd9
commit 3281020304

@ -13,28 +13,32 @@ static int left_initted = 0;
WS2812 LED(LED_COUNT); WS2812 LED(LED_COUNT);
void implementation_leds_setup() { KeyboardHardware_::KeyboardHardware_(void) {
}
void KeyboardHardware_::leds_setup() {
LED.setOutput(LED_DATA_PIN); LED.setOutput(LED_DATA_PIN);
LED.setColorOrderGRB(); // Uncomment for RGB color order LED.setColorOrderGRB(); // Uncomment for RGB color order
} }
void implementation_led_set_crgb_at(byte row, byte col, cRGB color) { void KeyboardHardware_::led_set_crgb_at(byte row, byte col, cRGB color) {
LED.set_crgb_at(key_led_map[row][col], color); LED.set_crgb_at(key_led_map[row][col], color);
} }
cRGB implementation_get_key_color(byte row, byte col) { cRGB KeyboardHardware_::get_key_color(byte row, byte col) {
return LED.get_crgb_at(key_led_map[row][col]); return LED.get_crgb_at(key_led_map[row][col]);
} }
void implementation_led_set_crgb_at(uint8_t i, cRGB crgb) { void KeyboardHardware_::led_set_crgb_at(uint8_t i, cRGB crgb) {
LED.set_crgb_at(i, crgb); LED.set_crgb_at(i, crgb);
} }
void implementation_led_sync() { void KeyboardHardware_::led_sync() {
LED.sync(); LED.sync();
} }
void implementation_scan_row(byte row) { void KeyboardHardware_::scan_row(byte row) {
if (left_initted) { if (left_initted) {
leftsx1509.updatePinState(left_rowpins[row], LOW); leftsx1509.updatePinState(left_rowpins[row], LOW);
leftsx1509.sendPinStates(); leftsx1509.sendPinStates();
@ -47,14 +51,14 @@ void implementation_scan_row(byte row) {
} }
} }
void implementation_finish_scanning_row(byte row) { void KeyboardHardware_::finish_scanning_row(byte row) {
if (left_initted) if (left_initted)
leftsx1509.updatePinState(left_rowpins[row], HIGH); leftsx1509.updatePinState(left_rowpins[row], HIGH);
if (right_initted) if (right_initted)
rightsx1509.updatePinState(right_rowpins[row], HIGH); rightsx1509.updatePinState(right_rowpins[row], HIGH);
} }
void implementation_scan_left_col(byte row, byte col,uint8_t *state) { void KeyboardHardware_::scan_left_col(byte row, byte col,uint8_t *state) {
//If we see an electrical connection on I->J, //If we see an electrical connection on I->J,
@ -68,7 +72,7 @@ void implementation_scan_left_col(byte row, byte col,uint8_t *state) {
} }
} }
void implementation_scan_right_col(byte row, byte col, uint8_t *state) { void KeyboardHardware_::scan_right_col(byte row, byte col, uint8_t *state) {
//If we see an electrical connection on I->J, //If we see an electrical connection on I->J,
@ -86,7 +90,7 @@ void implementation_scan_right_col(byte row, byte col, uint8_t *state) {
boolean implementation_right_hand_connected(void) { boolean KeyboardHardware_::right_hand_connected(void) {
if (right_initted) { if (right_initted) {
return true; return true;
} else { } else {
@ -94,24 +98,24 @@ boolean implementation_right_hand_connected(void) {
} }
} }
void implementation_pins_setup() { void KeyboardHardware_::pins_setup() {
right_initted = setup_sx1509(rightsx1509, right_colpins, right_rowpins); right_initted = setup_sx1509(rightsx1509, right_colpins, right_rowpins);
left_initted = setup_sx1509(leftsx1509, left_colpins, left_rowpins); left_initted = setup_sx1509(leftsx1509, left_colpins, left_rowpins);
rightsx1509.fetchPinStates(); rightsx1509.fetchPinStates();
} }
void make_input(sx1509Class sx1509, uint8_t pin) { void KeyboardHardware_::make_input(sx1509Class sx1509, uint8_t pin) {
sx1509.pinDir(pin, INPUT); // Set SX1509 pin 1 as an input sx1509.pinDir(pin, INPUT); // Set SX1509 pin 1 as an input
sx1509.writePin(pin, HIGH); // Activate pull-up sx1509.writePin(pin, HIGH); // Activate pull-up
} }
void make_output(sx1509Class sx1509, uint8_t pin) { void KeyboardHardware_::make_output(sx1509Class sx1509, uint8_t pin) {
sx1509.pinDir(pin, OUTPUT); sx1509.pinDir(pin, OUTPUT);
sx1509.writePin(pin, HIGH); sx1509.writePin(pin, HIGH);
} }
int setup_sx1509 (sx1509Class sx1509, uint8_t colpins[], uint8_t rowpins[]) { int KeyboardHardware_::setup_sx1509 (sx1509Class sx1509, uint8_t colpins[], uint8_t rowpins[]) {
byte initted; byte initted;
for (int counter = 0; counter < 10; counter++) { for (int counter = 0; counter < 10; counter++) {
@ -147,3 +151,5 @@ int setup_sx1509 (sx1509Class sx1509, uint8_t colpins[], uint8_t rowpins[]) {
return initted; return initted;
} }
KeyboardHardware_ KeyboardHardware;

@ -27,16 +27,32 @@ static uint8_t right_rowpins[]= {8,9,10,11};
#define NUMPAD_KEYMAP 2 #define NUMPAD_KEYMAP 2
#define KEYMAP_LIST KEYMAP_QWERTY KEYMAP_GENERIC_FN2 KEYMAP_NUMPAD #define KEYMAP_LIST KEYMAP_QWERTY KEYMAP_GENERIC_FN2 KEYMAP_NUMPAD
void implementation_scan_row(byte row);
void implementation_finish_scanning_row(byte row); class KeyboardHardware_ {
void implementation_scan_right_col(byte row, byte col, uint8_t *state); public:
void implementation_scan_left_col(byte row, byte col, uint8_t *state); KeyboardHardware_(void);
void implementation_pins_setup(); 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);
cRGB get_key_color(byte row, byte col);
void scan_row(byte row);
void finish_scanning_row(byte row);
void scan_right_col(byte row, byte col, uint8_t *state);
void scan_left_col(byte row, byte col, uint8_t *state);
void pins_setup();
boolean right_hand_connected(void);
void leds_setup();
private:
void make_input(sx1509Class sx1509, uint8_t pin) ; void make_input(sx1509Class sx1509, uint8_t pin) ;
void make_output(sx1509Class sx1509, uint8_t pin) ; void make_output(sx1509Class sx1509, uint8_t pin) ;
boolean implementation_right_hand_connected(void);
int setup_sx1509 (sx1509Class sx1509, uint8_t colpins[], uint8_t rowpins[]); int setup_sx1509 (sx1509Class sx1509, uint8_t colpins[], uint8_t rowpins[]);
};
#define LED_DATA_PIN 4 #define LED_DATA_PIN 4
@ -50,14 +66,6 @@ static const uint8_t key_led_map[4][16] = {
}; };
void implementation_leds_setup();
void implementation_led_set_crgb_at(byte row, byte col, cRGB color);
cRGB implementation_get_key_color(byte row, byte col);
void implementation_led_set_crgb_at(uint8_t i, cRGB crgb);
void implementation_led_sync();
#define LED_PGDN 0 #define LED_PGDN 0
#define LED_PGUP 1 #define LED_PGUP 1
#define LED_BACKTICK 2 #define LED_BACKTICK 2
@ -122,3 +130,6 @@ void implementation_led_sync();
#define LED_EQUALS 61 #define LED_EQUALS 61
#define LED_APOSTROPHE 62 #define LED_APOSTROPHE 62
#define LED_MINUS 63 #define LED_MINUS 63
extern KeyboardHardware_ KeyboardHardware;

@ -16,18 +16,18 @@ uint8_t temporary_keymap = 0;
void scan_matrix() { void scan_matrix() {
//scan the Keyboard matrix looking for connections //scan the Keyboard matrix looking for connections
for (byte row = 0; row < LEFT_ROWS; row++) { for (byte row = 0; row < LEFT_ROWS; row++) {
implementation_scan_row(row); KeyboardHardware.scan_row(row);
for (byte col = 0; col < LEFT_COLS; col++) { for (byte col = 0; col < LEFT_COLS; col++) {
implementation_scan_left_col(row,col,&matrixState[row][col]); KeyboardHardware.scan_left_col(row,col,&matrixState[row][col]);
handle_key_event(row, col); handle_key_event(row, col);
if (implementation_right_hand_connected()) { if (KeyboardHardware.right_hand_connected()) {
implementation_scan_right_col(row,col,&matrixState[row][(COLS - 1) - col]); KeyboardHardware.scan_right_col(row,col,&matrixState[row][(COLS - 1) - col]);
handle_key_event(row, (COLS - 1) - col); handle_key_event(row, (COLS - 1) - col);
} }
} }
implementation_finish_scanning_row(row); KeyboardHardware.finish_scanning_row(row);
} }
} }
@ -35,9 +35,9 @@ void setup() {
wdt_disable(); wdt_disable();
Keyboard.begin(); Keyboard.begin();
Mouse.begin(); Mouse.begin();
implementation_leds_setup(); KeyboardHardware.leds_setup();
LEDControl.boot_animation(); LEDControl.boot_animation();
implementation_pins_setup(); KeyboardHardware.pins_setup();
temporary_keymap = primary_keymap = Storage.load_primary_keymap(KEYMAPS); temporary_keymap = primary_keymap = Storage.load_primary_keymap(KEYMAPS);
} }

@ -11,11 +11,11 @@ LEDControl_::LEDControl_(void) {
void LEDControl_::set_key_color(byte row, byte col, cRGB color) { void LEDControl_::set_key_color(byte row, byte col, cRGB color) {
implementation_led_set_crgb_at(row, col, color); KeyboardHardware.led_set_crgb_at(row, col, color);
} }
cRGB LEDControl_::get_key_color(byte row, byte col) { cRGB LEDControl_::get_key_color(byte row, byte col) {
return implementation_get_key_color(row, col); return KeyboardHardware.get_key_color(row, col);
} }
void LEDControl_::initialize_led_mode(uint8_t mode) { void LEDControl_::initialize_led_mode(uint8_t mode) {
@ -35,7 +35,7 @@ void LEDControl_::initialize_led_mode(uint8_t mode) {
void LEDControl_::set_all_leds_to(cRGB color) { void LEDControl_::set_all_leds_to(cRGB color) {
for (uint8_t i = 0; i < LED_COUNT; i++) { for (uint8_t i = 0; i < LED_COUNT; i++) {
implementation_led_set_crgb_at(i, color); KeyboardHardware.led_set_crgb_at(i, color);
} }
} }
@ -94,18 +94,18 @@ void LEDControl_::update(uint8_t current_keymap) {
void LEDControl_::effect_numlock_update() { void LEDControl_::effect_numlock_update() {
for (uint8_t i = 0; i < 44; i++) { for (uint8_t i = 0; i < 44; i++) {
implementation_led_set_crgb_at(i, led_off); KeyboardHardware.led_set_crgb_at(i, led_off);
} }
for (uint8_t i = 44; i < LED_COUNT; i++) { for (uint8_t i = 44; i < LED_COUNT; i++) {
implementation_led_set_crgb_at(i, led_bright_red); KeyboardHardware.led_set_crgb_at(i, led_bright_red);
} }
led_compute_breath(); led_compute_breath();
implementation_led_set_crgb_at(60, led_breathe); // make numlock breathe KeyboardHardware.led_set_crgb_at(60, led_breathe); // make numlock breathe
implementation_led_sync(); KeyboardHardware.led_sync();
} }
void LEDControl_::effect_steady_update() { void LEDControl_::effect_steady_update() {
implementation_led_sync(); KeyboardHardware.led_sync();
} }
void LEDControl_::led_compute_breath() { void LEDControl_::led_compute_breath() {
@ -126,7 +126,7 @@ void LEDControl_::led_compute_breath() {
void LEDControl_::effect_breathe_update() { void LEDControl_::effect_breathe_update() {
led_compute_breath(); led_compute_breath();
set_all_leds_to(led_breathe); set_all_leds_to(led_breathe);
implementation_led_sync(); KeyboardHardware.led_sync();
} }
void LEDControl_::effect_chase_update() { void LEDControl_::effect_chase_update() {
@ -134,16 +134,16 @@ void LEDControl_::effect_chase_update() {
return; return;
} }
current_chase_counter = 0; current_chase_counter = 0;
implementation_led_set_crgb_at(pos - chase_pixels, led_off); KeyboardHardware.led_set_crgb_at(pos - chase_pixels, led_off);
implementation_led_set_crgb_at(pos, led_dark_blue); KeyboardHardware.led_set_crgb_at(pos, led_dark_blue);
pos += chase_pixels; pos += chase_pixels;
if (pos > LED_COUNT || pos < 0) { if (pos > LED_COUNT || pos < 0) {
chase_pixels = -chase_pixels; chase_pixels = -chase_pixels;
pos += chase_pixels; pos += chase_pixels;
} }
implementation_led_set_crgb_at(pos, led_blue); KeyboardHardware.led_set_crgb_at(pos, led_blue);
implementation_led_sync(); KeyboardHardware.led_sync();
} }
void LEDControl_::effect_rainbow_update() { void LEDControl_::effect_rainbow_update() {
@ -158,7 +158,7 @@ void LEDControl_::effect_rainbow_update() {
rainbow_hue %= 360; rainbow_hue %= 360;
} }
set_all_leds_to(rainbow); set_all_leds_to(rainbow);
implementation_led_sync(); KeyboardHardware.led_sync();
} }
void LEDControl_::effect_rainbow_wave_update() { void LEDControl_::effect_rainbow_wave_update() {
@ -174,13 +174,13 @@ void LEDControl_::effect_rainbow_wave_update() {
key_hue %= 360; key_hue %= 360;
} }
rainbow.SetHSV(key_hue, rainbow_saturation, rainbow_value); rainbow.SetHSV(key_hue, rainbow_saturation, rainbow_value);
implementation_led_set_crgb_at(i,rainbow); KeyboardHardware.led_set_crgb_at(i,rainbow);
} }
rainbow_hue += rainbow_wave_steps; rainbow_hue += rainbow_wave_steps;
if (rainbow_hue >= 360) { if (rainbow_hue >= 360) {
rainbow_hue %= 360; rainbow_hue %= 360;
} }
implementation_led_sync(); KeyboardHardware.led_sync();
} }
void LEDControl_::boot_animation() { void LEDControl_::boot_animation() {
@ -206,11 +206,11 @@ void LEDControl_::boot_animation() {
} }
void LEDControl_::type_letter(uint8_t letter) { void LEDControl_::type_letter(uint8_t letter) {
implementation_led_set_crgb_at(letter,led_bright_red); KeyboardHardware.led_set_crgb_at(letter,led_bright_red);
implementation_led_sync(); KeyboardHardware.led_sync();
delay(250); delay(250);
implementation_led_set_crgb_at(letter,led_off); KeyboardHardware.led_set_crgb_at(letter,led_off);
implementation_led_sync(); KeyboardHardware.led_sync();
delay(10); delay(10);
} }

Loading…
Cancel
Save