aboutsummaryrefslogtreecommitdiff
path: root/keyboards/hotdox/left.c
diff options
context:
space:
mode:
authorlayne001365 <layne.guan@gmail.com>2019-03-12 03:41:16 +0800
committerDrashna Jaelre <drashna@live.com>2019-03-11 12:41:16 -0700
commit2a2f41c6de868c06c06cf437cf7c2b875b8c53a4 (patch)
treeb8f688d6af621a681bf6c262d029f63a704e86e1 /keyboards/hotdox/left.c
parentbf1e51ec22a8016aa02d84993241c6a85c562a0e (diff)
downloadqmk_firmware-2a2f41c6de868c06c06cf437cf7c2b875b8c53a4.tar.gz
qmk_firmware-2a2f41c6de868c06c06cf437cf7c2b875b8c53a4.zip
[Keyboard] Add HotDox keyboard (#5365)
* Add HotDox * Update keyboards/hotdox/config.h Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/config.h Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/config.h Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/config.h Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/keymaps/default/keymap.c Co-Authored-By: layne001365 <layne.guan@gmail.com> * * Update - keyboards/hotdox/config.h - keyboards/hotdox/hotdox.h - keyboards/hotdox/info.json - keyboards/hotdox/left.h - keyboards/hotdox/left.c - keyboards/hotdox/rules.mk * Replace EPRM with EPRM - keyboards/hotdox/keymaps/default/keymap.c - keyboards/hotdox/keymaps/eozaki/keymap.c - keyboards/hotdox/keymaps/kloki/keymap.c * Remove keymaps readme.md * Remove twimaster.h/ twimaster.c * * Update - remove FORCE_NKRO from keyboards/hotdox/config.h - keyboards/hotdox/hotdox.c - keyboards/hotdox/hotdox.h - keyboards/hotdox/keymaps/default/keymap.c - keyboards/hotdox/left.c - keyboards/hotdox/readme.md - keyboards/hotdox/rules.mk * Update keyboards/hotdox/keymaps/default/keymap.c Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/keymaps/default/keymap.c Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/rules.mk Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/rules.mk Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/rules.mk Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/rules.mk Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/rules.mk Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/hotdox.h Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/rules.mk Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/rules.mk Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/config.h Co-Authored-By: layne001365 <layne.guan@gmail.com> * Update keyboards/hotdox/config.h Co-Authored-By: layne001365 <layne.guan@gmail.com>
Diffstat (limited to 'keyboards/hotdox/left.c')
-rw-r--r--keyboards/hotdox/left.c130
1 files changed, 130 insertions, 0 deletions
diff --git a/keyboards/hotdox/left.c b/keyboards/hotdox/left.c
new file mode 100644
index 000000000..ae56b1816
--- /dev/null
+++ b/keyboards/hotdox/left.c
@@ -0,0 +1,130 @@
1#include "action.h"
2#include "left.h"
3#include "wait.h"
4
5bool i2c_initialized = false;
6
7void left_config(void);
8uint8_t left_write(uint8_t reg, uint8_t data);
9uint8_t left_read(uint8_t reg, uint8_t *data);
10
11uint8_t init_mcp23017(void)
12{
13 i2c_initialized = false;
14
15 if (i2c_initialized == 0)
16 {
17 i2c_init(); // on pins D(1,0)
18 _delay_ms(1000);
19 }
20
21 return 0;
22}
23void left_init(void)
24{
25 init_mcp23017();
26 left_scan();
27#if 0
28 while (1)
29 {
30 print("wait\n");
31 wait_us(1000000);
32 }
33#endif
34}
35
36void left_scan(void)
37{
38 uint8_t ret = i2c_start(I2C_ADDR_WRITE, HOTDOX_I2C_TIMEOUT);
39
40 if (ret == 0)
41 {
42 i2c_stop(HOTDOX_I2C_TIMEOUT);
43
44 if (!i2c_initialized)
45 {
46 i2c_initialized = true;
47 left_config();
48 clear_keyboard();
49 print("mcp23017 attached!!!\n");
50 }
51 }
52 else
53 {
54 if (i2c_initialized)
55 {
56 i2c_initialized = false;
57 clear_keyboard();
58 print("mcp23017 deattached!!!\n");
59 }
60 }
61
62 return;
63}
64
65uint8_t left_read_cols(void)
66{
67 uint8_t data = 0;
68
69 left_read(MCP23017_B0_GPIOA, &data);
70
71 return data;
72}
73
74void left_unselect_rows(void)
75{
76 left_write(MCP23017_B0_IODIRB, 0x3F);
77}
78
79void left_select_row(uint8_t row)
80{
81 left_write(MCP23017_B0_IODIRB, ~(1 << row));
82}
83
84void left_config(void)
85{
86 left_write(MCP23017_B0_IODIRA, 0x7F);
87 left_write(MCP23017_B0_IPOLA, 0x7F);
88 left_write(MCP23017_B0_GPPUA, 0x7F);
89
90 left_write(MCP23017_B0_IODIRB, 0xFF);
91 left_write(MCP23017_B0_GPIOB, 0xC0);
92}
93
94uint8_t left_write(uint8_t reg, uint8_t data)
95{
96 if (!i2c_initialized)
97 {
98 return 0;
99 }
100
101 uint8_t ret;
102
103 ret = i2c_start(I2C_ADDR_WRITE, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
104 ret = i2c_write(reg, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
105 ret = i2c_write(data, HOTDOX_I2C_TIMEOUT);
106
107out:
108 i2c_stop(HOTDOX_I2C_TIMEOUT);
109 return ret;
110}
111
112uint8_t left_read(uint8_t reg, uint8_t *data)
113{
114 if (!i2c_initialized)
115 {
116 return 0;
117 }
118
119 uint8_t ret = 0;
120
121 ret = i2c_start(I2C_ADDR_WRITE, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
122 ret = i2c_write(reg, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
123 ret = i2c_start(I2C_ADDR_READ, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
124
125 *data = i2c_read_nack(HOTDOX_I2C_TIMEOUT);
126
127out:
128 i2c_stop(HOTDOX_I2C_TIMEOUT);
129 return ret;
130}