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