Commit Graph

77 Commits

Author SHA1 Message Date
László Monda
5c84620704 Call KeyMatrix_ScanRow() from an LPTMR interrupt for the left half. Remove KeyMatrix_Scan() 2017-11-14 02:29:18 +01:00
László Monda
80240c8e9b Add shared/buffer.[ch] for easily dealing with array values. 2017-11-11 03:40:06 +01:00
László Monda
0421c2f339 Swap SlaveCommand_RequestKeyStates and SlaveCommand_JumpToBootloader, thereby making SlaveCommand_JumpToBootloader the lower number because it's more basic and shouldn't change in the future. 2017-11-09 01:49:32 +01:00
László Monda
00dfd96d55 Instead of scanning the keyboard matrix from the main loop and utilizing busy loops, try to use a PIT interrupt handler to do the same thing, scanning one row per interrupt call without busy loops.
For some reason, this makes the movement of the mouse pointer very slow and makes it jump from time to time, so I ended up adding INTERRUPT_KEY_SCANNER and disabling the timer interrupt.
Also double bufferred the mouse report just like the others. Unfortunately this does not affect this issue.
2017-11-02 01:11:41 +01:00
László Monda
85b1a65ea7 Implement KbootCommand_Ping and set set left BOOTLOADER_TIMEOUT_MS back to 100 ms. 2017-10-23 21:33:08 +02:00
László Monda
2e07627359 Temporarily increase left bootloader timeout from 100ms to 3000 ms for testing purposes. 2017-10-21 03:12:21 +02:00
László Monda
3230b94973 Make the left half call NVIC_SystemReset() upon receiving SlaveCommand_JumpToBootloader instead of jumping to the ROM address of the bootloader. This way the bootloader timeouts. Remove bootloader.c because it only contained JumpToBootloader() which is now unused. 2017-10-17 00:58:23 +02:00
László Monda
215d4c33bb Add slave_protocol.c that I forgot to add. 2017-10-07 12:29:44 +02:00
László Monda
3d443a8bfc Remove semihosting related changes. 2017-10-06 22:36:02 +02:00
László Monda
96eb2ef7a3 Make slaves send their protocol version to the master. 2017-10-05 17:55:59 +02:00
László Monda
bd76fb44c2 Make slaves send their module id to the master. 2017-10-05 17:26:10 +02:00
László Monda
b0e706d894 Remove redundant extern modifier before function. 2017-10-04 22:33:58 +02:00
László Monda
4295793fb9 Add ATTR_* macros in the newly created attributes.h and use them wherever possible for improved readability. 2017-10-04 22:26:48 +02:00
László Monda
c965fe185b Enable semihosting for the "uhk-left debug jlink" build. 2017-10-04 18:21:02 +02:00
László Monda
c707f0e408 Transfer a synchronization message to make I2C recovery more robust. 2017-10-04 02:24:34 +02:00
László Monda
724d72132a Rearrange slave_command_t enum values a bit to reflect their relative importance and rearrange a related case block too. 2017-10-01 22:21:00 +02:00
László Monda
1b1111e9da Rename I2C_BUFFER_MAX_LENGTH to I2C_MESSAGE_MAX_TOTAL_LENGTH. 2017-10-01 21:55:37 +02:00
László Monda
b443b56357 Rename I2C_MESSAGE_MAX_LENGTH to I2C_MESSAGE_MAX_PAYLOAD_LENGTH. 2017-10-01 21:52:41 +02:00
László Monda
4ade25d739 Add I2C_MESSAGE_HEADER_LENGTH and use it in i2cSlaveCallback() instead of magic numbers. 2017-10-01 21:42:55 +02:00
László Monda
ea71253d6a Remove KEY_STATE_SIZE in favor of the more general BOOL_BYTES_TO_BITS_COUNT() macro. 2017-09-30 00:57:10 +02:00
László Monda
04047eb128 Make modules send their features (key count and whether they have pointer input) to the master upon enumeration. 2017-09-30 00:08:28 +02:00
László Monda
145443c65c Fix the computation of KEY_STATE_SIZE and the byte count to memset in BoolBytesToBits() 2017-09-26 20:18:26 +02:00
László Monda
b88c6e4291 Add i2c_message_t and use it all across the codebase. This will allow handling variable-length I2C messages and validation with minimal effort. The test LED and brightness PWM update features got temporarily broken and will fix them soon. 2017-09-25 03:03:14 +02:00
László Monda
ac138d2da6 Rename SlaveCommand_GetKeyStates to SlaveCommand_RequestKeyStates 2017-09-22 02:47:05 +02:00
László Monda
92647b36a9 Move DEFINE_BOOTLOADER_CONFIG_AREA(I2C_ADDRESS_LEFT_KEYBOARD_HALF_BOOTLOADER) from bootloader_config.c to main.c and delete bootloader_config.c 2017-09-22 02:02:23 +02:00
László Monda
d210f46983 Update guard macro name. 2017-09-22 02:00:40 +02:00
László Monda
dbada9dd5d Extract DEFINE_BOOTLOADER_CONFIG_AREA() 2017-09-22 02:00:00 +02:00
László Monda
50207a288d Add CLOCK_FLAG_HIGH_SPEED_MODE and negate .clockDivider value according to the spec, so that the actual value is easier to read. 2017-09-22 01:52:44 +02:00
László Monda
444e9d58d0 Rename ENABLE_PERIPHERAL_* macros to EnabledBootloaderPeripherial_* enums. 2017-09-22 01:31:03 +02:00
László Monda
4e665b5701 Rename JumpToKboot() to JumpToBootloader() 2017-09-22 01:25:20 +02:00
László Monda
ccc93f48cc Extract BOOTLOADER_TIMEOUT_MS and set it to 100 ms. 2017-09-22 01:22:03 +02:00
László Monda
228bebcd59 Rename kboot.[ch] to bootloader.[ch] to improve clarity. 2017-09-22 01:20:00 +02:00
László Monda
5dd3b8e0be Handle SlaveCommand_JumpToBootloader 2017-09-22 01:17:58 +02:00
László Monda
cc3208a947 Add BOOTLOADER_TAG 2017-09-22 01:17:41 +02:00
László Monda
11d9e85cb7 Move kboot related code to shared/kboot.[ch] because it'll be reused by the firmwares of the add-ons. 2017-09-22 01:10:29 +02:00
László Monda
e7330f5d61 Extend the description of the I2C address allocation strategy. 2017-09-20 13:24:39 +02:00
László Monda
02ae123acc Rename IS_IS31FL3731_I2C_ADDRESS macro to IS_I2C_ADDRESS_IS31FL3731 2017-09-20 13:17:36 +02:00
László Monda
2086138d9c Use hex address for EEPROM. 2017-09-20 13:16:07 +02:00
László Monda
5c8138f123 Be more specific by using IC names instead of generic names like LED driver or touchpad. 2017-09-20 13:13:57 +02:00
László Monda
4d5214fdc9 Add I2C addresses for add-ons and touchpad modules. 2017-09-20 02:21:39 +02:00
László Monda
d7b3aee50e Elaborate on the UHK I2C address allocation strategy. Use hex numbers instead of binary for I2C addresses. 2017-09-19 16:52:58 +02:00
László Monda
57e6a6c067 Link Adafrut I2C address list. Feature the EEPROM separately as it's not on the main bus, so its address won't clash with other addresses. 2017-09-19 16:00:11 +02:00
László Monda
430c02f0ed Remove test actions and related code. 2017-08-19 13:32:02 +02:00
László Monda
8ed4a6ba09 Separate the configuration to hardware configuration and user configuration. Implement async I2C EEPROM handling. Remove USB functions that dealt with EEPROM and individual LEDs because they were dependent on sync I2C functions. 2017-07-22 23:49:47 +02:00
László Monda
1e290ebc34 Verify the integrity of key state update messages using CRC16-CCITT. 2017-05-31 03:26:50 +02:00
László Monda
b969feb346 Simplify bool array converter functions. 2017-05-31 01:41:44 +02:00
László Monda
0edd56fa82 Serialize key states much more efficiently by using bits instead of bytes. 2017-05-31 01:26:16 +02:00
László Monda
8b69dd7d90 Move crc16.[ch] to shared 2017-05-30 17:20:06 +02:00
László Monda
8ac4f5a069 Rename bridge_protocol.h to slave_protocol.h 2017-05-29 22:17:40 +02:00
László Monda
1daf6db53c Rename *bridge* identifiers to *slave* 2017-05-29 22:14:11 +02:00