aboutsummaryrefslogtreecommitdiffstats
path: root/keyboards/ymdk/ymd09_32a/ymd09_32a.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/ymdk/ymd09_32a/ymd09_32a.c')
-rw-r--r--keyboards/ymdk/ymd09_32a/ymd09_32a.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/keyboards/ymdk/ymd09_32a/ymd09_32a.c b/keyboards/ymdk/ymd09_32a/ymd09_32a.c
new file mode 100644
index 000000000..e600ddd3a
--- /dev/null
+++ b/keyboards/ymdk/ymd09_32a/ymd09_32a.c
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2019 Ethan Durrant (emdarcher)
+ *
+ * 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 "ymd09_32a.h"
+
+
+void raw_hid_receive( uint8_t *data, uint8_t length )
+{
+ uint8_t *command_id = &(data[0]);
+ uint8_t *command_data = &(data[1]);
+
+ switch ( *command_id )
+ {
+ case RAW_COMMAND_GET_PROTOCOL_VERSION: //0x01(id) 0x00(payload_length)
+ {
+ *command_id =RAW_COMMAND_GET_PROTOCOL_VERSION;
+ command_data[0]=0x01;
+ command_data[1]=PROTOCOL_VERSION;
+ break;
+ }
+ case RAW_COMMAND_CHANGE_COLOR: // 0x05 0x03 0xRR 0xGG 0xBB
+ {
+ *command_id=RAW_COMMAND_CHANGE_COLOR;
+ if(command_data[0] != 3 )
+ {
+ command_data[0]=0x01;
+ command_data[1]=FAILED;
+ }
+ else
+ {
+ rgblight_sethsv(command_data[1], command_data[2], command_data[3]);
+ command_data[0]=0x04;
+ command_data[4]=SUCCESS;
+ }
+ break;
+ }
+ default: //0xff ...
+ {
+ *command_id=RAW_COMMAND_UNDEFINED;
+ command_data[0]=0x01;
+ command_data[1]=FAILED;
+ break;
+ }
+ }
+ raw_hid_send(data,length);
+}
+
+void keyboard_pre_init_kb(void) {
+ led_init_ports();
+ keyboard_pre_init_user();
+}
+
+void led_init_ports(void) {
+ setPinOutput(D1);
+}
+
+bool led_update_kb(led_t led_state) {
+ return true;
+}