Compare commits
279 Commits
add-dev-na
...
8.1.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
56f7753afc | ||
|
|
a0803875c4 | ||
|
|
f5716bdadc | ||
|
|
b76b3c0e4f | ||
|
|
2661c3d909 | ||
|
|
c854e98d84 | ||
|
|
72d8e49717 | ||
|
|
0fd95b71b2 | ||
|
|
4d83bc2e75 | ||
|
|
cf7b05ab72 | ||
|
|
055f1945d0 | ||
|
|
fa4a3abf84 | ||
|
|
96c7ccd758 | ||
|
|
76d319ec19 | ||
|
|
aab0e8473f | ||
|
|
4a4c471b9e | ||
|
|
fcd75b2af2 | ||
|
|
f318c6872e | ||
|
|
ae1240c103 | ||
|
|
e75d366245 | ||
|
|
da20cdacc4 | ||
|
|
5a986d367e | ||
|
|
f6b66283a7 | ||
|
|
6ad425cbf9 | ||
|
|
33e501cd83 | ||
|
|
fa558abef3 | ||
|
|
25a2b3af93 | ||
|
|
43587c2e1f | ||
|
|
c51542795f | ||
|
|
7eb83173ed | ||
|
|
5581dd26b5 | ||
|
|
1ac637af0f | ||
|
|
36951d1a34 | ||
|
|
5190265a2c | ||
|
|
40bf252852 | ||
|
|
85e92d21b4 | ||
|
|
fd43e81e46 | ||
|
|
c994a97d03 | ||
|
|
d59ba83d99 | ||
|
|
c1b887cea8 | ||
|
|
bd53b73685 | ||
|
|
beb7c3d4ee | ||
|
|
17571a5feb | ||
|
|
83e782d74a | ||
|
|
312f56048b | ||
|
|
494621a841 | ||
|
|
94af52892c | ||
|
|
5862a34f18 | ||
|
|
9b9e5ed1b5 | ||
|
|
4393377365 | ||
|
|
1570364741 | ||
|
|
738a240860 | ||
|
|
43b48aa643 | ||
|
|
61a0540007 | ||
|
|
f2e313dd0a | ||
|
|
b239d0da50 | ||
|
|
23459e3791 | ||
|
|
6a54944cb1 | ||
|
|
a52df9da7e | ||
|
|
28f98f179a | ||
|
|
5798f9e4fb | ||
|
|
4fe5ce45ac | ||
|
|
a212c254a9 | ||
|
|
235e18d706 | ||
|
|
7c91f8f6d1 | ||
|
|
c8cfe53136 | ||
|
|
f1f47ece14 | ||
|
|
a0dba2fa66 | ||
|
|
0f34b01189 | ||
|
|
5a449ad5c5 | ||
|
|
0d6a5ae902 | ||
|
|
2f7f7b1cd2 | ||
|
|
2eb25ce05c | ||
|
|
6e47707037 | ||
|
|
0932c14a2c | ||
|
|
e57c2c21ca | ||
|
|
a5ce90779c | ||
|
|
e9bf3dc355 | ||
|
|
8cb8654459 | ||
|
|
745e8e1cf0 | ||
|
|
5341109845 | ||
|
|
ff0e5b0aa3 | ||
|
|
c4e79d8ed2 | ||
|
|
6780c8177c | ||
|
|
71d6db0f35 | ||
|
|
9b9bdbc03d | ||
|
|
bb5c118e97 | ||
|
|
b3cbb8ea97 | ||
|
|
f76780ec48 | ||
|
|
b7e73b7b38 | ||
|
|
7318175ce7 | ||
|
|
420078449d | ||
|
|
dda3799877 | ||
|
|
712b87182a | ||
|
|
46126e1e78 | ||
|
|
2ac9ca5d67 | ||
|
|
729e0be0ad | ||
|
|
0867132ba3 | ||
|
|
1b9273a5e5 | ||
|
|
ebbd74407d | ||
|
|
5df6220ab7 | ||
|
|
3d0993998c | ||
|
|
071be7e815 | ||
|
|
bb7faaa799 | ||
|
|
368c724e6a | ||
|
|
210ef31f27 | ||
|
|
0cb3c7e0ad | ||
|
|
ab7e25692a | ||
|
|
b68e8a736e | ||
|
|
4d211f0fe1 | ||
|
|
8429ee2b71 | ||
|
|
4bbc49f4ca | ||
|
|
322ee0b35f | ||
|
|
8252da86d8 | ||
|
|
086ab239b4 | ||
|
|
a7ba0add18 | ||
|
|
d2ef63184b | ||
|
|
6cf47565f9 | ||
|
|
7f6f9e7094 | ||
|
|
a0afdcf476 | ||
|
|
9e18caa0ba | ||
|
|
f63f2f9b96 | ||
|
|
4c97238999 | ||
|
|
5c84620704 | ||
|
|
ae4d60882f | ||
|
|
332f2a69fa | ||
|
|
a91f945591 | ||
|
|
d0c689146e | ||
|
|
27e64adc33 | ||
|
|
5da6510d7c | ||
|
|
a4ddf1ff2a | ||
|
|
22141ba1e3 | ||
|
|
f4de0df149 | ||
|
|
5c7a3faa9c | ||
|
|
80240c8e9b | ||
|
|
f45ebdde4f | ||
|
|
e3a121f0d8 | ||
|
|
f927aef7f5 | ||
|
|
f3682efe53 | ||
|
|
c06b06ed1b | ||
|
|
402697c0a3 | ||
|
|
b8846cd601 | ||
|
|
c2efb5e0d0 | ||
|
|
4aad86947c | ||
|
|
0421c2f339 | ||
|
|
c83e331c37 | ||
|
|
f8ad10b0c1 | ||
|
|
f1058294a6 | ||
|
|
e5865009f5 | ||
|
|
21c1ded972 | ||
|
|
98b84bc49c | ||
|
|
272ff3ccbe | ||
|
|
b49d5a7f7e | ||
|
|
49a94d82b0 | ||
|
|
fb39d700e0 | ||
|
|
4fa2304e4b | ||
|
|
f6beeecec1 | ||
|
|
e3d4eb50db | ||
|
|
31fa1a0d5e | ||
|
|
3ac94684e2 | ||
|
|
693315222f | ||
|
|
3533a8f73c | ||
|
|
34b2875861 | ||
|
|
8c7014cf8c | ||
|
|
9910fe536f | ||
|
|
003f313947 | ||
|
|
379fe6a4c7 | ||
|
|
67794d460e | ||
|
|
1449f98781 | ||
|
|
870dec7519 | ||
|
|
1c9e350006 | ||
|
|
df0b0c33b5 | ||
|
|
97f044d21f | ||
|
|
88514f82f4 | ||
|
|
f7e26eef8a | ||
|
|
a8bde4e007 | ||
|
|
58778feb5b | ||
|
|
d78ac1bcf0 | ||
|
|
6db3eb3045 | ||
|
|
eb451d6153 | ||
|
|
3f52819c0e | ||
|
|
ebd06ebbc6 | ||
|
|
8c42ec27dd | ||
|
|
6dcfcca10f | ||
|
|
45420a348b | ||
|
|
84ffe50dac | ||
|
|
68f9aac883 | ||
|
|
d547b9b324 | ||
|
|
e907e65751 | ||
|
|
0febc9dd69 | ||
|
|
fe74ea1578 | ||
|
|
67e304a787 | ||
|
|
4de340967c | ||
|
|
54496ca210 | ||
|
|
232f595b41 | ||
|
|
8a255aaf5f | ||
|
|
ad4fe1a18d | ||
|
|
336c2e5368 | ||
|
|
c0b41b8e60 | ||
|
|
457f4802d4 | ||
|
|
ae3efce452 | ||
|
|
330a899625 | ||
|
|
e7f34dcdc6 | ||
|
|
c2a1a94349 | ||
|
|
35b8f0084b | ||
|
|
0688c1bdfc | ||
|
|
4072a0ea33 | ||
|
|
e169627cde | ||
|
|
aeb325a09f | ||
|
|
0df7879358 | ||
|
|
bbbecb8f87 | ||
|
|
05bbd28877 | ||
|
|
b18cb651ce | ||
|
|
88fac5c1ff | ||
|
|
fe2e611bb1 | ||
|
|
599b78a676 | ||
|
|
a0a162ae9e | ||
|
|
e0868ac866 | ||
|
|
a7e70d0cb2 | ||
|
|
31b7dddef4 | ||
|
|
ecf7f10b9c | ||
|
|
2aaef66d85 | ||
|
|
00dfd96d55 | ||
|
|
024f24f489 | ||
|
|
6043651341 | ||
|
|
f7d775c6da | ||
|
|
1ab0885200 | ||
|
|
561d183840 | ||
|
|
df48f5e1be | ||
|
|
b94310f57a | ||
|
|
dc82b51008 | ||
|
|
3aff28726f | ||
|
|
16e173140a | ||
|
|
13dd0753ce | ||
|
|
ba5a49f7d1 | ||
|
|
64b07746ee | ||
|
|
d59ed73a10 | ||
|
|
010b276f8b | ||
|
|
1d7790f74e | ||
|
|
808d916687 | ||
|
|
52bb02bc3d | ||
|
|
e8ab25493e | ||
|
|
72b279841c | ||
|
|
4e2d867424 | ||
|
|
a5402e7c6a | ||
|
|
f847cc844e | ||
|
|
976e402445 | ||
|
|
cf007f81bd | ||
|
|
569493cbfa | ||
|
|
f0a98eebb5 | ||
|
|
55e4997ea2 | ||
|
|
5642ab29a1 | ||
|
|
6bdd320ed8 | ||
|
|
c77286512c | ||
|
|
c7b6acd838 | ||
|
|
9db5c5e067 | ||
|
|
c370cab513 | ||
|
|
85b1a65ea7 | ||
|
|
c46dcad490 | ||
|
|
ab807cd0c8 | ||
|
|
92ee3b5606 | ||
|
|
e57d199b40 | ||
|
|
95faf64b76 | ||
|
|
5149e7e8ad | ||
|
|
f67bcced4a | ||
|
|
e9920cfebb | ||
|
|
2e07627359 | ||
|
|
89fef3d933 | ||
|
|
a052f4f59c | ||
|
|
25f8017879 | ||
|
|
5ec619532a | ||
|
|
968c6c0416 | ||
|
|
0b4ca43ed6 | ||
|
|
3d46584b79 | ||
|
|
8951ca992b | ||
|
|
3230b94973 | ||
|
|
37c90cc4a7 | ||
|
|
b3e025f443 | ||
|
|
84b304fe02 |
8
.gitignore
vendored
8
.gitignore
vendored
@@ -1,6 +1,2 @@
|
|||||||
CMakeCache.txt
|
package-lock.json
|
||||||
CMakeFiles
|
node_modules
|
||||||
Makefile
|
|
||||||
cmake_install.cmake
|
|
||||||
debug
|
|
||||||
release
|
|
||||||
|
|||||||
35
.travis.yml
35
.travis.yml
@@ -1,18 +1,25 @@
|
|||||||
language: generic
|
language: generic
|
||||||
os: osx
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- $HOME/Library/Caches/Homebrew/Cask
|
- $HOME/Library/Caches/Homebrew/Cask
|
||||||
install:
|
install: eclipse -noSplash
|
||||||
- brew update && brew bundle -v
|
-application org.eclipse.equinox.p2.director
|
||||||
- /Applications/Eclipse\ CPP.app/Contents/MacOS/eclipse -noSplash
|
-repository http://gnuarmeclipse.sourceforge.net/updates
|
||||||
-application org.eclipse.equinox.p2.director
|
-installIUs ilg.gnuarmeclipse.managedbuild.cross.feature.group
|
||||||
-repository http://gnuarmeclipse.sourceforge.net/updates
|
-profileProperties org.eclipse.update.install.features=true
|
||||||
-installIUs ilg.gnuarmeclipse.managedbuild.cross.feature.group
|
script: eclipse -noSplash
|
||||||
-profileProperties org.eclipse.update.install.features=true
|
-application org.eclipse.cdt.managedbuilder.core.headlessbuild
|
||||||
script:
|
-import $TRAVIS_BUILD_DIR/left/build
|
||||||
- /Applications/Eclipse\ CPP.app/Contents/MacOS/eclipse -noSplash
|
-import $TRAVIS_BUILD_DIR/right/build
|
||||||
-application org.eclipse.cdt.managedbuilder.core.headlessbuild
|
-build all
|
||||||
-import $TRAVIS_BUILD_DIR/left/build/kds
|
matrix:
|
||||||
-import $TRAVIS_BUILD_DIR/right/build/kds
|
include:
|
||||||
-build all
|
- os: linux
|
||||||
|
sudo: required
|
||||||
|
before_install:
|
||||||
|
- curl https://nixos.org/nix/install | sh && . ~/.nix-profile/etc/profile.d/nix.sh
|
||||||
|
- nix-env -i gcc-arm-embedded-4.8-2014q1-20140314
|
||||||
|
- nix-env -i eclipse-cpp
|
||||||
|
- os: osx
|
||||||
|
env: PATH="$PATH:/Applications/Eclipse CPP.app/Contents/MacOS"
|
||||||
|
before_install: brew update && brew bundle -v
|
||||||
|
|||||||
111
CHANGELOG.md
111
CHANGELOG.md
@@ -5,29 +5,124 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is loosely based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
The format is loosely based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
||||||
and this project adheres to the [UHK Versioning](VERSIONING.md) conventions.
|
and this project adheres to the [UHK Versioning](VERSIONING.md) conventions.
|
||||||
|
|
||||||
|
## [8.1.0] - 2018-01-15
|
||||||
|
|
||||||
|
Device Protocol: 4.**2**.0 | Module Protocol: 4.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Enable left-half watchdog in reinit mode which seems to prevent freezes.
|
||||||
|
- Slow down main bus I2C baud rate to 30kHz when BusPal is on to make firmware transfer more robust.
|
||||||
|
- Implement UsbCommandId_GetSlaveI2cErrors. `DEVICEPROTOCOL:MINOR`
|
||||||
|
- Implement UsbCommandId_SetI2cBaudRate. `DEVICEPROTOCOL:MINOR`
|
||||||
|
- Implement DevicePropertyId_CurrentKbootCommand. `DEVICEPROTOCOL:MINOR`
|
||||||
|
- Implement DevicePropertyId_I2cMainBusBaudRate. `DEVICEPROTOCOL:MINOR`
|
||||||
|
- Implement DevicePropertyId_Uptime. `DEVICEPROTOCOL:MINOR`
|
||||||
|
|
||||||
|
## [8.0.1] - 2017-12-25
|
||||||
|
|
||||||
|
Device Protocol: 4.1.0 | Module Protocol: 4.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Implement I2C watchdog for the left keyboard half which should resolve the occasional hangs of the left keyboard half.
|
||||||
|
|
||||||
|
## [8.0.0] - 2017-12-15
|
||||||
|
|
||||||
|
Device Protocol: 4.**1.0** | Module Protocol: **4.0.0** | User Config: 4.0.0 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Make the modules transfer the module protocol version and firmware version composed of a major, a minor and a patch number. `MODULEPROTOCOL:MAJOR`
|
||||||
|
- Query module key count and pointer count in separate messages instead of a combined message for improved clarity. `MODULEPROTOCOL:MAJOR`
|
||||||
|
- Add new UsbCommand_GetModuleProperties() device protocol command. `DEVICEPROTOCOL:MINOR`
|
||||||
|
|
||||||
|
## [7.0.0] - 2017-12-14
|
||||||
|
|
||||||
|
Device Protocol: **4.0.0** | Module Protocol: 3.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Make UsbCommand_JumpToModuleBootloader() more robust by not making it dependent on the state of the module driver.
|
||||||
|
- Don't make horizontal scrolling and vertical scrolling affect each other.
|
||||||
|
- Expose version numbers via the get property interface. `DEVICEPROTOCOL:MINOR`
|
||||||
|
- Add DevicePropertyId_ConfigSizes. `DEVICEPROTOCOL:MINOR`
|
||||||
|
- Remove DevicePropertyId_HardwareConfigSize and DevicePropertyId_UserConfigSize. `DEVICEPROTOCOL:MAJOR`
|
||||||
|
|
||||||
|
## [6.0.0] - 2017-12-12
|
||||||
|
|
||||||
|
Device Protocol: **3.0.0** | Module Protocol: 3.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Change the value of almost every Device Protocol commands because there were unused intervals between them. `DEVICEPROTOCOL:MAJOR`
|
||||||
|
- Disable LED display icons by default.
|
||||||
|
- Update LED brightness levels upon applying the configuration.
|
||||||
|
|
||||||
|
## [5.0.1] - 2017-12-09
|
||||||
|
|
||||||
|
Device Protocol: 2.0.0 | Module Protocol: 3.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Make key presses continue to emit scancodes even if a USB interface (typically the mouse interface) is not polled by the host anymore.
|
||||||
|
- Make scrolling always immediately react to keypresses regardless of the previous internal scroll state.
|
||||||
|
|
||||||
|
## [5.0.0] - 2017-12-04
|
||||||
|
|
||||||
|
Device Protocol: 2.0.0 | Module Protocol: 3.0.0 | User Config: **4.0.0** | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Move pointerRole from keymaps to module configurations as pointerMode. Add angularShift, modLayerPointerFunction, fnLayerPointerFunction, and mouseLayerPointerFunction to module configurations. `USERCONFIG:MAJOR`
|
||||||
|
|
||||||
|
## [4.0.0] - 2017-11-30
|
||||||
|
|
||||||
|
Device Protocol: 2.0.0 | Module Protocol: 3.0.0 | User Config: **3.0.0** | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Implement mouse movement and scrolling deceleration and acceleration.
|
||||||
|
- Toggle layers upon double tapping their keys. Make the double tap timeout configurable.
|
||||||
|
- Make the parser read additional user configuration properties: USERCONFIGMajorVersion, USERCONFIGMinorVersion, USERCONFIGPatchVersion, doubleTapSwitchLayerTimeout, iconsAndLayerTextsBrightness, alphanumericSegmentsBrightness, keyBacklightBrightness, mouseMoveInitialSpeed, mouseMoveAcceleration, mouseMoveDeceleratedSpeed, mouseMoveBaseSpeed, mouseMoveAcceleratedSpeed, mouseScrollInitialSpeed, mouseScrollAcceleration, mouseScrollDeceleratedSpeed, mouseScrollBaseSpeed, mouseScrollAcceleratedSpeed. `USERCONFIG:MAJOR`
|
||||||
|
|
||||||
|
## [3.0.0] - 2017-11-15
|
||||||
|
|
||||||
|
Device Protocol: **2.0.0** | Module Protocol: **3.0.0** | User Config: **2.0.0** | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Detect the use of USB interfaces and only wait for the ones that are actually used by the host.
|
||||||
|
- Implement key debouncer.
|
||||||
|
- Use the menu key in the factory keymap.
|
||||||
|
- Make pressing the reset button revert to the factory preset.
|
||||||
|
- Revert to the factory default state when the reset button is pressed upon firmware startup. Display FTY on the display in this case.
|
||||||
|
- Make the LED display show the abbreviation of the current keymap even when it gets reinitialized by the I2C watchdog.
|
||||||
|
- Swap SlaveCommand_RequestKeyStates and SlaveCommand_JumpToBootloader, thereby making SlaveCommand_JumpToBootloader the lower number because it's more essential and shouldn't change in the future. `MODULEPROTOCOL:MAJOR`
|
||||||
|
- Suppress pressed keys upon layer switcher key release.
|
||||||
|
- Handle secondary role modifiers and layer switchers.
|
||||||
|
- Make UsbCommand_JumpToSlaveBootloader expect a slave slot id instead of a uhkModuleDriverId. `DEVICEPROTOCOL:MAJOR`
|
||||||
|
- Set UsbResponse_InvalidCommand upon encountering with an invalid USB command. `DEVICEPROTOCOL:MINOR`
|
||||||
|
- Remove UsbCommandId_ReadMergeSensor now that it can be queried via UsbCommandId_GetKeyboardState. `DEVICEPROTOCOL:MAJOR`
|
||||||
|
- Make the getAdcValue and getDebugInfo USB commands utilize the first byte of the response to provide status as dictated by the UHK protocol. `DEVICEPROTOCOL:MAJOR`
|
||||||
|
- Switch keymap only upon keypress.
|
||||||
|
- Handle layer toggle actions.
|
||||||
|
- Keep the active layer active even if another layer switcher key gets pressed while holding it.
|
||||||
|
- Read the new UserConfig.userConfigLength user config field. `USERCONFIG:MAJOR`
|
||||||
|
- Change Ctrl and Alt back according to the official UHK factory keymap.
|
||||||
|
- Update system keyboard HID descriptor which doesn't make the pointer go to the top left corner on OSX anymore.
|
||||||
|
- Scan keyboard matrices in a more efficient manner from timer interrupts instead of the main loop.
|
||||||
|
- Add UsbCommand_SendKbootCommand. `DEVICEPROTOCOL:MINOR`
|
||||||
|
- Make the reenumerate USB command accept a timeout value. `DEVICEPROTOCOL:MINOR`
|
||||||
|
- Make the config parser read the device name. `USERCONFIG:MAJOR`
|
||||||
|
- Update release file format containing device and module directories and hex files instead of srec.
|
||||||
|
- Remove obsolete ARM GCC build files.
|
||||||
|
|
||||||
## [2.1.0] - 2017-10-13
|
## [2.1.0] - 2017-10-13
|
||||||
|
|
||||||
Data Model: 1.0.0 (unchanged) | USB Protocol: 1.2.0 (minor bump) | Slave Protocol: 2.1.0 (minor bump)
|
Device Protocol: 1.**2.0** | Module Protocol: 2.**1.0** | User Config: 1.0.0 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
- Add jumpToSlaveBootloader USB and slave protocol command. `USBPROTOCOL:MINOR` `SLAVEPROTOCOL:MINOR`
|
- Add jumpToSlaveBootloader USB and Module Protocol command. `DEVICEPROTOCOL:MINOR` `MODULEPROTOCOL:MINOR`
|
||||||
- Fix generic HID descriptor enumeration error.
|
- Fix generic HID descriptor enumeration error.
|
||||||
|
|
||||||
## [2.0.0] - 2017-10-10
|
## [2.0.0] - 2017-10-10
|
||||||
|
|
||||||
Data Model: 1.0.0 (unchanged) | USB Protocol: 1.1.0 (minor bump) | Slave Protocol: 2.0.0 (major bump)
|
Device Protocol: 1.**1.0** | Module Protocol: **2.0.0** | User Config: 1.0.0 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
- Read the hardware and user configuration area of the EEPROM upon startup and set the default keymap.
|
- Read the hardware and user configuration area of the EEPROM upon startup and set the default keymap.
|
||||||
- Greatly improve the I2C watchdog and drivers. Communication between the halves or the add-ons should never fail again.
|
- Greatly improve the I2C watchdog and drivers. Communication between the halves or the add-ons should never fail again.
|
||||||
- Implement generic enumeration sequence and per-slave state for UHK modules, allowing add-ons to be added. `SLAVEPROTOCOL:MAJOR`
|
- Implement generic enumeration sequence and per-slave state for UHK modules, allowing add-ons to be added. `MODULEPROTOCOL:MAJOR`
|
||||||
- Make the master cache the output fields of slave modules, allowing for more frequent input updates.
|
- Make the master cache the output fields of slave modules, allowing for more frequent input updates.
|
||||||
- Optimize I2C protocol scheduler resulting in increased roustness and more efficient use of I2C bandwidth.
|
- Optimize I2C protocol scheduler resulting in increased roustness and more efficient use of I2C bandwidth.
|
||||||
- Add I2C message headers containing a length header, allowing for variable-length messages and a CRC16-CCITT checksum, allowing for robust communication. `SLAVEPROTOCOL:MAJOR`
|
- Add I2C message headers containing a length header, allowing for variable-length messages and a CRC16-CCITT checksum, allowing for robust communication. `MODULEPROTOCOL:MAJOR`
|
||||||
- Add mechanism to dump the internal state of the KL03 via SPI for debugging purposes.
|
- Add mechanism to dump the internal state of the KL03 via SPI for debugging purposes.
|
||||||
- Add merge sensor state and attached module IDs to GetDebugInfo(). `USBPROTOCOL:PATCH`
|
- Add merge sensor state and attached module IDs to GetDebugInfo(). `DEVICEPROTOCOL:PATCH`
|
||||||
- Throw ParserError_InvalidKeymapCount if keymapCount == 0. `DATAMODEL:PATCH`
|
- Throw ParserError_InvalidKeymapCount if keymapCount == 0. `USERCONFIG:PATCH`
|
||||||
|
|
||||||
## [1.0.0] - 2017-08-30
|
## [1.0.0] - 2017-08-30
|
||||||
|
|
||||||
Data Model: 1.0.0 | USB Protocol: 1.0.0 | Slave Protocol: 1.0.0
|
Device Protocol: 1.0.0 | Module Protocol: 1.0.0 | User Config: 1.0.0 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
- First Release
|
- First Release
|
||||||
|
|||||||
350
left/build/.cproject
Normal file
350
left/build/.cproject
Normal file
@@ -0,0 +1,350 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
|
<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861" moduleId="org.eclipse.cdt.core.settings" name="uhk60-left_debug">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861" name="uhk60-left_debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug">
|
||||||
|
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861." name="/" resourcePath="">
|
||||||
|
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug.439601044" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.780228407" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1547417078" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.765602671" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.910567930" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.243581182" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.416266830" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1613409592" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.default" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.556186202" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.default" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.873832382" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" value="Custom" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.1923839154" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.architecture" value="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.arm" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.292907889" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m0plus" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.1510156849" name="Instruction set" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.thumb" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.1110645397" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" value="arm-none-eabi-" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.1996567256" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" value="gcc" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.2014665560" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" value="g++" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.867581768" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" value="objcopy" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.315789427" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" value="objdump" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.348642956" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.670689833" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.654501139" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.967248865" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.1390211406" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.useglobalpath.228343129" name="Use global path" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.useglobalpath" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.1173170148" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.default" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.1949324826" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.soft" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar.1370140886" name="Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar" value="ar" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nocommon.9959419695" name="No common unitialized (-fno-common)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nocommon" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding.2882966171" name="Assume freestanding environment (-ffreestanding)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin.9288453635" name="Disable builtin (-fno-builtin)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto.2986114257" name="Link-time optimizer (-flto)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.nowarn.7864424720" name="Inhibit all warnings (-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.nowarn" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn.6408004182" name="Enable extra warnings (-Wextra)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.conversion.8753144693" name="Warn on implicit conversions (-Wconversion)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.conversion" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pointerarith.7561379406" name="Warn if pointer arithmetic (-Wpointer-arith)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pointerarith" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.shadow.5875269774" name="Warn if shadowed variable (-Wshadow)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.shadow" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.logicalop.8232620757" name="Warn if suspicious logical ops (-Wlogical-op)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.logicalop" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.agreggatereturn.5398426966" name="Warn if struct is returned (-Wagreggate-return)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.agreggatereturn" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.floatequal.4503086702" name="Warn if floats are compared as equal (-Wfloat-equal)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.floatequal" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.4431038008" name="Generate errors instead of warnings (-Werror)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.unitialized.8290768044" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.unitialized" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.missingdeclaration.378454944" name="Warn on undeclared global function (-Wmissing-declaration)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.missingdeclaration" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast.2943267007" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.9995899345" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
|
||||||
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1777290613" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
||||||
|
<builder buildPath="${workspace_loc:/k64f}/debug" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1406291427" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.2007968129" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1246588554" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.2122094274" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.1822362302" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="DEBUG"/>
|
||||||
|
<listOptionValue builtIn="false" value="__STARTUP_CLEAR_BSS"/>
|
||||||
|
</option>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.nostdinc.8788969731" name="Do not search system directories (-nostdinc)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.nostdinc" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.other.1923601167" name="Other assembler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.other" value=" -mapcs " valueType="string"/>
|
||||||
|
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.2014783385" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1397207158" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.336878990" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/CMSIS/Include"/>
|
||||||
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices"/>
|
||||||
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers"/>
|
||||||
|
<listOptionValue builtIn="false" value=".."/>
|
||||||
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/utilities"/>
|
||||||
|
<listOptionValue builtIn="false" value="../../.."/>
|
||||||
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4"/>
|
||||||
|
<listOptionValue builtIn="false" value="../../../shared"/>
|
||||||
|
</option>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.933718024" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.gnu99" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.7934865376" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="DEBUG"/>
|
||||||
|
<listOptionValue builtIn="false" value="CPU_MKL03Z32VFK4"/>
|
||||||
|
<listOptionValue builtIn="false" value="PRINTF_FLOAT_ENABLE=0"/>
|
||||||
|
<listOptionValue builtIn="false" value="SCANF_FLOAT_ENABLE=0"/>
|
||||||
|
<listOptionValue builtIn="false" value="PRINTF_ADVANCED_ENABLE=0"/>
|
||||||
|
<listOptionValue builtIn="false" value="SCANF_ADVANCED_ENABLE=0"/>
|
||||||
|
<listOptionValue builtIn="false" value="FRDM_KL03Z"/>
|
||||||
|
<listOptionValue builtIn="false" value="FREEDOM"/>
|
||||||
|
</option>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.nostdinc.1704317783" name="Do not search system directories (-nostdinc)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.nostdinc" useByScannerDiscovery="true" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other.1560348183" name="Other compiler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other" useByScannerDiscovery="true" value=" -mapcs " valueType="string"/>
|
||||||
|
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1895544709" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.435207489" name="Cross ARM C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.2050754817" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="UHK_PCB_MAJOR_VERSION=7"/>
|
||||||
|
</option>
|
||||||
|
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1699166727" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1681324840" name="Cross ARM C Linker" outputPrefix="" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.1850945755" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano.1816597929" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile.1573832003" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.libs.2061142742" name="Libraries (-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.libs"/>
|
||||||
|
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input.1168552163" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool commandLinePattern="${COMMAND} ${cross_toolchain_flags} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} -Xlinker --start-group ${INPUTS} -Xlinker --end-group" id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1475612095" name="Cross ARM C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.42905068" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano.1816597929" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs.6905766738" name="Other objects" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.4021849263" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" valueType="stringList">
|
||||||
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/gcc/MKL03Z32xxx4_flash.ld"/>
|
||||||
|
</option>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart.6846138787" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs.8043932112" name="Do not use default libraries (-nodefaultlibs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs.2257416827" name="Libraries (-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs" valueType="libs">
|
||||||
|
<listOptionValue builtIn="false" value="m"/>
|
||||||
|
<listOptionValue builtIn="false" value="g"/>
|
||||||
|
<listOptionValue builtIn="false" value="gcc"/>
|
||||||
|
<listOptionValue builtIn="false" value="nosys"/>
|
||||||
|
</option>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref.6563555683" name="Cross reference (-Xlinker --cref)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections.8052175158" name="Print removed sections (-Xlinker --print-gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip.4023108413" name="Omit all symbol information (-s)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other.255052480" name="Other linker flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other" value="-mapcs -Xlinker -static -Xlinker -z -Xlinker muldefs -Xlinker -defsym=__heap_size__=0" valueType="string"/>
|
||||||
|
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.658447495" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.717958418" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
|
||||||
|
<tool command="${cross_prefix}${cross_objcopy}${cross_suffix}" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT}" id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1498748442" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.396105459" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.1921141825" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.1147761851" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.326654770" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.2012585764" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.1639985926" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.795915960" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.204256629" name="Cross ARM GNU Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.48990078" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<fileInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861.1146590441" name="fsl_clock.h" rcbsApplicability="disable" resourcePath="drivers/fsl_clock.h" toolsToInvoke=""/>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
<storageModule moduleId="ilg.gnuarmeclipse.managedbuild.packs"/>
|
||||||
|
</cconfiguration>
|
||||||
|
<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078" moduleId="org.eclipse.cdt.core.settings" name="uhk60-left_release">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078" name="uhk60-left_release" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
||||||
|
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078." name="/" resourcePath="">
|
||||||
|
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.1802192936" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.918206081" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.size" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1247972134" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1651670889" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.1807399992" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1522408084" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.881879429" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.417088354" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.none" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.471396471" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.default" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.378484607" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" value="Custom" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.1093394082" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.architecture" value="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.arm" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.1818095636" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m0plus" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.336711378" name="Instruction set" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.thumb" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.1351526286" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" value="arm-none-eabi-" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.1438555896" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" value="gcc" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.1588534593" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" value="g++" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1663641144" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" value="objcopy" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.200920623" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" value="objdump" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.362080964" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.2009924231" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.1536468905" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.925865305" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.1208668505" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.useglobalpath.1166058417" name="Use global path" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.useglobalpath" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar.1139561820" name="Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar" value="ar" valueType="string"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.671070963" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.soft" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nocommon.1275482104" name="No common unitialized (-fno-common)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nocommon" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding.407638415" name="Assume freestanding environment (-ffreestanding)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin.1259530104" name="Disable builtin (-fno-builtin)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto.809059548" name="Link-time optimizer (-flto)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.nowarn.1208094284" name="Inhibit all warnings (-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.nowarn" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn.67984531" name="Enable extra warnings (-Wextra)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.conversion.593444999" name="Warn on implicit conversions (-Wconversion)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.conversion" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pointerarith.813635782" name="Warn if pointer arithmetic (-Wpointer-arith)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pointerarith" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.shadow.1455227593" name="Warn if shadowed variable (-Wshadow)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.shadow" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.logicalop.1717005013" name="Warn if suspicious logical ops (-Wlogical-op)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.logicalop" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.agreggatereturn.383697767" name="Warn if struct is returned (-Wagreggate-return)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.agreggatereturn" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.floatequal.628316174" name="Warn if floats are compared as equal (-Wfloat-equal)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.floatequal" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.1624700406" name="Generate errors instead of warnings (-Werror)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.unitialized.3064955983.625210850" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.unitialized" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.missingdeclaration.907753672" name="Warn on undeclared global function (-Wmissing-declaration)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.missingdeclaration" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast.6545741443.1540890614" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.1382191896" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
|
||||||
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.2107171855" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
||||||
|
<builder buildPath="${workspace_loc:/k64f}/release" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1689719605" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1477971290" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.334227408" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1702866230" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.1072633432" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="__STARTUP_CLEAR_BSS"/>
|
||||||
|
</option>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.nostdinc.415052570" name="Do not search system directories (-nostdinc)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.nostdinc" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.other.1359123195" name="Other assembler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.other" value=" -mapcs " valueType="string"/>
|
||||||
|
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1499693341" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1046326518" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.746372967" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/CMSIS/Include"/>
|
||||||
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices"/>
|
||||||
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers"/>
|
||||||
|
<listOptionValue builtIn="false" value=".."/>
|
||||||
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/utilities"/>
|
||||||
|
<listOptionValue builtIn="false" value="../../.."/>
|
||||||
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4"/>
|
||||||
|
<listOptionValue builtIn="false" value="../../../shared"/>
|
||||||
|
</option>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.1703504273" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.gnu99" valueType="enumerated"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.220715196" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="NDEBUG"/>
|
||||||
|
<listOptionValue builtIn="false" value="CPU_MKL03Z32VFK4"/>
|
||||||
|
<listOptionValue builtIn="false" value="PRINTF_FLOAT_ENABLE=0"/>
|
||||||
|
<listOptionValue builtIn="false" value="SCANF_FLOAT_ENABLE=0"/>
|
||||||
|
<listOptionValue builtIn="false" value="PRINTF_ADVANCED_ENABLE=0"/>
|
||||||
|
<listOptionValue builtIn="false" value="SCANF_ADVANCED_ENABLE=0"/>
|
||||||
|
<listOptionValue builtIn="false" value="FRDM_KL03Z"/>
|
||||||
|
<listOptionValue builtIn="false" value="FREEDOMx"/>
|
||||||
|
</option>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.nostdinc.1784976960" name="Do not search system directories (-nostdinc)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.nostdinc" useByScannerDiscovery="true" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other.182809566" name="Other compiler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other" useByScannerDiscovery="true" value=" -mapcs " valueType="string"/>
|
||||||
|
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.2141870622" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1055651769" name="Cross ARM C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.1344565144" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="UHK_PCB_MAJOR_VERSION=7"/>
|
||||||
|
</option>
|
||||||
|
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1785701410" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1248876094" name="Cross ARM C Linker" outputPrefix="" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.205211813" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano.764117584" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano" value="true" valueType="boolean"/>
|
||||||
|
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input.424272008" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool commandLinePattern="${COMMAND} ${cross_toolchain_flags} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} -Xlinker --start-group ${INPUTS} -Xlinker --end-group" id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.20615499" name="Cross ARM C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.1664132146" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano.1704968656" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs.359701763" name="Other objects" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.51816293" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" valueType="stringList">
|
||||||
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/gcc/MKL03Z32xxx4_flash.ld"/>
|
||||||
|
</option>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart.554768103" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs.1987989417" name="Do not use default libraries (-nodefaultlibs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs.1653206096" name="Libraries (-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs" valueType="libs">
|
||||||
|
<listOptionValue builtIn="false" value="m"/>
|
||||||
|
<listOptionValue builtIn="false" value="g"/>
|
||||||
|
<listOptionValue builtIn="false" value="gcc"/>
|
||||||
|
<listOptionValue builtIn="false" value="nosys"/>
|
||||||
|
</option>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref.1514842438" name="Cross reference (-Xlinker --cref)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections.1127263805" name="Print removed sections (-Xlinker --print-gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip.549891305" name="Omit all symbol information (-s)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip" value="false" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other.1551896832" name="Other linker flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other" value="-mapcs -Xlinker -static -Xlinker -z -Xlinker muldefs" valueType="string"/>
|
||||||
|
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.772761405" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.1579053840" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1400319152" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1328839591" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.733953661" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.1802395103" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.1353511477" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.562396163" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.1889527374" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.2076712477" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.843351449" name="Cross ARM GNU Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
|
||||||
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.1881713953" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
<storageModule moduleId="ilg.gnuarmeclipse.managedbuild.packs"/>
|
||||||
|
</cconfiguration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<project id="k64f.ilg.gnuarmeclipse.managedbuild.cross.target.elf.1537007018" name="Executable" projectType="ilg.gnuarmeclipse.managedbuild.cross.target.elf"/>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders">
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||||
|
<storageModule moduleId="scannerConfiguration">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861;ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.435207489;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1699166727">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834;ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.955273220;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1711058916">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834;ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.270191615;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1469754472">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861;ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1397207158;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1895544709">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="2">
|
||||||
|
<configuration configurationName="uhk60-left_release">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/uhk-left"/>
|
||||||
|
</configuration>
|
||||||
|
<configuration configurationName="uhk60-left_debug">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/uhk-left"/>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
</cproject>
|
||||||
3
left/build/.gitignore
vendored
Normal file
3
left/build/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
/.settings/
|
||||||
|
/uhk60-left_debug/
|
||||||
|
/uhk60-left_release/
|
||||||
@@ -39,12 +39,12 @@
|
|||||||
<link>
|
<link>
|
||||||
<name>shared</name>
|
<name>shared</name>
|
||||||
<type>2</type>
|
<type>2</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/shared</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/shared</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>src</name>
|
<name>src</name>
|
||||||
<type>2</type>
|
<type>2</type>
|
||||||
<locationURI>PARENT-2-PROJECT_LOC/src</locationURI>
|
<locationURI>PARENT-1-PROJECT_LOC/src</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>startup</name>
|
<name>startup</name>
|
||||||
@@ -54,92 +54,92 @@
|
|||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_clock.c</name>
|
<name>drivers/fsl_clock.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_clock.c</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_clock.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_clock.h</name>
|
<name>drivers/fsl_clock.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_clock.h</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_clock.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_gpio.c</name>
|
<name>drivers/fsl_gpio.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_gpio.c</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_gpio.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_gpio.h</name>
|
<name>drivers/fsl_gpio.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_gpio.h</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_gpio.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_i2c.c</name>
|
<name>drivers/fsl_i2c.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_i2c.c</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_i2c.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_i2c.h</name>
|
<name>drivers/fsl_i2c.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_i2c.h</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_i2c.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_lptmr.c</name>
|
<name>drivers/fsl_lptmr.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_lptmr.c</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_lptmr.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_lptmr.h</name>
|
<name>drivers/fsl_lptmr.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_lptmr.h</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_lptmr.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_port.h</name>
|
<name>drivers/fsl_port.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_port.h</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_port.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_smc.c</name>
|
<name>drivers/fsl_smc.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_smc.c</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_smc.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_smc.h</name>
|
<name>drivers/fsl_smc.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_smc.h</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_smc.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_spi.c</name>
|
<name>drivers/fsl_spi.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_spi.c</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_spi.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_spi.h</name>
|
<name>drivers/fsl_spi.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_spi.h</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_spi.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_tpm.c</name>
|
<name>drivers/fsl_tpm.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_tpm.c</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_tpm.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_tpm.h</name>
|
<name>drivers/fsl_tpm.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_tpm.h</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_tpm.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>startup/startup_MKL03Z4.S</name>
|
<name>startup/startup_MKL03Z4.S</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/gcc/startup_MKL03Z4.S</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/gcc/startup_MKL03Z4.S</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>startup/system_MKL03Z4.c</name>
|
<name>startup/system_MKL03Z4.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/system_MKL03Z4.c</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/system_MKL03Z4.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>startup/system_MKL03Z4.h</name>
|
<name>startup/system_MKL03Z4.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/system_MKL03Z4.h</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/system_MKL03Z4.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
</linkedResources>
|
</linkedResources>
|
||||||
</projectDescription>
|
</projectDescription>
|
||||||
File diff suppressed because it is too large
Load Diff
15
left/build/kds/.gitignore
vendored
15
left/build/kds/.gitignore
vendored
@@ -1,15 +0,0 @@
|
|||||||
/debug/
|
|
||||||
/release/
|
|
||||||
/v7-release/
|
|
||||||
/v6-release/
|
|
||||||
/v7-debug/
|
|
||||||
/v6-debug/
|
|
||||||
core
|
|
||||||
/v7-debug-srec/
|
|
||||||
/v7-release-srec/
|
|
||||||
/uhk-left-release/
|
|
||||||
/uhk-left-release
|
|
||||||
/uhk-left-debug/
|
|
||||||
/uhk-left-debug-srec/
|
|
||||||
/uhk-left-release-srec/
|
|
||||||
/.settings/
|
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="2331"/>
|
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="2331"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="false"/>
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="false"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="false"/>
|
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value=""/>
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value=""/>
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
|
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="uhk-left-debug/uhk-left.elf"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="uhk60-left_debug/uhk-left.elf"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-left"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-left"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861"/>
|
||||||
@@ -77,6 +77,6 @@
|
|||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
<listEntry value="4"/>
|
<listEntry value="4"/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="Context string"/> "/>
|
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="Context string"/> "/>
|
||||||
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
||||||
34
left/build/uhk60-left_debug_kboot.launch
Normal file
34
left/build/uhk60-left_debug_kboot.launch
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchConfiguration type="org.eclipse.cdt.launch.applicationLaunchType">
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB" value="true"/>
|
||||||
|
<listAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB_LIST"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="gdb"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_ON_FORK" value="false"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.dsf.gdb.GDB_INIT" value=".gdbinit"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.REVERSE" value="false"/>
|
||||||
|
<listAttribute key="org.eclipse.cdt.dsf.gdb.SOLIB_PATH"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.dsf.gdb.TRACEPOINT_MODE" value="TP_NORMAL_ONLY"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
|
||||||
|
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="gdb"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="leftHalf uhk60-left_debug/uhk-left.bin"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="../../lib/agent/packages/usb/update-module-firmware.js"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-left"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
|
<listEntry value="/uhk-left"/>
|
||||||
|
</listAttribute>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
|
<listEntry value="4"/>
|
||||||
|
</listAttribute>
|
||||||
|
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
||||||
|
</launchConfiguration>
|
||||||
@@ -67,16 +67,16 @@
|
|||||||
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="uhk-left-release/uhk-left.elf"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="uhk60-left_release/uhk-left.elf"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-left"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-left"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078"/>
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
<listEntry value="/uhk-left"/>
|
<listEntry value="/uhk-left"/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
<listEntry value="4"/>
|
<listEntry value="4"/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="Context string"/> "/>
|
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="Context string"/> "/>
|
||||||
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
||||||
48
left/build/uhk60-left_release_kboot.launch
Normal file
48
left/build/uhk60-left_release_kboot.launch
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchConfiguration type="org.eclipse.cdt.launch.applicationLaunchType">
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB" value="true"/>
|
||||||
|
<listAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB_LIST"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="gdb"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_ON_FORK" value="false"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.dsf.gdb.GDB_INIT" value=".gdbinit"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.REVERSE" value="false"/>
|
||||||
|
<listAttribute key="org.eclipse.cdt.dsf.gdb.SOLIB_PATH"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.dsf.gdb.TRACEPOINT_MODE" value="TP_NORMAL_ONLY"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
|
||||||
|
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="gdb"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="leftHalf uhk60-left_release/uhk-left.bin"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="../../lib/agent/packages/usb/update-module-firmware.js"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-left"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
||||||
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078"/>
|
||||||
|
<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
|
<listEntry value="/uhk-left"/>
|
||||||
|
</listAttribute>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
|
<listEntry value="4"/>
|
||||||
|
</listAttribute>
|
||||||
|
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.DefaultEvent" value="true"/>
|
||||||
|
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.HideUnresolvedSymbols" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.linuxtools.internal.perf.attr.Kernel.Location" value=""/>
|
||||||
|
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Kernel.SourceLineNumbers" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ModuleSymbols" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.MultipleEvents" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Multiplex" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Realtime" value="false"/>
|
||||||
|
<intAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Realtime.Priority" value="1"/>
|
||||||
|
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Verbose" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ShowSourceDisassembly" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ShowStat" value="false"/>
|
||||||
|
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.SourceLineNumbers" value="true"/>
|
||||||
|
<intAttribute key="org.eclipse.linuxtools.internal.perf.attr.StatRunCount" value="1"/>
|
||||||
|
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
||||||
|
</launchConfiguration>
|
||||||
@@ -3,6 +3,11 @@
|
|||||||
|
|
||||||
// Macros:
|
// Macros:
|
||||||
|
|
||||||
|
#define I2C_WATCHDOG_VALUE_REINIT 1
|
||||||
|
#define I2C_WATCHDOG_VALUE_REBOOT 2
|
||||||
|
|
||||||
// #define DEBUG_OVER_SPI
|
// #define DEBUG_OVER_SPI
|
||||||
|
#define I2C_WATCHDOG I2C_WATCHDOG_VALUE_REINIT
|
||||||
|
// #define I2C_WATCHDOG I2C_WATCHDOG_VALUE_REBOOT
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
|
#ifdef DEBUG_OVER_SPI
|
||||||
|
|
||||||
#include "debug_over_spi.h"
|
#include "debug_over_spi.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "fsl_gpio.h"
|
#include "fsl_gpio.h"
|
||||||
|
|
||||||
#ifdef DEBUG_OVER_SPI
|
|
||||||
|
|
||||||
#define EXAMPLE_SPI_MASTER (SPI0)
|
#define EXAMPLE_SPI_MASTER (SPI0)
|
||||||
#define EXAMPLE_SPI_MASTER_SOURCE_CLOCK (kCLOCK_BusClk)
|
#define EXAMPLE_SPI_MASTER_SOURCE_CLOCK (kCLOCK_BusClk)
|
||||||
@@ -16,19 +17,13 @@ spi_master_handle_t handle;
|
|||||||
|
|
||||||
static volatile bool masterFinished = true;
|
static volatile bool masterFinished = true;
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void masterCallback(SPI_Type *base, spi_master_handle_t *masterHandle, status_t status, void *userData)
|
static void masterCallback(SPI_Type *base, spi_master_handle_t *masterHandle, status_t status, void *userData)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_OVER_SPI
|
|
||||||
masterFinished = true;
|
masterFinished = true;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebugOverSpi_Init(void)
|
void DebugOverSpi_Init(void)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_OVER_SPI
|
|
||||||
|
|
||||||
CLOCK_EnableClock(DEBUG_OVER_SPI_MOSI_CLOCK);
|
CLOCK_EnableClock(DEBUG_OVER_SPI_MOSI_CLOCK);
|
||||||
CLOCK_EnableClock(DEBUG_OVER_SPI_SCK_CLOCK);
|
CLOCK_EnableClock(DEBUG_OVER_SPI_SCK_CLOCK);
|
||||||
|
|
||||||
@@ -45,12 +40,10 @@ void DebugOverSpi_Init(void)
|
|||||||
uint32_t srcFreq = CLOCK_GetFreq(EXAMPLE_SPI_MASTER_SOURCE_CLOCK);
|
uint32_t srcFreq = CLOCK_GetFreq(EXAMPLE_SPI_MASTER_SOURCE_CLOCK);
|
||||||
SPI_MasterInit(EXAMPLE_SPI_MASTER, &userConfig, srcFreq);
|
SPI_MasterInit(EXAMPLE_SPI_MASTER, &userConfig, srcFreq);
|
||||||
SPI_MasterTransferCreateHandle(EXAMPLE_SPI_MASTER, &handle, masterCallback, NULL);
|
SPI_MasterTransferCreateHandle(EXAMPLE_SPI_MASTER, &handle, masterCallback, NULL);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebugOverSpi_Send(uint8_t *tx, uint8_t len)
|
void DebugOverSpi_Send(uint8_t *tx, uint8_t len)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_OVER_SPI
|
|
||||||
if (masterFinished) {
|
if (masterFinished) {
|
||||||
masterFinished = false;
|
masterFinished = false;
|
||||||
memcpy(srcBuff, tx, MIN(BUFFER_SIZE, len));
|
memcpy(srcBuff, tx, MIN(BUFFER_SIZE, len));
|
||||||
@@ -58,5 +51,6 @@ void DebugOverSpi_Send(uint8_t *tx, uint8_t len)
|
|||||||
xfer.dataSize = len;
|
xfer.dataSize = len;
|
||||||
SPI_MasterTransferNonBlocking(EXAMPLE_SPI_MASTER, &handle, &xfer);
|
SPI_MasterTransferNonBlocking(EXAMPLE_SPI_MASTER, &handle, &xfer);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
#ifdef DEBUG_OVER_SPI
|
||||||
|
|
||||||
#ifndef __DEBUG_OVER_SPI_H__
|
#ifndef __DEBUG_OVER_SPI_H__
|
||||||
#define __DEBUG_OVER_SPI_H__
|
#define __DEBUG_OVER_SPI_H__
|
||||||
|
|
||||||
@@ -25,3 +27,8 @@
|
|||||||
void DebugOverSpi_Send(uint8_t *tx, uint8_t len);
|
void DebugOverSpi_Send(uint8_t *tx, uint8_t len);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define DebugOverSpi_Init()
|
||||||
|
#define DebugOverSpi_Send(tx, len)
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -3,35 +3,40 @@
|
|||||||
#include "i2c_watchdog.h"
|
#include "i2c_watchdog.h"
|
||||||
#include "test_led.h"
|
#include "test_led.h"
|
||||||
#include "init_peripherals.h"
|
#include "init_peripherals.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
static uint32_t prevWatchdogCounter = 0;
|
/* NOTE: Because of a bug in the ROM bootloader of the KL03Z, the watchdog timer is disabled and cannot be re-enabled.
|
||||||
uint32_t I2cWatchdog_InnerCounter;
|
* See https://community.nxp.com/thread/457893
|
||||||
volatile uint32_t I2cWatchdog_OuterCounter;
|
* Therefore the hardware watchdog timer cannot be used without an extra way to enter bootloader or application mode.
|
||||||
|
*/
|
||||||
|
#ifdef I2C_WATCHDOG
|
||||||
|
static uint32_t prevWatchdogCounter = 0;
|
||||||
|
static uint32_t I2cWatchdog_RecoveryCounter; /* counter for how many times we had to recover and restart */
|
||||||
|
|
||||||
void InitI2cWatchdog(void)
|
void RunWatchdog(void)
|
||||||
{
|
{
|
||||||
lptmr_config_t lptmrConfig;
|
static volatile uint32_t I2cWatchdog_WatchCounter = 0; /* counter for timer */
|
||||||
LPTMR_GetDefaultConfig(&lptmrConfig);
|
static int cntr = 0;
|
||||||
LPTMR_Init(LPTMR0, &lptmrConfig);
|
|
||||||
LPTMR_SetTimerPeriod(LPTMR0, USEC_TO_COUNT(LPTMR_USEC_COUNT, LPTMR_SOURCE_CLOCK));
|
|
||||||
LPTMR_EnableInterrupts(LPTMR0, kLPTMR_TimerInterruptEnable);
|
|
||||||
EnableIRQ(LPTMR0_IRQn);
|
|
||||||
LPTMR_StartTimer(LPTMR0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void I2C_WATCHDOG_LPTMR_HANDLER(void)
|
cntr++;
|
||||||
{
|
if (cntr==100) { /* we get called from KEY_SCANNER_HANDLER() which runs at 1ms, thus scaling down by 100 here to get 100 ms period */
|
||||||
TEST_LED_TOGGLE();
|
cntr=0;
|
||||||
I2cWatchdog_OuterCounter++;
|
TEST_LED_TOGGLE();
|
||||||
|
I2cWatchdog_WatchCounter++;
|
||||||
|
|
||||||
if (I2C_Watchdog == prevWatchdogCounter) { // Restart I2C if there hasn't been any interrupt during 100 ms
|
if (I2cWatchdog_WatchCounter>10) { /* do not check within the first 1000 ms, as I2C might not be running yet */
|
||||||
// NVIC_SystemReset();
|
if (I2C_Watchdog == prevWatchdogCounter) { // Restart I2C if there hasn't been any interrupt during 100 ms. I2C_Watchdog gets incremented for every I2C transaction
|
||||||
I2cWatchdog_InnerCounter++;
|
I2cWatchdog_RecoveryCounter++;
|
||||||
I2C_SlaveDeinit(I2C_BUS_BASEADDR);
|
#if I2C_WATCHDOG == I2C_WATCHDOG_VALUE_REBOOT
|
||||||
InitI2c();
|
NVIC_SystemReset();
|
||||||
|
#endif
|
||||||
|
#if I2C_WATCHDOG == I2C_WATCHDOG_VALUE_REINIT
|
||||||
|
I2C_SlaveDeinit(I2C_BUS_BASEADDR);
|
||||||
|
initI2c();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
prevWatchdogCounter = I2C_Watchdog; /* remember previous counter */
|
||||||
}
|
}
|
||||||
|
|
||||||
prevWatchdogCounter = I2C_Watchdog;
|
|
||||||
|
|
||||||
LPTMR_ClearStatusFlags(LPTMR0, kLPTMR_TimerCompareFlag);
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
void InitI2cWatchdog(void);
|
|
||||||
void RunWatchdog(void);
|
void RunWatchdog(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#include "slave_protocol_handler.h"
|
#include "slave_protocol_handler.h"
|
||||||
#include "i2c_watchdog.h"
|
#include "i2c_watchdog.h"
|
||||||
#include "debug_over_spi.h"
|
#include "debug_over_spi.h"
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
i2c_slave_config_t slaveConfig;
|
i2c_slave_config_t slaveConfig;
|
||||||
i2c_slave_handle_t slaveHandle;
|
i2c_slave_handle_t slaveHandle;
|
||||||
@@ -44,14 +45,14 @@ static void i2cSlaveCallback(I2C_Type *base, i2c_slave_transfer_t *xfer, void *u
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitInterruptPriorities(void)
|
void initInterruptPriorities(void)
|
||||||
{
|
{
|
||||||
NVIC_SetPriority(I2C0_IRQn, 1);
|
NVIC_SetPriority(I2C0_IRQn, 1);
|
||||||
NVIC_SetPriority(TPM1_IRQn, 1);
|
NVIC_SetPriority(TPM1_IRQn, 1);
|
||||||
NVIC_SetPriority(SPI0_IRQn, 1);
|
NVIC_SetPriority(SPI0_IRQn, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitI2c(void)
|
void initI2c(void)
|
||||||
{
|
{
|
||||||
port_pin_config_t pinConfig = {
|
port_pin_config_t pinConfig = {
|
||||||
.pullSelect = kPORT_PullUp,
|
.pullSelect = kPORT_PullUp,
|
||||||
@@ -81,11 +82,10 @@ void InitLedDriver(void)
|
|||||||
|
|
||||||
void InitPeripherals(void)
|
void InitPeripherals(void)
|
||||||
{
|
{
|
||||||
InitInterruptPriorities();
|
initInterruptPriorities();
|
||||||
InitLedDriver();
|
InitLedDriver();
|
||||||
InitTestLed();
|
InitTestLed();
|
||||||
LedPwm_Init();
|
LedPwm_Init();
|
||||||
// InitI2cWatchdog();
|
|
||||||
DebugOverSpi_Init();
|
DebugOverSpi_Init();
|
||||||
InitI2c();
|
initI2c();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,6 @@
|
|||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
void InitPeripherals(void);
|
void InitPeripherals(void);
|
||||||
void InitI2c(void);
|
void initI2c(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
25
left/src/key_scanner.c
Normal file
25
left/src/key_scanner.c
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#include "fsl_lptmr.h"
|
||||||
|
#include "key_scanner.h"
|
||||||
|
#include "config.h"
|
||||||
|
#include "i2c_watchdog.h"
|
||||||
|
|
||||||
|
void KEY_SCANNER_HANDLER(void)
|
||||||
|
{
|
||||||
|
KeyMatrix_ScanRow(&keyMatrix);
|
||||||
|
#ifdef I2C_WATCHDOG
|
||||||
|
RunWatchdog();
|
||||||
|
#endif
|
||||||
|
LPTMR_ClearStatusFlags(KEY_SCANNER_LPTMR_BASEADDR, kLPTMR_TimerCompareFlag);
|
||||||
|
}
|
||||||
|
|
||||||
|
void InitKeyScanner(void)
|
||||||
|
{
|
||||||
|
lptmr_config_t lptmrConfig;
|
||||||
|
LPTMR_GetDefaultConfig(&lptmrConfig);
|
||||||
|
LPTMR_Init(KEY_SCANNER_LPTMR_BASEADDR, &lptmrConfig);
|
||||||
|
|
||||||
|
LPTMR_SetTimerPeriod(KEY_SCANNER_LPTMR_BASEADDR, USEC_TO_COUNT(KEY_SCANNER_INTERVAL_USEC, LPTMR_SOURCE_CLOCK));
|
||||||
|
LPTMR_EnableInterrupts(KEY_SCANNER_LPTMR_BASEADDR, kLPTMR_TimerInterruptEnable);
|
||||||
|
EnableIRQ(KEY_SCANNER_LPTMR_IRQ_ID);
|
||||||
|
LPTMR_StartTimer(KEY_SCANNER_LPTMR_BASEADDR);
|
||||||
|
}
|
||||||
22
left/src/key_scanner.h
Normal file
22
left/src/key_scanner.h
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#ifndef __KEY_SCANNER_H__
|
||||||
|
#define __KEY_SCANNER_H__
|
||||||
|
|
||||||
|
// Includes:
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
// Macros:
|
||||||
|
|
||||||
|
#define LPTMR_SOURCE_CLOCK CLOCK_GetFreq(kCLOCK_LpoClk)
|
||||||
|
|
||||||
|
#define KEY_SCANNER_LPTMR_BASEADDR LPTMR0
|
||||||
|
#define KEY_SCANNER_LPTMR_IRQ_ID LPTMR0_IRQn
|
||||||
|
#define KEY_SCANNER_HANDLER LPTMR0_IRQHandler
|
||||||
|
|
||||||
|
#define KEY_SCANNER_INTERVAL_USEC (1000 / KEYBOARD_MATRIX_ROWS_NUM)
|
||||||
|
|
||||||
|
// Functions:
|
||||||
|
|
||||||
|
void InitKeyScanner(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
#include "led_pwm.h"
|
#include "led_pwm.h"
|
||||||
#include "fsl_port.h"
|
#include "fsl_port.h"
|
||||||
|
|
||||||
void LedPwm_Init(void) {
|
void LedPwm_Init(void)
|
||||||
|
{
|
||||||
CLOCK_EnableClock(LED_PWM_CLOCK);
|
CLOCK_EnableClock(LED_PWM_CLOCK);
|
||||||
PORT_SetPinMux(LED_PWM_PORT, LED_PWM_PIN, kPORT_MuxAlt2);
|
PORT_SetPinMux(LED_PWM_PORT, LED_PWM_PIN, kPORT_MuxAlt2);
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#include "bootloader.h"
|
#include "bootloader.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include "key_scanner.h"
|
||||||
|
|
||||||
DEFINE_BOOTLOADER_CONFIG_AREA(I2C_ADDRESS_LEFT_KEYBOARD_HALF_BOOTLOADER)
|
DEFINE_BOOTLOADER_CONFIG_AREA(I2C_ADDRESS_LEFT_KEYBOARD_HALF_BOOTLOADER)
|
||||||
|
|
||||||
@@ -36,19 +37,14 @@ key_matrix_t keyMatrix = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ALWAYS_ENTER_BOOTLOADER (0)
|
|
||||||
/*! set to 1 for easier bootloader debugging. With this, the KL03 always enters bootloader mode after reset */
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
InitClock();
|
InitClock();
|
||||||
InitPeripherals();
|
InitPeripherals();
|
||||||
KeyMatrix_Init(&keyMatrix);
|
KeyMatrix_Init(&keyMatrix);
|
||||||
#if ALWAYS_ENTER_BOOTLOADER
|
InitKeyScanner();
|
||||||
JumpToBootloader(); /* << EST: \todo Temporary only */
|
|
||||||
#endif
|
|
||||||
while (1) {
|
while (1) {
|
||||||
KeyMatrix_Scan(&keyMatrix);
|
|
||||||
__WFI();
|
__WFI();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,6 @@
|
|||||||
#define MODULE_PROTOCOL_VERSION 1
|
#define MODULE_PROTOCOL_VERSION 1
|
||||||
#define MODULE_ID ModuleId_LeftKeyboardHalf
|
#define MODULE_ID ModuleId_LeftKeyboardHalf
|
||||||
#define MODULE_KEY_COUNT (KEYBOARD_MATRIX_ROWS_NUM * KEYBOARD_MATRIX_COLS_NUM)
|
#define MODULE_KEY_COUNT (KEYBOARD_MATRIX_ROWS_NUM * KEYBOARD_MATRIX_COLS_NUM)
|
||||||
#define MODULE_HAS_POINTER false
|
#define MODULE_POINTER_COUNT 0
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -10,28 +10,22 @@
|
|||||||
#include "bool_array_converter.h"
|
#include "bool_array_converter.h"
|
||||||
#include "bootloader.h"
|
#include "bootloader.h"
|
||||||
#include "module.h"
|
#include "module.h"
|
||||||
|
#include "versions.h"
|
||||||
|
|
||||||
i2c_message_t RxMessage;
|
i2c_message_t RxMessage;
|
||||||
i2c_message_t TxMessage;
|
i2c_message_t TxMessage;
|
||||||
|
|
||||||
void SetError(uint8_t error);
|
static version_t moduleProtocolVersion = {
|
||||||
void SetGenericError(void);
|
MODULE_PROTOCOL_MAJOR_VERSION,
|
||||||
void SetResponseByte(uint8_t response);
|
MODULE_PROTOCOL_MINOR_VERSION,
|
||||||
|
MODULE_PROTOCOL_PATCH_VERSION,
|
||||||
|
};
|
||||||
|
|
||||||
void SetError(uint8_t error) {
|
static version_t firmwareVersion = {
|
||||||
TxMessage.data[0] = error;
|
FIRMWARE_MAJOR_VERSION,
|
||||||
}
|
FIRMWARE_MINOR_VERSION,
|
||||||
|
FIRMWARE_PATCH_VERSION,
|
||||||
void SetGenericError(void)
|
};
|
||||||
{
|
|
||||||
SetError(PROTOCOL_RESPONSE_GENERIC_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set a single byte as the response.
|
|
||||||
void SetResponseByte(uint8_t response)
|
|
||||||
{
|
|
||||||
TxMessage.data[1] = response;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SlaveRxHandler(void)
|
void SlaveRxHandler(void)
|
||||||
{
|
{
|
||||||
@@ -43,7 +37,7 @@ void SlaveRxHandler(void)
|
|||||||
uint8_t commandId = RxMessage.data[0];
|
uint8_t commandId = RxMessage.data[0];
|
||||||
switch (commandId) {
|
switch (commandId) {
|
||||||
case SlaveCommand_JumpToBootloader:
|
case SlaveCommand_JumpToBootloader:
|
||||||
JumpToBootloader();
|
NVIC_SystemReset();
|
||||||
break;
|
break;
|
||||||
case SlaveCommand_SetTestLed:
|
case SlaveCommand_SetTestLed:
|
||||||
TxMessage.length = 0;
|
TxMessage.length = 0;
|
||||||
@@ -70,21 +64,29 @@ void SlaveTxHandler(void)
|
|||||||
TxMessage.length = SLAVE_SYNC_STRING_LENGTH;
|
TxMessage.length = SLAVE_SYNC_STRING_LENGTH;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case SlaveProperty_ModuleProtocolVersion: {
|
||||||
|
memcpy(TxMessage.data, &moduleProtocolVersion, sizeof(version_t));
|
||||||
|
TxMessage.length = sizeof(version_t);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SlaveProperty_FirmwareVersion: {
|
||||||
|
memcpy(TxMessage.data, &firmwareVersion, sizeof(version_t));
|
||||||
|
TxMessage.length = sizeof(version_t);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case SlaveProperty_ModuleId: {
|
case SlaveProperty_ModuleId: {
|
||||||
TxMessage.data[0] = MODULE_ID;
|
TxMessage.data[0] = MODULE_ID;
|
||||||
TxMessage.length = 1;
|
TxMessage.length = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SlaveProperty_ProtocolVersion: {
|
case SlaveProperty_KeyCount: {
|
||||||
TxMessage.data[0] = MODULE_PROTOCOL_VERSION;
|
TxMessage.data[0] = MODULE_KEY_COUNT;
|
||||||
TxMessage.length = 1;
|
TxMessage.length = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SlaveProperty_Features: {
|
case SlaveProperty_PointerCount: {
|
||||||
uhk_module_features_t *moduleFeatures = (uhk_module_features_t*)&TxMessage.data;
|
TxMessage.data[0] = MODULE_POINTER_COUNT;
|
||||||
moduleFeatures->keyCount = MODULE_KEY_COUNT;
|
TxMessage.length = 1;
|
||||||
moduleFeatures->hasPointer = MODULE_HAS_POINTER;
|
|
||||||
TxMessage.length = sizeof(uhk_module_features_t);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,11 +7,6 @@
|
|||||||
#include "crc16.h"
|
#include "crc16.h"
|
||||||
#include "slave_protocol.h"
|
#include "slave_protocol.h"
|
||||||
|
|
||||||
// Macros:
|
|
||||||
|
|
||||||
#define PROTOCOL_RESPONSE_SUCCESS 0
|
|
||||||
#define PROTOCOL_RESPONSE_GENERIC_ERROR 1
|
|
||||||
|
|
||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
extern i2c_message_t RxMessage;
|
extern i2c_message_t RxMessage;
|
||||||
|
|||||||
Submodule lib/KSDK_2.0_MK22FN512xxx12 updated: 7142722eed...9fbf2bbf08
Submodule lib/agent updated: 3b59a1a6fa...dd973c80ea
Submodule lib/bootloader updated: b754ecbe68...40cbba1da1
18
package.json
18
package.json
@@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "uhk-firmware",
|
|
||||||
"homepage": "https://UltimateHackingKeyboard.com",
|
|
||||||
"description": "The firmware of the Ultimate Hacking Keyboard",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+ssh://git@github.com/UltimateHackingKeyboard/firmware.git"
|
|
||||||
},
|
|
||||||
"author": "Ultimate Gadget Laboratories",
|
|
||||||
"license": "GPL-3.0",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/UltimateHackingKeyboard/firmware/issues"
|
|
||||||
},
|
|
||||||
"version": "2.1.0",
|
|
||||||
"dataModelVersion": "1.0.0",
|
|
||||||
"usbProtocolVersion": "1.2.0",
|
|
||||||
"slaveProtocolVersion": "2.1.0"
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
version="$1"
|
|
||||||
|
|
||||||
if [ -z "$version" ]; then
|
|
||||||
echo "No version number is specified."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
releaseName=uhk-firmware-$version
|
|
||||||
releaseDir=/tmp/$releaseName
|
|
||||||
rightFirmwareFile=right/build/kds/uhk-right-release-srec/uhk-right.srec
|
|
||||||
leftFirmwareFile=left/build/kds/uhk-left-release-srec/uhk-left.srec
|
|
||||||
|
|
||||||
chmod 644 $rightFirmwareFile $leftFirmwareFile
|
|
||||||
ls -l $rightFirmwareFile $leftFirmwareFile
|
|
||||||
rm -r $releaseDir
|
|
||||||
mkdir $releaseDir
|
|
||||||
cp $rightFirmwareFile $releaseDir
|
|
||||||
cp $leftFirmwareFile $releaseDir
|
|
||||||
cp package.json $releaseDir
|
|
||||||
tar -cvjSf $releaseName.tar.bz2 -C $releaseDir .
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||||
<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331">
|
<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331">
|
||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331" moduleId="org.eclipse.cdt.core.settings" name="uhk-right-release-srec">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331" moduleId="org.eclipse.cdt.core.settings" name="uhk60-right_release">
|
||||||
<externalSettings/>
|
<externalSettings/>
|
||||||
<extensions>
|
<extensions>
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
</extensions>
|
</extensions>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331" name="uhk-right-release-srec" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331" name="uhk60-right_release" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
||||||
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331." name="/" resourcePath="">
|
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331." name="/" resourcePath="">
|
||||||
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.453692058" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.453692058" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.8609064" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.size" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.8609064" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.size" valueType="enumerated"/>
|
||||||
@@ -70,19 +70,19 @@
|
|||||||
</tool>
|
</tool>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.813655335" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.813655335" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.58271126" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.58271126" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
||||||
<listOptionValue builtIn="false" value="../../../src"/>
|
<listOptionValue builtIn="false" value="../../src"/>
|
||||||
<listOptionValue builtIn="false" value="../../../src/ksdk_usb"/>
|
<listOptionValue builtIn="false" value="../../src/ksdk_usb"/>
|
||||||
<listOptionValue builtIn="false" value="../../../src/buspal"/>
|
<listOptionValue builtIn="false" value="../../src/buspal"/>
|
||||||
<listOptionValue builtIn="false" value="../../../src/buspal/bm_usb"/>
|
<listOptionValue builtIn="false" value="../../src/buspal/bm_usb"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/bootloader/src"/>
|
<listOptionValue builtIn="false" value="../../../lib/bootloader/src"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/include"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/include"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/CMSIS/Include"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/CMSIS/Include"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../shared"/>
|
<listOptionValue builtIn="false" value="../../../shared"/>
|
||||||
</option>
|
</option>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.133793610" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.gnu99" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.133793610" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.gnu99" valueType="enumerated"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.336821673" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.336821673" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
@@ -122,7 +122,7 @@
|
|||||||
</tool>
|
</tool>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.1312620897" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.1312620897" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.290274053" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.290274053" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1602530221" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.srec" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1602530221" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.ihex" valueType="enumerated"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.1076318061" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.1076318061" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.1983872154" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.1983872154" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
|
||||||
@@ -136,13 +136,16 @@
|
|||||||
</tool>
|
</tool>
|
||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
|
<fileInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.621318926" name="wormhole.c" rcbsApplicability="disable" resourcePath="bootloader-shared/wormhole.c" toolsToInvoke="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.813655335.948885614">
|
||||||
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.813655335.948885614" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.813655335"/>
|
||||||
|
</fileInfo>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
<storageModule moduleId="ilg.gnuarmeclipse.managedbuild.packs"/>
|
<storageModule moduleId="ilg.gnuarmeclipse.managedbuild.packs"/>
|
||||||
</cconfiguration>
|
</cconfiguration>
|
||||||
<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062">
|
<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062">
|
||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062" moduleId="org.eclipse.cdt.core.settings" name="uhk-right-debug-srec">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062" moduleId="org.eclipse.cdt.core.settings" name="uhk60-right_debug">
|
||||||
<externalSettings/>
|
<externalSettings/>
|
||||||
<extensions>
|
<extensions>
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
@@ -154,7 +157,7 @@
|
|||||||
</extensions>
|
</extensions>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062" name="uhk-right-debug-srec" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062" name="uhk60-right_debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
||||||
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062." name="/" resourcePath="">
|
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062." name="/" resourcePath="">
|
||||||
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.622643167" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.622643167" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.274883814" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.274883814" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
|
||||||
@@ -211,19 +214,19 @@
|
|||||||
</tool>
|
</tool>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1137693493" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1137693493" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.450812741" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.450812741" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
||||||
<listOptionValue builtIn="false" value="../../../src"/>
|
<listOptionValue builtIn="false" value="../../src"/>
|
||||||
<listOptionValue builtIn="false" value="../../../src/ksdk_usb"/>
|
<listOptionValue builtIn="false" value="../../src/ksdk_usb"/>
|
||||||
<listOptionValue builtIn="false" value="../../../src/buspal"/>
|
<listOptionValue builtIn="false" value="../../src/buspal"/>
|
||||||
<listOptionValue builtIn="false" value="../../../src/buspal/bm_usb"/>
|
<listOptionValue builtIn="false" value="../../src/buspal/bm_usb"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/bootloader/src"/>
|
<listOptionValue builtIn="false" value="../../../lib/bootloader/src"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/include"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/include"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/CMSIS/Include"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/CMSIS/Include"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../shared"/>
|
<listOptionValue builtIn="false" value="../../../shared"/>
|
||||||
</option>
|
</option>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.104109443" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.gnu99" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.104109443" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.gnu99" valueType="enumerated"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.1312429299" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.1312429299" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
@@ -265,7 +268,7 @@
|
|||||||
</tool>
|
</tool>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.731862141" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.731862141" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1124838912" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1124838912" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1162838483" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.srec" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1162838483" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.ihex" valueType="enumerated"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.548797909" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.548797909" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.1045154541" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.1045154541" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
|
||||||
@@ -285,7 +288,7 @@
|
|||||||
<storageModule moduleId="ilg.gnuarmeclipse.managedbuild.packs"/>
|
<storageModule moduleId="ilg.gnuarmeclipse.managedbuild.packs"/>
|
||||||
</cconfiguration>
|
</cconfiguration>
|
||||||
<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142">
|
<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142">
|
||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142" moduleId="org.eclipse.cdt.core.settings" name="uhk-right-debug">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142" moduleId="org.eclipse.cdt.core.settings" name="uhk60-right_debug_standalone">
|
||||||
<externalSettings/>
|
<externalSettings/>
|
||||||
<extensions>
|
<extensions>
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
@@ -297,7 +300,7 @@
|
|||||||
</extensions>
|
</extensions>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="Debug version of uhk-right without the bootloader" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142" name="uhk-right-debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="Debug version of uhk60-right without the bootloader" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142" name="uhk60-right_debug_standalone" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
||||||
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142." name="/" resourcePath="">
|
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142." name="/" resourcePath="">
|
||||||
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.788475280" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.788475280" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.402546001" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.402546001" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
|
||||||
@@ -354,19 +357,19 @@
|
|||||||
</tool>
|
</tool>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1999160366" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1999160366" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.2002225588" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.2002225588" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
||||||
<listOptionValue builtIn="false" value="../../../src"/>
|
<listOptionValue builtIn="false" value="../../src"/>
|
||||||
<listOptionValue builtIn="false" value="../../../src/ksdk_usb"/>
|
<listOptionValue builtIn="false" value="../../src/ksdk_usb"/>
|
||||||
<listOptionValue builtIn="false" value="../../../src/buspal"/>
|
<listOptionValue builtIn="false" value="../../src/buspal"/>
|
||||||
<listOptionValue builtIn="false" value="../../../src/buspal/bm_usb"/>
|
<listOptionValue builtIn="false" value="../../src/buspal/bm_usb"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/bootloader/src"/>
|
<listOptionValue builtIn="false" value="../../../lib/bootloader/src"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/include"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/include"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/CMSIS/Include"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/CMSIS/Include"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212"/>
|
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212"/>
|
||||||
<listOptionValue builtIn="false" value="../../../../shared"/>
|
<listOptionValue builtIn="false" value="../../../shared"/>
|
||||||
</option>
|
</option>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.2080930720" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.gnu99" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.2080930720" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.gnu99" valueType="enumerated"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.1448177506" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.1448177506" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
@@ -432,39 +435,6 @@
|
|||||||
<project id="k64f.ilg.gnuarmeclipse.managedbuild.cross.target.elf.1537007018" name="Executable" projectType="ilg.gnuarmeclipse.managedbuild.cross.target.elf"/>
|
<project id="k64f.ilg.gnuarmeclipse.managedbuild.cross.target.elf.1537007018" name="Executable" projectType="ilg.gnuarmeclipse.managedbuild.cross.target.elf"/>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||||
<storageModule moduleId="refreshScope" versionNumber="2">
|
|
||||||
<configuration configurationName="v6-release-srec">
|
|
||||||
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
|
||||||
</configuration>
|
|
||||||
<configuration configurationName="Multiple configurations">
|
|
||||||
<resource resourceType="PROJECT" workspacePath="/FRDM-K64F_Demo"/>
|
|
||||||
</configuration>
|
|
||||||
<configuration configurationName="v7-release"/>
|
|
||||||
<configuration configurationName="release-v7"/>
|
|
||||||
<configuration configurationName="debug">
|
|
||||||
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
|
||||||
</configuration>
|
|
||||||
<configuration configurationName="uhk-right-release-srec">
|
|
||||||
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
|
||||||
</configuration>
|
|
||||||
<configuration configurationName="v7-release-srec"/>
|
|
||||||
<configuration configurationName="v6-debug"/>
|
|
||||||
<configuration configurationName="uhk-right-debug">
|
|
||||||
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
|
||||||
</configuration>
|
|
||||||
<configuration configurationName="v7-debug-srec">
|
|
||||||
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
|
||||||
</configuration>
|
|
||||||
<configuration configurationName="uhk-right-debug-srec">
|
|
||||||
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
|
||||||
</configuration>
|
|
||||||
<configuration configurationName="v6-debug-srec"/>
|
|
||||||
<configuration configurationName="v7-debug"/>
|
|
||||||
<configuration configurationName="v6-release"/>
|
|
||||||
<configuration configurationName="release">
|
|
||||||
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
|
||||||
</configuration>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||||
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||||
<storageModule moduleId="scannerConfiguration">
|
<storageModule moduleId="scannerConfiguration">
|
||||||
@@ -479,4 +449,15 @@
|
|||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
|
<storageModule moduleId="refreshScope" versionNumber="2">
|
||||||
|
<configuration configurationName="uhk60-right_debug_standalone">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
||||||
|
</configuration>
|
||||||
|
<configuration configurationName="uhk60-right_release">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
||||||
|
</configuration>
|
||||||
|
<configuration configurationName="uhk60-right_debug">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
</cproject>
|
</cproject>
|
||||||
4
right/build/.gitignore
vendored
Normal file
4
right/build/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
/.settings/
|
||||||
|
/uhk60-right_release/
|
||||||
|
/uhk60-right_debug/
|
||||||
|
/uhk60-right_debug_standalone/
|
||||||
@@ -48,12 +48,12 @@
|
|||||||
<link>
|
<link>
|
||||||
<name>shared</name>
|
<name>shared</name>
|
||||||
<type>2</type>
|
<type>2</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/shared</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/shared</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>src</name>
|
<name>src</name>
|
||||||
<type>2</type>
|
<type>2</type>
|
||||||
<locationURI>PARENT-2-PROJECT_LOC/src</locationURI>
|
<locationURI>PARENT-1-PROJECT_LOC/src</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>startup</name>
|
<name>startup</name>
|
||||||
@@ -68,132 +68,132 @@
|
|||||||
<link>
|
<link>
|
||||||
<name>bootloader-shared/wormhole.c</name>
|
<name>bootloader-shared/wormhole.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/bootloader/src/bootloader/src/wormhole.c</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/bootloader/src/bootloader/src/wormhole.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>bootloader-shared/wormhole.h</name>
|
<name>bootloader-shared/wormhole.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>PARENT-3-PROJECT_LOC/lib/bootloader/src/bootloader/wormhole.h</locationURI>
|
<locationURI>PARENT-2-PROJECT_LOC/lib/bootloader/src/bootloader/wormhole.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_adc16.c</name>
|
<name>drivers/fsl_adc16.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_adc16.c</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_adc16.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_adc16.h</name>
|
<name>drivers/fsl_adc16.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_adc16.h</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_adc16.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_clock.c</name>
|
<name>drivers/fsl_clock.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_clock.c</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_clock.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_clock.h</name>
|
<name>drivers/fsl_clock.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_clock.h</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_clock.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_ftm.c</name>
|
<name>drivers/fsl_ftm.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_ftm.c</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_ftm.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_ftm.h</name>
|
<name>drivers/fsl_ftm.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_ftm.h</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_ftm.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_gpio.c</name>
|
<name>drivers/fsl_gpio.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_gpio.c</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_gpio.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_gpio.h</name>
|
<name>drivers/fsl_gpio.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_gpio.h</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_gpio.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_i2c.c</name>
|
<name>drivers/fsl_i2c.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_i2c.c</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_i2c.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_i2c.h</name>
|
<name>drivers/fsl_i2c.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_i2c.h</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_i2c.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_pit.c</name>
|
<name>drivers/fsl_pit.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_pit.c</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_pit.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_pit.h</name>
|
<name>drivers/fsl_pit.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_pit.h</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_pit.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_sim.c</name>
|
<name>drivers/fsl_sim.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_sim.c</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_sim.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers/fsl_smc.c</name>
|
<name>drivers/fsl_smc.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_smc.c</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_smc.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>osa/usb_osa.h</name>
|
<name>osa/usb_osa.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa/usb_osa.h</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa/usb_osa.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>osa/usb_osa_bm.c</name>
|
<name>osa/usb_osa_bm.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa/usb_osa_bm.c</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa/usb_osa_bm.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>osa/usb_osa_bm.h</name>
|
<name>osa/usb_osa_bm.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa/usb_osa_bm.h</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa/usb_osa_bm.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>startup/startup_MK22F51212.S</name>
|
<name>startup/startup_MK22F51212.S</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/gcc/startup_MK22F51212.S</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/gcc/startup_MK22F51212.S</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>startup/system_MK22F51212.c</name>
|
<name>startup/system_MK22F51212.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/system_MK22F51212.c</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/system_MK22F51212.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>startup/system_MK22F51212.h</name>
|
<name>startup/system_MK22F51212.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/system_MK22F51212.h</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/system_MK22F51212.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>usb/usb_device_dci.c</name>
|
<name>usb/usb_device_dci.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device/usb_device_dci.c</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device/usb_device_dci.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>usb/usb_device_dci.h</name>
|
<name>usb/usb_device_dci.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device/usb_device_dci.h</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device/usb_device_dci.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>usb/usb_device_khci.c</name>
|
<name>usb/usb_device_khci.c</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device/usb_device_khci.c</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device/usb_device_khci.c</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>usb/usb_device_khci.h</name>
|
<name>usb/usb_device_khci.h</name>
|
||||||
<type>1</type>
|
<type>1</type>
|
||||||
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device/usb_device_khci.h</locationURI>
|
<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device/usb_device_khci.h</locationURI>
|
||||||
</link>
|
</link>
|
||||||
</linkedResources>
|
</linkedResources>
|
||||||
</projectDescription>
|
</projectDescription>
|
||||||
16
right/build/kds/.gitignore
vendored
16
right/build/kds/.gitignore
vendored
@@ -1,16 +0,0 @@
|
|||||||
/debug
|
|
||||||
/release-v7/
|
|
||||||
/v7-debug/
|
|
||||||
/v6-release/
|
|
||||||
/v6-debug/
|
|
||||||
/v7-release/
|
|
||||||
/v7-release-srec/
|
|
||||||
/v7-debug-srec/
|
|
||||||
/v6-release-srec/
|
|
||||||
perf.data
|
|
||||||
/v6-debug-srec/
|
|
||||||
/uhk-right-debug-srec/
|
|
||||||
/uhk-right-debug-srec
|
|
||||||
/uhk-right-release-srec/
|
|
||||||
/.settings/
|
|
||||||
/uhk-right-debug/
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e # fail the script if a command fails
|
|
||||||
|
|
||||||
PATH=$PATH:/usr/local/bin # This should make node and npm accessible on OSX.
|
|
||||||
firmware_image=`pwd`/$1
|
|
||||||
usb_dir=../../../lib/agent/usb
|
|
||||||
usb_binding=$usb_dir/node_modules/usb/build/Release/usb_bindings.node
|
|
||||||
|
|
||||||
case "$(uname -s)" in
|
|
||||||
Linux)
|
|
||||||
blhost_path=linux/amd64
|
|
||||||
;;
|
|
||||||
Darwin)
|
|
||||||
blhost_path=mac
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo 'Your operating system is not supported.'
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
blhost="../../../lib/bootloader/bin/Tools/blhost/$blhost_path/blhost --usb 0x1d50,0x6120"
|
|
||||||
|
|
||||||
set -x # echo on
|
|
||||||
|
|
||||||
if [ ! -f $usb_binding ]; then
|
|
||||||
cd $usb_dir
|
|
||||||
npm install
|
|
||||||
fi
|
|
||||||
|
|
||||||
$usb_dir/jump-to-bootloader.js
|
|
||||||
$blhost flash-security-disable 0403020108070605
|
|
||||||
$blhost flash-erase-region 0xc000 475136
|
|
||||||
$blhost flash-image $firmware_image
|
|
||||||
$blhost reset
|
|
||||||
@@ -18,8 +18,8 @@
|
|||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="uhk-right-debug-srec/uhk-right.srec"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="uhk60-right_debug/uhk-right.hex"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="blhost-unix.sh"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="../../lib/agent/packages/usb/update-device-firmware.js"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-right"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-right"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062"/>
|
||||||
@@ -64,10 +64,10 @@
|
|||||||
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="uhk-right-debug/uhk-right.elf"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="uhk60-right_debug_standalone/uhk-right.elf"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-right"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-right"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/>
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
<listEntry value="/uhk-right"/>
|
<listEntry value="/uhk-right"/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
@@ -77,6 +77,6 @@
|
|||||||
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
|
<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
|
||||||
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
|
<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="Context string"/> "/>
|
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="Context string"/> "/>
|
||||||
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
||||||
@@ -18,8 +18,8 @@
|
|||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="uhk-right-release-srec/uhk-right.srec"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="uhk60-right_release/uhk-right.hex"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="blhost-unix.sh"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="../../lib/agent/packages/usb/update-device-firmware.js"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-right"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-right"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331"/>
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#ifndef __BOOTLOADER_CONFIG_H__
|
|
||||||
#define __BOOTLOADER_CONFIG_H__
|
|
||||||
|
|
||||||
//#define ENABLE_BUSPAL
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -2,7 +2,6 @@
|
|||||||
#include "usb_descriptor.h"
|
#include "usb_descriptor.h"
|
||||||
#include "usb_device_config.h"
|
#include "usb_device_config.h"
|
||||||
#include "composite.h"
|
#include "composite.h"
|
||||||
#include "bootloader_config.h"
|
|
||||||
#include "microseconds/microseconds.h"
|
#include "microseconds/microseconds.h"
|
||||||
#include "i2c.h"
|
#include "i2c.h"
|
||||||
#include "peripherals/test_led.h"
|
#include "peripherals/test_led.h"
|
||||||
|
|||||||
@@ -3,9 +3,10 @@
|
|||||||
#include "crc16.h"
|
#include "crc16.h"
|
||||||
#include "bus_pal_hardware.h"
|
#include "bus_pal_hardware.h"
|
||||||
#include "peripherals/test_led.h"
|
#include "peripherals/test_led.h"
|
||||||
#if FIXED_BUSPAL_BOOTLOADER
|
#include "microseconds/microseconds.h"
|
||||||
#include "microseconds/microseconds.h"
|
#include "bootloader/wormhole.h"
|
||||||
#endif
|
|
||||||
|
#define FIXED_BUSPAL_BOOTLOADER 1 // Used to mark the fixed BusPal bootloader. Macro usage can be removed in the future.
|
||||||
|
|
||||||
command_processor_data_t g_commandData;
|
command_processor_data_t g_commandData;
|
||||||
buspal_state_t g_buspalState = kBuspal_Idle;
|
buspal_state_t g_buspalState = kBuspal_Idle;
|
||||||
@@ -483,6 +484,10 @@ status_t bootloader_command_pump()
|
|||||||
handle_write_memory_command(g_commandData.packet, g_commandData.packetLength);
|
handle_write_memory_command(g_commandData.packet, g_commandData.packetLength);
|
||||||
|
|
||||||
g_commandData.state = kCommandState_DataPhaseWrite;
|
g_commandData.state = kCommandState_DataPhaseWrite;
|
||||||
|
} else if (cmdTag == kCommandTag_Reset) {
|
||||||
|
Wormhole.magicNumber = WORMHOLE_MAGIC_NUMBER;
|
||||||
|
Wormhole.enumerationMode = EnumerationMode_NormalKeyboard;
|
||||||
|
NVIC_SystemReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
status = handle_command_internal(g_commandData.packet, g_commandData.packetLength);
|
status = handle_command_internal(g_commandData.packet, g_commandData.packetLength);
|
||||||
|
|||||||
@@ -4,8 +4,7 @@
|
|||||||
// Macros:
|
// Macros:
|
||||||
|
|
||||||
#define I2C_WATCHDOG
|
#define I2C_WATCHDOG
|
||||||
|
#define LED_DRIVERS_ENABLED
|
||||||
// #define LED_DRIVER_STRESS_TEST
|
// #define LED_DRIVER_STRESS_TEST
|
||||||
#define FIXED_BUSPAL_BOOTLOADER 1 // Used to mark the fixed BusPal bootloader. Macro usage can be removed in the future.
|
|
||||||
// #define FORCE_BUSPAL 1
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,34 +1,37 @@
|
|||||||
#include "basic_types.h"
|
#include "basic_types.h"
|
||||||
|
|
||||||
uint8_t readUInt8(config_buffer_t *buffer) {
|
uint8_t ReadUInt8(config_buffer_t *buffer)
|
||||||
|
{
|
||||||
return buffer->buffer[buffer->offset++];
|
return buffer->buffer[buffer->offset++];
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t readUInt16(config_buffer_t *buffer) {
|
uint16_t ReadUInt16(config_buffer_t *buffer)
|
||||||
uint16_t uInt16 = readUInt8(buffer);
|
{
|
||||||
|
uint16_t uInt16 = ReadUInt8(buffer);
|
||||||
uInt16 |= readUInt8(buffer) << 8;
|
uInt16 |= ReadUInt8(buffer) << 8;
|
||||||
return uInt16;
|
return uInt16;
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t readInt16(config_buffer_t *buffer) {
|
int16_t ReadInt16(config_buffer_t *buffer)
|
||||||
return readUInt16(buffer);
|
{
|
||||||
|
return ReadUInt16(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool readBool(config_buffer_t *buffer) {
|
bool ReadBool(config_buffer_t *buffer)
|
||||||
return readUInt8(buffer);
|
{
|
||||||
|
return ReadUInt8(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t readCompactLength(config_buffer_t *buffer) {
|
uint16_t ReadCompactLength(config_buffer_t *buffer)
|
||||||
uint16_t compactLength = readUInt8(buffer);
|
{
|
||||||
|
uint16_t compactLength = ReadUInt8(buffer);
|
||||||
return compactLength == 0xFF ? readUInt16(buffer) : compactLength;
|
return compactLength == 0xFF ? ReadUInt16(buffer) : compactLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *readString(config_buffer_t *buffer, uint16_t *len) {
|
const char *ReadString(config_buffer_t *buffer, uint16_t *len)
|
||||||
|
{
|
||||||
const char *string;
|
const char *string;
|
||||||
|
*len = ReadCompactLength(buffer);
|
||||||
*len = readCompactLength(buffer);
|
|
||||||
string = (const char *)(buffer->buffer + buffer->offset);
|
string = (const char *)(buffer->buffer + buffer->offset);
|
||||||
buffer->offset += *len;
|
buffer->offset += *len;
|
||||||
return string;
|
return string;
|
||||||
|
|||||||
@@ -14,11 +14,11 @@
|
|||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
uint8_t readUInt8(config_buffer_t *buffer);
|
uint8_t ReadUInt8(config_buffer_t *buffer);
|
||||||
uint16_t readUInt16(config_buffer_t *buffer);
|
uint16_t ReadUInt16(config_buffer_t *buffer);
|
||||||
int16_t readInt16(config_buffer_t *buffer);
|
int16_t ReadInt16(config_buffer_t *buffer);
|
||||||
bool readBool(config_buffer_t *buffer);
|
bool ReadBool(config_buffer_t *buffer);
|
||||||
uint16_t readCompactLength(config_buffer_t *buffer);
|
uint16_t ReadCompactLength(config_buffer_t *buffer);
|
||||||
const char *readString(config_buffer_t *buffer, uint16_t *len);
|
const char *ReadString(config_buffer_t *buffer, uint16_t *len);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -12,6 +12,11 @@ config_buffer_t ValidatedUserConfigBuffer = { validatedUserConfig };
|
|||||||
|
|
||||||
bool ParserRunDry;
|
bool ParserRunDry;
|
||||||
|
|
||||||
|
bool IsConfigBufferIdValid(config_buffer_id_t configBufferId)
|
||||||
|
{
|
||||||
|
return ConfigBufferId_HardwareConfig <= configBufferId && configBufferId <= ConfigBufferId_ValidatedUserConfig;
|
||||||
|
}
|
||||||
|
|
||||||
config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId)
|
config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId)
|
||||||
{
|
{
|
||||||
switch (configBufferId) {
|
switch (configBufferId) {
|
||||||
@@ -25,3 +30,16 @@ config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint16_t ConfigBufferIdToBufferSize(config_buffer_id_t configBufferId)
|
||||||
|
{
|
||||||
|
switch (configBufferId) {
|
||||||
|
case ConfigBufferId_HardwareConfig:
|
||||||
|
return HARDWARE_CONFIG_SIZE;
|
||||||
|
case ConfigBufferId_StagingUserConfig:
|
||||||
|
case ConfigBufferId_ValidatedUserConfig:
|
||||||
|
return USER_CONFIG_SIZE;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -23,6 +23,8 @@
|
|||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
|
bool IsConfigBufferIdValid(config_buffer_id_t configBufferId);
|
||||||
config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId);
|
config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId);
|
||||||
|
uint16_t ConfigBufferIdToBufferSize(config_buffer_id_t configBufferId);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,33 +1,98 @@
|
|||||||
#include "parse_config.h"
|
#include "parse_config.h"
|
||||||
#include "parse_keymap.h"
|
#include "parse_keymap.h"
|
||||||
#include "parse_macro.h"
|
#include "parse_macro.h"
|
||||||
#include "keymaps.h"
|
#include "keymap.h"
|
||||||
#include "config_globals.h"
|
#include "config_globals.h"
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
|
#include "usb_report_updater.h"
|
||||||
|
#include "led_display.h"
|
||||||
|
#include "slave_scheduler.h"
|
||||||
|
#include "slave_drivers/is31fl3731_driver.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
static parser_error_t parseModuleConfiguration(config_buffer_t *buffer)
|
static parser_error_t parseModuleConfiguration(config_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
uint8_t id = readUInt8(buffer);
|
uint8_t id = ReadUInt8(buffer);
|
||||||
uint8_t initialPointerSpeed = readUInt8(buffer);
|
uint8_t pointerMode = ReadUInt8(buffer); // move vs scroll
|
||||||
uint8_t pointerAcceleration = readUInt8(buffer);
|
uint8_t deceleratedPointerSpeedMultiplier = ReadUInt8(buffer);
|
||||||
uint8_t maxPointerSpeed = readUInt8(buffer);
|
uint8_t basePointerSpeedMultiplier = ReadUInt8(buffer);
|
||||||
|
uint8_t acceleratedPointerSpeed = ReadUInt8(buffer);
|
||||||
|
uint16_t angularShift = ReadUInt16(buffer);
|
||||||
|
uint8_t modLayerPointerFunction = ReadUInt8(buffer); // none vs invertMode vs decelerate vs accelerate
|
||||||
|
uint8_t fnLayerPointerFunction = ReadUInt8(buffer); // none vs invertMode vs decelerate vs accelerate
|
||||||
|
uint8_t mouseLayerPointerFunction = ReadUInt8(buffer); // none vs invertMode vs decelerate vs accelerate
|
||||||
|
|
||||||
(void)id;
|
(void)id;
|
||||||
(void)initialPointerSpeed;
|
(void)pointerMode;
|
||||||
(void)pointerAcceleration;
|
(void)deceleratedPointerSpeedMultiplier;
|
||||||
(void)maxPointerSpeed;
|
(void)basePointerSpeedMultiplier;
|
||||||
|
(void)acceleratedPointerSpeed;
|
||||||
|
(void)angularShift;
|
||||||
|
(void)modLayerPointerFunction;
|
||||||
|
(void)fnLayerPointerFunction;
|
||||||
|
(void)mouseLayerPointerFunction;
|
||||||
|
|
||||||
return ParserError_Success;
|
return ParserError_Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
parser_error_t ParseConfig(config_buffer_t *buffer)
|
parser_error_t ParseConfig(config_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
uint16_t dataModelVersion = readUInt16(buffer);
|
// Miscellaneous properties
|
||||||
parser_error_t errorCode;
|
|
||||||
uint16_t moduleConfigurationCount = readCompactLength(buffer);
|
uint16_t len;
|
||||||
uint16_t macroCount;
|
uint16_t macroCount;
|
||||||
uint16_t keymapCount;
|
uint16_t keymapCount;
|
||||||
|
parser_error_t errorCode;
|
||||||
|
|
||||||
(void)dataModelVersion;
|
uint16_t dataModelMajorVersion = ReadUInt16(buffer);
|
||||||
|
uint16_t dataModelMinorVersion = ReadUInt16(buffer);
|
||||||
|
uint16_t dataModelPatchVersion = ReadUInt16(buffer);
|
||||||
|
uint16_t userConfigLength = ReadUInt16(buffer);
|
||||||
|
const char *deviceName = ReadString(buffer, &len);
|
||||||
|
uint16_t doubleTapSwitchLayerTimeout = ReadUInt16(buffer);
|
||||||
|
|
||||||
|
(void)userConfigLength;
|
||||||
|
(void)dataModelMajorVersion;
|
||||||
|
(void)dataModelMinorVersion;
|
||||||
|
(void)dataModelPatchVersion;
|
||||||
|
(void)deviceName;
|
||||||
|
|
||||||
|
// LED brightness
|
||||||
|
|
||||||
|
uint8_t iconsAndLayerTextsBrightness = ReadUInt8(buffer);
|
||||||
|
uint8_t alphanumericSegmentsBrightness = ReadUInt8(buffer);
|
||||||
|
uint8_t keyBacklightBrightness = ReadUInt8(buffer);
|
||||||
|
|
||||||
|
// Mouse kinetic properties
|
||||||
|
|
||||||
|
uint8_t mouseMoveInitialSpeed = ReadUInt8(buffer);
|
||||||
|
uint8_t mouseMoveAcceleration = ReadUInt8(buffer);
|
||||||
|
uint8_t mouseMoveDeceleratedSpeed = ReadUInt8(buffer);
|
||||||
|
uint8_t mouseMoveBaseSpeed = ReadUInt8(buffer);
|
||||||
|
uint8_t mouseMoveAcceleratedSpeed = ReadUInt8(buffer);
|
||||||
|
uint8_t mouseScrollInitialSpeed = ReadUInt8(buffer);
|
||||||
|
uint8_t mouseScrollAcceleration = ReadUInt8(buffer);
|
||||||
|
uint8_t mouseScrollDeceleratedSpeed = ReadUInt8(buffer);
|
||||||
|
uint8_t mouseScrollBaseSpeed = ReadUInt8(buffer);
|
||||||
|
uint8_t mouseScrollAcceleratedSpeed = ReadUInt8(buffer);
|
||||||
|
|
||||||
|
if (mouseMoveInitialSpeed == 0 ||
|
||||||
|
mouseMoveAcceleration == 0 ||
|
||||||
|
mouseMoveDeceleratedSpeed == 0 ||
|
||||||
|
mouseMoveBaseSpeed == 0 ||
|
||||||
|
mouseMoveAcceleratedSpeed == 0 ||
|
||||||
|
mouseScrollInitialSpeed == 0 ||
|
||||||
|
mouseScrollAcceleration == 0 ||
|
||||||
|
mouseScrollDeceleratedSpeed == 0 ||
|
||||||
|
mouseScrollBaseSpeed == 0 ||
|
||||||
|
mouseScrollAcceleratedSpeed == 0)
|
||||||
|
{
|
||||||
|
return ParserError_InvalidMouseKineticProperty;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Module configurations
|
||||||
|
|
||||||
|
uint16_t moduleConfigurationCount = ReadCompactLength(buffer);
|
||||||
|
|
||||||
if (moduleConfigurationCount > 255) {
|
if (moduleConfigurationCount > 255) {
|
||||||
return ParserError_InvalidModuleConfigurationCount;
|
return ParserError_InvalidModuleConfigurationCount;
|
||||||
@@ -40,7 +105,9 @@ parser_error_t ParseConfig(config_buffer_t *buffer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
macroCount = readCompactLength(buffer);
|
// Macros
|
||||||
|
|
||||||
|
macroCount = ReadCompactLength(buffer);
|
||||||
if (macroCount > MAX_MACRO_NUM) {
|
if (macroCount > MAX_MACRO_NUM) {
|
||||||
return ParserError_InvalidMacroCount;
|
return ParserError_InvalidMacroCount;
|
||||||
}
|
}
|
||||||
@@ -52,7 +119,9 @@ parser_error_t ParseConfig(config_buffer_t *buffer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
keymapCount = readCompactLength(buffer);
|
// Keymaps
|
||||||
|
|
||||||
|
keymapCount = ReadCompactLength(buffer);
|
||||||
if (keymapCount == 0 || keymapCount > MAX_KEYMAP_NUM) {
|
if (keymapCount == 0 || keymapCount > MAX_KEYMAP_NUM) {
|
||||||
return ParserError_InvalidKeymapCount;
|
return ParserError_InvalidKeymapCount;
|
||||||
}
|
}
|
||||||
@@ -64,7 +133,36 @@ parser_error_t ParseConfig(config_buffer_t *buffer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If parsing succeeded then apply the parsed values.
|
||||||
|
|
||||||
if (!ParserRunDry) {
|
if (!ParserRunDry) {
|
||||||
|
DoubleTapSwitchLayerTimeout = doubleTapSwitchLayerTimeout;
|
||||||
|
|
||||||
|
// Update LED brightnesses and reinitialize LED drivers
|
||||||
|
|
||||||
|
IconsAndLayerTextsBrightness = iconsAndLayerTextsBrightness;
|
||||||
|
AlphanumericSegmentsBrightness = alphanumericSegmentsBrightness;
|
||||||
|
KeyBacklightBrightness = keyBacklightBrightness;
|
||||||
|
#ifdef LED_DRIVERS_ENABLED
|
||||||
|
Slaves[SlaveId_LeftLedDriver].isConnected = false;
|
||||||
|
Slaves[SlaveId_RightLedDriver].isConnected = false;
|
||||||
|
#endif
|
||||||
|
// Update mouse key speeds
|
||||||
|
|
||||||
|
MouseMoveState.initialSpeed = mouseMoveInitialSpeed;
|
||||||
|
MouseMoveState.acceleration = mouseMoveAcceleration;
|
||||||
|
MouseMoveState.deceleratedSpeed = mouseMoveDeceleratedSpeed;
|
||||||
|
MouseMoveState.baseSpeed = mouseMoveBaseSpeed;
|
||||||
|
MouseMoveState.acceleratedSpeed = mouseMoveAcceleratedSpeed;
|
||||||
|
|
||||||
|
MouseScrollState.initialSpeed = mouseScrollInitialSpeed;
|
||||||
|
MouseScrollState.acceleration = mouseScrollAcceleration;
|
||||||
|
MouseScrollState.deceleratedSpeed = mouseScrollDeceleratedSpeed;
|
||||||
|
MouseScrollState.baseSpeed = mouseScrollBaseSpeed;
|
||||||
|
MouseScrollState.acceleratedSpeed = mouseScrollAcceleratedSpeed;
|
||||||
|
|
||||||
|
// Update counts
|
||||||
|
|
||||||
AllKeymapsCount = keymapCount;
|
AllKeymapsCount = keymapCount;
|
||||||
AllMacrosCount = macroCount;
|
AllMacrosCount = macroCount;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,20 +8,21 @@
|
|||||||
// Typedefs:
|
// Typedefs:
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
ParserError_Success,
|
ParserError_Success = 0,
|
||||||
ParserError_InvalidSerializedKeystrokeType,
|
ParserError_InvalidSerializedKeystrokeType = 1,
|
||||||
ParserError_InvalidSerializedMouseAction,
|
ParserError_InvalidSerializedMouseAction = 2,
|
||||||
ParserError_InvalidSerializedKeyActionType,
|
ParserError_InvalidSerializedKeyActionType = 3,
|
||||||
ParserError_InvalidLayerCount,
|
ParserError_InvalidLayerCount = 4,
|
||||||
ParserError_InvalidModuleCount,
|
ParserError_InvalidModuleCount = 5,
|
||||||
ParserError_InvalidActionCount,
|
ParserError_InvalidActionCount = 6,
|
||||||
ParserError_InvalidSerializedMacroActionType,
|
ParserError_InvalidSerializedMacroActionType = 7,
|
||||||
ParserError_InvalidSerializedSwitchKeymapAction,
|
ParserError_InvalidSerializedSwitchKeymapAction = 8,
|
||||||
ParserError_InvalidModuleConfigurationCount,
|
ParserError_InvalidModuleConfigurationCount = 9,
|
||||||
ParserError_InvalidKeymapCount,
|
ParserError_InvalidKeymapCount = 10,
|
||||||
ParserError_InvalidAbbreviationLen,
|
ParserError_InvalidAbbreviationLen = 11,
|
||||||
ParserError_InvalidMacroCount,
|
ParserError_InvalidMacroCount = 12,
|
||||||
ParserError_InvalidSerializedPlayMacroAction,
|
ParserError_InvalidSerializedPlayMacroAction = 13,
|
||||||
|
ParserError_InvalidMouseKineticProperty = 14,
|
||||||
} parser_error_t;
|
} parser_error_t;
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
#include "config_parser/parse_config.h"
|
#include "config_parser/parse_config.h"
|
||||||
#include "config_parser/parse_keymap.h"
|
#include "config_parser/parse_keymap.h"
|
||||||
#include "key_action.h"
|
#include "key_action.h"
|
||||||
#include "keymaps.h"
|
#include "keymap.h"
|
||||||
#include "led_display.h"
|
#include "led_display.h"
|
||||||
|
|
||||||
static uint8_t tempKeymapCount;
|
static uint8_t tempKeymapCount;
|
||||||
@@ -34,31 +34,31 @@ static parser_error_t parseKeyStrokeAction(key_action_t *keyAction, uint8_t keyS
|
|||||||
return ParserError_InvalidSerializedKeystrokeType;
|
return ParserError_InvalidSerializedKeystrokeType;
|
||||||
}
|
}
|
||||||
keyAction->keystroke.scancode = keyStrokeAction & SERIALIZED_KEYSTROKE_TYPE_MASK_HAS_SCANCODE
|
keyAction->keystroke.scancode = keyStrokeAction & SERIALIZED_KEYSTROKE_TYPE_MASK_HAS_SCANCODE
|
||||||
? keystrokeType == SerializedKeystrokeType_LongMedia ? readUInt16(buffer) : readUInt8(buffer)
|
? keystrokeType == SerializedKeystrokeType_LongMedia ? ReadUInt16(buffer) : ReadUInt8(buffer)
|
||||||
: 0;
|
: 0;
|
||||||
keyAction->keystroke.modifiers = keyStrokeAction & SERIALIZED_KEYSTROKE_TYPE_MASK_HAS_MODIFIERS
|
keyAction->keystroke.modifiers = keyStrokeAction & SERIALIZED_KEYSTROKE_TYPE_MASK_HAS_MODIFIERS
|
||||||
? readUInt8(buffer)
|
? ReadUInt8(buffer)
|
||||||
: 0;
|
: 0;
|
||||||
keyAction->keystroke.longPressAction = keyStrokeAction & SERIALIZED_KEYSTROKE_TYPE_MASK_HAS_LONGPRESS
|
keyAction->keystroke.secondaryRole = keyStrokeAction & SERIALIZED_KEYSTROKE_TYPE_MASK_HAS_LONGPRESS
|
||||||
? readUInt8(buffer)
|
? ReadUInt8(buffer) + 1
|
||||||
: 0;
|
: 0;
|
||||||
return ParserError_Success;
|
return ParserError_Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
static parser_error_t parseSwitchLayerAction(key_action_t *KeyAction, config_buffer_t *buffer)
|
static parser_error_t parseSwitchLayerAction(key_action_t *KeyAction, config_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
uint8_t layer = readUInt8(buffer) + 1;
|
uint8_t layer = ReadUInt8(buffer) + 1;
|
||||||
bool isToggle = readBool(buffer);
|
uint8_t mode = ReadBool(buffer) ? SwitchLayerMode_Toggle : SwitchLayerMode_HoldAndDoubleTapToggle;
|
||||||
|
|
||||||
KeyAction->type = KeyActionType_SwitchLayer;
|
KeyAction->type = KeyActionType_SwitchLayer;
|
||||||
KeyAction->switchLayer.layer = layer;
|
KeyAction->switchLayer.layer = layer;
|
||||||
KeyAction->switchLayer.isToggle = isToggle;
|
KeyAction->switchLayer.mode = mode;
|
||||||
return ParserError_Success;
|
return ParserError_Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
static parser_error_t parseSwitchKeymapAction(key_action_t *keyAction, config_buffer_t *buffer)
|
static parser_error_t parseSwitchKeymapAction(key_action_t *keyAction, config_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
uint8_t keymapIndex = readUInt8(buffer);
|
uint8_t keymapIndex = ReadUInt8(buffer);
|
||||||
|
|
||||||
if (keymapIndex >= tempKeymapCount) {
|
if (keymapIndex >= tempKeymapCount) {
|
||||||
return ParserError_InvalidSerializedSwitchKeymapAction;
|
return ParserError_InvalidSerializedSwitchKeymapAction;
|
||||||
@@ -70,7 +70,7 @@ static parser_error_t parseSwitchKeymapAction(key_action_t *keyAction, config_bu
|
|||||||
|
|
||||||
static parser_error_t parsePlayMacroAction(key_action_t *keyAction, config_buffer_t *buffer)
|
static parser_error_t parsePlayMacroAction(key_action_t *keyAction, config_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
uint8_t macroIndex = readUInt8(buffer);
|
uint8_t macroIndex = ReadUInt8(buffer);
|
||||||
|
|
||||||
if (macroIndex >= tempMacroCount) {
|
if (macroIndex >= tempMacroCount) {
|
||||||
return ParserError_InvalidSerializedPlayMacroAction;
|
return ParserError_InvalidSerializedPlayMacroAction;
|
||||||
@@ -82,59 +82,22 @@ static parser_error_t parsePlayMacroAction(key_action_t *keyAction, config_buffe
|
|||||||
|
|
||||||
static parser_error_t parseMouseAction(key_action_t *keyAction, config_buffer_t *buffer)
|
static parser_error_t parseMouseAction(key_action_t *keyAction, config_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
uint8_t mouseAction = readUInt8(buffer);
|
|
||||||
|
|
||||||
keyAction->type = KeyActionType_Mouse;
|
keyAction->type = KeyActionType_Mouse;
|
||||||
memset(&keyAction->mouse, 0, sizeof keyAction->mouse);
|
|
||||||
switch (mouseAction) {
|
uint8_t mouseAction = ReadUInt8(buffer);
|
||||||
case SerializedMouseAction_LeftClick:
|
if (mouseAction > SerializedMouseAction_Last) {
|
||||||
keyAction->mouse.buttonActions = MouseButton_Left;
|
return ParserError_InvalidSerializedMouseAction;
|
||||||
break;
|
|
||||||
case SerializedMouseAction_MiddleClick:
|
|
||||||
keyAction->mouse.buttonActions = MouseButton_Middle;
|
|
||||||
break;
|
|
||||||
case SerializedMouseAction_RightClick:
|
|
||||||
keyAction->mouse.buttonActions = MouseButton_Right;
|
|
||||||
break;
|
|
||||||
case SerializedMouseAction_MoveUp:
|
|
||||||
keyAction->mouse.moveActions = MouseMove_Up;
|
|
||||||
break;
|
|
||||||
case SerializedMouseAction_MoveDown:
|
|
||||||
keyAction->mouse.moveActions = MouseMove_Down;
|
|
||||||
break;
|
|
||||||
case SerializedMouseAction_MoveLeft:
|
|
||||||
keyAction->mouse.moveActions = MouseMove_Left;
|
|
||||||
break;
|
|
||||||
case SerializedMouseAction_MoveRight:
|
|
||||||
keyAction->mouse.moveActions = MouseMove_Right;
|
|
||||||
break;
|
|
||||||
case SerializedMouseAction_ScrollUp:
|
|
||||||
keyAction->mouse.scrollActions = MouseScroll_Up;
|
|
||||||
break;
|
|
||||||
case SerializedMouseAction_ScrollDown:
|
|
||||||
keyAction->mouse.scrollActions = MouseScroll_Down;
|
|
||||||
break;
|
|
||||||
case SerializedMouseAction_ScrollLeft:
|
|
||||||
keyAction->mouse.scrollActions = MouseScroll_Left;
|
|
||||||
break;
|
|
||||||
case SerializedMouseAction_ScrollRight:
|
|
||||||
keyAction->mouse.scrollActions = MouseScroll_Right;
|
|
||||||
break;
|
|
||||||
case SerializedMouseAction_Accelerate:
|
|
||||||
keyAction->mouse.moveActions = MouseMove_Accelerate;
|
|
||||||
break;
|
|
||||||
case SerializedMouseAction_Decelerate:
|
|
||||||
keyAction->mouse.moveActions = MouseMove_Decelerate;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return ParserError_InvalidSerializedMouseAction;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset(&keyAction->mouseAction, 0, sizeof keyAction->mouseAction);
|
||||||
|
keyAction->mouseAction = mouseAction;
|
||||||
|
|
||||||
return ParserError_Success;
|
return ParserError_Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
static parser_error_t parseKeyAction(key_action_t *keyAction, config_buffer_t *buffer)
|
static parser_error_t parseKeyAction(key_action_t *keyAction, config_buffer_t *buffer)
|
||||||
{
|
{
|
||||||
uint8_t keyActionType = readUInt8(buffer);
|
uint8_t keyActionType = ReadUInt8(buffer);
|
||||||
|
|
||||||
switch (keyActionType) {
|
switch (keyActionType) {
|
||||||
case SerializedKeyActionType_None:
|
case SerializedKeyActionType_None:
|
||||||
@@ -153,10 +116,10 @@ static parser_error_t parseKeyAction(key_action_t *keyAction, config_buffer_t *b
|
|||||||
return ParserError_InvalidSerializedKeyActionType;
|
return ParserError_InvalidSerializedKeyActionType;
|
||||||
}
|
}
|
||||||
|
|
||||||
static parser_error_t parseKeyActions(uint8_t targetLayer, config_buffer_t *buffer, uint8_t moduleId, uint8_t pointerRole)
|
static parser_error_t parseKeyActions(uint8_t targetLayer, config_buffer_t *buffer, uint8_t moduleId)
|
||||||
{
|
{
|
||||||
parser_error_t errorCode;
|
parser_error_t errorCode;
|
||||||
uint16_t actionCount = readCompactLength(buffer);
|
uint16_t actionCount = ReadCompactLength(buffer);
|
||||||
key_action_t dummyKeyAction;
|
key_action_t dummyKeyAction;
|
||||||
|
|
||||||
if (actionCount > MAX_KEY_COUNT_PER_MODULE) {
|
if (actionCount > MAX_KEY_COUNT_PER_MODULE) {
|
||||||
@@ -173,16 +136,14 @@ static parser_error_t parseKeyActions(uint8_t targetLayer, config_buffer_t *buff
|
|||||||
|
|
||||||
static parser_error_t parseModule(config_buffer_t *buffer, uint8_t layer)
|
static parser_error_t parseModule(config_buffer_t *buffer, uint8_t layer)
|
||||||
{
|
{
|
||||||
uint8_t moduleId = readUInt8(buffer);
|
uint8_t moduleId = ReadUInt8(buffer);
|
||||||
uint8_t pointerRole = readUInt8(buffer);
|
return parseKeyActions(layer, buffer, moduleId);
|
||||||
|
|
||||||
return parseKeyActions(layer, buffer, moduleId, pointerRole);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static parser_error_t parseLayer(config_buffer_t *buffer, uint8_t layer)
|
static parser_error_t parseLayer(config_buffer_t *buffer, uint8_t layer)
|
||||||
{
|
{
|
||||||
parser_error_t errorCode;
|
parser_error_t errorCode;
|
||||||
uint16_t moduleCount = readCompactLength(buffer);
|
uint16_t moduleCount = ReadCompactLength(buffer);
|
||||||
|
|
||||||
if (moduleCount > SLOT_COUNT) {
|
if (moduleCount > SLOT_COUNT) {
|
||||||
return ParserError_InvalidModuleCount;
|
return ParserError_InvalidModuleCount;
|
||||||
@@ -203,11 +164,11 @@ parser_error_t ParseKeymap(config_buffer_t *buffer, uint8_t keymapIdx, uint8_t k
|
|||||||
uint16_t abbreviationLen;
|
uint16_t abbreviationLen;
|
||||||
uint16_t nameLen;
|
uint16_t nameLen;
|
||||||
uint16_t descriptionLen;
|
uint16_t descriptionLen;
|
||||||
const char *abbreviation = readString(buffer, &abbreviationLen);
|
const char *abbreviation = ReadString(buffer, &abbreviationLen);
|
||||||
bool isDefault = readBool(buffer);
|
bool isDefault = ReadBool(buffer);
|
||||||
const char *name = readString(buffer, &nameLen);
|
const char *name = ReadString(buffer, &nameLen);
|
||||||
const char *description = readString(buffer, &descriptionLen);
|
const char *description = ReadString(buffer, &descriptionLen);
|
||||||
uint16_t layerCount = readCompactLength(buffer);
|
uint16_t layerCount = ReadCompactLength(buffer);
|
||||||
|
|
||||||
(void)name;
|
(void)name;
|
||||||
(void)description;
|
(void)description;
|
||||||
|
|||||||
@@ -48,6 +48,10 @@
|
|||||||
SerializedMouseAction_ScrollRight,
|
SerializedMouseAction_ScrollRight,
|
||||||
SerializedMouseAction_Accelerate,
|
SerializedMouseAction_Accelerate,
|
||||||
SerializedMouseAction_Decelerate,
|
SerializedMouseAction_Decelerate,
|
||||||
|
SerializedMouseAction_Last = SerializedMouseAction_Decelerate,
|
||||||
|
SerializedMouseAction_Button_4,
|
||||||
|
SerializedMouseAction_Button_5,
|
||||||
|
SerializedMouseAction_Button_6,
|
||||||
} serialized_mouse_action_t;
|
} serialized_mouse_action_t;
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ parser_error_t parseKeyMacroAction(config_buffer_t *buffer, macro_action_t *macr
|
|||||||
keyMacroType >>= 2;
|
keyMacroType >>= 2;
|
||||||
type = keyMacroType & 0b11;
|
type = keyMacroType & 0b11;
|
||||||
keyMacroType >>= 2;
|
keyMacroType >>= 2;
|
||||||
scancode = keyMacroType & 0b10 ? readUInt8(buffer) : 0;
|
scancode = keyMacroType & 0b10 ? ReadUInt8(buffer) : 0;
|
||||||
modifierMask = keyMacroType & 0b01 ? readUInt8(buffer) : 0;
|
modifierMask = keyMacroType & 0b01 ? ReadUInt8(buffer) : 0;
|
||||||
macroAction->type = MacroActionType_Key;
|
macroAction->type = MacroActionType_Key;
|
||||||
macroAction->key.action = action;
|
macroAction->key.action = action;
|
||||||
macroAction->key.type = type;
|
macroAction->key.type = type;
|
||||||
@@ -26,7 +26,7 @@ parser_error_t parseKeyMacroAction(config_buffer_t *buffer, macro_action_t *macr
|
|||||||
parser_error_t parseMouseButtonMacroAction(config_buffer_t *buffer, macro_action_t *macroAction, serialized_macro_action_type_t macroActionType)
|
parser_error_t parseMouseButtonMacroAction(config_buffer_t *buffer, macro_action_t *macroAction, serialized_macro_action_type_t macroActionType)
|
||||||
{
|
{
|
||||||
uint8_t action = macroActionType - SerializedMacroActionType_MouseButtonMacroAction;
|
uint8_t action = macroActionType - SerializedMacroActionType_MouseButtonMacroAction;
|
||||||
uint8_t mouseButtonsMask = readUInt8(buffer);
|
uint8_t mouseButtonsMask = ReadUInt8(buffer);
|
||||||
|
|
||||||
macroAction->type = MacroActionType_MouseButton;
|
macroAction->type = MacroActionType_MouseButton;
|
||||||
macroAction->mouseButton.action = action;
|
macroAction->mouseButton.action = action;
|
||||||
@@ -36,8 +36,8 @@ parser_error_t parseMouseButtonMacroAction(config_buffer_t *buffer, macro_action
|
|||||||
|
|
||||||
parser_error_t parseMoveMouseMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
|
parser_error_t parseMoveMouseMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
|
||||||
{
|
{
|
||||||
int16_t x = readInt16(buffer);
|
int16_t x = ReadInt16(buffer);
|
||||||
int16_t y = readInt16(buffer);
|
int16_t y = ReadInt16(buffer);
|
||||||
|
|
||||||
macroAction->type = MacroActionType_MoveMouse;
|
macroAction->type = MacroActionType_MoveMouse;
|
||||||
macroAction->moveMouse.x = x;
|
macroAction->moveMouse.x = x;
|
||||||
@@ -47,8 +47,8 @@ parser_error_t parseMoveMouseMacroAction(config_buffer_t *buffer, macro_action_t
|
|||||||
|
|
||||||
parser_error_t parseScrollMouseMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
|
parser_error_t parseScrollMouseMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
|
||||||
{
|
{
|
||||||
int16_t x = readInt16(buffer);
|
int16_t x = ReadInt16(buffer);
|
||||||
int16_t y = readInt16(buffer);
|
int16_t y = ReadInt16(buffer);
|
||||||
|
|
||||||
macroAction->type = MacroActionType_ScrollMouse;
|
macroAction->type = MacroActionType_ScrollMouse;
|
||||||
macroAction->scrollMouse.x = x;
|
macroAction->scrollMouse.x = x;
|
||||||
@@ -58,7 +58,7 @@ parser_error_t parseScrollMouseMacroAction(config_buffer_t *buffer, macro_action
|
|||||||
|
|
||||||
parser_error_t parseDelayMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
|
parser_error_t parseDelayMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
|
||||||
{
|
{
|
||||||
int16_t delay = readInt16(buffer);
|
int16_t delay = ReadInt16(buffer);
|
||||||
|
|
||||||
macroAction->type = MacroActionType_Delay;
|
macroAction->type = MacroActionType_Delay;
|
||||||
macroAction->delay.delay = delay;
|
macroAction->delay.delay = delay;
|
||||||
@@ -68,7 +68,7 @@ parser_error_t parseDelayMacroAction(config_buffer_t *buffer, macro_action_t *ma
|
|||||||
parser_error_t parseTextMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
|
parser_error_t parseTextMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
|
||||||
{
|
{
|
||||||
uint16_t textLen;
|
uint16_t textLen;
|
||||||
const char *text = readString(buffer, &textLen);
|
const char *text = ReadString(buffer, &textLen);
|
||||||
|
|
||||||
macroAction->type = MacroActionType_Text;
|
macroAction->type = MacroActionType_Text;
|
||||||
macroAction->text.text = text;
|
macroAction->text.text = text;
|
||||||
@@ -78,7 +78,7 @@ parser_error_t parseTextMacroAction(config_buffer_t *buffer, macro_action_t *mac
|
|||||||
|
|
||||||
parser_error_t ParseMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
|
parser_error_t ParseMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
|
||||||
{
|
{
|
||||||
uint8_t macroActionType = readUInt8(buffer);
|
uint8_t macroActionType = ReadUInt8(buffer);
|
||||||
|
|
||||||
switch (macroActionType) {
|
switch (macroActionType) {
|
||||||
case SerializedMacroActionType_KeyMacroAction ... SerializedMacroActionType_LastKeyMacroAction:
|
case SerializedMacroActionType_KeyMacroAction ... SerializedMacroActionType_LastKeyMacroAction:
|
||||||
@@ -101,10 +101,10 @@ parser_error_t ParseMacro(config_buffer_t *buffer, uint8_t macroIdx)
|
|||||||
{
|
{
|
||||||
parser_error_t errorCode;
|
parser_error_t errorCode;
|
||||||
uint16_t nameLen;
|
uint16_t nameLen;
|
||||||
bool isLooped = readBool(buffer);
|
bool isLooped = ReadBool(buffer);
|
||||||
bool isPrivate = readBool(buffer);
|
bool isPrivate = ReadBool(buffer);
|
||||||
const char *name = readString(buffer, &nameLen);
|
const char *name = ReadString(buffer, &nameLen);
|
||||||
uint16_t macroActionsCount = readCompactLength(buffer);
|
uint16_t macroActionsCount = ReadCompactLength(buffer);
|
||||||
uint16_t firstMacroActionOffset = buffer->offset;
|
uint16_t firstMacroActionOffset = buffer->offset;
|
||||||
macro_action_t dummyMacroAction;
|
macro_action_t dummyMacroAction;
|
||||||
|
|
||||||
|
|||||||
@@ -4,12 +4,13 @@
|
|||||||
#include "i2c.h"
|
#include "i2c.h"
|
||||||
#include "eeprom.h"
|
#include "eeprom.h"
|
||||||
#include "config_parser/config_globals.h"
|
#include "config_parser/config_globals.h"
|
||||||
|
#include "buffer.h"
|
||||||
|
|
||||||
bool IsEepromBusy;
|
bool IsEepromBusy;
|
||||||
static eeprom_operation_t CurrentEepromOperation;
|
static eeprom_operation_t CurrentEepromOperation;
|
||||||
static config_buffer_id_t CurrentConfigBufferId;
|
static config_buffer_id_t CurrentConfigBufferId;
|
||||||
status_t LastEepromTransferStatus;
|
status_t LastEepromTransferStatus;
|
||||||
void (*SuccessCallback)();
|
void (*SuccessCallback)(void);
|
||||||
|
|
||||||
static i2c_master_handle_t i2cHandle;
|
static i2c_master_handle_t i2cHandle;
|
||||||
static i2c_master_transfer_t i2cTransfer;
|
static i2c_master_transfer_t i2cTransfer;
|
||||||
@@ -20,7 +21,6 @@ static uint16_t eepromStartAddress;
|
|||||||
static uint16_t sourceLength;
|
static uint16_t sourceLength;
|
||||||
static uint8_t writeLength;
|
static uint8_t writeLength;
|
||||||
static bool isReadSent;
|
static bool isReadSent;
|
||||||
static uint8_t addressBuffer[EEPROM_ADDRESS_LENGTH];
|
|
||||||
|
|
||||||
static status_t i2cAsyncWrite(uint8_t *data, size_t dataSize)
|
static status_t i2cAsyncWrite(uint8_t *data, size_t dataSize)
|
||||||
{
|
{
|
||||||
@@ -43,12 +43,10 @@ static status_t i2cAsyncRead(uint8_t *data, size_t dataSize)
|
|||||||
static status_t writePage(void)
|
static status_t writePage(void)
|
||||||
{
|
{
|
||||||
static uint8_t buffer[EEPROM_BUFFER_SIZE];
|
static uint8_t buffer[EEPROM_BUFFER_SIZE];
|
||||||
uint16_t targetEepromOffset = sourceOffset + eepromStartAddress;
|
SetBufferUint16Be(buffer, 0, eepromStartAddress + sourceOffset);
|
||||||
buffer[0] = targetEepromOffset >> 8;
|
|
||||||
buffer[1] = targetEepromOffset & 0xff;
|
|
||||||
writeLength = MIN(sourceLength - sourceOffset, EEPROM_PAGE_SIZE);
|
writeLength = MIN(sourceLength - sourceOffset, EEPROM_PAGE_SIZE);
|
||||||
memcpy(buffer+EEPROM_ADDRESS_LENGTH, sourceBuffer+sourceOffset, writeLength);
|
memcpy(buffer+EEPROM_ADDRESS_SIZE, sourceBuffer+sourceOffset, writeLength);
|
||||||
status_t status = i2cAsyncWrite(buffer, writeLength+EEPROM_ADDRESS_LENGTH);
|
status_t status = i2cAsyncWrite(buffer, writeLength+EEPROM_ADDRESS_SIZE);
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,17 +102,17 @@ status_t EEPROM_LaunchTransfer(eeprom_operation_t operation, config_buffer_id_t
|
|||||||
|
|
||||||
CurrentEepromOperation = operation;
|
CurrentEepromOperation = operation;
|
||||||
CurrentConfigBufferId = config_buffer_id;
|
CurrentConfigBufferId = config_buffer_id;
|
||||||
|
|
||||||
SuccessCallback = successCallback;
|
SuccessCallback = successCallback;
|
||||||
|
|
||||||
bool isHardwareConfig = CurrentConfigBufferId == ConfigBufferId_HardwareConfig;
|
bool isHardwareConfig = CurrentConfigBufferId == ConfigBufferId_HardwareConfig;
|
||||||
eepromStartAddress = isHardwareConfig ? 0 : HARDWARE_CONFIG_SIZE;
|
eepromStartAddress = isHardwareConfig ? 0 : HARDWARE_CONFIG_SIZE;
|
||||||
addressBuffer[0] = eepromStartAddress >> 8;
|
|
||||||
addressBuffer[1] = eepromStartAddress & 0xff;
|
|
||||||
|
|
||||||
switch (CurrentEepromOperation) {
|
switch (CurrentEepromOperation) {
|
||||||
case EepromOperation_Read:
|
case EepromOperation_Read:
|
||||||
isReadSent = false;
|
isReadSent = false;
|
||||||
LastEepromTransferStatus = i2cAsyncWrite(addressBuffer, EEPROM_ADDRESS_LENGTH);
|
static uint8_t addressBuffer[EEPROM_ADDRESS_SIZE];
|
||||||
|
SetBufferUint16Be(addressBuffer, 0, eepromStartAddress);
|
||||||
|
LastEepromTransferStatus = i2cAsyncWrite(addressBuffer, EEPROM_ADDRESS_SIZE);
|
||||||
break;
|
break;
|
||||||
case EepromOperation_Write:
|
case EepromOperation_Write:
|
||||||
sourceBuffer = ConfigBufferIdToConfigBuffer(CurrentConfigBufferId)->buffer;
|
sourceBuffer = ConfigBufferIdToConfigBuffer(CurrentConfigBufferId)->buffer;
|
||||||
@@ -127,3 +125,8 @@ status_t EEPROM_LaunchTransfer(eeprom_operation_t operation, config_buffer_id_t
|
|||||||
IsEepromBusy = LastEepromTransferStatus == kStatus_Success;
|
IsEepromBusy = LastEepromTransferStatus == kStatus_Success;
|
||||||
return LastEepromTransferStatus;
|
return LastEepromTransferStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsEepromOperationValid(eeprom_operation_t operation)
|
||||||
|
{
|
||||||
|
return operation == EepromOperation_Read || operation == EepromOperation_Write;
|
||||||
|
}
|
||||||
|
|||||||
@@ -11,9 +11,9 @@
|
|||||||
#define HARDWARE_CONFIG_SIZE 64
|
#define HARDWARE_CONFIG_SIZE 64
|
||||||
#define USER_CONFIG_SIZE (EEPROM_SIZE - HARDWARE_CONFIG_SIZE)
|
#define USER_CONFIG_SIZE (EEPROM_SIZE - HARDWARE_CONFIG_SIZE)
|
||||||
|
|
||||||
#define EEPROM_ADDRESS_LENGTH 2
|
#define EEPROM_ADDRESS_SIZE 2
|
||||||
#define EEPROM_PAGE_SIZE 64
|
#define EEPROM_PAGE_SIZE 64
|
||||||
#define EEPROM_BUFFER_SIZE (EEPROM_ADDRESS_LENGTH + EEPROM_PAGE_SIZE)
|
#define EEPROM_BUFFER_SIZE (EEPROM_ADDRESS_SIZE + EEPROM_PAGE_SIZE)
|
||||||
|
|
||||||
// Typedefs:
|
// Typedefs:
|
||||||
|
|
||||||
@@ -31,5 +31,6 @@
|
|||||||
|
|
||||||
void EEPROM_Init(void);
|
void EEPROM_Init(void);
|
||||||
status_t EEPROM_LaunchTransfer(eeprom_operation_t operation, config_buffer_id_t config_buffer_id, void (*successCallback));
|
status_t EEPROM_LaunchTransfer(eeprom_operation_t operation, config_buffer_id_t config_buffer_id, void (*successCallback));
|
||||||
|
bool IsEepromOperationValid(eeprom_operation_t operation);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -10,10 +10,12 @@
|
|||||||
|
|
||||||
// Main bus
|
// Main bus
|
||||||
|
|
||||||
#define I2C_MAIN_BUS_BASEADDR I2C0
|
#define I2C_MAIN_BUS_BASEADDR I2C0
|
||||||
#define I2C_MASTER_BUS_CLK_SRC I2C0_CLK_SRC
|
#define I2C_MAIN_BUS_IRQ_ID I2C0_IRQn
|
||||||
#define I2C_MAIN_BUS_BAUD_RATE 100000 // 100 kHz works even with a 20 meter long bridge cable.
|
#define I2C_MAIN_BUS_CLK_SRC I2C0_CLK_SRC
|
||||||
#define I2C_MAIN_BUS_MUX kPORT_MuxAlt7
|
#define I2C_MAIN_BUS_NORMAL_BAUD_RATE 100000
|
||||||
|
#define I2C_MAIN_BUS_BUSPAL_BAUD_RATE 30000
|
||||||
|
#define I2C_MAIN_BUS_MUX kPORT_MuxAlt7
|
||||||
|
|
||||||
#define I2C_MAIN_BUS_SDA_GPIO GPIOD
|
#define I2C_MAIN_BUS_SDA_GPIO GPIOD
|
||||||
#define I2C_MAIN_BUS_SDA_PORT PORTD
|
#define I2C_MAIN_BUS_SDA_PORT PORTD
|
||||||
@@ -28,8 +30,9 @@
|
|||||||
// EEPROM bus
|
// EEPROM bus
|
||||||
|
|
||||||
#define I2C_EEPROM_BUS_BASEADDR I2C1
|
#define I2C_EEPROM_BUS_BASEADDR I2C1
|
||||||
|
#define I2C_EEPROM_BUS_IRQ_ID I2C1_IRQn
|
||||||
#define I2C_EEPROM_BUS_CLK_SRC I2C1_CLK_SRC
|
#define I2C_EEPROM_BUS_CLK_SRC I2C1_CLK_SRC
|
||||||
#define I2C_EEPROM_BUS_BAUD_RATE 1000000 // 1 Mhz is the maximum speed of the EEPROM.
|
#define I2C_EEPROM_BUS_BAUD_RATE 1000000 // 1 Mhz is the maximum speed of the EEPROM.
|
||||||
#define I2C_EEPROM_BUS_MUX kPORT_MuxAlt2
|
#define I2C_EEPROM_BUS_MUX kPORT_MuxAlt2
|
||||||
|
|
||||||
#define I2C_EEPROM_BUS_SDA_PORT PORTC
|
#define I2C_EEPROM_BUS_SDA_PORT PORTC
|
||||||
|
|||||||
25
right/src/i2c_error_logger.c
Normal file
25
right/src/i2c_error_logger.c
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#include "fsl_i2c.h"
|
||||||
|
#include "i2c_error_logger.h"
|
||||||
|
|
||||||
|
i2c_slave_error_counter_t I2cSlaveErrorCounters[MAX_SLAVE_COUNT];
|
||||||
|
|
||||||
|
void LogI2cError(uint8_t slaveId, status_t status)
|
||||||
|
{
|
||||||
|
i2c_slave_error_counter_t *i2cSlaveErrorCounter = I2cSlaveErrorCounters + slaveId;
|
||||||
|
uint8_t errorIdx;
|
||||||
|
|
||||||
|
for (errorIdx=0; errorIdx<i2cSlaveErrorCounter->errorTypeCount; errorIdx++) {
|
||||||
|
i2c_error_count_t *currentI2cError = i2cSlaveErrorCounter->errors + errorIdx;
|
||||||
|
if (currentI2cError->status == status) {
|
||||||
|
currentI2cError->count++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errorIdx == i2cSlaveErrorCounter->errorTypeCount && errorIdx < MAX_LOGGED_I2C_ERROR_TYPES_PER_SLAVE) {
|
||||||
|
i2cSlaveErrorCounter->errorTypeCount++;
|
||||||
|
i2c_error_count_t *currentI2cError = i2cSlaveErrorCounter->errors + errorIdx;
|
||||||
|
currentI2cError->status = status;
|
||||||
|
currentI2cError->count = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
33
right/src/i2c_error_logger.h
Normal file
33
right/src/i2c_error_logger.h
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#ifndef __I2C_ERROR_LOGGER_H__
|
||||||
|
#define __I2C_ERROR_LOGGER_H__
|
||||||
|
|
||||||
|
// Includes:
|
||||||
|
|
||||||
|
#include "fsl_common.h"
|
||||||
|
#include "slave_scheduler.h"
|
||||||
|
|
||||||
|
// Macros:
|
||||||
|
|
||||||
|
#define MAX_LOGGED_I2C_ERROR_TYPES_PER_SLAVE 7
|
||||||
|
|
||||||
|
// Typedefs:
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
status_t status;
|
||||||
|
uint32_t count;
|
||||||
|
} i2c_error_count_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint8_t errorTypeCount;
|
||||||
|
i2c_error_count_t errors[MAX_LOGGED_I2C_ERROR_TYPES_PER_SLAVE];
|
||||||
|
} i2c_slave_error_counter_t;
|
||||||
|
|
||||||
|
// Variables:
|
||||||
|
|
||||||
|
extern i2c_slave_error_counter_t I2cSlaveErrorCounters[MAX_SLAVE_COUNT];
|
||||||
|
|
||||||
|
// Functions:
|
||||||
|
|
||||||
|
void LogI2cError(uint8_t slaveId, status_t status);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -5,11 +5,10 @@
|
|||||||
#include "fsl_gpio.h"
|
#include "fsl_gpio.h"
|
||||||
#include "i2c.h"
|
#include "i2c.h"
|
||||||
#include "i2c_watchdog.h"
|
#include "i2c_watchdog.h"
|
||||||
#include "slave_scheduler.h"
|
|
||||||
#include "init_peripherals.h"
|
#include "init_peripherals.h"
|
||||||
|
|
||||||
uint32_t I2cWatchdog_OuterCounter;
|
uint32_t I2cWatchdog_WatchCounter;
|
||||||
uint32_t I2cWatchdog_InnerCounter;
|
uint32_t I2cWatchdog_RecoveryCounter;
|
||||||
|
|
||||||
static uint32_t prevWatchdogCounter;
|
static uint32_t prevWatchdogCounter;
|
||||||
|
|
||||||
@@ -18,19 +17,15 @@ static uint32_t prevWatchdogCounter;
|
|||||||
// This method relies on a patched KSDK which increments I2C_Watchdog upon I2C transfers.
|
// This method relies on a patched KSDK which increments I2C_Watchdog upon I2C transfers.
|
||||||
void PIT_I2C_WATCHDOG_HANDLER(void)
|
void PIT_I2C_WATCHDOG_HANDLER(void)
|
||||||
{
|
{
|
||||||
I2cWatchdog_OuterCounter++;
|
I2cWatchdog_WatchCounter++;
|
||||||
|
|
||||||
if (I2C_Watchdog == prevWatchdogCounter) { // Restart I2C if there haven't been any interrupts recently
|
if (I2C_Watchdog == prevWatchdogCounter) { // Restart I2C if there haven't been any interrupts recently
|
||||||
I2cWatchdog_InnerCounter++;
|
I2cWatchdog_RecoveryCounter++;
|
||||||
i2c_master_config_t masterConfig;
|
ReinitI2cMainBus();
|
||||||
I2C_MasterGetDefaultConfig(&masterConfig);
|
|
||||||
I2C_MasterDeinit(I2C_MAIN_BUS_BASEADDR);
|
|
||||||
InitI2cMainBus();
|
|
||||||
InitSlaveScheduler();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
prevWatchdogCounter = I2C_Watchdog;
|
prevWatchdogCounter = I2C_Watchdog;
|
||||||
|
PIT_ClearStatusFlags(PIT, PIT_I2C_WATCHDOG_CHANNEL, PIT_TFLG_TIF_MASK);
|
||||||
PIT_ClearStatusFlags(PIT, kPIT_Chnl_0, PIT_TFLG_TIF_MASK);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitI2cWatchdog(void)
|
void InitI2cWatchdog(void)
|
||||||
@@ -38,8 +33,8 @@ void InitI2cWatchdog(void)
|
|||||||
pit_config_t pitConfig;
|
pit_config_t pitConfig;
|
||||||
PIT_GetDefaultConfig(&pitConfig);
|
PIT_GetDefaultConfig(&pitConfig);
|
||||||
PIT_Init(PIT, &pitConfig);
|
PIT_Init(PIT, &pitConfig);
|
||||||
PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(I2C_WATCHDOG_INTERVAL_USEC, PIT_SOURCE_CLOCK));
|
PIT_SetTimerPeriod(PIT, PIT_I2C_WATCHDOG_CHANNEL, USEC_TO_COUNT(I2C_WATCHDOG_INTERVAL_USEC, PIT_SOURCE_CLOCK));
|
||||||
PIT_EnableInterrupts(PIT, kPIT_Chnl_0, kPIT_TimerInterruptEnable);
|
PIT_EnableInterrupts(PIT, PIT_I2C_WATCHDOG_CHANNEL, kPIT_TimerInterruptEnable);
|
||||||
EnableIRQ(PIT_I2C_WATCHDOG_IRQ_ID);
|
EnableIRQ(PIT_I2C_WATCHDOG_IRQ_ID);
|
||||||
PIT_StartTimer(PIT, kPIT_Chnl_0);
|
PIT_StartTimer(PIT, PIT_I2C_WATCHDOG_CHANNEL);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
#ifndef __I2C_WATCHDOG_H__
|
#ifndef __I2C_WATCHDOG_H__
|
||||||
#define __I2C_WATCHDOG_H__
|
#define __I2C_WATCHDOG_H__
|
||||||
|
|
||||||
|
// Includes:
|
||||||
|
|
||||||
|
#include "peripherals/pit.h"
|
||||||
|
|
||||||
// Macros:
|
// Macros:
|
||||||
|
|
||||||
#define I2C_WATCHDOG_INTERVAL_USEC 100000
|
#define I2C_WATCHDOG_INTERVAL_USEC 100000
|
||||||
|
|
||||||
#define PIT_I2C_WATCHDOG_HANDLER PIT0_IRQHandler
|
|
||||||
#define PIT_I2C_WATCHDOG_IRQ_ID PIT0_IRQn
|
|
||||||
#define PIT_SOURCE_CLOCK CLOCK_GetFreq(kCLOCK_BusClk)
|
|
||||||
|
|
||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
extern uint32_t I2cWatchdog_InnerCounter;
|
extern uint32_t I2cWatchdog_RecoveryCounter;
|
||||||
extern uint32_t I2cWatchdog_OuterCounter;
|
extern uint32_t I2cWatchdog_WatchCounter;
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
|
|||||||
@@ -8,17 +8,36 @@
|
|||||||
#include "peripherals/led_driver.h"
|
#include "peripherals/led_driver.h"
|
||||||
#include "peripherals/merge_sensor.h"
|
#include "peripherals/merge_sensor.h"
|
||||||
#include "led_pwm.h"
|
#include "led_pwm.h"
|
||||||
#include "slave_scheduler.h"
|
|
||||||
#include "peripherals/adc.h"
|
#include "peripherals/adc.h"
|
||||||
#include "init_peripherals.h"
|
#include "init_peripherals.h"
|
||||||
#include "eeprom.h"
|
#include "eeprom.h"
|
||||||
#include "microseconds/microseconds_pit.c"
|
#include "timer.h"
|
||||||
|
#include "key_debouncer.h"
|
||||||
|
#include "usb_api.h"
|
||||||
|
#include "slave_scheduler.h"
|
||||||
|
#include "bootloader/wormhole.h"
|
||||||
|
|
||||||
void InitInterruptPriorities(void)
|
bool IsBusPalOn;
|
||||||
|
uint32_t I2cMainBusRequestedBaudRateBps = I2C_MAIN_BUS_NORMAL_BAUD_RATE;
|
||||||
|
uint32_t I2cMainBusActualBaudRateBps;
|
||||||
|
|
||||||
|
void initBusPalState(void) {
|
||||||
|
IsBusPalOn = Wormhole.magicNumber == WORMHOLE_MAGIC_NUMBER && Wormhole.enumerationMode == EnumerationMode_BusPal;
|
||||||
|
if (IsBusPalOn) {
|
||||||
|
Wormhole.magicNumber = 0;
|
||||||
|
I2cMainBusRequestedBaudRateBps = I2C_MAIN_BUS_BUSPAL_BAUD_RATE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void initInterruptPriorities(void)
|
||||||
{
|
{
|
||||||
NVIC_SetPriority(I2C0_IRQn, 1);
|
NVIC_SetPriority(PIT_I2C_WATCHDOG_IRQ_ID, 1);
|
||||||
NVIC_SetPriority(I2C1_IRQn, 1);
|
NVIC_SetPriority(PIT_TIMER_IRQ_ID, 2);
|
||||||
NVIC_SetPriority(USB0_IRQn, 1);
|
NVIC_SetPriority(PIT_KEY_SCANNER_IRQ_ID, 3);
|
||||||
|
NVIC_SetPriority(PIT_KEY_DEBOUNCER_IRQ_ID, 3);
|
||||||
|
NVIC_SetPriority(I2C_MAIN_BUS_IRQ_ID, 3);
|
||||||
|
NVIC_SetPriority(I2C_EEPROM_BUS_IRQ_ID, 3);
|
||||||
|
NVIC_SetPriority(USB_IRQ_ID, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void delay(void)
|
void delay(void)
|
||||||
@@ -55,7 +74,7 @@ void recoverI2c(void)
|
|||||||
delay();
|
delay();
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitI2cMainBus(void)
|
void initI2cMainBus(void)
|
||||||
{
|
{
|
||||||
CLOCK_EnableClock(I2C_MAIN_BUS_SDA_CLOCK);
|
CLOCK_EnableClock(I2C_MAIN_BUS_SDA_CLOCK);
|
||||||
CLOCK_EnableClock(I2C_MAIN_BUS_SCL_CLOCK);
|
CLOCK_EnableClock(I2C_MAIN_BUS_SCL_CLOCK);
|
||||||
@@ -73,9 +92,18 @@ void InitI2cMainBus(void)
|
|||||||
|
|
||||||
i2c_master_config_t masterConfig;
|
i2c_master_config_t masterConfig;
|
||||||
I2C_MasterGetDefaultConfig(&masterConfig);
|
I2C_MasterGetDefaultConfig(&masterConfig);
|
||||||
masterConfig.baudRate_Bps = I2C_MAIN_BUS_BAUD_RATE;
|
masterConfig.baudRate_Bps = I2cMainBusRequestedBaudRateBps;
|
||||||
uint32_t sourceClock = CLOCK_GetFreq(I2C_MASTER_BUS_CLK_SRC);
|
uint32_t sourceClock = CLOCK_GetFreq(I2C_MAIN_BUS_CLK_SRC);
|
||||||
I2C_MasterInit(I2C_MAIN_BUS_BASEADDR, &masterConfig, sourceClock);}
|
I2C_MasterInit(I2C_MAIN_BUS_BASEADDR, &masterConfig, sourceClock);
|
||||||
|
I2cMainBusActualBaudRateBps = I2C_ActualBaudRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReinitI2cMainBus(void)
|
||||||
|
{
|
||||||
|
I2C_MasterDeinit(I2C_MAIN_BUS_BASEADDR);
|
||||||
|
initI2cMainBus();
|
||||||
|
InitSlaveScheduler();
|
||||||
|
}
|
||||||
|
|
||||||
void initI2cEepromBus(void)
|
void initI2cEepromBus(void)
|
||||||
{
|
{
|
||||||
@@ -85,7 +113,6 @@ void initI2cEepromBus(void)
|
|||||||
.mux = I2C_EEPROM_BUS_MUX,
|
.mux = I2C_EEPROM_BUS_MUX,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
CLOCK_EnableClock(I2C_EEPROM_BUS_SDA_CLOCK);
|
CLOCK_EnableClock(I2C_EEPROM_BUS_SDA_CLOCK);
|
||||||
CLOCK_EnableClock(I2C_EEPROM_BUS_SCL_CLOCK);
|
CLOCK_EnableClock(I2C_EEPROM_BUS_SCL_CLOCK);
|
||||||
|
|
||||||
@@ -99,25 +126,27 @@ void initI2cEepromBus(void)
|
|||||||
I2C_MasterInit(I2C_EEPROM_BUS_BASEADDR, &masterConfig, sourceClock);
|
I2C_MasterInit(I2C_EEPROM_BUS_BASEADDR, &masterConfig, sourceClock);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitI2c(void)
|
void initI2c(void)
|
||||||
{
|
{
|
||||||
InitI2cMainBus();
|
initI2cMainBus();
|
||||||
initI2cEepromBus();
|
initI2cEepromBus();
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitPeripherals(void)
|
void InitPeripherals(void)
|
||||||
{
|
{
|
||||||
InitInterruptPriorities();
|
initBusPalState();
|
||||||
|
initInterruptPriorities();
|
||||||
|
Timer_Init();
|
||||||
InitLedDriver();
|
InitLedDriver();
|
||||||
InitResetButton();
|
InitResetButton();
|
||||||
InitMergeSensor();
|
InitMergeSensor();
|
||||||
ADC_Init();
|
ADC_Init();
|
||||||
InitI2c();
|
initI2c();
|
||||||
InitTestLed();
|
InitTestLed();
|
||||||
LedPwm_Init();
|
LedPwm_Init();
|
||||||
#ifdef I2C_WATCHDOG
|
#ifdef I2C_WATCHDOG
|
||||||
InitI2cWatchdog();
|
InitI2cWatchdog();
|
||||||
#endif
|
#endif
|
||||||
|
InitKeyDebouncer();
|
||||||
EEPROM_Init();
|
EEPROM_Init();
|
||||||
//microseconds_init();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,15 @@
|
|||||||
|
|
||||||
#include "fsl_common.h"
|
#include "fsl_common.h"
|
||||||
|
|
||||||
|
// Variables:
|
||||||
|
|
||||||
|
extern bool IsBusPalOn;
|
||||||
|
extern uint32_t I2cMainBusRequestedBaudRateBps;
|
||||||
|
extern uint32_t I2cMainBusActualBaudRateBps;
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
void InitPeripherals(void);
|
void InitPeripherals(void);
|
||||||
void InitI2cMainBus(void);
|
void ReinitI2cMainBus(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#ifndef __ACTION_H__
|
#ifndef __KEY_ACTION_H__
|
||||||
#define __ACTION_H__
|
#define __KEY_ACTION_H__
|
||||||
|
|
||||||
// Includes:
|
// Includes:
|
||||||
|
|
||||||
@@ -7,16 +7,8 @@
|
|||||||
#include "attributes.h"
|
#include "attributes.h"
|
||||||
#include "lufa/HIDClassCommon.h"
|
#include "lufa/HIDClassCommon.h"
|
||||||
#include "usb_composite_device.h"
|
#include "usb_composite_device.h"
|
||||||
#include "main.h"
|
|
||||||
#include "module.h"
|
#include "module.h"
|
||||||
|
#include "config_parser/parse_keymap.h"
|
||||||
// Macros:
|
|
||||||
|
|
||||||
#define MOUSE_WHEEL_SPEED 1
|
|
||||||
#define MOUSE_WHEEL_DIVISOR 4
|
|
||||||
|
|
||||||
#define MOUSE_MAX_SPEED 10
|
|
||||||
#define MOUSE_SPEED_ACCEL_DIVISOR 50
|
|
||||||
|
|
||||||
// Typedefs:
|
// Typedefs:
|
||||||
|
|
||||||
@@ -36,48 +28,33 @@
|
|||||||
KeystrokeType_System,
|
KeystrokeType_System,
|
||||||
} keystroke_type_t;
|
} keystroke_type_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
SwitchLayerMode_Hold,
|
||||||
|
SwitchLayerMode_HoldAndDoubleTapToggle,
|
||||||
|
SwitchLayerMode_Toggle,
|
||||||
|
} switch_layer_mode_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
MouseButton_Left = 1 << 0,
|
MouseButton_Left = 1 << 0,
|
||||||
MouseButton_Right = 1 << 1,
|
MouseButton_Right = 1 << 1,
|
||||||
MouseButton_Middle = 1 << 2,
|
MouseButton_Middle = 1 << 2,
|
||||||
MouseButton_4 = 1 << 3,
|
MouseButton_4 = 1 << 3,
|
||||||
MouseButton_5 = 1 << 4,
|
MouseButton_5 = 1 << 4,
|
||||||
MouseButton_t = 1 << 5,
|
MouseButton_6 = 1 << 5,
|
||||||
} mouse_button_t;
|
} mouse_button_t;
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
MouseMove_Up = 1 << 0,
|
|
||||||
MouseMove_Down = 1 << 1,
|
|
||||||
MouseMove_Left = 1 << 2,
|
|
||||||
MouseMove_Right = 1 << 3,
|
|
||||||
|
|
||||||
MouseMove_Accelerate = 1 << 4,
|
|
||||||
MouseMove_Decelerate = 1 << 5,
|
|
||||||
} mouse_move_action_t;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
MouseScroll_Up = 1 << 0,
|
|
||||||
MouseScroll_Down = 1 << 1,
|
|
||||||
MouseScroll_Left = 1 << 2,
|
|
||||||
MouseScroll_Right = 1 << 3,
|
|
||||||
} mouse_scroll_t;
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t type;
|
uint8_t type;
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
keystroke_type_t keystrokeType;
|
keystroke_type_t keystrokeType;
|
||||||
uint8_t longPressAction;
|
uint8_t secondaryRole;
|
||||||
uint8_t modifiers;
|
uint8_t modifiers;
|
||||||
uint16_t scancode;
|
uint16_t scancode;
|
||||||
} ATTR_PACKED keystroke;
|
} ATTR_PACKED keystroke;
|
||||||
|
serialized_mouse_action_t mouseAction;
|
||||||
struct {
|
struct {
|
||||||
mouse_button_t buttonActions;
|
switch_layer_mode_t mode;
|
||||||
mouse_scroll_t scrollActions;
|
|
||||||
mouse_move_action_t moveActions;
|
|
||||||
} ATTR_PACKED mouse;
|
|
||||||
struct {
|
|
||||||
bool isToggle;
|
|
||||||
uint8_t layer;
|
uint8_t layer;
|
||||||
} ATTR_PACKED switchLayer;
|
} ATTR_PACKED switchLayer;
|
||||||
struct {
|
struct {
|
||||||
|
|||||||
32
right/src/key_debouncer.c
Normal file
32
right/src/key_debouncer.c
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#include "key_debouncer.h"
|
||||||
|
#include "fsl_pit.h"
|
||||||
|
#include "slot.h"
|
||||||
|
#include "module.h"
|
||||||
|
#include "key_states.h"
|
||||||
|
#include "peripherals/test_led.h"
|
||||||
|
|
||||||
|
void PIT_KEY_DEBOUNCER_HANDLER(void)
|
||||||
|
{
|
||||||
|
TEST_LED_TOGGLE();
|
||||||
|
for (uint8_t slotId=0; slotId<SLOT_COUNT; slotId++) {
|
||||||
|
for (uint8_t keyId=0; keyId<MAX_KEY_COUNT_PER_MODULE; keyId++) {
|
||||||
|
uint8_t *debounceCounter = &KeyStates[slotId][keyId].debounceCounter;
|
||||||
|
if (*debounceCounter < 0xff) {
|
||||||
|
(*debounceCounter)++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PIT_ClearStatusFlags(PIT, PIT_KEY_DEBOUNCER_CHANNEL, PIT_TFLG_TIF_MASK);
|
||||||
|
}
|
||||||
|
|
||||||
|
void InitKeyDebouncer(void)
|
||||||
|
{
|
||||||
|
pit_config_t pitConfig;
|
||||||
|
PIT_GetDefaultConfig(&pitConfig);
|
||||||
|
PIT_Init(PIT, &pitConfig);
|
||||||
|
PIT_SetTimerPeriod(PIT, PIT_KEY_DEBOUNCER_CHANNEL, MSEC_TO_COUNT(KEY_DEBOUNCER_INTERVAL_MSEC, PIT_SOURCE_CLOCK));
|
||||||
|
PIT_EnableInterrupts(PIT, PIT_KEY_DEBOUNCER_CHANNEL, kPIT_TimerInterruptEnable);
|
||||||
|
EnableIRQ(PIT_KEY_DEBOUNCER_IRQ_ID);
|
||||||
|
PIT_StartTimer(PIT, PIT_KEY_DEBOUNCER_CHANNEL);
|
||||||
|
}
|
||||||
18
right/src/key_debouncer.h
Normal file
18
right/src/key_debouncer.h
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#ifndef __KEY_DEBOUNCER_H__
|
||||||
|
#define __KEY_DEBOUNCER_H__
|
||||||
|
|
||||||
|
// Includes:
|
||||||
|
|
||||||
|
#include "peripherals/pit.h"
|
||||||
|
#include "fsl_common.h"
|
||||||
|
|
||||||
|
// Macros:
|
||||||
|
|
||||||
|
#define KEY_DEBOUNCER_INTERVAL_MSEC 1
|
||||||
|
#define KEY_DEBOUNCER_TIMEOUT_MSEC 10
|
||||||
|
|
||||||
|
// Functions:
|
||||||
|
|
||||||
|
void InitKeyDebouncer(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
22
right/src/key_scanner.c
Normal file
22
right/src/key_scanner.c
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#include "fsl_pit.h"
|
||||||
|
#include "key_scanner.h"
|
||||||
|
|
||||||
|
uint32_t KeyScannerCounter;
|
||||||
|
|
||||||
|
void PIT_KEY_SCANNER_HANDLER(void)
|
||||||
|
{
|
||||||
|
KeyMatrix_ScanRow(&RightKeyMatrix);
|
||||||
|
KeyScannerCounter++;
|
||||||
|
PIT_ClearStatusFlags(PIT, PIT_KEY_SCANNER_CHANNEL, PIT_TFLG_TIF_MASK);
|
||||||
|
}
|
||||||
|
|
||||||
|
void InitKeyScanner(void)
|
||||||
|
{
|
||||||
|
pit_config_t pitConfig;
|
||||||
|
PIT_GetDefaultConfig(&pitConfig);
|
||||||
|
PIT_Init(PIT, &pitConfig);
|
||||||
|
PIT_SetTimerPeriod(PIT, PIT_KEY_SCANNER_CHANNEL, USEC_TO_COUNT(KEY_SCANNER_INTERVAL_USEC, PIT_SOURCE_CLOCK));
|
||||||
|
PIT_EnableInterrupts(PIT, PIT_KEY_SCANNER_CHANNEL, kPIT_TimerInterruptEnable);
|
||||||
|
EnableIRQ(PIT_KEY_SCANNER_IRQ_ID);
|
||||||
|
PIT_StartTimer(PIT, PIT_KEY_SCANNER_CHANNEL);
|
||||||
|
}
|
||||||
21
right/src/key_scanner.h
Normal file
21
right/src/key_scanner.h
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#ifndef __KEY_SCANNER_H__
|
||||||
|
#define __KEY_SCANNER_H__
|
||||||
|
|
||||||
|
// Includes:
|
||||||
|
|
||||||
|
#include "peripherals/pit.h"
|
||||||
|
#include "right_key_matrix.h"
|
||||||
|
|
||||||
|
// Macros:
|
||||||
|
|
||||||
|
#define KEY_SCANNER_INTERVAL_USEC (1000 / RIGHT_KEY_MATRIX_ROWS_NUM)
|
||||||
|
|
||||||
|
// Variables:
|
||||||
|
|
||||||
|
extern uint32_t KeyScannerCounter;
|
||||||
|
|
||||||
|
// Functions:
|
||||||
|
|
||||||
|
void InitKeyScanner(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
3
right/src/key_states.c
Normal file
3
right/src/key_states.c
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#include "key_states.h"
|
||||||
|
|
||||||
|
key_state_t KeyStates[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];
|
||||||
23
right/src/key_states.h
Normal file
23
right/src/key_states.h
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#ifndef __KEY_STATES_H__
|
||||||
|
#define __KEY_STATES_H__
|
||||||
|
|
||||||
|
// Includes:
|
||||||
|
|
||||||
|
#include "fsl_common.h"
|
||||||
|
#include "slot.h"
|
||||||
|
#include "module.h"
|
||||||
|
|
||||||
|
// Typedefs:
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
bool previous;
|
||||||
|
bool current;
|
||||||
|
bool suppressed;
|
||||||
|
uint8_t debounceCounter;
|
||||||
|
} key_state_t;
|
||||||
|
|
||||||
|
// Variables:
|
||||||
|
|
||||||
|
extern key_state_t KeyStates[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,26 +1,25 @@
|
|||||||
#include "arduino_hid/ConsumerAPI.h"
|
#include "arduino_hid/ConsumerAPI.h"
|
||||||
#include "arduino_hid/SystemAPI.h"
|
#include "arduino_hid/SystemAPI.h"
|
||||||
#include "keymaps.h"
|
#include "keymap.h"
|
||||||
#include "led_display.h"
|
#include "led_display.h"
|
||||||
#include "config_parser/parse_keymap.h"
|
#include "config_parser/parse_keymap.h"
|
||||||
#include "config_parser/config_globals.h"
|
#include "config_parser/config_globals.h"
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
|
|
||||||
// TODO: Restore Ctrl and Super keys and Mod+N.
|
keymap_reference_t AllKeymaps[MAX_KEYMAP_NUM] = { { "FTY", 0, 3 } };
|
||||||
|
|
||||||
keymap_reference_t AllKeymaps[MAX_KEYMAP_NUM] = { { "QTY", 0, 3 } };
|
|
||||||
uint8_t AllKeymapsCount;
|
uint8_t AllKeymapsCount;
|
||||||
uint8_t DefaultKeymapIndex;
|
uint8_t DefaultKeymapIndex;
|
||||||
uint8_t CurrentKeymapIndex = 0;
|
uint8_t CurrentKeymapIndex = 0;
|
||||||
|
|
||||||
void Keymaps_Switch(uint8_t index)
|
void SwitchKeymap(uint8_t index)
|
||||||
{
|
{
|
||||||
CurrentKeymapIndex = index;
|
CurrentKeymapIndex = index;
|
||||||
ValidatedUserConfigBuffer.offset = AllKeymaps[index].offset;
|
ValidatedUserConfigBuffer.offset = AllKeymaps[index].offset;
|
||||||
ParseKeymap(&ValidatedUserConfigBuffer, index, AllKeymapsCount, AllMacrosCount);
|
ParseKeymap(&ValidatedUserConfigBuffer, index, AllKeymapsCount, AllMacrosCount);
|
||||||
LedDisplay_SetText(AllKeymaps[index].abbreviationLen, AllKeymaps[index].abbreviation);
|
LedDisplay_SetCurrentKeymapText();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The factory keymap is initialized before it gets overwritten by the default keymap of the EEPROM.
|
||||||
key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] = {
|
key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] = {
|
||||||
// Base layer
|
// Base layer
|
||||||
{
|
{
|
||||||
@@ -65,11 +64,11 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
|
|||||||
|
|
||||||
// Row 5
|
// Row 5
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_SPACE }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_SPACE }},
|
||||||
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_MOD }},
|
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mod }},
|
||||||
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_FN }},
|
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Fn }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_ALT }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_ALT }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_CONTROL }},
|
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_GUI }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_GUI }},
|
||||||
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_CONTROL }},
|
||||||
},
|
},
|
||||||
|
|
||||||
// Left keyboard half
|
// Left keyboard half
|
||||||
@@ -93,7 +92,7 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
|
|||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_T }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_T }},
|
||||||
|
|
||||||
// Row 3
|
// Row 3
|
||||||
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_MOUSE }},
|
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mouse }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_A }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_A }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_S }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_S }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_D }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_D }},
|
||||||
@@ -111,12 +110,12 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
|
|||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_B }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_B }},
|
||||||
|
|
||||||
// Row 5
|
// Row 5
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_GUI }},
|
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_CONTROL }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_CONTROL }},
|
||||||
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_GUI }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_ALT }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_ALT }},
|
||||||
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_FN }},
|
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Fn }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_SPACE }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_SPACE }},
|
||||||
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_MOD }},
|
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mod }},
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -158,17 +157,17 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
|
|||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = HID_KEYBOARD_SC_MENU },
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_SHIFT }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_SHIFT }},
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
|
|
||||||
// Row 5
|
// Row 5
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_MOD }},
|
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mod }},
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_ALT }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_ALT }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_CONTROL }},
|
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_GUI }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_GUI }},
|
||||||
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_CONTROL }},
|
||||||
},
|
},
|
||||||
|
|
||||||
// Left keyboard half
|
// Left keyboard half
|
||||||
@@ -210,12 +209,12 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
|
|||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
|
|
||||||
// Row 5
|
// Row 5
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_GUI }},
|
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_CONTROL }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_CONTROL }},
|
||||||
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_GUI }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_ALT }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_ALT }},
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_MOD }},
|
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mod }},
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -264,10 +263,10 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
|
|||||||
// Row 5
|
// Row 5
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_FN }},
|
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Fn }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_ALT }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_ALT }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_CONTROL }},
|
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_GUI }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_GUI }},
|
||||||
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_CONTROL }},
|
||||||
},
|
},
|
||||||
|
|
||||||
// Left keyboard half
|
// Left keyboard half
|
||||||
@@ -309,10 +308,10 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
|
|||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
|
|
||||||
// Row 5
|
// Row 5
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_GUI }},
|
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_CONTROL }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_CONTROL }},
|
||||||
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_GUI }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_ALT }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_ALT }},
|
||||||
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_FN }},
|
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Fn }},
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
@@ -333,23 +332,23 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
|
|||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
|
|
||||||
// Row 2
|
// Row 2
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .buttonActions = MouseButton_4 }},
|
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_Button_4 },
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .moveActions = MouseMove_Up }},
|
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_MoveUp },
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .buttonActions = MouseButton_5 }},
|
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_Button_5 },
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .buttonActions = MouseButton_t }},
|
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_Button_6 },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .scrollActions = MouseScroll_Up }},
|
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_ScrollUp },
|
||||||
|
|
||||||
// Row 3
|
// Row 3
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .moveActions = MouseMove_Left }},
|
{ .type = KeyActionType_Mouse, .mouseAction= SerializedMouseAction_MoveLeft },
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .moveActions = MouseMove_Down }},
|
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_MoveDown },
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .moveActions = MouseMove_Right }},
|
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_MoveRight },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .scrollActions = MouseScroll_Down }},
|
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_ScrollDown },
|
||||||
|
|
||||||
// Row 4
|
// Row 4
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
@@ -365,8 +364,8 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
|
|||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_ALT }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_ALT }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_CONTROL }},
|
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_GUI }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_GUI }},
|
||||||
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_CONTROL }},
|
||||||
},
|
},
|
||||||
|
|
||||||
// Left keyboard half
|
// Left keyboard half
|
||||||
@@ -390,11 +389,11 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
|
|||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
|
|
||||||
// Row 3
|
// Row 3
|
||||||
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_MOUSE }},
|
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mouse }},
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .buttonActions = MouseButton_Right }},
|
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_RightClick },
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .buttonActions = MouseButton_Middle }},
|
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_MiddleClick },
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .buttonActions = MouseButton_Left }},
|
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_LeftClick },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
|
|
||||||
@@ -408,12 +407,12 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
|
|||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
|
|
||||||
// Row 5
|
// Row 5
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_GUI }},
|
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_CONTROL }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_CONTROL }},
|
||||||
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_GUI }},
|
||||||
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_ALT }},
|
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_ALT }},
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .moveActions = MouseMove_Decelerate }},
|
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_Decelerate },
|
||||||
{ .type = KeyActionType_Mouse, .mouse = { .moveActions = MouseMove_Accelerate }},
|
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_Accelerate },
|
||||||
{ .type = KeyActionType_None },
|
{ .type = KeyActionType_None },
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -29,6 +29,6 @@
|
|||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
void Keymaps_Switch(uint8_t index);
|
void SwitchKeymap(uint8_t index);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
73
right/src/layer.c
Normal file
73
right/src/layer.c
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
#include "layer.h"
|
||||||
|
#include "slot.h"
|
||||||
|
#include "module.h"
|
||||||
|
#include "key_states.h"
|
||||||
|
#include "keymap.h"
|
||||||
|
|
||||||
|
static bool heldLayers[LAYER_COUNT];
|
||||||
|
static switch_layer_mode_t pressedLayers[LAYER_COUNT];
|
||||||
|
|
||||||
|
void updateLayerStates(void)
|
||||||
|
{
|
||||||
|
memset(heldLayers, false, LAYER_COUNT);
|
||||||
|
memset(pressedLayers, false, LAYER_COUNT);
|
||||||
|
|
||||||
|
for (uint8_t slotId=0; slotId<SLOT_COUNT; slotId++) {
|
||||||
|
for (uint8_t keyId=0; keyId<MAX_KEY_COUNT_PER_MODULE; keyId++) {
|
||||||
|
key_state_t *keyState = &KeyStates[slotId][keyId];
|
||||||
|
if (keyState->current) {
|
||||||
|
key_action_t action = CurrentKeymap[LayerId_Base][slotId][keyId];
|
||||||
|
if (action.type == KeyActionType_SwitchLayer) {
|
||||||
|
if (action.switchLayer.mode != SwitchLayerMode_Toggle) {
|
||||||
|
heldLayers[action.switchLayer.layer] = true;
|
||||||
|
}
|
||||||
|
if (action.switchLayer.mode != SwitchLayerMode_Hold && !keyState->previous && keyState->current) {
|
||||||
|
pressedLayers[action.switchLayer.layer] = action.switchLayer.mode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
layer_id_t PreviousHeldLayer = LayerId_Base;
|
||||||
|
layer_id_t ToggledLayer = LayerId_Base;
|
||||||
|
|
||||||
|
layer_id_t GetActiveLayer()
|
||||||
|
{
|
||||||
|
updateLayerStates();
|
||||||
|
|
||||||
|
// Handle toggled layers
|
||||||
|
|
||||||
|
for (layer_id_t layerId=LayerId_Mod; layerId<=LayerId_Mouse; layerId++) {
|
||||||
|
if (pressedLayers[layerId]) {
|
||||||
|
if (ToggledLayer == layerId) {
|
||||||
|
ToggledLayer = LayerId_Base;
|
||||||
|
break;
|
||||||
|
} else if (ToggledLayer == LayerId_Base && pressedLayers[layerId] == SwitchLayerMode_Toggle) {
|
||||||
|
ToggledLayer = layerId;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ToggledLayer != LayerId_Base) {
|
||||||
|
return ToggledLayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle held layers
|
||||||
|
|
||||||
|
layer_id_t heldLayer = LayerId_Base;
|
||||||
|
|
||||||
|
for (layer_id_t layerId=LayerId_Mod; layerId<=LayerId_Mouse; layerId++) {
|
||||||
|
if (heldLayers[layerId]) {
|
||||||
|
heldLayer = layerId;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
heldLayer = heldLayer != LayerId_Base && heldLayers[PreviousHeldLayer] ? PreviousHeldLayer : heldLayer;
|
||||||
|
PreviousHeldLayer = heldLayer;
|
||||||
|
|
||||||
|
return heldLayer;
|
||||||
|
}
|
||||||
@@ -1,13 +1,30 @@
|
|||||||
#ifndef __LAYER_H__
|
#ifndef __LAYER_H__
|
||||||
#define __LAYER_H__
|
#define __LAYER_H__
|
||||||
|
|
||||||
// Macros:
|
// Includes:
|
||||||
|
|
||||||
#define LAYER_ID_BASE 0
|
#include "fsl_common.h"
|
||||||
#define LAYER_ID_MOD 1
|
|
||||||
#define LAYER_ID_FN 2
|
// Macros:
|
||||||
#define LAYER_ID_MOUSE 3
|
|
||||||
|
|
||||||
#define LAYER_COUNT 4
|
#define LAYER_COUNT 4
|
||||||
|
|
||||||
|
// Typedefs:
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
LayerId_Base,
|
||||||
|
LayerId_Mod,
|
||||||
|
LayerId_Fn,
|
||||||
|
LayerId_Mouse,
|
||||||
|
} layer_id_t;
|
||||||
|
|
||||||
|
// Variables:
|
||||||
|
|
||||||
|
extern layer_id_t PreviousHeldLayer;
|
||||||
|
extern layer_id_t ToggledLayer;
|
||||||
|
|
||||||
|
// Functions:
|
||||||
|
|
||||||
|
layer_id_t GetActiveLayer();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
#include "led_display.h"
|
#include "led_display.h"
|
||||||
#include "slave_drivers/is31fl3731_driver.h"
|
#include "slave_drivers/is31fl3731_driver.h"
|
||||||
#include "layer.h"
|
#include "layer.h"
|
||||||
|
#include "keymap.h"
|
||||||
|
|
||||||
|
uint8_t IconsAndLayerTextsBrightness = 0xff;
|
||||||
|
uint8_t AlphanumericSegmentsBrightness = 0xff;
|
||||||
|
|
||||||
static const uint16_t capitalLetterToSegmentSet[] = {
|
static const uint16_t capitalLetterToSegmentSet[] = {
|
||||||
0b0000000011110111,
|
0b0000000011110111,
|
||||||
@@ -44,7 +48,8 @@ static const uint16_t digitToSegmentSet[] = {
|
|||||||
0b0000000011101111,
|
0b0000000011101111,
|
||||||
};
|
};
|
||||||
|
|
||||||
static uint16_t characterToSegmentSet(char character) {
|
static uint16_t characterToSegmentSet(char character)
|
||||||
|
{
|
||||||
switch (character) {
|
switch (character) {
|
||||||
case 'A' ... 'Z':
|
case 'A' ... 'Z':
|
||||||
return capitalLetterToSegmentSet[character - 'A'];
|
return capitalLetterToSegmentSet[character - 'A'];
|
||||||
@@ -54,7 +59,8 @@ static uint16_t characterToSegmentSet(char character) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LedDisplay_SetText(uint8_t length, const char* text) {
|
void LedDisplay_SetText(uint8_t length, const char* text)
|
||||||
|
{
|
||||||
uint64_t allSegmentSets = 0;
|
uint64_t allSegmentSets = 0;
|
||||||
|
|
||||||
switch (length) {
|
switch (length) {
|
||||||
@@ -66,28 +72,36 @@ void LedDisplay_SetText(uint8_t length, const char* text) {
|
|||||||
allSegmentSets |= characterToSegmentSet(text[0]);
|
allSegmentSets |= characterToSegmentSet(text[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
LedDriverValues[LedDriverId_Left][11] = allSegmentSets & 0b00000001 ? LED_BRIGHTNESS_LEVEL : 0;
|
LedDriverValues[LedDriverId_Left][11] = allSegmentSets & 0b00000001 ? AlphanumericSegmentsBrightness : 0;
|
||||||
LedDriverValues[LedDriverId_Left][12] = allSegmentSets & 0b00000010 ? LED_BRIGHTNESS_LEVEL : 0;
|
LedDriverValues[LedDriverId_Left][12] = allSegmentSets & 0b00000010 ? AlphanumericSegmentsBrightness : 0;
|
||||||
allSegmentSets >>= 2;
|
allSegmentSets >>= 2;
|
||||||
|
|
||||||
for (uint8_t i = 24; i <= 136; i += 16) {
|
for (uint8_t i = 24; i <= 136; i += 16) {
|
||||||
for (uint8_t j = 0; j < 5; j++) {
|
for (uint8_t j = 0; j < 5; j++) {
|
||||||
LedDriverValues[LedDriverId_Left][i + j] = allSegmentSets & 1 << j ? LED_BRIGHTNESS_LEVEL : 0;
|
LedDriverValues[LedDriverId_Left][i + j] = allSegmentSets & 1 << j ? AlphanumericSegmentsBrightness : 0;
|
||||||
}
|
}
|
||||||
allSegmentSets >>= 5;
|
allSegmentSets >>= 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LedDisplay_SetLayer(uint8_t layerId) {
|
void LedDisplay_SetCurrentKeymapText(void)
|
||||||
|
{
|
||||||
|
keymap_reference_t *currentKeymap = AllKeymaps + CurrentKeymapIndex;
|
||||||
|
LedDisplay_SetText(currentKeymap->abbreviationLen, currentKeymap->abbreviation);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LedDisplay_SetLayer(uint8_t layerId)
|
||||||
|
{
|
||||||
for (uint8_t i = 13; i <= 45; i += 16) {
|
for (uint8_t i = 13; i <= 45; i += 16) {
|
||||||
LedDriverValues[LedDriverId_Left][i] = 0;
|
LedDriverValues[LedDriverId_Left][i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (layerId >= LAYER_ID_MOD && layerId <= LAYER_ID_MOUSE) {
|
if (layerId >= LayerId_Mod && layerId <= LayerId_Mouse) {
|
||||||
LedDriverValues[LedDriverId_Left][16 * layerId - 3] = LED_BRIGHTNESS_LEVEL;
|
LedDriverValues[LedDriverId_Left][16 * layerId - 3] = IconsAndLayerTextsBrightness;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled) {
|
void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled)
|
||||||
LedDriverValues[LedDriverId_Left][8 + icon] = isEnabled ? LED_BRIGHTNESS_LEVEL : 0;
|
{
|
||||||
|
LedDriverValues[LedDriverId_Left][8 + icon] = isEnabled ? IconsAndLayerTextsBrightness : 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,9 +14,15 @@
|
|||||||
LedDisplayIcon_Adaptive,
|
LedDisplayIcon_Adaptive,
|
||||||
} led_display_icon_t;
|
} led_display_icon_t;
|
||||||
|
|
||||||
|
// Variables:
|
||||||
|
|
||||||
|
extern uint8_t IconsAndLayerTextsBrightness;
|
||||||
|
extern uint8_t AlphanumericSegmentsBrightness;
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
void LedDisplay_SetText(uint8_t length, const char* text);
|
void LedDisplay_SetText(uint8_t length, const char* text);
|
||||||
|
void LedDisplay_SetCurrentKeymapText(void);
|
||||||
void LedDisplay_SetLayer(uint8_t layerId);
|
void LedDisplay_SetLayer(uint8_t layerId);
|
||||||
void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled);
|
void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled);
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
#include "led_pwm.h"
|
#include "led_pwm.h"
|
||||||
#include "fsl_port.h"
|
#include "fsl_port.h"
|
||||||
|
|
||||||
void LedPwm_Init(void) {
|
void LedPwm_Init(void)
|
||||||
|
{
|
||||||
CLOCK_EnableClock(LED_PWM_CLOCK);
|
CLOCK_EnableClock(LED_PWM_CLOCK);
|
||||||
PORT_SetPinMux(LED_PWM_PORT, LED_PWM_PIN, kPORT_MuxAlt4);
|
PORT_SetPinMux(LED_PWM_PORT, LED_PWM_PIN, kPORT_MuxAlt4);
|
||||||
|
|
||||||
|
|||||||
@@ -1,64 +1,15 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "main.h"
|
|
||||||
#include "init_clock.h"
|
#include "init_clock.h"
|
||||||
#include "init_peripherals.h"
|
#include "init_peripherals.h"
|
||||||
#include "usb_composite_device.h"
|
#include "usb_composite_device.h"
|
||||||
#include "peripherals/led_driver.h"
|
|
||||||
#include "key_action.h"
|
|
||||||
#include "slave_scheduler.h"
|
#include "slave_scheduler.h"
|
||||||
#include "peripherals/test_led.h"
|
|
||||||
#include "usb_interfaces/usb_interface_basic_keyboard.h"
|
|
||||||
#include "usb_interfaces/usb_interface_media_keyboard.h"
|
|
||||||
#include "bus_pal_hardware.h"
|
#include "bus_pal_hardware.h"
|
||||||
#include "bootloader_config.h"
|
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
#include "bootloader/wormhole.h"
|
|
||||||
#include "eeprom.h"
|
#include "eeprom.h"
|
||||||
|
#include "key_scanner.h"
|
||||||
key_matrix_t KeyMatrix = {
|
#include "usb_commands/usb_command_apply_config.h"
|
||||||
.colNum = KEYBOARD_MATRIX_COLS_NUM,
|
#include "peripherals/reset_button.h"
|
||||||
.rowNum = KEYBOARD_MATRIX_ROWS_NUM,
|
#include "usb_report_updater.h"
|
||||||
.cols = (key_matrix_pin_t[]){
|
|
||||||
{PORTA, GPIOA, kCLOCK_PortA, 5},
|
|
||||||
{PORTB, GPIOB, kCLOCK_PortB, 16},
|
|
||||||
{PORTB, GPIOB, kCLOCK_PortB, 17},
|
|
||||||
{PORTB, GPIOB, kCLOCK_PortB, 18},
|
|
||||||
{PORTB, GPIOB, kCLOCK_PortB, 19},
|
|
||||||
{PORTA, GPIOA, kCLOCK_PortA, 1},
|
|
||||||
{PORTB, GPIOB, kCLOCK_PortB, 1}
|
|
||||||
},
|
|
||||||
.rows = (key_matrix_pin_t[]){
|
|
||||||
{PORTA, GPIOA, kCLOCK_PortA, 12},
|
|
||||||
{PORTA, GPIOA, kCLOCK_PortA, 13},
|
|
||||||
{PORTC, GPIOC, kCLOCK_PortC, 1},
|
|
||||||
{PORTC, GPIOC, kCLOCK_PortC, 0},
|
|
||||||
{PORTD, GPIOD, kCLOCK_PortD, 5}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
uint8_t CurrentKeyStates[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];
|
|
||||||
|
|
||||||
void UpdateUsbReports(void)
|
|
||||||
{
|
|
||||||
if (!IsUsbBasicKeyboardReportSent) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ResetActiveUsbBasicKeyboardReport();
|
|
||||||
ResetActiveUsbMediaKeyboardReport();
|
|
||||||
ResetActiveUsbSystemKeyboardReport();
|
|
||||||
|
|
||||||
KeyMatrix_Scan(&KeyMatrix);
|
|
||||||
|
|
||||||
memcpy(CurrentKeyStates[SlotId_RightKeyboardHalf], KeyMatrix.keyStates, MAX_KEY_COUNT_PER_MODULE);
|
|
||||||
UpdateActiveUsbReports();
|
|
||||||
|
|
||||||
SwitchActiveUsbBasicKeyboardReport();
|
|
||||||
SwitchActiveUsbMediaKeyboardReport();
|
|
||||||
SwitchActiveUsbSystemKeyboardReport();
|
|
||||||
|
|
||||||
IsUsbBasicKeyboardReportSent = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsEepromInitialized = false;
|
bool IsEepromInitialized = false;
|
||||||
bool IsConfigInitialized = false;
|
bool IsConfigInitialized = false;
|
||||||
@@ -77,26 +28,24 @@ void main(void)
|
|||||||
{
|
{
|
||||||
InitClock();
|
InitClock();
|
||||||
InitPeripherals();
|
InitPeripherals();
|
||||||
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_HardwareConfig, hardwareConfigurationReadFinished);
|
|
||||||
|
|
||||||
#ifdef FORCE_BUSPAL
|
if (!RESET_BUTTON_IS_PRESSED) {
|
||||||
Wormhole.magicNumber = WORMHOLE_MAGIC_NUMBER;
|
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_HardwareConfig, hardwareConfigurationReadFinished);
|
||||||
Wormhole.enumerationMode = EnumerationMode_BusPal;
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (Wormhole.magicNumber == WORMHOLE_MAGIC_NUMBER && Wormhole.enumerationMode == EnumerationMode_BusPal) {
|
if (IsBusPalOn) {
|
||||||
Wormhole.magicNumber = 0;
|
|
||||||
init_hardware();
|
init_hardware();
|
||||||
handleUsbBusPalCommand();
|
handleUsbBusPalCommand();
|
||||||
} else {
|
} else {
|
||||||
InitSlaveScheduler();
|
InitSlaveScheduler();
|
||||||
KeyMatrix_Init(&KeyMatrix);
|
KeyMatrix_Init(&RightKeyMatrix);
|
||||||
|
InitKeyScanner();
|
||||||
UpdateUsbReports();
|
UpdateUsbReports();
|
||||||
InitUsb();
|
InitUsb();
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
if (!IsConfigInitialized && IsEepromInitialized) {
|
if (!IsConfigInitialized && IsEepromInitialized) {
|
||||||
ApplyConfig();
|
UsbCommand_ApplyConfig();
|
||||||
IsConfigInitialized = true;
|
IsConfigInitialized = true;
|
||||||
}
|
}
|
||||||
UpdateUsbReports();
|
UpdateUsbReports();
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
#ifndef __MAIN_H__
|
|
||||||
#define __MAIN_H__
|
|
||||||
|
|
||||||
// Includes:
|
|
||||||
|
|
||||||
#include "key_matrix.h"
|
|
||||||
#include "slot.h"
|
|
||||||
#include "module.h"
|
|
||||||
|
|
||||||
// Macros:
|
|
||||||
|
|
||||||
#define KEYBOARD_MATRIX_COLS_NUM 7
|
|
||||||
#define KEYBOARD_MATRIX_ROWS_NUM 5
|
|
||||||
|
|
||||||
// Variables:
|
|
||||||
|
|
||||||
extern key_matrix_t KeyMatrix;
|
|
||||||
extern uint8_t PreviousKeyStates[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];
|
|
||||||
extern uint8_t CurrentKeyStates[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];
|
|
||||||
extern void UpdateUsbReports(void);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
#include "merge_sensor.h"
|
#include "merge_sensor.h"
|
||||||
#include "fsl_port.h"
|
#include "fsl_port.h"
|
||||||
|
|
||||||
void InitMergeSensor(void) {
|
void InitMergeSensor(void)
|
||||||
|
{
|
||||||
CLOCK_EnableClock(MERGE_SENSOR_CLOCK);
|
CLOCK_EnableClock(MERGE_SENSOR_CLOCK);
|
||||||
PORT_SetPinConfig(MERGE_SENSOR_PORT, MERGE_SENSOR_PIN,
|
PORT_SetPinConfig(MERGE_SENSOR_PORT, MERGE_SENSOR_PIN,
|
||||||
&(port_pin_config_t){.pullSelect=kPORT_PullUp, .mux=kPORT_MuxAsGpio});
|
&(port_pin_config_t){.pullSelect=kPORT_PullUp, .mux=kPORT_MuxAsGpio});
|
||||||
|
|||||||
28
right/src/peripherals/pit.h
Normal file
28
right/src/peripherals/pit.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#ifndef __PIT_H__
|
||||||
|
#define __PIT_H__
|
||||||
|
|
||||||
|
// Includes:
|
||||||
|
|
||||||
|
#include "peripherals/pit.h"
|
||||||
|
|
||||||
|
// Macros:
|
||||||
|
|
||||||
|
#define PIT_SOURCE_CLOCK CLOCK_GetFreq(kCLOCK_BusClk)
|
||||||
|
|
||||||
|
#define PIT_I2C_WATCHDOG_HANDLER PIT0_IRQHandler
|
||||||
|
#define PIT_I2C_WATCHDOG_IRQ_ID PIT0_IRQn
|
||||||
|
#define PIT_I2C_WATCHDOG_CHANNEL kPIT_Chnl_0
|
||||||
|
|
||||||
|
#define PIT_TIMER_HANDLER PIT1_IRQHandler
|
||||||
|
#define PIT_TIMER_IRQ_ID PIT1_IRQn
|
||||||
|
#define PIT_TIMER_CHANNEL kPIT_Chnl_1
|
||||||
|
|
||||||
|
#define PIT_KEY_SCANNER_HANDLER PIT2_IRQHandler
|
||||||
|
#define PIT_KEY_SCANNER_IRQ_ID PIT2_IRQn
|
||||||
|
#define PIT_KEY_SCANNER_CHANNEL kPIT_Chnl_2
|
||||||
|
|
||||||
|
#define PIT_KEY_DEBOUNCER_HANDLER PIT3_IRQHandler
|
||||||
|
#define PIT_KEY_DEBOUNCER_IRQ_ID PIT3_IRQn
|
||||||
|
#define PIT_KEY_DEBOUNCER_CHANNEL kPIT_Chnl_3
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,8 +1,19 @@
|
|||||||
#include "reset_button.h"
|
#include "reset_button.h"
|
||||||
#include "fsl_port.h"
|
#include "fsl_port.h"
|
||||||
|
#include "bootloader/wormhole.h"
|
||||||
|
|
||||||
void InitResetButton(void) {
|
void RESET_BUTTON_IRQ_HANDLER(void)
|
||||||
|
{
|
||||||
|
Wormhole.magicNumber = WORMHOLE_MAGIC_NUMBER;
|
||||||
|
Wormhole.enumerationMode = EnumerationMode_NormalKeyboard;
|
||||||
|
NVIC_SystemReset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void InitResetButton(void)
|
||||||
|
{
|
||||||
CLOCK_EnableClock(RESET_BUTTON_CLOCK);
|
CLOCK_EnableClock(RESET_BUTTON_CLOCK);
|
||||||
|
PORT_SetPinInterruptConfig(RESET_BUTTON_PORT, RESET_BUTTON_PIN, kPORT_InterruptFallingEdge);
|
||||||
|
EnableIRQ(RESET_BUTTON_IRQ);
|
||||||
PORT_SetPinConfig(RESET_BUTTON_PORT, RESET_BUTTON_PIN,
|
PORT_SetPinConfig(RESET_BUTTON_PORT, RESET_BUTTON_PIN,
|
||||||
&(port_pin_config_t){.pullSelect=kPORT_PullUp, .mux=kPORT_MuxAsGpio});
|
&(port_pin_config_t){.pullSelect=kPORT_PullUp, .mux=kPORT_MuxAsGpio});
|
||||||
}
|
}
|
||||||
|
|||||||
22
right/src/right_key_matrix.c
Normal file
22
right/src/right_key_matrix.c
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#include "right_key_matrix.h"
|
||||||
|
|
||||||
|
key_matrix_t RightKeyMatrix = {
|
||||||
|
.colNum = RIGHT_KEY_MATRIX_COLS_NUM,
|
||||||
|
.rowNum = RIGHT_KEY_MATRIX_ROWS_NUM,
|
||||||
|
.cols = (key_matrix_pin_t[]){
|
||||||
|
{PORTA, GPIOA, kCLOCK_PortA, 5},
|
||||||
|
{PORTB, GPIOB, kCLOCK_PortB, 16},
|
||||||
|
{PORTB, GPIOB, kCLOCK_PortB, 17},
|
||||||
|
{PORTB, GPIOB, kCLOCK_PortB, 18},
|
||||||
|
{PORTB, GPIOB, kCLOCK_PortB, 19},
|
||||||
|
{PORTA, GPIOA, kCLOCK_PortA, 1},
|
||||||
|
{PORTB, GPIOB, kCLOCK_PortB, 1}
|
||||||
|
},
|
||||||
|
.rows = (key_matrix_pin_t[]){
|
||||||
|
{PORTA, GPIOA, kCLOCK_PortA, 12},
|
||||||
|
{PORTA, GPIOA, kCLOCK_PortA, 13},
|
||||||
|
{PORTC, GPIOC, kCLOCK_PortC, 1},
|
||||||
|
{PORTC, GPIOC, kCLOCK_PortC, 0},
|
||||||
|
{PORTD, GPIOD, kCLOCK_PortD, 5}
|
||||||
|
}
|
||||||
|
};
|
||||||
18
right/src/right_key_matrix.h
Normal file
18
right/src/right_key_matrix.h
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#ifndef __RIGHT_KEY_MATRIX_H__
|
||||||
|
#define __RIGHT_KEY_MATRIX_H__
|
||||||
|
|
||||||
|
// Includes:
|
||||||
|
|
||||||
|
#include "key_matrix.h"
|
||||||
|
|
||||||
|
// Macros:
|
||||||
|
|
||||||
|
#define RIGHT_KEY_MATRIX_COLS_NUM 7
|
||||||
|
#define RIGHT_KEY_MATRIX_ROWS_NUM 5
|
||||||
|
#define RIGHT_KEY_MATRIX_KEY_COUNT (RIGHT_KEY_MATRIX_COLS_NUM * RIGHT_KEY_MATRIX_ROWS_NUM)
|
||||||
|
|
||||||
|
// Variables:
|
||||||
|
|
||||||
|
extern key_matrix_t RightKeyMatrix;
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
#include "slave_scheduler.h"
|
#include "slave_scheduler.h"
|
||||||
#include "led_display.h"
|
#include "led_display.h"
|
||||||
|
|
||||||
|
uint8_t KeyBacklightBrightness = 0xff;
|
||||||
uint8_t LedDriverValues[LED_DRIVER_MAX_COUNT][LED_DRIVER_LED_COUNT];
|
uint8_t LedDriverValues[LED_DRIVER_MAX_COUNT][LED_DRIVER_LED_COUNT];
|
||||||
|
|
||||||
static led_driver_state_t ledDriverStates[LED_DRIVER_MAX_COUNT] = {
|
static led_driver_state_t ledDriverStates[LED_DRIVER_MAX_COUNT] = {
|
||||||
@@ -61,7 +62,8 @@ static uint8_t setShutdownModeNormalBuffer[] = {LED_DRIVER_REGISTER_SHUTDOWN, SH
|
|||||||
static uint8_t setFrame1Buffer[] = {LED_DRIVER_REGISTER_FRAME, LED_DRIVER_FRAME_1};
|
static uint8_t setFrame1Buffer[] = {LED_DRIVER_REGISTER_FRAME, LED_DRIVER_FRAME_1};
|
||||||
static uint8_t updatePwmRegistersBuffer[PWM_REGISTER_BUFFER_LENGTH];
|
static uint8_t updatePwmRegistersBuffer[PWM_REGISTER_BUFFER_LENGTH];
|
||||||
|
|
||||||
void LedSlaveDriver_Init(uint8_t ledDriverId) {
|
void LedSlaveDriver_Init(uint8_t ledDriverId)
|
||||||
|
{
|
||||||
if (ledDriverId == ISO_KEY_LED_DRIVER_ID && IS_ISO) {
|
if (ledDriverId == ISO_KEY_LED_DRIVER_ID && IS_ISO) {
|
||||||
ledDriverStates[LedDriverId_Left].setupLedControlRegistersCommand[ISO_KEY_CONTROL_REGISTER_POS] |= 1 << ISO_KEY_CONTROL_REGISTER_BIT;
|
ledDriverStates[LedDriverId_Left].setupLedControlRegistersCommand[ISO_KEY_CONTROL_REGISTER_POS] |= 1 << ISO_KEY_CONTROL_REGISTER_BIT;
|
||||||
}
|
}
|
||||||
@@ -69,11 +71,18 @@ void LedSlaveDriver_Init(uint8_t ledDriverId) {
|
|||||||
led_driver_state_t *currentLedDriverState = ledDriverStates + ledDriverId;
|
led_driver_state_t *currentLedDriverState = ledDriverStates + ledDriverId;
|
||||||
currentLedDriverState->phase = LedDriverPhase_SetFunctionFrame;
|
currentLedDriverState->phase = LedDriverPhase_SetFunctionFrame;
|
||||||
currentLedDriverState->ledIndex = 0;
|
currentLedDriverState->ledIndex = 0;
|
||||||
memset(LedDriverValues[ledDriverId], LED_BRIGHTNESS_LEVEL, LED_DRIVER_LED_COUNT);
|
memset(LedDriverValues[ledDriverId], KeyBacklightBrightness, LED_DRIVER_LED_COUNT);
|
||||||
LedDisplay_SetText(3, "ABC");
|
|
||||||
|
if (ledDriverId == LedDriverId_Left) {
|
||||||
|
LedDisplay_SetIcon(LedDisplayIcon_CapsLock, false);
|
||||||
|
LedDisplay_SetIcon(LedDisplayIcon_Agent, false);
|
||||||
|
LedDisplay_SetIcon(LedDisplayIcon_Adaptive, false);
|
||||||
|
LedDisplay_SetCurrentKeymapText();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
status_t LedSlaveDriver_Update(uint8_t ledDriverId) {
|
status_t LedSlaveDriver_Update(uint8_t ledDriverId)
|
||||||
|
{
|
||||||
status_t status = kStatus_Uhk_IdleSlave;
|
status_t status = kStatus_Uhk_IdleSlave;
|
||||||
uint8_t *ledValues = LedDriverValues[ledDriverId];
|
uint8_t *ledValues = LedDriverValues[ledDriverId];
|
||||||
led_driver_state_t *currentLedDriverState = ledDriverStates + ledDriverId;
|
led_driver_state_t *currentLedDriverState = ledDriverStates + ledDriverId;
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
#define LED_CONTROL_REGISTERS_COMMAND_LENGTH 19
|
#define LED_CONTROL_REGISTERS_COMMAND_LENGTH 19
|
||||||
#define PMW_REGISTER_UPDATE_CHUNK_SIZE 8
|
#define PMW_REGISTER_UPDATE_CHUNK_SIZE 8
|
||||||
#define PWM_REGISTER_BUFFER_LENGTH (1 + PMW_REGISTER_UPDATE_CHUNK_SIZE)
|
#define PWM_REGISTER_BUFFER_LENGTH (1 + PMW_REGISTER_UPDATE_CHUNK_SIZE)
|
||||||
#define LED_BRIGHTNESS_LEVEL 0xff
|
|
||||||
|
|
||||||
#define IS_ISO true
|
#define IS_ISO true
|
||||||
#define ISO_KEY_LED_DRIVER_ID LedDriverId_Left
|
#define ISO_KEY_LED_DRIVER_ID LedDriverId_Left
|
||||||
@@ -45,6 +44,7 @@
|
|||||||
|
|
||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
|
extern uint8_t KeyBacklightBrightness;
|
||||||
extern uint8_t LedDriverValues[LED_DRIVER_MAX_COUNT][LED_DRIVER_LED_COUNT];
|
extern uint8_t LedDriverValues[LED_DRIVER_MAX_COUNT][LED_DRIVER_LED_COUNT];
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|||||||
82
right/src/slave_drivers/kboot_driver.c
Normal file
82
right/src/slave_drivers/kboot_driver.c
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
#include "slave_drivers/kboot_driver.h"
|
||||||
|
#include "slave_scheduler.h"
|
||||||
|
#include "i2c.h"
|
||||||
|
|
||||||
|
kboot_driver_state_t KbootDriverState;
|
||||||
|
|
||||||
|
static uint8_t rxBuffer[KBOOT_PACKAGE_MAX_LENGTH];
|
||||||
|
static uint8_t pingCommand[] = {0x5a, 0xa6};
|
||||||
|
static uint8_t resetCommand[] = {0x5a, 0xa4, 0x04, 0x00, 0x6f, 0x46, 0x0b, 0x00, 0x00, 0x00};
|
||||||
|
static uint8_t ackMessage[] = {0x5a, 0xa1};
|
||||||
|
|
||||||
|
static status_t tx(uint8_t *buffer, uint8_t length)
|
||||||
|
{
|
||||||
|
return I2cAsyncWrite(KbootDriverState.i2cAddress, buffer, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
static status_t rx(uint8_t length)
|
||||||
|
{
|
||||||
|
return I2cAsyncRead(KbootDriverState.i2cAddress, rxBuffer, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KbootSlaveDriver_Init(uint8_t kbootInstanceId)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
status_t KbootSlaveDriver_Update(uint8_t kbootInstanceId)
|
||||||
|
{
|
||||||
|
status_t status = kStatus_Uhk_IdleSlave;
|
||||||
|
|
||||||
|
switch (KbootDriverState.command) {
|
||||||
|
case KbootCommand_Idle:
|
||||||
|
break;
|
||||||
|
case KbootCommand_Ping:
|
||||||
|
switch (KbootDriverState.phase) {
|
||||||
|
case KbootPhase_SendPing:
|
||||||
|
status = tx(pingCommand, sizeof(pingCommand));
|
||||||
|
KbootDriverState.phase = KbootPhase_CheckPingStatus;
|
||||||
|
break;
|
||||||
|
case KbootPhase_CheckPingStatus:
|
||||||
|
KbootDriverState.status = Slaves[SlaveId_KbootDriver].previousStatus;
|
||||||
|
KbootDriverState.phase = KbootDriverState.status == kStatus_Success
|
||||||
|
? KbootPhase_ReceivePingResponse
|
||||||
|
: KbootPhase_SendPing;
|
||||||
|
return kStatus_Uhk_IdleCycle;
|
||||||
|
case KbootPhase_ReceivePingResponse:
|
||||||
|
status = rx(KBOOT_PACKAGE_LENGTH_PING_RESPONSE);
|
||||||
|
KbootDriverState.phase = KbootPhase_CheckPingResponseStatus;
|
||||||
|
break;
|
||||||
|
case KbootPhase_CheckPingResponseStatus:
|
||||||
|
KbootDriverState.status = Slaves[SlaveId_KbootDriver].previousStatus;
|
||||||
|
if (KbootDriverState.status == kStatus_Success) {
|
||||||
|
KbootDriverState.command = KbootCommand_Idle;
|
||||||
|
} else {
|
||||||
|
KbootDriverState.phase = KbootPhase_SendPing;
|
||||||
|
return kStatus_Uhk_IdleCycle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case KbootCommand_Reset:
|
||||||
|
switch (KbootDriverState.phase) {
|
||||||
|
case KbootPhase_SendReset:
|
||||||
|
status = tx(resetCommand, sizeof(resetCommand));
|
||||||
|
KbootDriverState.phase = KbootPhase_ReceiveResetAck;
|
||||||
|
break;
|
||||||
|
case KbootPhase_ReceiveResetAck:
|
||||||
|
status = rx(KBOOT_PACKAGE_LENGTH_ACK);
|
||||||
|
KbootDriverState.phase = KbootPhase_ReceiveResetGenericResponse;
|
||||||
|
break;
|
||||||
|
case KbootPhase_ReceiveResetGenericResponse:
|
||||||
|
status = rx(KBOOT_PACKAGE_LENGTH_GENERIC_RESPONSE);
|
||||||
|
KbootDriverState.phase = KbootPhase_CheckResetSendAck;
|
||||||
|
break;
|
||||||
|
case KbootPhase_CheckResetSendAck:
|
||||||
|
status = tx(ackMessage, sizeof(ackMessage));
|
||||||
|
KbootDriverState.command = KbootCommand_Idle;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
57
right/src/slave_drivers/kboot_driver.h
Normal file
57
right/src/slave_drivers/kboot_driver.h
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
#ifndef __KBOOT_DRIVER_H__
|
||||||
|
#define __KBOOT_DRIVER_H__
|
||||||
|
|
||||||
|
// Includes:
|
||||||
|
|
||||||
|
#include "fsl_common.h"
|
||||||
|
|
||||||
|
// Macros:
|
||||||
|
|
||||||
|
#define KBOOT_PACKAGE_MAX_LENGTH 32
|
||||||
|
#define KBOOT_PACKAGE_LENGTH_PING_RESPONSE 10
|
||||||
|
#define KBOOT_PACKAGE_LENGTH_ACK 2
|
||||||
|
#define KBOOT_PACKAGE_LENGTH_GENERIC_RESPONSE 18
|
||||||
|
|
||||||
|
// Typedefs:
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
KbootDriverId_Singleton,
|
||||||
|
} kboot_driver_id_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
KbootCommand_Idle,
|
||||||
|
KbootCommand_Ping,
|
||||||
|
KbootCommand_Reset,
|
||||||
|
} kboot_command_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
KbootPhase_SendPing,
|
||||||
|
KbootPhase_CheckPingStatus,
|
||||||
|
KbootPhase_ReceivePingResponse,
|
||||||
|
KbootPhase_CheckPingResponseStatus,
|
||||||
|
} kboot_ping_phase_t;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
KbootPhase_SendReset,
|
||||||
|
KbootPhase_ReceiveResetAck,
|
||||||
|
KbootPhase_ReceiveResetGenericResponse,
|
||||||
|
KbootPhase_CheckResetSendAck,
|
||||||
|
} kboot_reset_phase_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
kboot_command_t command;
|
||||||
|
uint8_t i2cAddress;
|
||||||
|
uint8_t phase;
|
||||||
|
uint32_t status;
|
||||||
|
} kboot_driver_state_t;
|
||||||
|
|
||||||
|
// Variables:
|
||||||
|
|
||||||
|
extern kboot_driver_state_t KbootDriverState;
|
||||||
|
|
||||||
|
// Functions:
|
||||||
|
|
||||||
|
void KbootSlaveDriver_Init(uint8_t kbootInstanceId);
|
||||||
|
status_t KbootSlaveDriver_Update(uint8_t kbootInstanceId);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -3,13 +3,13 @@
|
|||||||
#include "slave_scheduler.h"
|
#include "slave_scheduler.h"
|
||||||
#include "slave_drivers/uhk_module_driver.h"
|
#include "slave_drivers/uhk_module_driver.h"
|
||||||
#include "slave_protocol.h"
|
#include "slave_protocol.h"
|
||||||
#include "main.h"
|
|
||||||
#include "peripherals/test_led.h"
|
#include "peripherals/test_led.h"
|
||||||
#include "bool_array_converter.h"
|
#include "bool_array_converter.h"
|
||||||
#include "crc16.h"
|
#include "crc16.h"
|
||||||
|
#include "key_states.h"
|
||||||
|
|
||||||
uhk_module_state_t UhkModuleStates[UHK_MODULE_MAX_COUNT];
|
uhk_module_state_t UhkModuleStates[UHK_MODULE_MAX_COUNT];
|
||||||
|
static uint8_t keyStatesBuffer[MAX_KEY_COUNT_PER_MODULE];
|
||||||
static i2c_message_t txMessage;
|
static i2c_message_t txMessage;
|
||||||
|
|
||||||
static uhk_module_i2c_addresses_t moduleIdsToI2cAddresses[] = {
|
static uhk_module_i2c_addresses_t moduleIdsToI2cAddresses[] = {
|
||||||
@@ -69,6 +69,13 @@ status_t UhkModuleSlaveDriver_Update(uint8_t uhkModuleDriverId)
|
|||||||
|
|
||||||
switch (*uhkModulePhase) {
|
switch (*uhkModulePhase) {
|
||||||
|
|
||||||
|
// Jump to bootloader
|
||||||
|
case UhkModulePhase_JumpToBootloader:
|
||||||
|
txMessage.data[0] = SlaveCommand_JumpToBootloader;
|
||||||
|
txMessage.length = 1;
|
||||||
|
status = tx(i2cAddress);
|
||||||
|
break;
|
||||||
|
|
||||||
// Sync communication
|
// Sync communication
|
||||||
case UhkModulePhase_RequestSync:
|
case UhkModulePhase_RequestSync:
|
||||||
txMessage.data[0] = SlaveCommand_RequestProperty;
|
txMessage.data[0] = SlaveCommand_RequestProperty;
|
||||||
@@ -84,32 +91,54 @@ status_t UhkModuleSlaveDriver_Update(uint8_t uhkModuleDriverId)
|
|||||||
case UhkModulePhase_ProcessSync: {
|
case UhkModulePhase_ProcessSync: {
|
||||||
bool isMessageValid = CRC16_IsMessageValid(rxMessage);
|
bool isMessageValid = CRC16_IsMessageValid(rxMessage);
|
||||||
bool isSyncValid = memcmp(rxMessage->data, SlaveSyncString, SLAVE_SYNC_STRING_LENGTH) == 0;
|
bool isSyncValid = memcmp(rxMessage->data, SlaveSyncString, SLAVE_SYNC_STRING_LENGTH) == 0;
|
||||||
status = kStatus_Uhk_NoTransfer;
|
status = kStatus_Uhk_IdleCycle;
|
||||||
*uhkModulePhase = isSyncValid && isMessageValid
|
*uhkModulePhase = isSyncValid && isMessageValid
|
||||||
? UhkModulePhase_RequestProtocolVersion
|
? UhkModulePhase_RequestModuleProtocolVersion
|
||||||
: UhkModulePhase_RequestSync;
|
: UhkModulePhase_RequestSync;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get protocol version
|
// Get module protocol version
|
||||||
case UhkModulePhase_RequestProtocolVersion:
|
case UhkModulePhase_RequestModuleProtocolVersion:
|
||||||
txMessage.data[0] = SlaveCommand_RequestProperty;
|
txMessage.data[0] = SlaveCommand_RequestProperty;
|
||||||
txMessage.data[1] = SlaveProperty_ProtocolVersion;
|
txMessage.data[1] = SlaveProperty_ModuleProtocolVersion;
|
||||||
txMessage.length = 2;
|
txMessage.length = 2;
|
||||||
status = tx(i2cAddress);
|
status = tx(i2cAddress);
|
||||||
*uhkModulePhase = UhkModulePhase_ReceiveProtocolVersion;
|
*uhkModulePhase = UhkModulePhase_ReceiveModuleProtocolVersion;
|
||||||
break;
|
break;
|
||||||
case UhkModulePhase_ReceiveProtocolVersion:
|
case UhkModulePhase_ReceiveModuleProtocolVersion:
|
||||||
status = rx(rxMessage, i2cAddress);
|
status = rx(rxMessage, i2cAddress);
|
||||||
*uhkModulePhase = UhkModulePhase_ProcessProtocolVersion;
|
*uhkModulePhase = UhkModulePhase_ProcessModuleProtocolVersion;
|
||||||
break;
|
break;
|
||||||
case UhkModulePhase_ProcessProtocolVersion: {
|
case UhkModulePhase_ProcessModuleProtocolVersion: {
|
||||||
bool isMessageValid = CRC16_IsMessageValid(rxMessage);
|
bool isMessageValid = CRC16_IsMessageValid(rxMessage);
|
||||||
if (isMessageValid) {
|
if (isMessageValid) {
|
||||||
uhkModuleState->protocolVersion = rxMessage->data[0];
|
memcpy(&uhkModuleState->moduleProtocolVersion, rxMessage->data, sizeof(version_t));
|
||||||
}
|
}
|
||||||
status = kStatus_Uhk_NoTransfer;
|
status = kStatus_Uhk_IdleCycle;
|
||||||
*uhkModulePhase = isMessageValid ? UhkModulePhase_RequestModuleId : UhkModulePhase_RequestProtocolVersion;
|
*uhkModulePhase = isMessageValid ? UhkModulePhase_RequestFirmwareVersion : UhkModulePhase_RequestModuleProtocolVersion;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get firmware version
|
||||||
|
case UhkModulePhase_RequestFirmwareVersion:
|
||||||
|
txMessage.data[0] = SlaveCommand_RequestProperty;
|
||||||
|
txMessage.data[1] = SlaveProperty_FirmwareVersion;
|
||||||
|
txMessage.length = 2;
|
||||||
|
status = tx(i2cAddress);
|
||||||
|
*uhkModulePhase = UhkModulePhase_ReceiveFirmwareVersion;
|
||||||
|
break;
|
||||||
|
case UhkModulePhase_ReceiveFirmwareVersion:
|
||||||
|
status = rx(rxMessage, i2cAddress);
|
||||||
|
*uhkModulePhase = UhkModulePhase_ProcessFirmwareVersion;
|
||||||
|
break;
|
||||||
|
case UhkModulePhase_ProcessFirmwareVersion: {
|
||||||
|
bool isMessageValid = CRC16_IsMessageValid(rxMessage);
|
||||||
|
if (isMessageValid) {
|
||||||
|
memcpy(&uhkModuleState->firmwareVersion, rxMessage->data, sizeof(version_t));
|
||||||
|
}
|
||||||
|
status = kStatus_Uhk_IdleCycle;
|
||||||
|
*uhkModulePhase = isMessageValid ? UhkModulePhase_RequestModuleId : UhkModulePhase_RequestFirmwareVersion;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,30 +159,52 @@ status_t UhkModuleSlaveDriver_Update(uint8_t uhkModuleDriverId)
|
|||||||
if (isMessageValid) {
|
if (isMessageValid) {
|
||||||
uhkModuleState->moduleId = rxMessage->data[0];
|
uhkModuleState->moduleId = rxMessage->data[0];
|
||||||
}
|
}
|
||||||
status = kStatus_Uhk_NoTransfer;
|
status = kStatus_Uhk_IdleCycle;
|
||||||
*uhkModulePhase = isMessageValid ? UhkModulePhase_RequestModuleFeatures : UhkModulePhase_RequestModuleId;
|
*uhkModulePhase = isMessageValid ? UhkModulePhase_RequestModuleKeyCount : UhkModulePhase_RequestModuleId;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get module features
|
// Get module key count
|
||||||
case UhkModulePhase_RequestModuleFeatures:
|
case UhkModulePhase_RequestModuleKeyCount:
|
||||||
txMessage.data[0] = SlaveCommand_RequestProperty;
|
txMessage.data[0] = SlaveCommand_RequestProperty;
|
||||||
txMessage.data[1] = SlaveProperty_Features;
|
txMessage.data[1] = SlaveProperty_KeyCount;
|
||||||
txMessage.length = 2;
|
txMessage.length = 2;
|
||||||
status = tx(i2cAddress);
|
status = tx(i2cAddress);
|
||||||
*uhkModulePhase = UhkModulePhase_ReceiveModuleFeatures;
|
*uhkModulePhase = UhkModulePhase_ReceiveModuleKeyCount;
|
||||||
break;
|
break;
|
||||||
case UhkModulePhase_ReceiveModuleFeatures:
|
case UhkModulePhase_ReceiveModuleKeyCount:
|
||||||
status = rx(rxMessage, i2cAddress);
|
status = rx(rxMessage, i2cAddress);
|
||||||
*uhkModulePhase = UhkModulePhase_ProcessModuleFeatures;
|
*uhkModulePhase = UhkModulePhase_ProcessModuleKeyCount;
|
||||||
break;
|
break;
|
||||||
case UhkModulePhase_ProcessModuleFeatures: {
|
case UhkModulePhase_ProcessModuleKeyCount: {
|
||||||
bool isMessageValid = CRC16_IsMessageValid(rxMessage);
|
bool isMessageValid = CRC16_IsMessageValid(rxMessage);
|
||||||
if (isMessageValid) {
|
if (isMessageValid) {
|
||||||
memcpy(&uhkModuleState->features, rxMessage->data, sizeof(uhk_module_features_t));
|
uhkModuleState->keyCount = rxMessage->data[0];
|
||||||
}
|
}
|
||||||
status = kStatus_Uhk_NoTransfer;
|
status = kStatus_Uhk_IdleCycle;
|
||||||
*uhkModulePhase = isMessageValid ? UhkModulePhase_RequestKeyStates : UhkModulePhase_RequestModuleFeatures;
|
*uhkModulePhase = isMessageValid ? UhkModulePhase_RequestModulePointerCount : UhkModulePhase_RequestModuleKeyCount;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get module pointer count
|
||||||
|
case UhkModulePhase_RequestModulePointerCount:
|
||||||
|
txMessage.data[0] = SlaveCommand_RequestProperty;
|
||||||
|
txMessage.data[1] = SlaveProperty_PointerCount;
|
||||||
|
txMessage.length = 2;
|
||||||
|
status = tx(i2cAddress);
|
||||||
|
*uhkModulePhase = UhkModulePhase_ReceiveModulePointerCount;
|
||||||
|
break;
|
||||||
|
case UhkModulePhase_ReceiveModulePointerCount:
|
||||||
|
status = rx(rxMessage, i2cAddress);
|
||||||
|
*uhkModulePhase = UhkModulePhase_ProcessModulePointerCount;
|
||||||
|
break;
|
||||||
|
case UhkModulePhase_ProcessModulePointerCount: {
|
||||||
|
bool isMessageValid = CRC16_IsMessageValid(rxMessage);
|
||||||
|
if (isMessageValid) {
|
||||||
|
uhkModuleState->pointerCount = rxMessage->data[0];
|
||||||
|
}
|
||||||
|
status = kStatus_Uhk_IdleCycle;
|
||||||
|
*uhkModulePhase = isMessageValid ? UhkModulePhase_RequestKeyStates : UhkModulePhase_RequestModulePointerCount;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,29 +222,19 @@ status_t UhkModuleSlaveDriver_Update(uint8_t uhkModuleDriverId)
|
|||||||
case UhkModulePhase_ProcessKeystates:
|
case UhkModulePhase_ProcessKeystates:
|
||||||
if (CRC16_IsMessageValid(rxMessage)) {
|
if (CRC16_IsMessageValid(rxMessage)) {
|
||||||
uint8_t slotId = uhkModuleDriverId + 1;
|
uint8_t slotId = uhkModuleDriverId + 1;
|
||||||
BoolBitsToBytes(rxMessage->data, CurrentKeyStates[slotId], uhkModuleState->features.keyCount);
|
BoolBitsToBytes(rxMessage->data, keyStatesBuffer, uhkModuleState->keyCount);
|
||||||
}
|
for (uint8_t keyId=0; keyId<uhkModuleState->keyCount; keyId++) {
|
||||||
status = kStatus_Uhk_NoTransfer;
|
KeyStates[slotId][keyId].current = keyStatesBuffer[keyId];
|
||||||
*uhkModulePhase = UhkModulePhase_JumpToBootloader;
|
}
|
||||||
break;
|
|
||||||
|
|
||||||
// Jump to bootloader
|
|
||||||
case UhkModulePhase_JumpToBootloader:
|
|
||||||
if (uhkModuleState->jumpToBootloader) {
|
|
||||||
txMessage.data[0] = SlaveCommand_JumpToBootloader;
|
|
||||||
txMessage.length = 1;
|
|
||||||
status = tx(i2cAddress);
|
|
||||||
uhkModuleState->jumpToBootloader = false;
|
|
||||||
} else {
|
|
||||||
status = kStatus_Uhk_NoTransfer;
|
|
||||||
}
|
}
|
||||||
|
status = kStatus_Uhk_IdleCycle;
|
||||||
*uhkModulePhase = UhkModulePhase_SetTestLed;
|
*uhkModulePhase = UhkModulePhase_SetTestLed;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Set test LED
|
// Set test LED
|
||||||
case UhkModulePhase_SetTestLed:
|
case UhkModulePhase_SetTestLed:
|
||||||
if (uhkModuleSourceVars->isTestLedOn == uhkModuleTargetVars->isTestLedOn) {
|
if (uhkModuleSourceVars->isTestLedOn == uhkModuleTargetVars->isTestLedOn) {
|
||||||
status = kStatus_Uhk_NoTransfer;
|
status = kStatus_Uhk_IdleCycle;
|
||||||
} else {
|
} else {
|
||||||
txMessage.data[0] = SlaveCommand_SetTestLed;
|
txMessage.data[0] = SlaveCommand_SetTestLed;
|
||||||
txMessage.data[1] = uhkModuleSourceVars->isTestLedOn;
|
txMessage.data[1] = uhkModuleSourceVars->isTestLedOn;
|
||||||
@@ -207,7 +248,7 @@ status_t UhkModuleSlaveDriver_Update(uint8_t uhkModuleDriverId)
|
|||||||
// Set PWM brightness
|
// Set PWM brightness
|
||||||
case UhkModulePhase_SetLedPwmBrightness:
|
case UhkModulePhase_SetLedPwmBrightness:
|
||||||
if (uhkModuleSourceVars->ledPwmBrightness == uhkModuleTargetVars->ledPwmBrightness) {
|
if (uhkModuleSourceVars->ledPwmBrightness == uhkModuleTargetVars->ledPwmBrightness) {
|
||||||
status = kStatus_Uhk_NoTransfer;
|
status = kStatus_Uhk_IdleCycle;
|
||||||
} else {
|
} else {
|
||||||
txMessage.data[0] = SlaveCommand_SetLedPwmBrightness;
|
txMessage.data[0] = SlaveCommand_SetLedPwmBrightness;
|
||||||
txMessage.data[1] = uhkModuleSourceVars->ledPwmBrightness;
|
txMessage.data[1] = uhkModuleSourceVars->ledPwmBrightness;
|
||||||
@@ -224,8 +265,10 @@ status_t UhkModuleSlaveDriver_Update(uint8_t uhkModuleDriverId)
|
|||||||
|
|
||||||
void UhkModuleSlaveDriver_Disconnect(uint8_t uhkModuleDriverId)
|
void UhkModuleSlaveDriver_Disconnect(uint8_t uhkModuleDriverId)
|
||||||
{
|
{
|
||||||
|
#ifdef LED_DRIVERS_ENABLED
|
||||||
if (uhkModuleDriverId == SlaveId_LeftKeyboardHalf) {
|
if (uhkModuleDriverId == SlaveId_LeftKeyboardHalf) {
|
||||||
Slaves[SlaveId_LeftLedDriver].isConnected = false;
|
Slaves[SlaveId_LeftLedDriver].isConnected = false;
|
||||||
}
|
}
|
||||||
UhkModuleStates[uhkModuleDriverId].moduleId = 0;
|
UhkModuleStates[uhkModuleDriverId].moduleId = 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,11 +5,14 @@
|
|||||||
|
|
||||||
#include "fsl_common.h"
|
#include "fsl_common.h"
|
||||||
#include "crc16.h"
|
#include "crc16.h"
|
||||||
|
#include "versions.h"
|
||||||
|
|
||||||
// Macros:
|
// Macros:
|
||||||
|
|
||||||
#define UHK_MODULE_MAX_COUNT 3
|
#define UHK_MODULE_MAX_COUNT 3
|
||||||
#define MAX_PWM_BRIGHTNESS 0x64
|
#define MAX_PWM_BRIGHTNESS 0x64
|
||||||
|
#define SLOT_ID_TO_UHK_MODULE_DRIVER_ID(slotId) ((slotId)-1)
|
||||||
|
#define UHK_MODULE_DRIVER_ID_TO_SLOT_ID(uhkModuleDriverId) ((uhkModuleDriverId)+1)
|
||||||
|
|
||||||
// Typedefs:
|
// Typedefs:
|
||||||
|
|
||||||
@@ -27,19 +30,29 @@
|
|||||||
UhkModulePhase_ProcessSync,
|
UhkModulePhase_ProcessSync,
|
||||||
|
|
||||||
// Get protocol version
|
// Get protocol version
|
||||||
UhkModulePhase_RequestProtocolVersion,
|
UhkModulePhase_RequestModuleProtocolVersion,
|
||||||
UhkModulePhase_ReceiveProtocolVersion,
|
UhkModulePhase_ReceiveModuleProtocolVersion,
|
||||||
UhkModulePhase_ProcessProtocolVersion,
|
UhkModulePhase_ProcessModuleProtocolVersion,
|
||||||
|
|
||||||
|
// Get firmware version
|
||||||
|
UhkModulePhase_RequestFirmwareVersion,
|
||||||
|
UhkModulePhase_ReceiveFirmwareVersion,
|
||||||
|
UhkModulePhase_ProcessFirmwareVersion,
|
||||||
|
|
||||||
// Get module id
|
// Get module id
|
||||||
UhkModulePhase_RequestModuleId,
|
UhkModulePhase_RequestModuleId,
|
||||||
UhkModulePhase_ReceiveModuleId,
|
UhkModulePhase_ReceiveModuleId,
|
||||||
UhkModulePhase_ProcessModuleId,
|
UhkModulePhase_ProcessModuleId,
|
||||||
|
|
||||||
// Get module features
|
// Get module key count
|
||||||
UhkModulePhase_RequestModuleFeatures,
|
UhkModulePhase_RequestModuleKeyCount,
|
||||||
UhkModulePhase_ReceiveModuleFeatures,
|
UhkModulePhase_ReceiveModuleKeyCount,
|
||||||
UhkModulePhase_ProcessModuleFeatures,
|
UhkModulePhase_ProcessModuleKeyCount,
|
||||||
|
|
||||||
|
// Get module key count
|
||||||
|
UhkModulePhase_RequestModulePointerCount,
|
||||||
|
UhkModulePhase_ReceiveModulePointerCount,
|
||||||
|
UhkModulePhase_ProcessModulePointerCount,
|
||||||
|
|
||||||
// Get key states
|
// Get key states
|
||||||
UhkModulePhase_RequestKeyStates,
|
UhkModulePhase_RequestKeyStates,
|
||||||
@@ -47,9 +60,9 @@
|
|||||||
UhkModulePhase_ProcessKeystates,
|
UhkModulePhase_ProcessKeystates,
|
||||||
|
|
||||||
// Misc phases
|
// Misc phases
|
||||||
UhkModulePhase_JumpToBootloader,
|
|
||||||
UhkModulePhase_SetTestLed,
|
UhkModulePhase_SetTestLed,
|
||||||
UhkModulePhase_SetLedPwmBrightness,
|
UhkModulePhase_SetLedPwmBrightness,
|
||||||
|
UhkModulePhase_JumpToBootloader,
|
||||||
|
|
||||||
} uhk_module_phase_t;
|
} uhk_module_phase_t;
|
||||||
|
|
||||||
@@ -60,15 +73,16 @@
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t moduleId;
|
uint8_t moduleId;
|
||||||
uint8_t protocolVersion;
|
version_t moduleProtocolVersion;
|
||||||
|
version_t firmwareVersion;
|
||||||
uhk_module_phase_t phase;
|
uhk_module_phase_t phase;
|
||||||
uhk_module_vars_t sourceVars;
|
uhk_module_vars_t sourceVars;
|
||||||
uhk_module_vars_t targetVars;
|
uhk_module_vars_t targetVars;
|
||||||
i2c_message_t rxMessage;
|
i2c_message_t rxMessage;
|
||||||
uint8_t firmwareI2cAddress;
|
uint8_t firmwareI2cAddress;
|
||||||
uint8_t bootloaderI2cAddress;
|
uint8_t bootloaderI2cAddress;
|
||||||
uhk_module_features_t features;
|
uint8_t keyCount;
|
||||||
bool jumpToBootloader;
|
uint8_t pointerCount;
|
||||||
} uhk_module_state_t;
|
} uhk_module_state_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
#include "fsl_i2c.h"
|
#include "fsl_i2c.h"
|
||||||
#include "slave_scheduler.h"
|
#include "slave_scheduler.h"
|
||||||
#include "slot.h"
|
#include "slot.h"
|
||||||
#include "main.h"
|
|
||||||
#include "slave_drivers/is31fl3731_driver.h"
|
#include "slave_drivers/is31fl3731_driver.h"
|
||||||
#include "slave_drivers/uhk_module_driver.h"
|
#include "slave_drivers/uhk_module_driver.h"
|
||||||
|
#include "slave_drivers/kboot_driver.h"
|
||||||
#include "i2c.h"
|
#include "i2c.h"
|
||||||
#include "i2c_addresses.h"
|
#include "i2c_addresses.h"
|
||||||
|
#include "config.h"
|
||||||
|
#include "i2c_error_logger.h"
|
||||||
|
|
||||||
uint32_t I2cSchedulerCounter;
|
uint32_t I2cSlaveScheduler_Counter;
|
||||||
|
|
||||||
static uint8_t previousSlaveId;
|
static uint8_t previousSlaveId;
|
||||||
static uint8_t currentSlaveId;
|
static uint8_t currentSlaveId;
|
||||||
@@ -29,6 +31,7 @@ uhk_slave_t Slaves[] = {
|
|||||||
.update = UhkModuleSlaveDriver_Update,
|
.update = UhkModuleSlaveDriver_Update,
|
||||||
.perDriverId = UhkModuleDriverId_RightAddon,
|
.perDriverId = UhkModuleDriverId_RightAddon,
|
||||||
},
|
},
|
||||||
|
#ifdef LED_DRIVERS_ENABLED
|
||||||
{
|
{
|
||||||
.init = LedSlaveDriver_Init,
|
.init = LedSlaveDriver_Init,
|
||||||
.update = LedSlaveDriver_Update,
|
.update = LedSlaveDriver_Update,
|
||||||
@@ -39,25 +42,37 @@ uhk_slave_t Slaves[] = {
|
|||||||
.update = LedSlaveDriver_Update,
|
.update = LedSlaveDriver_Update,
|
||||||
.perDriverId = LedDriverId_Left,
|
.perDriverId = LedDriverId_Left,
|
||||||
},
|
},
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
.init = KbootSlaveDriver_Init,
|
||||||
|
.update = KbootSlaveDriver_Update,
|
||||||
|
.perDriverId = KbootDriverId_Singleton,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static void slaveSchedulerCallback(I2C_Type *base, i2c_master_handle_t *handle, status_t previousStatus, void *userData)
|
static void slaveSchedulerCallback(I2C_Type *base, i2c_master_handle_t *handle, status_t previousStatus, void *userData)
|
||||||
{
|
{
|
||||||
bool isFirstIteration = true;
|
bool isFirstCycle = true;
|
||||||
bool isTransferScheduled = false;
|
bool isTransferScheduled = false;
|
||||||
I2cSchedulerCounter++;
|
I2cSlaveScheduler_Counter++;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
uhk_slave_t *previousSlave = Slaves + previousSlaveId;
|
|
||||||
uhk_slave_t *currentSlave = Slaves + currentSlaveId;
|
uhk_slave_t *currentSlave = Slaves + currentSlaveId;
|
||||||
|
|
||||||
if (isFirstIteration) {
|
if (isFirstCycle) {
|
||||||
|
uhk_slave_t *previousSlave = Slaves + previousSlaveId;
|
||||||
|
previousSlave->previousStatus = previousStatus;
|
||||||
|
if (IS_STATUS_I2C_ERROR(previousStatus)) {
|
||||||
|
LogI2cError(previousSlaveId, previousStatus);
|
||||||
|
}
|
||||||
|
|
||||||
bool wasPreviousSlaveConnected = previousSlave->isConnected;
|
bool wasPreviousSlaveConnected = previousSlave->isConnected;
|
||||||
previousSlave->isConnected = previousStatus == kStatus_Success;
|
previousSlave->isConnected = previousStatus == kStatus_Success;
|
||||||
if (wasPreviousSlaveConnected && !previousSlave->isConnected && previousSlave->disconnect) {
|
if (wasPreviousSlaveConnected && !previousSlave->isConnected && previousSlave->disconnect) {
|
||||||
previousSlave->disconnect(previousSlaveId);
|
previousSlave->disconnect(previousSlaveId);
|
||||||
}
|
}
|
||||||
isFirstIteration = false;
|
|
||||||
|
isFirstCycle = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!currentSlave->isConnected) {
|
if (!currentSlave->isConnected) {
|
||||||
@@ -65,18 +80,21 @@ static void slaveSchedulerCallback(I2C_Type *base, i2c_master_handle_t *handle,
|
|||||||
}
|
}
|
||||||
|
|
||||||
status_t currentStatus = currentSlave->update(currentSlave->perDriverId);
|
status_t currentStatus = currentSlave->update(currentSlave->perDriverId);
|
||||||
isTransferScheduled = currentStatus != kStatus_Uhk_IdleSlave && currentStatus != kStatus_Uhk_NoTransfer;
|
if (IS_STATUS_I2C_ERROR(currentStatus)) {
|
||||||
|
LogI2cError(currentSlaveId, currentStatus);
|
||||||
|
}
|
||||||
|
isTransferScheduled = currentStatus != kStatus_Uhk_IdleSlave && currentStatus != kStatus_Uhk_IdleCycle;
|
||||||
if (isTransferScheduled) {
|
if (isTransferScheduled) {
|
||||||
currentSlave->isConnected = true;
|
currentSlave->isConnected = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentStatus != kStatus_Uhk_NoTransfer) {
|
if (currentStatus != kStatus_Uhk_IdleCycle) {
|
||||||
previousSlaveId = currentSlaveId++;
|
previousSlaveId = currentSlaveId++;
|
||||||
|
if (currentSlaveId >= SLAVE_COUNT) {
|
||||||
|
currentSlaveId = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentSlaveId >= (sizeof(Slaves) / sizeof(uhk_slave_t))) {
|
|
||||||
currentSlaveId = 0;
|
|
||||||
}
|
|
||||||
} while (!isTransferScheduled);
|
} while (!isTransferScheduled);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +103,7 @@ void InitSlaveScheduler(void)
|
|||||||
previousSlaveId = 0;
|
previousSlaveId = 0;
|
||||||
currentSlaveId = 0;
|
currentSlaveId = 0;
|
||||||
|
|
||||||
for (uint8_t i=0; i<sizeof(Slaves) / sizeof(uhk_slave_t); i++) {
|
for (uint8_t i=0; i<SLAVE_COUNT; i++) {
|
||||||
uhk_slave_t *currentSlave = Slaves + i;
|
uhk_slave_t *currentSlave = Slaves + i;
|
||||||
currentSlave->isConnected = false;
|
currentSlave->isConnected = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,14 @@
|
|||||||
// Includes:
|
// Includes:
|
||||||
|
|
||||||
#include "fsl_common.h"
|
#include "fsl_common.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
// Macros:
|
||||||
|
|
||||||
|
#define SLAVE_COUNT (sizeof(Slaves) / sizeof(uhk_slave_t))
|
||||||
|
#define MAX_SLAVE_COUNT 6
|
||||||
|
#define IS_VALID_SLAVE_ID(slaveId) (0 <= slaveId && slaveId <= MAX_SLAVE_COUNT)
|
||||||
|
#define IS_STATUS_I2C_ERROR(status) (kStatus_I2C_Busy <= status && status <= kStatus_I2C_Timeout)
|
||||||
|
|
||||||
// Typedefs:
|
// Typedefs:
|
||||||
|
|
||||||
@@ -11,8 +19,11 @@
|
|||||||
SlaveId_LeftKeyboardHalf,
|
SlaveId_LeftKeyboardHalf,
|
||||||
SlaveId_LeftAddon,
|
SlaveId_LeftAddon,
|
||||||
SlaveId_RightAddon,
|
SlaveId_RightAddon,
|
||||||
|
#ifdef LED_DRIVERS_ENABLED
|
||||||
SlaveId_RightLedDriver,
|
SlaveId_RightLedDriver,
|
||||||
SlaveId_LeftLedDriver,
|
SlaveId_LeftLedDriver,
|
||||||
|
#endif
|
||||||
|
SlaveId_KbootDriver,
|
||||||
} slave_id_t;
|
} slave_id_t;
|
||||||
|
|
||||||
typedef void (slave_init_t)(uint8_t);
|
typedef void (slave_init_t)(uint8_t);
|
||||||
@@ -25,21 +36,22 @@
|
|||||||
slave_update_t *update;
|
slave_update_t *update;
|
||||||
slave_disconnect_t *disconnect;
|
slave_disconnect_t *disconnect;
|
||||||
bool isConnected;
|
bool isConnected;
|
||||||
|
status_t previousStatus;
|
||||||
} uhk_slave_t;
|
} uhk_slave_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
kStatusGroup_Uhk = -1,
|
kStatusGroup_Uhk = 200,
|
||||||
} uhk_status_group_t;
|
} uhk_status_group_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
kStatus_Uhk_IdleSlave = MAKE_STATUS(kStatusGroup_Uhk, 0), // Another slave should be scheduled
|
kStatus_Uhk_IdleSlave = MAKE_STATUS(kStatusGroup_Uhk, 0), // Another slave should be scheduled
|
||||||
kStatus_Uhk_NoTransfer = MAKE_STATUS(kStatusGroup_Uhk, 1), // The same slave should be rescheduled
|
kStatus_Uhk_IdleCycle = MAKE_STATUS(kStatusGroup_Uhk, 1), // The same slave should be rescheduled
|
||||||
} uhk_status_t;
|
} uhk_status_t;
|
||||||
|
|
||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
extern uhk_slave_t Slaves[];
|
extern uhk_slave_t Slaves[];
|
||||||
extern uint32_t I2cSchedulerCounter;
|
extern uint32_t I2cSlaveScheduler_Counter;
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
// Macros:
|
// Macros:
|
||||||
|
|
||||||
#define SLOT_COUNT 4
|
#define SLOT_COUNT 4
|
||||||
|
#define IS_VALID_MODULE_SLOT(slotId) (SlotId_LeftKeyboardHalf <= (slotId) && (slotId) <= SlotId_RightModule)
|
||||||
|
|
||||||
// Typedefs:
|
// Typedefs:
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
#ifndef __SYSTEM_PROPERTIES_H__
|
|
||||||
#define __SYSTEM_PROPERTIES_H__
|
|
||||||
|
|
||||||
// Macros:
|
|
||||||
|
|
||||||
#define SYSTEM_PROPERTY_USB_PROTOCOL_VERSION 1
|
|
||||||
#define SYSTEM_PROPERTY_BRIDGE_PROTOCOL_VERSION 1
|
|
||||||
#define SYSTEM_PROPERTY_DATA_MODEL_VERSION 1
|
|
||||||
#define SYSTEM_PROPERTY_FIRMWARE_VERSION 1
|
|
||||||
|
|
||||||
// Typedefs:
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
SystemPropertyId_UsbProtocolVersion = 0,
|
|
||||||
SystemPropertyId_BridgeProtocolVersion = 1,
|
|
||||||
SystemPropertyId_DataModelVersion = 2,
|
|
||||||
SystemPropertyId_FirmwareVersion = 3,
|
|
||||||
SystemPropertyId_HardwareConfigSize = 4,
|
|
||||||
SystemPropertyId_UserConfigSize = 5,
|
|
||||||
} system_property_t;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
43
right/src/timer.c
Normal file
43
right/src/timer.c
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#include "fsl_pit.h"
|
||||||
|
#include "timer.h"
|
||||||
|
|
||||||
|
uint32_t CurrentTime;
|
||||||
|
|
||||||
|
void PIT_TIMER_HANDLER(void)
|
||||||
|
{
|
||||||
|
CurrentTime++;
|
||||||
|
PIT_ClearStatusFlags(PIT, PIT_TIMER_CHANNEL, PIT_TFLG_TIF_MASK);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Timer_Init(void)
|
||||||
|
{
|
||||||
|
pit_config_t pitConfig;
|
||||||
|
PIT_GetDefaultConfig(&pitConfig);
|
||||||
|
PIT_Init(PIT, &pitConfig);
|
||||||
|
|
||||||
|
// TODO: Why the interval needs to be multiplied by two to arrive to the correct timing?
|
||||||
|
// Figure it out and clean this up.
|
||||||
|
PIT_SetTimerPeriod(PIT, PIT_TIMER_CHANNEL, MSEC_TO_COUNT(TIMER_INTERVAL_MSEC*2, PIT_SOURCE_CLOCK));
|
||||||
|
|
||||||
|
PIT_EnableInterrupts(PIT, PIT_TIMER_CHANNEL, kPIT_TimerInterruptEnable);
|
||||||
|
EnableIRQ(PIT_TIMER_IRQ_ID);
|
||||||
|
PIT_StartTimer(PIT, PIT_TIMER_CHANNEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Timer_SetCurrentTime(uint32_t *time)
|
||||||
|
{
|
||||||
|
*time = CurrentTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t Timer_GetElapsedTime(uint32_t *time)
|
||||||
|
{
|
||||||
|
uint32_t elapsedTime = CurrentTime - *time;
|
||||||
|
return elapsedTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t Timer_GetElapsedTimeAndSetCurrent(uint32_t *time)
|
||||||
|
{
|
||||||
|
uint32_t elapsedTime = Timer_GetElapsedTime(time);
|
||||||
|
*time = CurrentTime;
|
||||||
|
return elapsedTime;
|
||||||
|
}
|
||||||
23
right/src/timer.h
Normal file
23
right/src/timer.h
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
#ifndef __TIMER_H__
|
||||||
|
#define __TIMER_H__
|
||||||
|
|
||||||
|
// Includes:
|
||||||
|
|
||||||
|
#include "peripherals/pit.h"
|
||||||
|
|
||||||
|
// Macros:
|
||||||
|
|
||||||
|
#define TIMER_INTERVAL_MSEC 1
|
||||||
|
|
||||||
|
// Variables:
|
||||||
|
|
||||||
|
extern uint32_t CurrentTime;
|
||||||
|
|
||||||
|
// Functions:
|
||||||
|
|
||||||
|
void Timer_Init(void);
|
||||||
|
void Timer_SetCurrentTime(uint32_t *time);
|
||||||
|
uint32_t Timer_GetElapsedTime(uint32_t *time);
|
||||||
|
uint32_t Timer_GetElapsedTimeAndSetCurrent(uint32_t *time);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
#define USB_DEVICE_CLASS 0x00
|
#define USB_DEVICE_CLASS 0x00
|
||||||
#define USB_DEVICE_SUBCLASS 0x00
|
#define USB_DEVICE_SUBCLASS 0x00
|
||||||
#define USB_DEVICE_PROTOCOL 0x00
|
#define USB_DEVICE_PROTOCOL 0x00
|
||||||
|
#define USB_IRQ_ID USB0_IRQn
|
||||||
|
|
||||||
#define USB_INTERFACE_ALTERNATE_SETTING_NONE 0x00
|
#define USB_INTERFACE_ALTERNATE_SETTING_NONE 0x00
|
||||||
#define USB_STRING_DESCRIPTOR_NONE 0x00
|
#define USB_STRING_DESCRIPTOR_NONE 0x00
|
||||||
|
|||||||
59
right/src/usb_commands/usb_command_apply_config.c
Normal file
59
right/src/usb_commands/usb_command_apply_config.c
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
#include "usb_commands/usb_command_apply_config.h"
|
||||||
|
#include "config_parser/config_globals.h"
|
||||||
|
#include "config_parser/parse_config.h"
|
||||||
|
#include "usb_protocol_handler.h"
|
||||||
|
#include "keymap.h"
|
||||||
|
|
||||||
|
void updateUsbBuffer(uint8_t usbStatusCode, uint16_t parserOffset, parser_stage_t parserStage)
|
||||||
|
{
|
||||||
|
SetUsbTxBufferUint8(0, usbStatusCode);
|
||||||
|
SetUsbTxBufferUint16(1, parserOffset);
|
||||||
|
SetUsbTxBufferUint8(3, parserStage);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UsbCommand_ApplyConfig(void)
|
||||||
|
{
|
||||||
|
// Validate the staging configuration.
|
||||||
|
|
||||||
|
ParserRunDry = true;
|
||||||
|
StagingUserConfigBuffer.offset = 0;
|
||||||
|
uint8_t parseConfigStatus = ParseConfig(&StagingUserConfigBuffer);
|
||||||
|
updateUsbBuffer(parseConfigStatus, StagingUserConfigBuffer.offset, ParsingStage_Validate);
|
||||||
|
|
||||||
|
if (parseConfigStatus != UsbStatusCode_Success) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make the staging configuration the current one.
|
||||||
|
|
||||||
|
char oldKeymapAbbreviation[KEYMAP_ABBREVIATION_LENGTH];
|
||||||
|
uint8_t oldKeymapAbbreviationLen;
|
||||||
|
memcpy(oldKeymapAbbreviation, AllKeymaps[CurrentKeymapIndex].abbreviation, KEYMAP_ABBREVIATION_LENGTH);
|
||||||
|
oldKeymapAbbreviationLen = AllKeymaps[CurrentKeymapIndex].abbreviationLen;
|
||||||
|
|
||||||
|
uint8_t *temp = ValidatedUserConfigBuffer.buffer;
|
||||||
|
ValidatedUserConfigBuffer.buffer = StagingUserConfigBuffer.buffer;
|
||||||
|
StagingUserConfigBuffer.buffer = temp;
|
||||||
|
|
||||||
|
ParserRunDry = false;
|
||||||
|
ValidatedUserConfigBuffer.offset = 0;
|
||||||
|
parseConfigStatus = ParseConfig(&ValidatedUserConfigBuffer);
|
||||||
|
updateUsbBuffer(parseConfigStatus, ValidatedUserConfigBuffer.offset, ParsingStage_Apply);
|
||||||
|
|
||||||
|
if (parseConfigStatus != UsbStatusCode_Success) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Switch to the keymap of the updated configuration of the same name or the default keymap.
|
||||||
|
|
||||||
|
for (uint8_t keymapId = 0; keymapId < AllKeymapsCount; keymapId++) {
|
||||||
|
if (AllKeymaps[keymapId].abbreviationLen == oldKeymapAbbreviationLen &&
|
||||||
|
!memcmp(oldKeymapAbbreviation, AllKeymaps[keymapId].abbreviation, oldKeymapAbbreviationLen))
|
||||||
|
{
|
||||||
|
SwitchKeymap(keymapId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SwitchKeymap(DefaultKeymapIndex);
|
||||||
|
}
|
||||||
15
right/src/usb_commands/usb_command_apply_config.h
Normal file
15
right/src/usb_commands/usb_command_apply_config.h
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#ifndef __USB_COMMAND_APPLY_CONFIG_H__
|
||||||
|
#define __USB_COMMAND_APPLY_CONFIG_H__
|
||||||
|
|
||||||
|
// Typedefs:
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
ParsingStage_Validate,
|
||||||
|
ParsingStage_Apply,
|
||||||
|
} parser_stage_t;
|
||||||
|
|
||||||
|
// Functions:
|
||||||
|
|
||||||
|
void UsbCommand_ApplyConfig(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user