/* * 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 . */ #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; }