8b180d94b0
No need to zero prevWatchdogCounter because it's zero by default.
László Monda2017-09-28 23:23:19 +02:00
96eeb97a04
Remove commented out code. The scheduler checks previousStatus and acts accordingly, so things should work out fine.
László Monda2017-09-28 23:03:40 +02:00
55e0872967
Add new SlaveId_* values and an explanatory comment.
László Monda2017-09-28 22:59:22 +02:00
8136acf63c
Add the left add-on and right add-on to the list of slaves to be scheduled.
László Monda2017-09-28 21:15:01 +02:00
6ec5140eca
Add and initialize firmwareI2cAddress and bootloaderI2cAddress to uhk_module_state_t.
László Monda2017-09-28 18:10:33 +02:00
f80a88c419
RX messages are per-module by nature, so instead of using a singleton, add rxMessage to uhk_module_state_t.
László Monda2017-09-28 17:17:30 +02:00
3fda14df27
Update the coding style of dereference operators.
László Monda2017-09-28 17:09:59 +02:00
ef2c4a1e7f
Add uhk_module_state_t containing module variables and phase. Merge uhkModuleTargetStates and uhkModulePhases to uhkModuleStates.
László Monda2017-09-28 17:06:56 +02:00
de21cfc07e
Rename uhk_module_state_t to uhk_module_vars_t.
László Monda2017-09-28 16:57:46 +02:00
9309c1e954
UpperCamelCase rxMessage and txMessage because they're extern variables.
László Monda2017-09-28 03:38:44 +02:00
8d57968575
Also commit slave_scheduler.c regarding the kStatus_Uhk_NoOp -> kStatus_Uhk_NoTransfer rename that I forgot to commit.
László Monda2017-09-28 03:35:28 +02:00
9a42123648
Rename kStatus_Uhk_NoOp to kStatus_Uhk_NoTransfer.
László Monda2017-09-28 03:30:32 +02:00
d578b7aba8
Remove unused variable DisableKeyMatrixScanState.
László Monda2017-09-28 03:24:40 +02:00
3b3e40af83
Pass i2c_message_t messages not only from the left half to the right, but vice versa.
László Monda2017-09-26 04:12:05 +02:00
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.
László Monda2017-09-25 03:03:14 +02:00
ef9d9ee9a7
Add kStatus_Uhk_NoOp and make the scheduler handle it.
László Monda2017-09-22 14:32:43 +02:00
2aa74853b5
Add UhkModulePhase_ProcessKeystates and extract relevant code into its section.
László Monda2017-09-22 03:13:53 +02:00
cc57daa674
Rename UhkModulePhase_SendTestLedCommand to UhkModulePhase_SetTestLed
László Monda2017-09-22 02:59:12 +02:00
2e33a83e29
Rename UhkModulePhase_SendPwmBrightnessCommand to UhkModulePhase_SetLedPwmBrightness
László Monda2017-09-22 02:55:00 +02:00
43c07dde21
Rename UhkModulePhase_SendKeystatesRequestCommand to UhkModulePhase_RequestKeyStates
László Monda2017-09-22 02:51:01 +02:00
ac138d2da6
Rename SlaveCommand_GetKeyStates to SlaveCommand_RequestKeyStates
László Monda2017-09-22 02:47:05 +02:00
2227508130
Use __WFI() instead of asm("wfi") for better readability.
László Monda2017-09-22 02:19:16 +02:00
92647b36a9
Move DEFINE_BOOTLOADER_CONFIG_AREA(I2C_ADDRESS_LEFT_KEYBOARD_HALF_BOOTLOADER) from bootloader_config.c to main.c and delete bootloader_config.c
László Monda2017-09-22 02:02:23 +02:00
dbada9dd5d
Extract DEFINE_BOOTLOADER_CONFIG_AREA()
László Monda2017-09-22 02:00:00 +02:00
50207a288d
Add CLOCK_FLAG_HIGH_SPEED_MODE and negate .clockDivider value according to the spec, so that the actual value is easier to read.
László Monda2017-09-22 01:52:44 +02:00
444e9d58d0
Rename ENABLE_PERIPHERAL_* macros to EnabledBootloaderPeripherial_* enums.
László Monda2017-09-22 01:31:03 +02:00
4e665b5701
Rename JumpToKboot() to JumpToBootloader()
László Monda2017-09-22 01:25:20 +02:00
ccc93f48cc
Extract BOOTLOADER_TIMEOUT_MS and set it to 100 ms.
László Monda2017-09-22 01:22:03 +02:00
228bebcd59
Rename kboot.[ch] to bootloader.[ch] to improve clarity.
László Monda2017-09-22 01:20:00 +02:00
e7362a057c
Rename bootloader.c to bootloader_config.c
László Monda2017-09-22 01:14:14 +02:00
97ee339827
Don't reference bootloader.h anymore because it has been removed.
László Monda2017-09-22 01:13:07 +02:00
11d9e85cb7
Move kboot related code to shared/kboot.[ch] because it'll be reused by the firmwares of the add-ons.
László Monda2017-09-22 01:10:29 +02:00
36be965db9
Use I2C_ADDRESS_LEFT_KEYBOARD_HALF_BOOTLOADER and remove redundant comments.
László Monda2017-09-22 00:56:48 +02:00
8924c36cb3
Implement I2C watchdog for the left half. Disable the watchdog because it causes a hard fault. Don't update the test LED inside of SlaveCommand_SetTestLed due to testing purposes until the watchdog issue gets resolved.
László Monda2017-09-21 23:40:49 +02:00
e7330f5d61
Extend the description of the I2C address allocation strategy.
László Monda2017-09-20 13:24:39 +02:00
02ae123acc
Rename IS_IS31FL3731_I2C_ADDRESS macro to IS_I2C_ADDRESS_IS31FL3731
László Monda2017-09-20 13:17:36 +02:00
5c8138f123
Be more specific by using IC names instead of generic names like LED driver or touchpad.
László Monda2017-09-20 13:13:57 +02:00
4d5214fdc9
Add I2C addresses for add-ons and touchpad modules.
László Monda2017-09-20 02:21:39 +02:00
d7b3aee50e
Elaborate on the UHK I2C address allocation strategy. Use hex numbers instead of binary for I2C addresses.
László Monda2017-09-19 16:52:58 +02:00
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.
László Monda2017-09-19 16:00:11 +02:00
e3d407e14d
Assign the I2C and USB interrupts a lower interrupt priority than the PIT interrupt. This should make the I2C watchdog always recover within the PIT interrupt.
László Monda2017-09-18 04:05:41 +02:00
2f90e40c92
Set chip type, so that EmbSys Register View can show the content of MCU-specific registers in debug mode.
László Monda2017-09-14 10:44:31 +02:00
aea07f8605
Merge branch 'master' of github.com:UltimateHackingKeyboard/firmware
László Monda2017-09-14 09:58:36 +02:00
e6b5b3b3a5
Read the hardware configuration area and the user configuration area of the EEPROM into the RAM and try to apply it.
László Monda2017-09-14 09:55:29 +02:00
399847510e
added configuration and launch configuration to debug the right half keyboard without the need for the bootloader
Erich Styger2017-09-06 16:09:22 +02:00
6190c4d67b
Rename slaveCallback to masterCallback.
László Monda2017-08-20 17:30:55 +02:00
caf630204d
Update watchdog function comment and timeout comment.
László Monda2017-08-20 16:43:58 +02:00
894172bd50
Reduce I2C watchdog interval from 1000 ms to 100 ms.
László Monda2017-08-20 16:32:02 +02:00
f36c3f24e8
Reduce left bootloader timeout from 3000 to 300 ms.
László Monda2017-08-20 16:25:53 +02:00
cc1ba715bc
Regarding isTransferScheduled check for != kStatus_Uhk_IdleSlave which restores I2C fairly reliably upon disconnect instead of == kStatus_Success which for some reason doesn't.
László Monda2017-08-20 03:36:08 +02:00
73239cd4f1
Rename bridgeProtocolCallback to slaveCallback.
László Monda2017-08-19 18:12:42 +02:00
121299da29
Explicitly reinitialize previousSlaveId, currentSlaveId, Slaves[].isConnected in InitSlaveScheduler() but don't call Slaves[].init() because it'll be called by bridgeProtocolCallback() upon initialization.
László Monda2017-08-19 18:07:34 +02:00
946d3c1451
Add kStatus_Uhk_IdleSlave and ditch the global IsI2cTransferScheduled. Make slave drivers return status_t and utilize that value instead.
László Monda2017-08-19 17:47:56 +02:00
a954c63f62
Rename LedDriverPhase_Initialized to LedDriverPhase_UpdateChangedLedValues
László Monda2017-08-19 13:07:21 +02:00
67a402ed59
Make I2cAsync{Read,Write} return with status_t
László Monda2017-08-19 13:03:41 +02:00
d22cb079b4
Rename Slave .initializer to .init and .updater to .update
László Monda2017-08-19 13:00:17 +02:00
992fea28ad
Split LED_DRIVER_STRESS_TEST as I2C_WATCHDOG and LED_DRIVER_FORCE_UPDATE
László Monda2017-08-19 12:31:49 +02:00
58f36cf6c3
Add I2C_WatchdogOuterCounter, I2C_WatchdogInnerCounter, BridgeCounter and expose them via USB getDebugInfo()
László Monda2017-08-19 12:12:49 +02:00
35102918b2
Only set IsI2cTransferScheduled to true if the previous I2C operation returned with kStatus_Success
László Monda2017-08-19 12:09:08 +02:00
0751d4075a
Uncomment microseconds_init() for the time being because it interferes with the PIT channel of the watchdog.
László Monda2017-08-19 12:07:20 +02:00
f7bc6a8f82
Don't memcpy source LED values to target values when LED_DRIVER_STRESS_TEST is set because it's redundant.
László Monda2017-08-19 11:58:39 +02:00
024c2d5cff
Merge branch 'master' into macro-engine
László Monda2017-08-11 10:05:32 +02:00
324f9cdadc
Zero all of the macro reports when starting to play a macro
Eric Tang2017-08-10 23:58:24 -07:00
ce84ac3e14
Implement part of the macro engine
Eric Tang2017-08-10 15:09:20 -07:00
529219ee99
Init microseconds PIT counter. Can see ticks, but cannot convert them down to microseconds and milliseconds yet.
László Monda2017-08-10 23:45:36 +02:00