53 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			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 |