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

bface refactor #6333

Merged
merged 4 commits into from
Jul 15, 2019
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
4 changes: 3 additions & 1 deletion keyboards/winkeyless/bface/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ Flashing

ps2avr(GB) boards use an atmega32a microcontroller and a different bootloader. It is not flashable using the regular QMK methods.

**Reset Key:** Hold down the key located at K00, commonly programmed as left control while plugging in the keyboard.

Windows:
1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash).
2. Place your keyboard into reset.
Expand All @@ -33,7 +35,7 @@ macOS:
3. Install the following packages:
```
brew install python
brew install pyusb
pip3 install pyusb
brew install --HEAD`https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
```

Expand Down
94 changes: 0 additions & 94 deletions keyboards/winkeyless/bface/backlight_ps2avrGB.c

This file was deleted.

35 changes: 0 additions & 35 deletions keyboards/winkeyless/bface/backlight_ps2avrGB.h

This file was deleted.

94 changes: 68 additions & 26 deletions keyboards/winkeyless/bface/bface.c
Original file line number Diff line number Diff line change
@@ -1,30 +1,23 @@
/*
Copyright 2017 Luiz Ribeiro <[email protected]>
Copyright 2018 Sebastian Kaim <[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 "bface.h"
/* Copyright 2019 MechMerlin
*
* 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 "rgblight.h"

#include <avr/pgmspace.h>

#include "action_layer.h"
#include "i2c.h"
#include "i2c_master.h"
#include "quantum.h"

#ifdef RGBLIGHT_ENABLE
extern rgblight_config_t rgblight_config;

void rgblight_set(void) {
Expand All @@ -37,10 +30,59 @@ void rgblight_set(void) {
}

i2c_init();
i2c_send(0xb0, (uint8_t*)led, 3 * RGBLED_NUM);
i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
}
#endif

void matrix_init_kb(void) {
#ifdef RGBLIGHT_ENABLE
if (rgblight_config.enable) {
i2c_init();
i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
}
#endif
// call user level keymaps, if any
matrix_init_user();
}

void matrix_scan_kb(void) {
#ifdef RGBLIGHT_ENABLE
rgblight_task();
#endif
matrix_scan_user();
/* Nothing else for now. */
}

__attribute__ ((weak))
void matrix_scan_user(void) {
rgblight_task();
}

void backlight_init_ports(void) {
// initialize pins D0, D1, D4 and D6 as output
setPinOutput(D0);
setPinOutput(D1);
setPinOutput(D4);
setPinOutput(D6);

// turn backlight LEDs on
writePinHigh(D0);
writePinHigh(D1);
writePinHigh(D4);
writePinHigh(D6);
}

void backlight_set(uint8_t level) {
Copy link
Member

@fauxpark fauxpark Jul 15, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Backlight feature supports defining multiple pins in software (with hardware timer) PWM mode: https://docs.qmk.fm/#/feature_backlight?id=multiple-backlight-pins
Though it is apparently experimental, might be worth a try. Apart from D4, the other three pins here are not hardware PWM capable anyway on the 32A.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really hope people stop making BMC compatible boards. Old boards I can understand but new ones, not so much.

if (level == 0) {
// turn backlight LEDs off
writePinLow(D0);
writePinLow(D1);
writePinLow(D4);
writePinLow(D6);
} else {
// turn backlight LEDs on
writePinHigh(D0);
writePinHigh(D1);
writePinHigh(D4);
writePinHigh(D6);
}
}
11 changes: 4 additions & 7 deletions keyboards/winkeyless/bface/bface.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef KEYMAP_COMMON_H
#define KEYMAP_COMMON_H
#pragma once

#include "quantum_keycodes.h"
#include "keycode.h"
Expand All @@ -27,8 +26,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
K04, K14, K24, K34, K44, K54, K16, KB6, KB7, K17, KA4, KB4, KC4, KE4, \
K03, K13, K23, K33, K43, K53, K26, KC6, KC7, K27, KA3, KB3, KC3, KD3, \
K02, K12, K22, K32, K42, K52, K36, KD6, KD7, K37, KA2, KB2, KD2, \
K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KB1, \
K00, K10, K20, K56, K57, KA0, KB0, KC0 \
K01, K11, K21, K31, K41, K51, K46, KE6, KE7, K47, KA1, KB1, \
K00, K10, K20, K56, K57, KA0, KB0, KC0 \
){ \
{ K00, K10, K20, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KA0, KB0, KC0, KC_NO, KC_NO }, \
{ K01, K11, K21, K31, K41, K51, KC_NO, KC_NO, KC_NO, KC_NO, KA1, KB1, KC_NO, KC_NO, KC_NO }, \
Expand All @@ -37,8 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ K04, K14, K24, K34, K44, K54, KC_NO, KC_NO, KC_NO, KC_NO, KA4, KB4, KC4, KC_NO, KE4 }, \
{ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ KC_NO, K16, K26, K36, K46, K56, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB6, KC6, KD6, KE6 }, \
{ KC_NO, K17, K27, K37, K47, K57, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB7, KC7, KD7, KE7 } \
{ KC_NO, K17, K27, K37, K47, K57, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KB7, KC7, KD7, KE7 } \
}


#endif
9 changes: 6 additions & 3 deletions keyboards/winkeyless/bface/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef CONFIG_H
#define CONFIG_H
#pragma once

#define VENDOR_ID 0x20A0
#define PRODUCT_ID 0x422D
Expand All @@ -30,6 +29,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROWS 8
#define MATRIX_COLS 15

// 0 1 2 3 4 5 6 7 8 9 A B C D E
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7}
#define UNUSED_PINS

#define RGBLED_NUM 16
#define RGBLIGHT_ANIMATIONS

Expand All @@ -43,4 +47,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_PORT_NUM (1 << 4)
#endif

#endif
Loading