QMK/rawhid.c

53 lines
1.0 KiB
C

#include "betalupi_ergodox.h"
void raw_hid_receive(uint8_t *data, uint8_t length);
#ifdef RGB_MATRIX_DATAPOINTER_ENABLED
void cmd_animation(uint8_t *data, uint8_t length);
// Animation data.
// Data received from host is saved here,
// and rgb_matrix_anim_data points to this array when necessary.
uint8_t hid_anim_data[32];
// Datapointer
extern void* rgb_matrix_anim_data;
#endif
// END HEADERS
void raw_hid_receive(uint8_t *data, uint8_t length) {
uint8_t cmd = data[0];
switch (cmd) {
#ifdef RGB_MATRIX_DATAPOINTER_ENABLED
case 0x01: // Animation
cmd_animation(data, length);
break;
#endif
default:
break;
}
// raw_hid_send(data, length);
}
#ifdef RGB_MATRIX_DATAPOINTER_ENABLED
void cmd_animation(uint8_t *data, uint8_t length) {
uint8_t subcmd = data[1];
switch (subcmd) {
case 0x02: // Data input (fft)
// TODO: assign pointer smartly.
rgb_matrix_anim_data = hid_anim_data;
for (uint8_t bin = 0; bin < 10; bin++) {
hid_anim_data[bin] = data[bin + 2];
}
break;
}
}
#endif