writePin(CAPSENSE_SHIFT_STCP, 0);
}
+void shift_data(uint32_t data)
+{
+ int i;
+ for (i=SHIFT_BITS-1; i>=0; i--)
+ {
+ writePin(CAPSENSE_SHIFT_DIN, (data >> (SHIFT_BITS - 1)) & 1);
+ writePin(CAPSENSE_SHIFT_SHCP, 1);
+ writePin(CAPSENSE_SHIFT_SHCP, 0);
+ data <<= 1;
+ }
+ writePin(CAPSENSE_SHIFT_STCP, 1);
+ writePin(CAPSENSE_SHIFT_STCP, 0);
+}
+
void shift_select_col_no_strobe(uint8_t col)
{
int i;
extern uint16_t cal_thresholds[CAPSENSE_CAL_BINS];
extern matrix_row_t assigned_to_threshold[CAPSENSE_CAL_BINS][MATRIX_ROWS];
uint16_t measure_middle_keymap_coords(uint8_t col, uint8_t row, uint8_t time, uint8_t reps);
+void shift_data(uint32_t data);
#endif
response[9] = CAPSENSE_CAL_ENABLED;
break;
}
+ case UTIL_COMM_SHIFT_DATA:
+ {
+ response[2] = UTIL_COMM_RESPONSE_OK;
+ uint32_t shdata = (((uint32_t)(data[3])) << 0) |
+ (((uint32_t)(data[4])) << 8) |
+ (((uint32_t)(data[5])) << 16) |
+ (((uint32_t)(data[6])) << 24);
+ shift_data(shdata);
+ }
default:
break;
}
#define UTIL_COMM_VERSION_MAJOR 2
#define UTIL_COMM_VERSION_MID 0
-#define UTIL_COMM_VERSION_MINOR 2
+#define UTIL_COMM_VERSION_MINOR 3
#define UTIL_COMM_MAGIC { 0x55, 0xAA }
UTIL_COMM_ERASE_EEPROM,
UTIL_COMM_GET_SIGNAL_VALUE,
UTIL_COMM_GET_KEYBOARD_DETAILS,
+ UTIL_COMM_SHIFT_DATA,
};
enum response {