Compare commits

..
609 Commits
Author SHA1 Message Date
László Monda b98e2d935c Don't make led_driver_state_t members volatile. Uncomment the body of LedSlaveDriver_EnableLeds() 2018-10-20 14:45:39 +02:00
László Monda 0066c09204 Merge remote-tracking branch 'origin' into led-fade 2018-10-20 13:26:02 +02:00
László Monda a59b43b433 Bump version to 8.5.3, update package.json, changelog, versions.h and reference the latest Agent. 2018-10-20 01:20:31 +02:00
László Monda ceb2f3de00 Re-enable the I2C watchdog of the left keyboard half which was accidentally disabled starting from firmware 8.4.3. This should fix the freezes of the left keyboard half. 2018-10-20 01:11:36 +02:00
László Monda 5cd4030a93 Merge branch 'master' of github.com:UltimateHackingKeyboard/firmware 2018-10-06 21:33:16 +02:00
László Monda 21ae72dd9e Bump version to 8.5.2, update changelog, package.json, versions.h, and Agent. 2018-10-06 21:31:32 +02:00
László Monda dba61c6a42 Merge pull request #186 from UltimateHackingKeyboard/action-cache
Extend the behavior of keys upon layer changes to keymap changes
2018-10-06 20:56:06 +02:00
László Monda f61acc483b Update ISSUE_TEMPLATE 2018-10-06 20:26:47 +02:00
László Monda fb38e4099b Update ISSUE_TEMPLATE 2018-10-06 20:03:51 +02:00
László Monda 5fe19abe06 Merge branch 'master' into action-cache 2018-10-06 19:44:08 +02:00
Eric Tang 06e34fdcbc Convert the layer cache to an action cache 2018-10-06 10:02:46 -05:00
Eric Tang cc6666b96d Don't suppress keys upon keymap changes 2018-10-06 10:02:23 -05:00
László Monda a22dfdd917 Update version to 8.5.1, changelog, package.json and versions.h 2018-10-04 23:10:58 +02:00
László Monda 8b69a25dda Reset UsbReportUpdateSemaphore if it gets stuck for 100ms. This should fix occasional freezes. 2018-10-04 23:04:13 +02:00
László Monda 6f2b45c27c Update changelog, package.json, versions.h and Agent reference. 2018-10-04 22:46:01 +02:00
László Monda 98f7d512de Extract CurrentTime and remove Timer_{Get,Set}CurrentTime() 2018-10-04 20:38:36 +02:00
László Monda c5cf738fd0 Expose UsbReportUpdateSemaphore via UsbCommand_{Get,Set}Variable() 2018-10-04 19:23:38 +02:00
László Monda af31ae210a Move the pointer not by 1 but by 5 pixels when testing the USB stack to make the pointer easier to see. 2018-09-26 16:34:01 +02:00
László Monda 44799995b9 Update default issue text to include Karabiner Elements. 2018-09-26 00:03:20 +02:00
László Monda 3f5f83a19b Add issue template. 2018-09-25 23:55:56 +02:00
László Monda bc4f35e578 Delete issue template. 2018-09-25 23:55:26 +02:00
László Monda e9309aab16 Add issue template regarding Karabiner Elements 2018-09-25 23:52:09 +02:00
László Monda f004b84399 Merge pull request #175 from UltimateHackingKeyboard/macro-engine
Use the correct scancode so that commas are outputted
2018-09-19 14:22:01 +02:00
Eric Tang 58f8120611 Use the correct scancode so that commas are outputted 2018-09-18 23:10:08 -05:00
László Monda 5b71fb7aaa Merge pull request #168 from UltimateHackingKeyboard/primary-role-modifiers
Send primary role modifiers consistently
2018-09-03 08:38:08 +02:00
Eric Tang 9d0f41bf5e Send primary role modifiers consistently 2018-09-02 00:02:40 -05:00
László Monda 47a3a8ad80 Merge pull request #163 from UltimateHackingKeyboard/layer-deactivation
Only allow layer switcher keys to deactivate toggled layers
2018-08-26 20:47:10 +02:00
Eric Tang b4908bf2ac Only allow layer switcher keys to deactivate toggled layers 2018-08-26 11:46:38 -05:00
Eric Tang 846342e851 Deactivate secondary roles when switching keymaps 2018-08-25 07:22:48 -05:00
László Monda 3196abe574 Bump firmware version to 8.4.5, update changelog, package.json and versions.h 2018-08-21 21:56:41 +02:00
László Monda 5f0bae1840 Merge branch 'layer-cache' 2018-08-21 16:11:07 +02:00
László Monda c3a38c8b59 Split the point to point that features Agent installation and running the external tool. 2018-08-21 04:21:06 +02:00
László Monda 1f9d31cad4 Update build instructions. 2018-08-21 04:18:54 +02:00
László Monda b89de6655e Upgrade to the latest MCUXpresso IDE. 2018-08-21 03:50:30 +02:00
Eric Tang 4a1b747197 Implement a layer cache 2018-08-19 11:28:28 -07:00
László Monda eca87d2f62 Merge pull request #159 from UltimateHackingKeyboard/suppress-keys
Suppress pressed keys when the layer or keymap changes
2018-08-19 05:00:10 +02:00
Eric Tang 2e2b9d08a9 Suppress pressed keys when the layer or keymap changes 2018-08-18 19:52:07 -07:00
László Monda b4c2204e50 Bump firmware version to 8.4.4, update changelog, package.json and versions.h 2018-08-14 00:07:21 +02:00
László Monda 4c0546de6c Merge branch 'master' of github.com:UltimateHackingKeyboard/firmware 2018-08-13 23:08:53 +02:00
László Monda bea4c34a51 Merge pull request #154 from UltimateHackingKeyboard/secondary-role
Ensure that secondary roles are triggered consistently
2018-08-13 23:03:48 +02:00
László Monda bdc6232780 Merge branch 'master' of github.com:UltimateHackingKeyboard/firmware 2018-08-13 22:38:41 +02:00
László Monda 1d2d1c5049 Merge pull request #153 from UltimateHackingKeyboard/wake
Don't wake the host if a key is held down through the beginning of sleep
2018-08-13 21:42:46 +02:00
Eric Tang 67f07abd0d Ensure that secondary roles are triggered consistently 2018-08-13 12:30:36 -07:00
Eric Tang 4bfcd6e02c Don't wake the host if a key is held down through the beginning of sleep 2018-08-13 12:07:08 -07:00
Eric Tang 848341e216 Uncomment guard clause 2018-08-12 14:28:21 -07:00
Eric Tang 45d43dcc8d Use bools for requests 2018-08-12 13:54:03 -07:00
Eric Tang 5ae351db6f Refactor the state machine 2018-08-12 13:11:28 -07:00
László Monda 7eb190489b Bump firmware version to 8.4.3, update changelog, package.json, versions.h 2018-08-12 10:41:43 +02:00
Eric Tang 26da686e4d Implement the fade out effect 2018-08-11 17:04:11 -07:00
László Monda 640c034111 Compensate "double tap to lock layer" timeouts for the timer fix to make them as long as before 8.3.3 2018-08-11 01:53:45 +02:00
László Monda a6f12848ed Add timer related changelog entry. 2018-08-11 01:48:44 +02:00
László Monda 47f6a27e48 Move left/src/init_clock.[ch] to shared/slave 2018-08-06 00:16:26 +02:00
László Monda 9cc383a91d Delete config.h 2018-08-05 22:49:31 +02:00
László Monda a441cdf5d2 Delete debug_over_spi.[ch] 2018-08-05 22:47:55 +02:00
László Monda 8297dd5c48 Don't include the debug over SPI code from any file. 2018-08-05 22:44:11 +02:00
László Monda 225a481938 Fix coding style. 2018-08-05 22:31:48 +02:00
László Monda 5572952dc8 Use one liner comment style. 2018-08-05 22:28:30 +02:00
László Monda 7d011237f8 Always use the I2C watchdog for the left half. Remove I2C_WATCHDOG and relevant preprocessor stuff. 2018-08-05 22:24:34 +02:00
László Monda 1a47c6e629 Minor MCUXpresso .cproject file modification. 2018-08-05 22:22:21 +02:00
László Monda 047a232e7e Update .cproject file to make MCUXpresso IDE not pop up the warning regarding SDK version. 2018-08-04 23:48:11 +02:00
László Monda 28f5999cbb Bump firmware version to 8.4.2, update changelog and versions.h 2018-08-02 13:00:31 +02:00
László Monda fe7505a2df Merge branch 'master' of github.com:UltimateHackingKeyboard/firmware 2018-08-02 12:51:22 +02:00
László Monda b6ac16074c Merge pull request #149 from UltimateHackingKeyboard/secondary-role
Fix various secondary role bugs
2018-08-02 03:41:25 +02:00
Eric Tang 0bf205c5d2 Keep sticky modifiers active when modifier-only keys are pressed 2018-08-01 18:12:12 -07:00
Eric Tang e4a99a9400 Make sticky modifiers work consistently 2018-08-01 16:36:29 -07:00
Eric Tang 1e9b5833eb Correctly handle keypresses which triggers a secondary role 2018-08-01 15:53:55 -07:00
Eric Tang 79b052fca7 Remove redundant conditions 2018-07-31 16:12:51 -07:00
László Monda baee0b5682 Bump firmware version to 8.4.1, update changelog, package.json, versions.h 2018-07-31 23:57:33 +02:00
László Monda 6153d54f59 Merge pull request #144 from UltimateHackingKeyboard/sleep-wake
Make some improvements to the sleep/wake code
2018-07-26 22:47:40 +02:00
Eric Tang 0a6ebe2903 Remove the old code for detecting new keypresses 2018-07-25 15:16:15 -07:00
László Monda 1fbbeb0f33 Bump firmware version to 8.4.0, update changelog, package.json, versions.h 2018-07-24 15:30:18 +02:00
László Monda 456f0e9e58 Merge branch 'master' of github.com:UltimateHackingKeyboard/firmware 2018-07-24 14:50:53 +02:00
László Monda 0248a0e79f Set debounce press and release time to 50ms by default. 2018-07-24 14:50:16 +02:00
Eric Tang 0e5ec29433 Tweak the logic of the USB stack test 2018-07-22 21:22:48 -07:00
Eric Tang 2d7cd68459 Make some improvements to the sleep/wake code 2018-07-22 13:13:29 -07:00
László Monda 5ac10fabcb Add back simulateKeypresses. 2018-07-22 16:24:05 +02:00
László Monda b11017609d Merge pull request #143 from UltimateHackingKeyboard/usb-variables
Expose variables via USB
2018-07-22 16:04:55 +02:00
Eric Tang c3a5d258e5 Rename the test mode for clarity 2018-07-20 17:31:00 -07:00
Eric Tang a2866feb77 Temporarily allow the USB stack test to be activated through USB 2018-07-20 17:23:44 -07:00
Eric Tang 8c50192d6c Introduce a new way of activating the test mode 2018-07-20 17:17:59 -07:00
Eric Tang 63d82d92db Expose variables via USB 2018-07-20 17:17:30 -07:00
László Monda 1bced1be13 Merge branch 'debounce-configuration' 2018-07-16 18:24:38 +02:00
Eric Tang 86196d438c Add a test mode 2018-07-05 20:15:33 -07:00
Eric Tang d722b3d173 Make debounce times configurable on the fly 2018-07-05 14:41:19 -07:00
Eric Tang 2ef5c49090 Merge branch 'interrupt-removal' 2018-07-05 14:34:33 -07:00
Eric Tang 5a137392ee Remove the key scanning interrupt 2018-07-05 12:43:38 -07:00
Eric Tang 27d12ea31f Remove the debouncing interrupt 2018-07-05 12:33:55 -07:00
Eric Tang 9ba09ec8eb Convert key_state_t to a bit field 2018-07-05 11:50:13 -07:00
László Monda 014addd777 Bump version to 8.3.3, update changelog, package.json, versions.h 2018-07-03 01:26:40 +02:00
László Monda 4562a17155 Make the test code exercise the media and mouse interfaces too. 2018-07-03 00:34:39 +02:00
Eric Tang 950843ca2c Use return instead of break 2018-07-01 17:17:42 -07:00
László Monda 9600f46f83 Merge branch 'waking-on-keypress' 2018-07-01 22:34:35 +02:00
Eric Tang ef7589d83a Fix the mouse scrolling issue 2018-07-01 08:34:59 -07:00
Eric Tang 84f48ed055 Wake up the host when a new keypress is detected 2018-07-01 08:34:17 -07:00
László Monda ebef301e27 Merge pull request #123 from Lauszus/dev
Fix issue with keyboard freezing
2018-07-01 16:19:50 +02:00
László Monda 5b8b8d93e4 Merge pull request #135 from Lauszus/travis
Remove Eclipse build from the Travis job and cache the gcc archives
2018-07-01 00:43:07 +02:00
Kristian Sloth Lauszus d48049535e Remove Eclipse build from the Travis job and cache the gcc archives 2018-07-01 00:32:03 +02:00
Kristian Sloth Lauszus 5bd479ab8e Fixed unused variable
This was due to a merge conflict in c69f664e85
2018-07-01 00:04:26 +02:00
Kristian Sloth Lauszus 372151848a Just define the usb_status_t variable inside the if-statements 2018-06-30 23:44:58 +02:00
Kristian Sloth Lauszus 5b32c0da43 Disable the key press test code 2018-06-30 23:42:39 +02:00
Kristian Sloth Lauszus edf34de4b5 Fixed comment 2018-06-30 23:23:12 +02:00
Kristian Sloth Lauszus 8c7eb079ec Re-added code from 994e2f6b79 2018-06-30 23:03:50 +02:00
Kristian Sloth Lauszus 6612f7cced Fixed warning 2018-06-30 22:48:52 +02:00
Kristian Sloth Lauszus 7606f311c8 Fix coding style 2018-06-30 22:38:23 +02:00
Kristian Sloth Lauszus 9fe73233af Fix merge issue 2018-06-30 22:36:48 +02:00
Kristian Sloth Lauszus cba1ef97b6 Revert "Set the USB interrupt priority to the maximum possible" 2018-06-30 22:31:32 +02:00
Kristian Sloth Lauszus c69f664e85 Merge branch 'master' into dev
# Conflicts:
#	right/src/timer.c
#	right/src/timer.h
#	right/src/usb_report_updater.c
2018-06-30 22:27:52 +02:00
Kristian Sloth Lauszus 6c895988de Merge branch 'Lauszus-dev' into dev
# Conflicts:
#	right/src/usb_interfaces/usb_interface_basic_keyboard.c
#	right/src/usb_interfaces/usb_interface_media_keyboard.c
#	right/src/usb_interfaces/usb_interface_mouse.c
#	right/src/usb_interfaces/usb_interface_system_keyboard.c
#	right/src/usb_report_updater.c
2018-06-30 22:23:32 +02:00
Eric Tang f16a004583 Revert "Default to kStatus_USB_Success"
This reverts commit 6eceb6ad30.
2018-06-30 13:06:23 -07:00
Kristian Sloth Lauszus c870f335a7 Set the other interrupts back to the value there were before 2018-06-30 18:55:31 +02:00
Kristian Sloth Lauszus b6f59563c7 Revert cancelling a transfer, as the USB endpoint is still locked up 2018-06-30 18:25:03 +02:00
Kristian Sloth Lauszus 409bd01af6 Decreasing the USB priority actually works better
Needs more testing
2018-06-30 17:28:19 +02:00
Kristian Sloth Lauszus b9b5eb2c76 Make sure the device is attached before sending the report 2018-06-30 17:06:59 +02:00
Kristian Sloth Lauszus 11a8ffbaf5 Make sure the composite device is attached before setting the kStatus_USB_Success flag 2018-06-30 17:06:59 +02:00
Kristian Sloth Lauszus 9938f14d20 Set the USB interrupt priority to the maximum possible 2018-06-30 17:06:59 +02:00
Kristian Sloth Lauszus 217259ba63 Cancel the ongoing transfer if it is still in progress 2018-06-30 17:06:58 +02:00
Eric Tang e5afa33b79 Allow scanning to continue if the host is asleep 2018-06-29 23:06:31 -07:00
Eric Tang d3dfc9bd2c Revert "Simplify logic"
This reverts commit 994e2f6b79.
2018-06-29 23:01:31 -07:00
Eric Tang 8f6251bc4d Only set the semaphore if the report is successfully requested 2018-06-29 23:01:20 -07:00
Eric Tang b93f211502 Don't retry sending a report if it fails 2018-06-29 22:44:42 -07:00
Eric Tang 69411e53e9 Rename usbMouseAction to UsbMouseAction 2018-06-29 17:23:15 -07:00
Eric Tang 39819e6058 Type Backspace instead of b 2018-06-29 13:29:40 -07:00
Eric Tang bd97bba4b5 Wake up the host before attempting to send reports 2018-06-29 13:19:49 -07:00
Eric Tang 4214f3e0b6 Use a semaphore to control the rate at which reports are updated 2018-06-29 13:08:24 -07:00
Eric Tang 6eceb6ad30 Default to kStatus_USB_Success 2018-06-29 12:54:06 -07:00
Eric Tang 994e2f6b79 Simplify logic 2018-06-29 12:43:59 -07:00
Eric Tang baa5e8f037 Remove redundant guard clauses 2018-06-29 12:37:53 -07:00
Eric Tang cbd5f1b500 Redefine USB_CONFIGURATION_DESCRIPTOR_TOTAL_LENGTH 2018-06-28 17:25:14 -07:00
Eric Tang c1dc4be8c8 Fix USB_DeviceGetHidDescriptor 2018-06-28 17:25:09 -07:00
Eric Tang 1bd8c7dca8 Use a switch statement 2018-06-28 16:10:26 -07:00
László Monda d72ea4dde5 Merge pull request #131 from UltimateHackingKeyboard/macro-engine
Implement the macro engine
2018-06-27 23:02:09 +02:00
Eric Tang 5d621880ec Merge branch 'dev' of https://github.com/Lauszus/firmware into Lauszus-dev 2018-06-27 13:44:17 -07:00
László Monda 5c3e2966c4 Restore the logic of the key debouncer. Make it only debounce keypresses and set its timeout to 100ms. 2018-06-27 21:42:15 +02:00
László Monda d21fe30139 Bump firmware version to 8.3.2. Update changelog, package.json and versions.h 2018-06-27 14:26:29 +02:00
László Monda 224d9eae42 Merge pull request #130 from UltimateHackingKeyboard/key-release-debouncing
Fix key chattering
2018-06-27 14:13:05 +02:00
Kristian Sloth Lauszus 8c02f3db53 Merge branch 'master' into dev
# Conflicts:
#	right/src/usb_interfaces/usb_interface_basic_keyboard.c
#	right/src/usb_interfaces/usb_interface_basic_keyboard.h
#	right/src/usb_interfaces/usb_interface_media_keyboard.c
#	right/src/usb_interfaces/usb_interface_media_keyboard.h
#	right/src/usb_interfaces/usb_interface_mouse.c
#	right/src/usb_interfaces/usb_interface_mouse.h
#	right/src/usb_interfaces/usb_interface_system_keyboard.c
#	right/src/usb_interfaces/usb_interface_system_keyboard.h
#	right/src/usb_report_updater.c
2018-06-27 10:12:40 +02:00
Eric Tang 02bbeb7177 Fix the formatting in timer.c 2018-06-26 22:13:13 -07:00
Eric Tang cdfabaec42 Make the debounce counters count down 2018-06-26 21:58:48 -07:00
Eric Tang 0e9525ce9a Don't clear the whole report 2018-06-26 18:39:41 -07:00
Eric Tang 633a6cec77 Clear the report at the end of a move mouse or scroll mouse macro 2018-06-26 18:39:41 -07:00
Eric Tang d35a7cc644 Clear the report at the end of a text macro 2018-06-26 18:39:41 -07:00
Eric Tang 76a91c010b Implement the text macro action 2018-06-26 18:39:41 -07:00
Eric Tang 54b0a595bc Rename functions for consistency 2018-06-26 18:39:41 -07:00
Eric Tang 4b9aa0860c Implement the mouse macro actions 2018-06-26 18:39:41 -07:00
Eric Tang df8792a60d Fix code formatting 2018-06-26 18:39:41 -07:00
Eric Tang 5988fce59b Implement the delay macro action 2018-06-26 18:39:41 -07:00
Eric Tang 314eb0d771 Stop macros from repeating 2018-06-26 18:39:41 -07:00
Eric Tang c1f5a96e1b Correctly pass pointers to the active reports to memcpy 2018-06-26 18:39:41 -07:00
Eric Tang 64592d7032 Add TestLed_Blink 2018-06-26 18:39:41 -07:00
Eric Tang c6b180b8f5 Convert macros for controlling test LEDs to functions 2018-06-26 18:39:40 -07:00
Eric Tang 0155447c6a Rename InitTestLed to TestLed_Init 2018-06-26 18:37:49 -07:00
Eric Tang 04f4053bde Add a delay function 2018-06-26 18:37:49 -07:00
Eric Tang 09a58b607c Reduce code duplication 2018-06-26 18:34:38 -07:00
Eric Tang be82530412 Rename macro key actions in accordance with Agent 2018-06-26 18:34:38 -07:00
Eric Tang 6e11c0b8af Handle macro actions and make the macro engine preempt normal behavior 2018-06-26 18:34:38 -07:00
Eric Tang 9fade6368c Correct the type of macro delay variables 2018-06-26 18:32:51 -07:00
Eric Tang ff99c2e734 Change KEY_DEBOUNCER_TIMEOUT_MSEC to match keyswitch datasheets 2018-06-26 18:27:01 -07:00
Eric Tang 6d356114a8 Debounce key releases 2018-06-26 18:24:30 -07:00
Eric Tang 3041132959 Merge pull request #129 from UltimateHackingKeyboard/revert-120-dev
Revert "The UHK now only sends out data when it changes"
2018-06-26 18:13:36 -07:00
Eric Tang 2877773cac Revert "The UHK now only sends out data when it changes" 2018-06-26 17:59:57 -07:00
Kristian Sloth Lauszus a061febd01 Merge test code 2018-06-24 23:57:49 +02:00
Kristian Sloth Lauszus e3773fd5c0 Removed some unused code 2018-06-24 19:47:28 +02:00
Kristian Sloth Lauszus a92835454d Make sure the keyboard is not read if any of the endpoints are busy sending data 2018-06-24 18:43:21 +02:00
Kristian Sloth Lauszus 64e5fa7ecb Just read the interruptInPipeBusy flag instead of storing the transfer state in a separate variable and switch the active report back if the HID Send command fails 2018-06-24 18:43:21 +02:00
Kristian Sloth Lauszus d1894fb62a Removed call to UpdateUsbReports() before usb has been initialised 2018-06-24 18:43:21 +02:00
Kristian Sloth Lauszus fe7065be4a Select the "MK22FN512xxx12" under MCU settings 2018-06-23 18:47:26 +02:00
Kristian Sloth Lauszus e7b3127af1 Send out the mouse position and wheel values continuously if the report is not zeros, but only send the mouse button states when they change 2018-06-23 18:20:09 +02:00
Kristian Sloth Lauszus 724378cf6c Make sure we do not try to send another report before the old one has finished sending 2018-06-23 17:33:20 +02:00
Kristian Sloth Lauszus 14eb9c6ec0 Merge branch 'timer' into dev 2018-06-22 21:50:31 +02:00
Kristian Sloth Lauszus 9a8b1ef8b9 The PIT timer is counting downward, so we need to subtract the count from the period value 2018-06-22 21:50:14 +02:00
Kristian Sloth Lauszus 2cc94bd1fc The BL_APP_VECTOR_TABLE_ADDRESS should be overridable 2018-06-22 18:26:51 +02:00
Kristian Sloth Lauszus ad8de4dd56 Increase the resolution of the elapsed timer when reading the keyboard 2018-06-22 18:03:27 +02:00
Kristian Sloth Lauszus 5e97ad1b3c Just compare the active report with the inactive report stored in each interface driver 2018-06-22 17:55:21 +02:00
Kristian Sloth Lauszus fe06ed0a4b Merge branch 'timer' into dev 2018-06-22 17:48:53 +02:00
Kristian Sloth Lauszus d449123fab Fix PIT timer period and added functions for getting the current time in microseconds 2018-06-22 17:39:22 +02:00
Kristian Sloth Lauszus 4d483e7896 Limit the update frequency for reading the keyboard 2018-06-15 14:03:59 +02:00
László Monda b1cbeefa28 Add base layer key mappings for the left and right modules for testing purposes. 2018-06-13 02:41:01 +02:00
Kristian Sloth Lauszus 9be3cf4865 Invalidate the stored report if the command fails
Fixes #122
2018-06-08 20:23:58 +02:00
László Monda 65006cc376 Bump firmware version to 8.3.1, update changelog, package.json, versions.h 2018-06-07 15:26:06 +02:00
László Monda fc01b29823 Lowercase isLayerDoubleTapToggled. 2018-06-07 15:25:39 +02:00
László Monda 462595ef03 Extract handleSwitchLayerAction() 2018-06-07 14:50:49 +02:00
László Monda b0d85795f4 Make the double tap to lock feature behave well. 2018-06-07 14:42:23 +02:00
László Monda 2c91ef51db Make releasing locked layers possible again. 2018-06-07 04:10:48 +02:00
László Monda a54e7ac0a8 Set toggledLayers[action.switchLayer.layer] = true 2018-06-07 04:03:45 +02:00
László Monda 64f54c268b Clean up the layer toggle code a bit. 2018-06-07 03:55:40 +02:00
László Monda d889d51a7d Merge pull request #120 from Lauszus/dev
The UHK now only sends out data when it changes
2018-06-07 03:02:36 +02:00
Kristian Sloth Lauszus b284e9fa58 Make sure we send out a all zero report once when the a mouse report has been sent 2018-06-07 02:10:27 +02:00
Kristian Sloth Lauszus 1a0da7971a Send out the mouse report continuously if the report is not zeros 2018-06-07 01:56:16 +02:00
Kristian Sloth Lauszus 53a82a5f57 Removed unused variables, as the actions are no longer sent from within the interrupts 2018-06-07 01:50:12 +02:00
Kristian Sloth Lauszus 10985abcdb The UHK now only sends out data when it changes
Fixes #72, fixes #84 and fixes #85
2018-06-07 00:18:40 +02:00
László Monda e60a282742 Bump firmware version to 8.3.0, update changelog and package.json 2018-06-03 14:36:18 +02:00
László Monda a691b16ebe Make the serializer handle SwitchLayerMode_Hold, not only SwitchLayerMode_HoldAndDoubleTapToggle and SwitchLayerMode_Toggle. 2018-06-03 14:24:42 +02:00
László Monda c38114648a Set key debounce timeout from 80ms to 100ms. This should further reduce key chattering. 2018-05-29 01:31:14 +02:00
László Monda 3fc4419f4f Bump firmware version to 8.2.5, update changelog, package.json, and versions.h 2018-05-27 01:53:41 +02:00
László Monda 033bdf6491 Merge initI2cMainBus() and initI2cEepromBus() as initI2cBus() 2018-05-27 01:43:14 +02:00
László Monda 18e3ba9558 Merge recoverI2c() and recoverI2cEeprom() as recoverI2cBus(), add i2c_bus_t. 2018-05-26 22:37:10 +02:00
László Monda 3fb552cc55 Reinitialize the EEPROM upon firmware startup and set the I2C EEPROM interrupt priority to 0. This seems to really fix #67. 2018-05-26 17:06:05 +02:00
László Monda d093c84fb4 Fix HardwareConfig->signature{Length}="FTY" and re-release the latest version. 2018-05-21 15:25:24 +02:00
László Monda 95d7197394 Bump firmware version to 8.2.4, update the changelog, package.json and versions.h 2018-05-21 14:26:41 +02:00
László Monda 989774ced9 Make the EEPROM interrupt higher priority than the interrupts of the key scanner, key debouncer, I2C main bus and USB. Fixes #67. 2018-05-21 12:41:34 +02:00
László Monda 0e29276a56 Read the hardware and user configuration from the EEPROM even in factory reset mode. 2018-05-21 12:04:12 +02:00
László Monda 5b90d78518 Add IsFactoryResetModeEnabled. 2018-05-21 02:21:30 +02:00
László Monda d2eb4b43c7 Add LED_DISPLAY_DEBUG_MODE and LedDisplay_DebugString, making the LED display usable for debugging purposes. 2018-05-20 12:00:05 +02:00
László Monda a545324693 Set HardwareConfig->signature to "FTY" when the keyboard is in factory reset mode, so that Agent can act on it. 2018-05-20 01:36:27 +02:00
László Monda 27b02c32b5 Set key debounce timeout from 60ms to 80ms. This should further reduce key chattering. 2018-05-16 17:37:30 +02:00
László Monda 01e92e57f4 Bump firmware version to 8.2.3, update changelog, package.json and versions.h 2018-05-15 23:21:16 +02:00
László Monda 51b2631012 Make saving the user configuration faster by only writing the part of the EEPROM which actually contains the user configuration. Resolves #111. 2018-05-15 02:40:21 +02:00
László Monda 66c877f7bd Don't switch keymaps instead of playing macros. Fixes #86. 2018-05-15 01:47:24 +02:00
László Monda 7c1431f0ab Bump firmware version to 8.2.2, update changelog, package.json, versions.h 2018-05-09 00:24:24 +02:00
László Monda 772078f8f6 Don't use the link-time optimizer because it screws up the firmware. 2018-05-09 00:19:02 +02:00
László Monda 46244b8f5f Get rid of the -B parameter of make because it's been made redundant by make clean. 2018-05-09 00:11:33 +02:00
László Monda 5fc59f40bc Make clean the left and right firmwares before building them. 2018-05-08 13:00:10 +02:00
László Monda 460cd3c602 Merge pull request #115 from Lauszus/lto
Enable the link-time optimizer for the left side, as this was also us…
2018-05-08 01:39:12 +02:00
Kristian Sloth Lauszus e391d6dac8 Enable the link-time optimizer for the left side, as this was also used before the Makefile were added 2018-05-08 01:22:52 +02:00
László Monda 41afff5ea4 Update README.md 2018-05-08 00:28:43 +02:00
László Monda 187ae2821b Update README.md 2018-05-08 00:23:11 +02:00
László Monda cb52c273b4 Merge pull request #114 from Lauszus/dev
Removed unneeded sources
2018-05-08 00:02:47 +02:00
László Monda 5a523e64d8 Always unconditionally rebuild every object file when creating a release. 2018-05-08 00:00:08 +02:00
László Monda 970f622bff Set DEBUG=0 by default. 2018-05-07 23:56:28 +02:00
Kristian Sloth Lauszus 293438fa61 Removed unneeded sources 2018-05-07 22:23:21 +02:00
László Monda 455c1a30cb Make make-release.js work again now that the build system has changed. 2018-05-07 13:16:46 +02:00
László Monda 58e4919c0e Revert {left,right}/build/.cprojects 2018-05-07 09:06:44 +02:00
László Monda dd7b0a6e3b Make builds parallel by adding -j8 to make commands in build configurations and external tool configurations. 2018-05-07 00:58:13 +02:00
László Monda 59396baf76 Don't make external configurations overwrite PATH. 2018-05-06 23:23:23 +02:00
László Monda 8d9340c05b Merge branch 'master' of github.com:UltimateHackingKeyboard/firmware 2018-05-06 23:20:17 +02:00
László Monda 0930a000fa Merge pull request #113 from Lauszus/make
Make
2018-05-06 23:00:27 +02:00
Kristian Sloth Lauszus 332560d2d2 Merge branch 'master' into make 2018-05-06 21:25:46 +02:00
Kristian Sloth Lauszus 0344a79f65 Updated the KSDK_2.0_MKL03Z8xxx4 submodule 2018-05-06 20:28:14 +02:00
Kristian Sloth Lauszus 4577b118bc Revert "Set the MCU type for both projects"
This reverts commit 8bb9711793.
2018-05-06 20:26:44 +02:00
László Monda ad8aca5793 Merge branch 'make' of https://github.com/Lauszus/firmware 2018-05-06 20:19:07 +02:00
Kristian Sloth Lauszus 8bb9711793 Set the MCU type for both projects
This is needed if we want to use MCUXpresso's config tools
2018-05-06 20:16:51 +02:00
Kristian Sloth Lauszus 3cb0490e5e Modified launch configurations to use the Makefile to flash the firmware 2018-05-06 20:16:51 +02:00
Kristian Sloth Lauszus 58fa1ed6a4 Use the bundled Makefiles instead of having the IDE generate them automatically 2018-05-06 20:16:51 +02:00
László Monda 9aa78ef5bf Merge pull request #112 from Lauszus/descriptor
Fix vender specific usage page entry
2018-05-06 20:14:51 +02:00
Kristian Sloth Lauszus 7c4c354828 Updated LED status comment 2018-05-06 15:23:07 +02:00
Kristian Sloth Lauszus c3407e1410 Added Makefiles as linked resources, so they show up in the IDE 2018-05-06 15:22:24 +02:00
Kristian Sloth Lauszus 492243f801 Added _pvHeapStart entry
This is needed for Semihosting
2018-05-06 15:19:38 +02:00
Kristian Sloth Lauszus 6f0b1adc14 Fix vender specific usage page entry
See: https://github.com/node-hid/node-hid/issues/258
2018-05-06 15:11:22 +02:00
László Monda b917a97e93 Parse long media macro actions. 2018-05-03 00:42:20 +02:00
László Monda bf69f28ed1 Merge pull request #110 from Lauszus/make
Added Makefiles for compiling the two projects
2018-05-03 00:22:05 +02:00
László Monda 6854fa68dc Bump firmware version to 8.2.1 and update the changelog. 2018-05-02 14:57:24 +02:00
László Monda 14b6e49692 Don't suppress modifiers upon releasing a layer. Fixes #82. 2018-05-02 14:49:56 +02:00
Kristian Sloth Lauszus 10802f3f73 Build both the debug and release builds 2018-05-02 10:47:25 +02:00
Kristian Sloth Lauszus 66252eabf0 Added JLink flash scripts 2018-05-02 10:47:25 +02:00
Kristian Sloth Lauszus 0c4c736552 Use automatic variables for getting the file name and use the MAKEFILE_LIST variable to rebuild the project when any of the Makefiles change 2018-05-02 09:34:19 +02:00
Kristian Sloth Lauszus aa4105bdc3 Updated license to "GPLv2 or later", so it is compatible with GPLv3 2018-05-02 03:00:30 +02:00
Kristian Sloth Lauszus 101abffec4 Moved the linker script into the source directory 2018-05-02 02:56:03 +02:00
Kristian Sloth Lauszus b8268f55a3 Moved the BL_APP_VECTOR_TABLE_ADDRESS define into Makedefs.mk 2018-05-02 02:56:03 +02:00
Kristian Sloth Lauszus 2214f00667 Added command for flashing the images via the bootloader 2018-05-02 02:31:39 +02:00
Kristian Sloth Lauszus a2fae5bbef Readded Eclipse build 2018-05-02 01:08:20 +02:00
Kristian Sloth Lauszus 47e026006e Forgot to fix linker errors for both linker scripts in: https://github.com/UltimateHackingKeyboard/firmware/pull/104/commits/e0528e1714fc3796763b14c73e8b3fb43dbffeef 2018-05-02 01:05:40 +02:00
Kristian Sloth Lauszus 379d827982 Only compile the project using Make 2018-05-02 00:45:47 +02:00
Kristian Sloth Lauszus d9d26814e8 Fix warnings 2018-05-02 00:35:28 +02:00
Kristian Sloth Lauszus 611c36fe00 Added Makefiles for compiling the two projects 2018-05-02 00:13:52 +02:00
László Monda e9cd3a96c2 Don't reinitialize LED driver ICs upon suspend and resume. 2018-04-28 17:08:25 +02:00
László Monda 8856c484b6 Add LedDisplay_UpdateAll() 2018-04-28 16:21:54 +02:00
László Monda b97841fdae Delete I2C_WATCHDOG and always enable the watchdog. 2018-04-28 15:04:56 +02:00
László Monda 69143bed9c Replace "computer" with "host". 2018-04-28 15:00:32 +02:00
László Monda ebd0e3b762 Make ParseConfig() restore indicator icons. Fixes #107 2018-04-28 14:43:13 +02:00
László Monda ec8301ae62 Expose IsHostSleeping instead of IsHostSleeping() 2018-04-28 13:11:25 +02:00
László Monda 3d4d78387e Remove LED_DRIVER_STRESS_TEST. 2018-04-28 12:36:12 +02:00
László Monda c2582729f2 Remove LED_DRIVERS_ENABLED. 2018-04-28 11:43:01 +02:00
László Monda 9d66f5ff76 Rename identifiers. 2018-04-28 11:38:38 +02:00
László Monda 06ebed5537 Rename some variables and clean up coding style. 2018-04-28 11:19:01 +02:00
László Monda 02d6fb4628 Rename version from 8.1.6 to 8.2.0 because the minor device protocol version has changed. 2018-04-20 09:55:44 +02:00
László Monda 1b9ec89e20 Bump firmware version to 8.1.6 - Update package.json, changelog, versions.h 2018-04-10 22:32:11 +02:00
László Monda 7002e7de52 Fix SwitchKeymapByAbbreviation() and use it in place of a for block of equivalent functionality within UsbCommand_ApplyConfig() 2018-04-10 21:27:56 +02:00
László Monda 1e61a39210 Merge pull request #104 from UltimateHackingKeyboard/dev
Merge dev into master
2018-04-10 14:13:58 +02:00
László Monda 5509cbb5f8 Reference the latest KSDK_2.0_MK22FN512xxx12 submodule that uses the performance-optimized loop implementation. 2018-04-10 12:15:13 +02:00
László Monda f650032fef Set the optimization levels of both left and right firmwares to -O3 (most optimized). 2018-04-10 12:06:23 +02:00
László Monda fd787f74e9 Merge branch 'usb-switch-keymap' into dev 2018-04-09 21:12:07 +02:00
László Monda 75fe7904b6 Fix scroll events after the slow mouse fix. 2018-04-09 13:09:41 +02:00
László Monda b4ac82d2c0 Merge pull request #103 from Lauszus/dev
Cast mouseElapsedTime to float when calculating the speed and distance
2018-04-08 22:24:31 +02:00
Kristian Sloth Lauszus 9670523310 Cast mouseElapsedTime to float when calculating the speed and distance 2018-04-08 22:19:50 +02:00
László Monda 7763d8a32b Merge pull request #102 from Lauszus/dev
Moved timer used for mouse speed into processMouseActions and renamed…
2018-04-08 22:13:38 +02:00
Kristian Sloth Lauszus 3d9170402b Moved timer used for mouse speed into processMouseActions and renamed the variables 2018-04-08 22:11:35 +02:00
László Monda b0192085bb Merge pull request #101 from Lauszus/dev
More mouse fixes
2018-04-08 22:09:56 +02:00
Kristian Sloth Lauszus c90261d549 Set the update rate according to the mouse endpoint polling interval 2018-04-08 21:59:57 +02:00
Kristian Sloth Lauszus 5a756edf8b Remove historic code that tried to solve the mouse speed issue 2018-04-08 21:39:43 +02:00
László Monda 46ce16b8d4 Merge pull request #100 from Lauszus/dev
Mouse issue and other fixes
2018-04-08 21:27:51 +02:00
Kristian Sloth Lauszus d2acfba659 Process the key inputs at a constant rate when moving the mouse, so the mouse speed is consistent
Fixes #99
2018-04-08 21:18:56 +02:00
Kristian Sloth Lauszus ac75d0ca8b Merge commit 'b68c6bed184f5da12f00c173e23b07c4428be661' into dev 2018-04-08 20:28:02 +02:00
Kristian Sloth Lauszus 10beb751ac Fixed compiler warning in KSDK
See: https://github.com/UltimateHackingKeyboard/KSDK_2.0_MK22FN512xxx12/pull/2
2018-04-08 20:04:25 +02:00
Kristian Sloth Lauszus e0528e1714 Fix linker error on newer compilers by just declaring the two usb sections after the .bss section
See: https://community.nxp.com/thread/449264
2018-04-08 19:52:03 +02:00
László Monda 0afb3ab687 Pull the Agent repo and make sure it's on master, so that the relevant binary configuration will be used. 2018-04-06 15:48:31 +02:00
László Monda 58fd3a78cf Reference the latest Agent repo. 2018-04-04 15:48:36 +02:00
László Monda f1ed699fa2 Bump version to 8.1.5, update changelog, package.json, versions.h 2018-04-04 15:44:35 +02:00
László Monda 43646beca8 Set key debounce timeout from 30ms to 60ms. This should eliminate key chattering. 2018-04-04 00:56:16 +02:00
László Monda 308a71e4a3 Rename SwitchKeymap() to SwitchKeymapById() 2018-03-30 12:46:30 +02:00
László Monda ecf1f1ac32 Actually switch the keymap. 2018-03-30 12:44:43 +02:00
László Monda b34fb9daa3 Add switch keymap USB command. 2018-03-30 11:18:31 +02:00
László Monda 195f40949f Fix build warning. 2018-03-25 22:38:45 +02:00
László Monda b68c6bed18 Merge pull request #98 from Lauszus/sleep
Wake up the keyboard if there is any activity on the bus
2018-03-11 20:07:59 +01:00
Kristian Sloth Lauszus ab24e78a5b Wake up the keyboard if there is any activity on the bus
This fixes: https://github.com/UltimateHackingKeyboard/firmware/pull/97#issuecomment-372091423
2018-03-11 20:05:10 +01:00
László Monda 4892d64795 Merge pull request #97 from Lauszus/sleep
Turn LEDs, backlight and display off when sleeping
2018-03-11 19:34:56 +01:00
Kristian Sloth Lauszus c10d6440ce Merge branch 'dev' into sleep
# Conflicts:
#	right/src/timer.c
#	right/src/timer.h
#	right/src/usb_report_updater.c
2018-03-11 19:34:21 +01:00
Kristian Sloth Lauszus c109a9e202 The layer keys can now also wake up the computer 2018-03-11 19:29:24 +01:00
Kristian Sloth Lauszus 5d59540c51 Updated submodule after https://github.com/UltimateHackingKeyboard/KSDK_2.0_MK22FN512xxx12/pull/1 was merged 2018-03-11 19:26:04 +01:00
Kristian Sloth Lauszus e12e219b4e Various fixes and improvements (#96)
* Global variables shared between an interrupt and the main code should be volatile

See: https://www.embedded.com/electronics-blogs/beginner-s-corner/4023801/Introduction-to-the-Volatile-Keyword

* There is no reason to change the active report if it has not changed

* Declare local functions and variables static

This both helps the compiler and the programmer
2018-03-11 19:19:15 +01:00
Kristian Sloth Lauszus 3ab2ac18fc The keyboard can now wake up the computer from sleep 2018-03-11 19:00:46 +01:00
Kristian Sloth Lauszus 6e2eca7829 Changed CurrentTime to a static variable and added function for getting the current time instead
Global variables are really bad practice and should be avoided
2018-03-11 17:59:23 +01:00
Kristian Sloth Lauszus 8f4fc1da8e Merge branch 'fixes' into sleep 2018-03-11 17:56:07 +01:00
Kristian Sloth Lauszus 5de0e5ac60 Turn LEDs, backlight and display off when sleeping
Fixes #83
2018-03-11 05:26:51 +01:00
Kristian Sloth Lauszus 13a718f871 Declare local functions and variables static
This both helps the compiler and the programmer
2018-03-11 02:38:23 +01:00
Kristian Sloth Lauszus 15d09552a4 There is no reason to change the active report if it has not changed 2018-03-11 02:37:59 +01:00
Kristian Sloth Lauszus 0b100feb32 Global variables shared between an interrupt and the main code should be volatile
See: https://www.embedded.com/electronics-blogs/beginner-s-corner/4023801/Introduction-to-the-Volatile-Keyword
2018-03-11 02:37:59 +01:00
Kristian Sloth Lauszus 1742437f8b Replace HID_KEYBOARD_SC_MENU scancode with HID_KEYBOARD_SC_APPLICATION (#95)
Fixes https://github.com/UltimateHackingKeyboard/agent/issues/563
2018-03-11 02:31:40 +01:00
László Monda 5093a0c0a6 Bump version to 8.1.4. Update changelog, package.json, and versions.h 2018-03-05 15:57:14 +01:00
László Monda 7e524d97b1 Don't read (the default 250ms) DoubleTapSwitchLayerTimeout from the user configuration but rather set it to 150ms which feels quite optimal. 2018-03-05 10:16:58 +01:00
László Monda 2e53331a0f Set KEY_DEBOUNCER_TIMEOUT_MSEC to 30. This looks like a safe bet to eliminate key chattering for every switch. 2018-02-27 23:01:39 +01:00
László Monda c6d60780f4 Bump version to 8.1.3 and update package.json, versions.h and the changelog accordingly. 2018-02-18 00:46:17 +01:00
László Monda 8666a495d8 Set KEY_DEBOUNCER_TIMEOUT_MSEC from 15 to 20 ms. 2018-02-17 21:37:02 +01:00
Kristian Sloth Lauszus 33bbf44199 Fix system keyboard descriptor, so it is byte-aligned (#93)
I have verified that the descriptor shows up correctly on Windows 7 and macOS

The descriptor is based on the two following pages: https://github.com/Microsoft/Windows-driver-samples/tree/master/hid/hidusbfx2 and https://docs.microsoft.com/en-us/windows-hardware/drivers/gpiobtn/hid-button-report-descriptors

Fixes #76
2018-02-14 00:27:53 +01:00
László Monda cc49118868 Bump version to 8.1.2. Update changelog, package.json, versions.h and reference the latest Agent repo. 2018-02-13 03:31:35 +01:00
László Monda f8fd99f588 Set KEY_DEBOUNCER_TIMEOUT_MSEC from 10 to 15 msec. 2018-02-12 18:08:53 +01:00
Kristian Sloth Lauszus fa8c9dc907 Logical maximum is wrongly assumed to be an unsigned integer, thus 0xFF is interpreted as -1 and not 255 (#92)
Simply setting the number of bits to 16 solves this
2018-02-12 04:51:59 +01:00
László Monda 0911e67bf6 Fix the coding style of usb_interface_basic_keyboard.c 2018-02-11 22:28:12 +01:00
László Monda 57a7cee62a Remove debug statements from updateActiveUsbReports() 2018-02-11 22:25:29 +01:00
Kristian Sloth Lauszus 1af28a79db Detect Caps Lock state and set the LED accordingly (#91)
Fixes #65
2018-02-11 12:45:46 +01:00
László Monda 6881f8e340 Update versions.h to 8.1.1 2018-02-11 04:23:31 +01:00
László Monda 00cd1f65e8 Bump version to 8.1.1. Update package.json and the changelog. 2018-02-11 04:21:49 +01:00
László Monda 2c9a6c0bd2 Add doubleTapSwitchLayerReleaseTimeout and set it to 100ms. Resolves #79. 2018-02-11 04:09:15 +01:00
László Monda 0c94cbb256 Make doubleTapSwitchLayerKey and doubleTapSwitchLayerStartTime static. 2018-02-11 03:29:15 +01:00
László Monda 275bfee860 Merge branch 'master' of github.com:UltimateHackingKeyboard/firmware 2018-02-10 23:55:48 +01:00
László Monda 8a655e3cfd Lock layers every time when double-tapping their layer switcher keys. Fixes #81. 2018-02-10 23:53:35 +01:00
László Monda 8521619783 Update README.md 2018-02-05 02:24:10 +01:00
László Monda 62184240df Update README.md 2018-02-05 02:03:56 +01:00
László Monda 0b210ac68e Update README.md 2018-02-01 18:39:20 +01:00
László Monda 56f7753afc Bump firmware version to 8.1.0 and update changelog, package.json, and versions.h 2018-01-15 10:35:22 +01:00
László Monda a0803875c4 Make UsbCommand_GetModuleProperty() branch based on modulePropertyId 2018-01-15 00:04:22 +01:00
László Monda f5716bdadc Rename some private functions in init_peripherals.c from upper to lower camel case. 2018-01-14 20:30:46 +01:00
László Monda b76b3c0e4f Slow down main bus I2C baud rate to 30kHz when BusPal is on to make firmware transfer more robust. 2018-01-14 20:27:17 +01:00
László Monda 2661c3d909 Implement DevicePropertyId_Uptime 2018-01-14 18:32:18 +01:00
László Monda c854e98d84 Implement DevicePropertyId_I2cMainBusBaudRate 2018-01-14 18:10:04 +01:00
László Monda 72d8e49717 Make UsbProtocolHandler() invoke UsbCommand_SetI2cBaudRate() when requested. 2018-01-13 19:54:48 +01:00
László Monda 0fd95b71b2 Add usb_command_set_i2c_baud_rate.[ch] 2018-01-13 03:54:06 +01:00
László Monda 4d83bc2e75 Add I2cMainBusBaudRateBps 2018-01-13 03:29:01 +01:00
László Monda cf7b05ab72 Make InitI2cMainBus() private. 2018-01-13 03:21:12 +01:00
László Monda 055f1945d0 Include slave_scheduler.h from init_peripherals.c instead of i2c_watchdog.c which I forgot to do in the previous commit. 2018-01-13 03:19:24 +01:00
László Monda fa4a3abf84 Extract ReinitI2cMainBus() 2018-01-13 03:14:42 +01:00
László Monda 96c7ccd758 Remove some dead code from PIT_I2C_WATCHDOG_HANDLER 2018-01-13 03:03:42 +01:00
László Monda 76d319ec19 Remove comment that says that 100 kHz works with a 20 meter long bridge cable. It was true for UART, not so much for I2C. 2018-01-11 23:44:59 +01:00
László Monda aab0e8473f Enable left half I2C watchdog in reinit mode because it seems to improve things. 2018-01-11 23:43:34 +01:00
László Monda 4a4c471b9e Implement DevicePropertyId_CurrentKbootCommand 2018-01-10 02:58:31 +01:00
László Monda fcd75b2af2 Use identifiers instead of the magic numbers of kboot_driver.[ch] 2018-01-06 21:21:36 +01:00
László Monda f318c6872e Move the definition of previousSlave within the if (isFirstCycle) block. 2018-01-06 17:25:07 +01:00
László Monda ae1240c103 Rename isFirstIteration to isFirstCycle and kStatus_Uhk_NoTransfer to kStatus_Uhk_IdleCycle. 2018-01-06 17:05:37 +01:00
László Monda e75d366245 Update and log previous I2C status within the if (isFirstIteration) block. 2018-01-06 17:00:59 +01:00
László Monda da20cdacc4 Only check currentSlaveId overrun after incrementing it. 2018-01-06 16:36:57 +01:00
László Monda 5a986d367e Only call LogI2cError() if the passed status is an actual I2C error, otherwise it slows the mouse pointer down. 2018-01-06 02:04:47 +01:00
László Monda f6b66283a7 Only count I2C errors. 2018-01-06 01:37:58 +01:00
László Monda 6ad425cbf9 Log I2C error counts on a per slave and per error type basis and expose them via USB. 2018-01-05 03:23:48 +01:00
László Monda 33e501cd83 Add SLAVE_COUNT 2018-01-04 23:16:48 +01:00
László Monda fa558abef3 Add LED_DRIVERS_ENABLED 2017-12-28 00:08:29 +01:00
László Monda 25a2b3af93 Convert tabs to spaces. 2017-12-27 17:21:28 +01:00
László Monda 43587c2e1f Define I2C_WATCHDOG_VALUE_REINIT and I2C_WATCHDOG_VALUE_REBOOT and make them work when assigned to I2C_WATCHDOG. 2017-12-27 17:07:04 +01:00
László Monda c51542795f Bump version to 8.0.1 2017-12-25 23:16:27 +01:00
Erich Styger 7eb83173ed changed I2C watchdog timer implementation, as LPTMR was already used by key scanner 2017-12-25 17:15:41 +01:00
Erich Styger 5581dd26b5 fixed and enabled software watchdog timer 2017-12-24 12:06:46 +01:00
László Monda 1ac637af0f Rename the GetProperty command to GetDeviceProperty. 2017-12-23 16:11:47 +01:00
László Monda 36951d1a34 Minor cleanups regarding the previous rename. 2017-12-23 16:08:45 +01:00
László Monda 5190265a2c Rename get_module_properties.[ch] to get_module_property.[ch]. It seems that the header wasn't included in usb_protocol_handler.c possibly causing issues when using these commands. 2017-12-23 16:06:24 +01:00
László Monda 40bf252852 Bump version to 8.0.0. Update version numbers. Update changelog. 2017-12-15 04:03:51 +01:00
László Monda 85e92d21b4 Add new UsbCommand_GetModuleProperties() device protocol command. 2017-12-15 02:46:30 +01:00
László Monda fd43e81e46 Query module key count and pointer count in separate messages instead of a combined message for better clarity. 2017-12-15 02:13:58 +01:00
László Monda c994a97d03 Make the modules transfer their firmware version to the device. Fix the message length of the module protocol version. 2017-12-15 01:42:58 +01:00
László Monda d59ba83d99 Make the modules transfer a module protocol version composed of a major, a minor and a patch number. 2017-12-15 01:28:13 +01:00
László Monda c1b887cea8 Rename UhkModulePhase_*ProtocolVersion to UhkModulePhase_*ModuleProtocolVersion. 2017-12-15 01:16:27 +01:00
László Monda bd53b73685 Rename usb_command_get_keyboard_state.[ch] to usb_command_get_device_state.[ch] 2017-12-14 23:10:13 +01:00
László Monda beb7c3d4ee Forgot to update versions.h for the previous release. Updating now. 2017-12-14 23:08:34 +01:00
László Monda 17571a5feb Bump version to 7.0.0. Update changelog and package.json 2017-12-14 21:51:07 +01:00
László Monda 83e782d74a Remove DevicePropertyId_HardwareConfigSize and DevicePropertyId_UserConfigSize 2017-12-14 21:49:15 +01:00
László Monda 312f56048b Add DevicePropertyId_ConfigSizes. 2017-12-14 16:40:44 +01:00
László Monda 494621a841 Expose version numbers via the get property interface. 2017-12-14 16:16:11 +01:00
László Monda 94af52892c Add generate-versions-h.js and versions.h. Execute generate-versions-h.js from make-release.js 2017-12-14 15:41:20 +01:00
László Monda 5862a34f18 Use const instead of let wherever possible in make-release.js 2017-12-14 04:01:13 +01:00
László Monda 9b9e5ed1b5 Rename the version property to firmwareVersion in package.json 2017-12-14 03:52:56 +01:00
László Monda 4393377365 Rename version properties in package.json 2017-12-14 03:48:59 +01:00
László Monda 1570364741 Add hardware config versions to releases. 2017-12-14 03:38:24 +01:00
László Monda 738a240860 Rename slave protocol to module protocol. 2017-12-14 03:36:29 +01:00
László Monda 43b48aa643 Rename USB protocol to device protocol. 2017-12-14 03:25:47 +01:00
László Monda 61a0540007 Rename data model to user config. 2017-12-14 03:24:29 +01:00
László Monda f2e313dd0a Put the data model version as the last element of the version list. 2017-12-14 03:22:04 +01:00
László Monda b239d0da50 Mark bumped version numbers by making them bold. 2017-12-14 03:14:41 +01:00
László Monda 23459e3791 Don't make horizontal scrolling and vertical scrolling affect each other. 2017-12-14 01:30:06 +01:00
László Monda 6a54944cb1 Make UsbCommand_JumpToModuleBootloader() more robust by not making it dependent on the state of the module driver. 2017-12-13 01:27:04 +01:00
László Monda a52df9da7e Bump version to 6.0.0, update changelog and package.json 2017-12-12 18:44:12 +01:00
László Monda 28f98f179a Change the value of UsbCommandId_{GetDeviceState,SetTestLed,GetDebugBuffer,GetAdcValue,SetLedPwmBrightness}. 2017-12-12 18:38:01 +01:00
László Monda 5798f9e4fb Refactor UsbCommandId_LaunchEepromTransfer, change its arguments, and change its ID to 0x08. 2017-12-12 03:24:34 +01:00
László Monda 4fe5ce45ac Change UsbCommandId_ApplyConfig to 0x07. 2017-12-12 02:15:20 +01:00
László Monda a212c254a9 Change UsbCommandId_WriteHardwareConfig and UsbCommandId_WriteUserConfig to 0x05 and 0x06. 2017-12-12 01:59:53 +01:00
László Monda 235e18d706 Fix UsbCommandId_WriteHardwareConfig that I previously screwed up. 2017-12-12 01:29:49 +01:00
László Monda 7c91f8f6d1 Replace UsbCommandId_ReadHardwareConfig and UsbCommandId_ReadUserConfig with UsbCommandId_ReadConfig. 2017-12-12 01:22:26 +01:00
László Monda c8cfe53136 Change UsbCommandId_SendKbootCommandToModule from 0x13 to 0x03. 2017-12-11 22:15:46 +01:00
László Monda f1f47ece14 Change UsbCommandId_JumpToModuleBootloader from 0x12 to 0x02. 2017-12-11 21:44:35 +01:00
László Monda a0dba2fa66 Change UsbCommandId_SetTestLed from 0x02 to 0x14. 2017-12-11 21:21:41 +01:00
László Monda 0f34b01189 Update LED brightness levels upon applying the configuration. 2017-12-10 20:48:26 +01:00
László Monda 5a449ad5c5 Disable LED display icons by default. 2017-12-10 15:35:03 +01:00
László Monda 0d6a5ae902 Bump firmware version number to 5.0.1 and update changelog. 2017-12-09 16:44:11 +01:00
László Monda 2f7f7b1cd2 Make scrolling immediately react to keypresses regardless of the previous internal scroll state. 2017-12-07 04:44:45 +01:00
László Monda 2eb25ce05c Make UpdateUsbReports() not exit prematurely even if a previously active USB interface is not polled anymore by the host. Tweak the Timer API to not set the current time automatically. 2017-12-07 03:24:53 +01:00
László Monda 6e47707037 Rename the misleadingly named error variable of usbDeviceCallback() to status. Clean up InitUsb() a bit. 2017-12-05 00:56:52 +01:00
László Monda 0932c14a2c Lowercamelcase UsbDeviceCallback because it's local. 2017-12-04 22:51:04 +01:00
László Monda e57c2c21ca Don't define the NULL members of UsbDeviceCompositeConfigList. 2017-12-04 20:43:57 +01:00
László Monda a5ce90779c Merge all the substructures of UsbDeviceCompositeConfigList across different files to a single structure. 2017-12-04 20:41:22 +01:00
László Monda e9bf3dc355 Expand UsbDeviceCompositeClassConfig and UsbDeviceCompositeConfigList using structure member names. 2017-12-04 20:05:28 +01:00
László Monda 8cb8654459 Merge the substructures of UsbMouseClass into a single structure. 2017-12-04 19:57:43 +01:00
László Monda 745e8e1cf0 Merge the substructures of UsbSystemKeyboardClass into a single structure. 2017-12-04 19:50:39 +01:00
László Monda 5341109845 Merge the substructures of UsbMediaKeyboardClass into a single structure. 2017-12-04 19:41:51 +01:00
László Monda ff0e5b0aa3 Merge the structs of UsbBasicKeyboardClass into a single structure. 2017-12-04 19:33:53 +01:00
László Monda c4e79d8ed2 Merge the all the structures of UsbGenericHidClass into a single structure. 2017-12-04 19:16:04 +01:00
László Monda 6780c8177c Expose per-interface count values for debugging purposes via USB. 2017-12-04 17:38:31 +01:00
László Monda 71d6db0f35 Update CHANGELOG.md and package.json for version 5.0.0 2017-12-04 00:40:07 +01:00
László Monda 9b9bdbc03d Rename baseLayerPointerFunction to modLayerPointerFunction and modLayerPointerFunction to fnLayerPointerFunction. Suppress unused variable compilation warnings. 2017-12-03 23:53:32 +01:00
László Monda bb5c118e97 Move pointerRole from keymaps to module configurations as pointerMode. Add angularShift, baseLayerPointerFunction, modLayerPointerFunction, and mouseLayerPointerFunction to module configurations. 2017-12-03 23:25:55 +01:00
László Monda b3cbb8ea97 Bump version to 4.0.0 2017-11-30 20:31:09 +01:00
László Monda f76780ec48 Make the parser parse mouse properties, LED brightness values, and double tap switch layer timeout. Rename pointer config properties. 2017-11-30 18:20:00 +01:00
László Monda b7e73b7b38 Clean up the debug lines of processMouseAction() 2017-11-28 22:45:51 +01:00
László Monda 7318175ce7 Tweak scroll kinetic properties. 2017-11-28 22:39:37 +01:00
László Monda 420078449d Finish the fine-tuning of default mouse movement kinetic settings. 2017-11-28 20:12:01 +01:00
László Monda dda3799877 Don't make the pointer jump when accelerating from zero while the decelerate key is pressed. 2017-11-28 19:10:13 +01:00
László Monda 712b87182a Double timer interval that wasn't right for an unknown reason. Adjust mouse kinetic values accordingly. Reprioritize interrupts to make mouse pointer movement as smooth as possible. 2017-11-28 18:52:39 +01:00
László Monda 46126e1e78 Tweak kinetic mouse values further. Temporarily maximize / minimize the acceleratedSpeed / deceleratedSpeed values for testing purposes. 2017-11-28 17:25:46 +01:00
László Monda 2ac9ca5d67 Make the initialSpeed, acceleration, deceleratedSpeed, baseSpeed, and acceleratedSpeed kinetic properties uint8_t and multiply them by intMultiplier to provide a fixed set of steps to choose from. 2017-11-28 03:23:09 +01:00
László Monda 729e0be0ad Make scrolling utilize mouse_kinetic_state_t, just like mouse movements. Fix scrolling issue by making distance float. Add new debug functions for ints and float. 2017-11-28 02:01:26 +01:00
László Monda 0867132ba3 Adjust the distance divisor from 10 to 1000 and other kinetic values accordingly. 2017-11-27 02:09:45 +01:00
László Monda 1b9273a5e5 Make processMouseKineticState() work with float x,y offsets to accumulate fractions. 2017-11-27 01:24:03 +01:00
László Monda ebbd74407d Extract code into processMouseKineticState() and add mouse_kinetic_state_t 2017-11-26 21:35:50 +01:00
László Monda 5df6220ab7 Slightly reorder mouse movement related variables. 2017-11-26 02:32:53 +01:00
László Monda 3d0993998c Add double tap switch layer timeout. 2017-11-26 01:05:36 +01:00
László Monda 071be7e815 Implement "hold and double tap" layer switch mode and temporarily treat every hold mode keys this way. 2017-11-26 00:23:50 +01:00
László Monda bb7faaa799 Make non-accelerated movements gradually accelerate from the start. Make all other movements and speed transitions immediate. 2017-11-24 22:49:39 +01:00
László Monda 368c724e6a Fix the stuck state of the decelerate key that triggered once it was pressed. 2017-11-24 17:39:45 +01:00
László Monda 210ef31f27 Implement mouse movement acceleration and deceleration. 2017-11-24 13:00:05 +01:00
László Monda 0cb3c7e0ad Implement horizontal scrolling. 2017-11-24 01:00:02 +01:00
László Monda ab7e25692a Use hex numbers as the values of UsbCommandId_* 2017-11-23 04:18:37 +01:00
László Monda b68e8a736e Make processMouseAction() handle acceleration and deceleration, even though I can't yet trigger these actions for some reason. 2017-11-23 01:54:54 +01:00
László Monda 4d211f0fe1 Reset mouseMoveCurrentSpeed when the mouse movement keys are no longer pressed, even if a mouse button key stays pressed due to drag and drop or selection purposes. 2017-11-22 02:34:37 +01:00
László Monda 8429ee2b71 Implement mouse acceleration. 2017-11-21 21:15:12 +01:00
László Monda 4bbc49f4ca Clean up processMouseAction() by using floats instead of divisor values. Move MouseSpeed_* into mouse_speed_action_t 2017-11-21 19:01:59 +01:00
László Monda 322ee0b35f Rename the misnamed MouseButton_t to MouseButton_6 2017-11-21 16:42:27 +01:00
László Monda 8252da86d8 Rename some files and identifiers that are related to USB commands. 2017-11-18 03:30:24 +01:00
László Monda 086ab239b4 Fix the previously introduced EEPROM read bug by making addressBuffer static. Rename EEPROM_ADDRESS_LENGTH to EEPROM_ADDRESS_SIZE. 2017-11-18 03:18:37 +01:00
László Monda a7ba0add18 Simplify eeprom.c 2017-11-18 03:11:17 +01:00
László Monda d2ef63184b Move updateUsbReports() from main.c to usb_report_updater.c and delete main.h 2017-11-17 01:21:30 +01:00
László Monda 6cf47565f9 Bump version to 3.0.0 and update the changelog. 2017-11-15 22:36:51 +01:00
László Monda 7f6f9e7094 Detect the use of USB interfaces by introducing IsUsb*ReportSent and compute areUsbReportsSent using them. 2017-11-15 16:54:34 +01:00
László Monda a0afdcf476 Implement key debouncer. 2017-11-14 22:54:53 +01:00
László Monda 9e18caa0ba Set the left KEY_SCANNER_INTERVAL_USEC to 1000 / KEYBOARD_MATRIX_ROWS_NUM 2017-11-14 13:08:01 +01:00
László Monda f63f2f9b96 Adding left/key_scanner.[ch] which I totally forgot. 2017-11-14 03:43:51 +01:00
László Monda 4c97238999 Even though the current code seems to be working fine, call KeyMatrix_Init() before InitKeyScanner() just to be sure. 2017-11-14 02:40:51 +01:00
László Monda 5c84620704 Call KeyMatrix_ScanRow() from an LPTMR interrupt for the left half. Remove KeyMatrix_Scan() 2017-11-14 02:29:18 +01:00
László Monda ae4d60882f Use interrupt based keyboard matrix scanning for the right keyboard half. Get rid of INTERRUPT_KEY_SCANNER 2017-11-13 02:18:55 +01:00
László Monda 332f2a69fa Set up the timer properly and introduce CurrentTime. 2017-11-12 17:33:23 +01:00
László Monda a91f945591 Add timer.[ch] 2017-11-12 04:48:06 +01:00
László Monda d0c689146e Remove unused counter variable. 2017-11-12 04:17:38 +01:00
László Monda 27e64adc33 Extract PIT related macros to the newly created peripherals/pit.h 2017-11-12 04:06:46 +01:00
László Monda 5da6510d7c Use the menu key in the factory keymap. 2017-11-12 01:50:01 +01:00
László Monda a4ddf1ff2a Uppercamelcase read*() config parser functions since they're not local. 2017-11-11 16:54:40 +01:00
László Monda 22141ba1e3 Replace {GET,SET}_USB_BUFFER_UINT8 with {Get,Set}UsbRxBufferUint8 2017-11-11 16:49:48 +01:00
László Monda f4de0df149 Replace SET_DEBUG_BUFFER_UINT* macros with SetDebugBufferUint* functions for improved type safety and readability. 2017-11-11 03:52:39 +01:00
László Monda 5c7a3faa9c Use buffer functions in eeprom.c for easier readability. 2017-11-11 03:41:03 +01:00
László Monda 80240c8e9b Add shared/buffer.[ch] for easily dealing with array values. 2017-11-11 03:40:06 +01:00
László Monda f45ebdde4f Comment that the EEPROM address has to be big-endian. 2017-11-11 01:15:27 +01:00
László Monda e3a121f0d8 Make pressing the reset button revert to the factory preset. 2017-11-10 23:42:45 +01:00
László Monda f927aef7f5 Put function curlies into their own line according to our coding standards all across the codebase. 2017-11-10 23:14:44 +01:00
László Monda f3682efe53 Revert to the factory default state when the reset button is pressed upon firmware startup. Display FTY on the display in this case. 2017-11-10 22:48:21 +01:00
László Monda c06b06ed1b Make the secondary role work properly when a layer is set and when pressing the non-dual role key for long right after keeping the dual role key pressed. 2017-11-10 00:41:33 +01:00
László Monda 402697c0a3 Don't call applyKeyAction() when a secondary role is triggered because it'd output the scancode of the pressed key which is not the right thing when the secondary role is layer switching. 2017-11-09 22:26:44 +01:00
László Monda b8846cd601 Add LedDisplay_SetCurrentKeymapText() and use it when reinitializaing the LED display upon disconnect. This fixes the bug that shows FTY on the display upon I2C watchdog recoveries. 2017-11-09 20:59:51 +01:00
László Monda c2efb5e0d0 Rename watchdog related variables to be more intuitively named. 2017-11-09 20:41:19 +01:00
László Monda 4aad86947c Set the deviceId of uhk60-right to 1. 2017-11-09 18:47:21 +01:00
László Monda 0421c2f339 Swap SlaveCommand_RequestKeyStates and SlaveCommand_JumpToBootloader, thereby making SlaveCommand_JumpToBootloader the lower number because it's more basic and shouldn't change in the future. 2017-11-09 01:49:32 +01:00
László Monda c83e331c37 Remove the unused PROTOCOL_RESPONSE_{SUCCESS,GENERIC_ERROR} macros. 2017-11-09 01:45:55 +01:00
László Monda f8ad10b0c1 Make build/uhk60-left_{debug,release}_kboot.launch build the relevant firmware images before running their update script. 2017-11-09 01:34:23 +01:00
László Monda f1058294a6 Wrap the whole debug_over_spi.[ch] files into #ifdef DEBUG_OVER_SPI to silence compiler warnings when it's not defined. 2017-11-09 01:33:23 +01:00
László Monda e5865009f5 Remove unused SetError(), SetGenericError, and SetResponseByte() functions. 2017-11-09 01:17:50 +01:00
László Monda 21c1ded972 Slightly tweak USB command names. 2017-11-08 23:14:12 +01:00
László Monda 98b84bc49c Change nomenclature in the release script and package.json from master and slave to device and module. 2017-11-08 22:57:43 +01:00
László Monda 272ff3ccbe Tweak firmware updater script paths according to the changes of the Agent repo. 2017-11-08 18:33:00 +01:00
László Monda b49d5a7f7e Add launch configurations for the release and debug versions of the left half firmware. 2017-11-08 04:09:58 +01:00
László Monda 49a94d82b0 Move update-{master,slave}-firmware.js and shared.js into the Agent repo and reference those scripts. 2017-11-08 01:27:49 +01:00
László Monda fb39d700e0 Rename masters[*].moduleId to deviceId 2017-11-08 00:37:49 +01:00
László Monda 4fa2304e4b Suppress pressed keys upon layer switcher key release. 2017-11-07 02:21:36 +01:00
László Monda f6beeecec1 Make local variables static. 2017-11-07 01:37:46 +01:00
László Monda e3d4eb50db Make secondary role layer switching work. 2017-11-07 00:30:40 +01:00
László Monda 31fa1a0d5e Don't make secondary role stuck when holding a layer switcher even after releasing the dual role key. 2017-11-07 00:00:02 +01:00
László Monda 3ac94684e2 Dump mouse related variables via the debug buffer to figure out the cause of occasional mouse freezes. 2017-11-06 18:28:23 +01:00
László Monda 693315222f Handle secondary role modifiers. 2017-11-06 18:11:05 +01:00
László Monda 3533a8f73c Rename long presss action to secondary role. 2017-11-06 01:58:11 +01:00
László Monda 34b2875861 Kill the magic numbers of UsbCommand_WriteConfig() 2017-11-06 00:57:41 +01:00
László Monda 8c7014cf8c Clean up the includes under usb_commands and rename led state variable in usb_command_set_test_led.c 2017-11-06 00:51:11 +01:00
László Monda 9910fe536f Add USB_STATUS_CODE_SIZE and use it to kill the magic numbers of usb_command_read_config() 2017-11-06 00:44:32 +01:00
László Monda 003f313947 Make UsbCommand_JumpToSlaveBootloader expect a slave slot id instead of a uhkModuleDriverId. 2017-11-06 00:32:08 +01:00
László Monda 379fe6a4c7 Rename DebugInfo to DebugBuffer and related files and variables. 2017-11-05 23:36:16 +01:00
László Monda 67794d460e Add and use SET_DEBUG_BUFFER_UINT* 2017-11-05 23:32:58 +01:00
László Monda 1449f98781 Remove redundant includes. 2017-11-05 23:29:34 +01:00
László Monda 870dec7519 Fix indentation. 2017-11-05 23:03:27 +01:00
László Monda 1c9e350006 Extract updateUsbBuffer() from UsbCommand_ApplyConfig() 2017-11-05 22:56:51 +01:00
László Monda df0b0c33b5 Add ParsingStage_* enums. 2017-11-05 22:51:43 +01:00
László Monda 97f044d21f Simplify the control flow of UsbCommand_ApplyConfig() a bit. 2017-11-05 22:45:58 +01:00
László Monda 88514f82f4 Put all macro arguments into parentheses just to be safe. 2017-11-05 22:29:47 +01:00
László Monda f7e26eef8a Split usb_status_code_transfer_config_t as usb_status_code_read_config_t and usb_status_code_write_config_t 2017-11-05 22:14:49 +01:00
László Monda a8bde4e007 Add {GET,SET}_USB_BUFFER_UINT* and use them wherever possible. Get rid of SetUsb*() functions. 2017-11-05 22:09:34 +01:00
László Monda 58778feb5b Move UsbStatusCode_JumpToSlaveBootloader_InvalidModuleDriverId to usb_command_jump_to_slave_bootloader.h 2017-11-05 19:33:08 +01:00
László Monda d78ac1bcf0 Start USB command specific status codes from 2 since 0 and 1 are taken. 2017-11-05 19:28:40 +01:00
László Monda 6db3eb3045 Rename UsbResponse_*() to UsbStatusCode_*(), SetUsbError() to SetUsbStatusCode(), and other USB status codes consistently. 2017-11-05 19:25:13 +01:00
László Monda eb451d6153 Set UsbResponse_InvalidCommand upon encountering with an invalid USB command. 2017-11-05 19:12:37 +01:00
László Monda 3f52819c0e Move UsbDebugInfo into usb_command_get_debug_info.[ch] and remove external UsbDebugInfo references. 2017-11-05 19:07:12 +01:00
László Monda ebd06ebbc6 Reorder includes according to USB command ids. 2017-11-05 19:02:24 +01:00
László Monda 8c42ec27dd Remove the now unused UsbCommandId_WriteLedDriver 2017-11-05 18:13:57 +01:00
László Monda 6dcfcca10f Remove unneeded includes and comments from usb_protocol_handler.c 2017-11-05 18:10:35 +01:00
László Monda 45420a348b Extract UsbCommand_SetLedPwmBrightness() into its own file. 2017-11-05 18:08:35 +01:00
László Monda 84ffe50dac Extract UsbCommand_GetAdcValue() to its own file. 2017-11-05 01:35:12 +01:00
László Monda 68f9aac883 Extract UsbCommand_SetTestLed() into its own file. 2017-11-05 01:28:15 +01:00
László Monda d547b9b324 Remove UsbCommandId_ReadMergeSensor now that it can be queried via UsbCommandId_GetKeyboardState. 2017-11-05 01:21:23 +01:00
László Monda e907e65751 Extract UsbCommand_Reenumerate() into its own file. 2017-11-05 01:18:37 +01:00
László Monda 0febc9dd69 Uncomment the exec of user-config-json-to-bin.ts now that it works from outside its own directory. Make make-release.js verbose. 2017-11-04 17:57:19 +01:00
László Monda fe74ea1578 Extract UsbCommand_GetDebugInfo() into its own file. 2017-11-04 10:46:04 +01:00
László Monda 67e304a787 Extract UsbCommand_GetKeyboardState() into its own file. 2017-11-04 10:30:37 +01:00
László Monda 4de340967c Extract UsbCommand_LaunchEepromTransferLegacy() into its own file. 2017-11-04 10:06:55 +01:00
László Monda 54496ca210 Extract UsbCommand_WriteConfig() 2017-11-04 08:43:27 +01:00
László Monda 232f595b41 Extract UsbCommand_SendKbootCommand() 2017-11-04 08:38:19 +01:00
László Monda 8a255aaf5f Extract UsbCommand_JumpToSlaveBootloader() 2017-11-04 08:32:54 +01:00
László Monda ad4fe1a18d Extract system properties to usb_command_get_property.c 2017-11-04 02:38:00 +01:00
László Monda 336c2e5368 Extract UsbCommand_ReadConfig() to usb_command_read_config.c. Rename Set{Response,Error}* to SetUsb{Response,Error} 2017-11-04 02:11:49 +01:00
László Monda c0b41b8e60 Remove the ApplyConfig() prototype because it doesn't exist anymore. 2017-11-04 01:36:55 +01:00
László Monda 457f4802d4 Rename usb_command_t to usb_command_id_t and UsbCommand_* to UsbCommandId_* 2017-11-04 01:35:31 +01:00
László Monda ae3efce452 Extract the applyConfig USB command into usb_command_apply_config.[ch] 2017-11-04 01:32:03 +01:00
László Monda 330a899625 Make the getAdcValue and getDebugInfo USB commands utilize the first byte of the response to provide status as dictated by the UHK protocol. 2017-11-04 01:02:19 +01:00
László Monda e7f34dcdc6 Simplify code by utilizing type casing on uint8_t arrays. 2017-11-04 00:30:40 +01:00
László Monda c2a1a94349 Switch keymap only upon keypress. 2017-11-03 22:39:18 +01:00
László Monda 35b8f0084b Don't put a zero scancode into ActiveUsbBasicKeyboardReport->scancodes[basicScancodeIndex++] 2017-11-03 22:32:10 +01:00
László Monda 0688c1bdfc Rename keymaps.[ch] to keymap.[ch] 2017-11-03 19:01:56 +01:00
László Monda 4072a0ea33 Rename Keymap_Switch() to SwitchKeymap() 2017-11-03 18:59:58 +01:00
László Monda e169627cde Move updateLayerStates() and getActiveLayer() into the newly created layer.c 2017-11-03 18:53:17 +01:00
László Monda aeb325a09f Being static variables, lowercamelcase HeldLayers and PressedLayers. 2017-11-03 18:43:26 +01:00
László Monda 0df7879358 Get rid of the unused PreviousToggledLayer. 2017-11-03 18:42:04 +01:00
László Monda bbbecb8f87 Handle layer toggle actions. 2017-11-03 18:29:17 +01:00
László Monda 05bbd28877 Maintain the states of previous key states. 2017-11-03 13:43:16 +01:00
László Monda b18cb651ce Leave the active layer active even if another layer switcher key gets pressed while holding it. 2017-11-03 12:49:55 +01:00
László Monda 88fac5c1ff Rename key_matrix_instance.[ch] to right_key_matrix.[ch] 2017-11-03 03:30:14 +01:00
László Monda fe2e611bb1 Update KeyStates[SlotId_RightKeyboardHalf] within usb_report_updater.c instead of main.c 2017-11-03 03:22:56 +01:00
László Monda 599b78a676 Don't expose UpdateUsbReports() anymore. 2017-11-03 03:20:08 +01:00
László Monda a0a162ae9e Extend key states to include not only the current state but also the previous state and suppressed state. 2017-11-03 03:17:46 +01:00
László Monda e0868ac866 Rename CurrentKeyStates to KeyStates and move it to the newly created key_states.[ch] 2017-11-03 02:46:34 +01:00
László Monda a7e70d0cb2 Link to the latest Agent revision. Add commented out call to user-config-json-to-bin.ts which apparently doesn't work from outer directories yet. 2017-11-03 00:57:37 +01:00
László Monda 31b7dddef4 Read the new UserConfig.userConfigLength field. 2017-11-02 23:10:22 +01:00
László Monda ecf7f10b9c Exchange Ctrl and Alt according to the official UHK default keymap. 2017-11-02 22:03:43 +01:00
László Monda 2aaef66d85 Convert LAYER_ID_* macros to LayerId_* enum values. 2017-11-02 21:48:30 +01:00
László Monda 00dfd96d55 Instead of scanning the keyboard matrix from the main loop and utilizing busy loops, try to use a PIT interrupt handler to do the same thing, scanning one row per interrupt call without busy loops.
For some reason, this makes the movement of the mouse pointer very slow and makes it jump from time to time, so I ended up adding INTERRUPT_KEY_SCANNER and disabling the timer interrupt.
Also double bufferred the mouse report just like the others. Unfortunately this does not affect this issue.
2017-11-02 01:11:41 +01:00
László Monda 024f24f489 Make make-release.js group master and slave firmwares into separate directories. 2017-11-01 02:09:22 +01:00
László Monda 6043651341 Rename release-firmware.js to make-release.js because it doesn't actually releases the release to GitHub. It merely creates it. 2017-11-01 00:35:33 +01:00
László Monda f7d775c6da Remove output files before the build process. Create the release directory in the directory of the script instead of /tmp 2017-11-01 00:33:35 +01:00
László Monda 1ab0885200 Fix the path of build directories in .travis.yml 2017-11-01 00:21:26 +01:00
László Monda 561d183840 Make release-firmware.js work when invoked from any directory. 2017-11-01 00:11:33 +01:00
László Monda df48f5e1be Set config.fatal to true. 2017-11-01 00:00:29 +01:00
László Monda b94310f57a Utilize string interpolation wherever possible. 2017-10-31 23:58:37 +01:00
László Monda dc82b51008 Read the current firmware version from package.json 2017-10-31 23:55:56 +01:00
László Monda 3aff28726f Port release-firmware to ShellJS. 2017-10-31 23:45:22 +01:00
László Monda 16e173140a Move package.json and release-firmware to scripts 2017-10-31 23:36:15 +01:00
László Monda 13dd0753ce Add package-lock.json and node_modules to .gitignore and clean up its obsolete entries. 2017-10-31 23:32:19 +01:00
László Monda ba5a49f7d1 Hoist {left,right}/build/kds/* to {left,right}/build to simplify the directory hierarchy. 2017-10-31 23:11:22 +01:00
László Monda 64b07746ee Invoke KDS in headless mode to buid the firmware before assembling the release. 2017-10-31 01:40:49 +01:00
László Monda d59ed73a10 Fix firmware paths. 2017-10-31 01:36:22 +01:00
László Monda 010b276f8b Fix XML structure. 2017-10-31 01:33:18 +01:00
László Monda 1d7790f74e Generate .hex files instead of .srec for the right half firmware. 2017-10-29 22:27:47 +01:00
László Monda 808d916687 Clean up .cproject and .gitignore files after the rename of the build and run configurations. 2017-10-29 22:04:48 +01:00
László Monda 52bb02bc3d Rename build and run configurations to reflect device ids. 2017-10-29 21:54:02 +01:00
László Monda e8ab25493e Make the firmware upgrade scripts working directory independent. 2017-10-29 19:09:32 +01:00
László Monda 72b279841c Port the blhost-unix.sh firmware update script of the right keyboard half to ShellJS resulting in update-master-firmware.js 2017-10-29 18:20:13 +01:00
László Monda 4e2d867424 Extract the USB product ID for getBlhostCmd() 2017-10-29 18:17:48 +01:00
László Monda a5402e7c6a Extract checkFirmwareImage() 2017-10-29 17:47:24 +01:00
László Monda f847cc844e Extract getBlhostCmd() to shared.js 2017-10-29 17:35:55 +01:00
László Monda 976e402445 Make update-slave-firmware.js extremely resilient (not a single failure out of 100 updates). Add shared.js 2017-10-29 17:17:12 +01:00
László Monda cf007f81bd Merge branch 'master' into add-device-name 2017-10-28 18:46:46 +02:00
László Monda 569493cbfa Add UsbDebugInfo to aid future debugging via USB. 2017-10-28 17:12:52 +02:00
László Monda f0a98eebb5 Set the initial keymap abbrivation to FTY (for factory keymap). 2017-10-26 20:32:19 +02:00
László Monda 55e4997ea2 Make the system keyboard descriptor play nicely with OSX. 2017-10-26 18:22:37 +02:00
László Monda 5642ab29a1 Reorder USB interfaces in usb_device_config.h, too. 2017-10-26 01:12:51 +02:00
László Monda 6bdd320ed8 Reorder USB interfaces all across the codebase in the following order: generic HID, basic keyboard, media keyboard, system keyboard, mouse. 2017-10-26 00:52:20 +02:00
László Monda c77286512c Reset keyboard reports just before changing them by UpdateActiveUsbReports(). This seems to completely solve the repeated media key issue. 2017-10-25 18:31:52 +02:00
László Monda c7b6acd838 Use the let keyword for defining variables. 2017-10-24 17:32:27 +02:00
László Monda 9db5c5e067 Port blhost-unix.sh as update-slave-firmware.js using ShellJS. 2017-10-24 13:59:36 +02:00
László Monda c370cab513 Use the renamed send-kboot-command-to-slave.js 2017-10-23 22:24:40 +02:00
László Monda 85b1a65ea7 Implement KbootCommand_Ping and set set left BOOTLOADER_TIMEOUT_MS back to 100 ms. 2017-10-23 21:33:08 +02:00
László Monda c46dcad490 Use reenumerate.js instead of jump-to-bootloader.js and make left/blhost-unix.sh handle argument related errors. 2017-10-23 16:52:15 +02:00
László Monda ab807cd0c8 Make sendKbootCommand() accept various command types, not only reset. 2017-10-23 01:19:19 +02:00
László Monda 92ee3b5606 Add KBOOT I2C slave driver, its related USB command, and make the firmware updater script of the left half successfully reset the left half after firmware update. 2017-10-22 02:17:43 +02:00
László Monda e57d199b40 Move FIXED_BUSPAL_BOOTLOADER to buspal/command.c 2017-10-21 03:53:01 +02:00
László Monda 95faf64b76 Remove the now unused FORCE_BUSPAL macro. 2017-10-21 03:50:07 +02:00
László Monda 5149e7e8ad Remove the now unused ALWAYS_ENTER_BOOTLOADER macro. 2017-10-21 03:40:10 +02:00
László Monda f67bcced4a Keep only one release and one debug build configuration. Add related kboot run configurations. 2017-10-21 03:35:17 +02:00
László Monda e9920cfebb Increase the delay from 1s to 2s and flash the firmware script argument. 2017-10-21 03:28:54 +02:00
László Monda 2e07627359 Temporarily increase left bootloader timeout from 100ms to 3000 ms for testing purposes. 2017-10-21 03:12:21 +02:00
László Monda 89fef3d933 Upon receiving the reset BusPal command, reset the MCU and reenumerate in normal keyboard mode. 2017-10-21 01:29:05 +02:00
László Monda a052f4f59c Add blhost script for the left firmware, too. 2017-10-21 01:27:33 +02:00
László Monda 25f8017879 Get rid of the now obsoleted bootloader_config.h 2017-10-20 00:52:32 +02:00
László Monda 5ec619532a Reference the latest version of Agent, containing the fixed uhk.js which makes jump-to-bootloader.js work. 2017-10-20 00:34:45 +02:00
László Monda 968c6c0416 Call NVIC_SystemReset() instead of custom code. 2017-10-20 00:34:01 +02:00
László Monda 0b4ca43ed6 Merge branch 'master' of github.com:UltimateHackingKeyboard/firmware 2017-10-20 00:32:37 +02:00
László Monda 3d46584b79 Don't try to npm install the dependencies of jump-to-bootloader.js but rather display instructions. 2017-10-20 00:31:06 +02:00
Stephen 8951ca992b Build linux in CI (#61)
* Linux build

* Trigger another build

* Another travis bump

* cleanup travis

* quotes required

* Update .travis.yml

* Update .travis.yml

* try double escape

* Update .travis.yml
2017-10-19 19:11:00 +02:00
László Monda 3230b94973 Make the left half call NVIC_SystemReset() upon receiving SlaveCommand_JumpToBootloader instead of jumping to the ROM address of the bootloader. This way the bootloader timeouts. Remove bootloader.c because it only contained JumpToBootloader() which is now unused. 2017-10-17 00:58:23 +02:00
László Monda 37c90cc4a7 Fix indentation. 2017-10-17 00:30:03 +02:00
László Monda b3e025f443 Make reenumerate() set Wormhole.timeoutMs based on GenericHidInBuffer+2 2017-10-16 23:26:37 +02:00
László Monda 84b304fe02 Read (and ignore) device name. 2017-10-14 15:54:38 +02:00
László Monda 53cb8aa129 Delete armgcc build scripts because they aren't planned to be used anymore. 2017-10-14 13:04:39 +02:00
László Monda 7285630264 Make the release script put put package.json into the release. 2017-10-14 02:28:01 +02:00
216 changed files with 5929 additions and 3380 deletions
+3 -6
View File
@@ -1,6 +1,3 @@
CMakeCache.txt package-lock.json
CMakeFiles node_modules
Makefile build_make
cmake_install.cmake
debug
release
+18 -14
View File
@@ -1,18 +1,22 @@
language: generic language: c
os: osx
os:
- linux
- osx
cache: cache:
directories: directories:
- $HOME/Library/Caches/Homebrew/Cask # Cache for the gcc archives
- $HOME/gcc-cache/
install: install:
- brew update && brew bundle -v - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then GCC_NAME="gcc-arm-none-eabi-7-2017-q4-major-mac.tar.bz2"; else GCC_NAME="gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2"; fi
- /Applications/Eclipse\ CPP.app/Contents/MacOS/eclipse -noSplash - if test ! -e $HOME/gcc-cache/$GCC_NAME ; then wget "https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2017q4/$GCC_NAME" -O $HOME/gcc-cache/$GCC_NAME ; fi
-application org.eclipse.equinox.p2.director - tar -xf $HOME/gcc-cache/$GCC_NAME -C $HOME
-repository http://gnuarmeclipse.sourceforge.net/updates - export PATH=$PATH:$HOME/gcc-arm-none-eabi-7-2017-q4-major/bin
-installIUs ilg.gnuarmeclipse.managedbuild.cross.feature.group
-profileProperties org.eclipse.update.install.features=true
script: script:
- /Applications/Eclipse\ CPP.app/Contents/MacOS/eclipse -noSplash - make -C left clean && make -j2 -C left DEBUG=1
-application org.eclipse.cdt.managedbuilder.core.headlessbuild - make -C left clean && make -j2 -C left DEBUG=0
-import $TRAVIS_BUILD_DIR/left/build/kds - make -C right clean && make -j2 -C right DEBUG=1
-import $TRAVIS_BUILD_DIR/right/build/kds - make -C right clean && make -j2 -C right DEBUG=0
-build all
-2
View File
@@ -1,2 +0,0 @@
cask "eclipse-cpp"
cask "./gcc-arm-embedded.rb"
+289 -8
View File
@@ -5,29 +5,310 @@ 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.5.3] - 2018-10-20
Device Protocol: 4.5.0 | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
- Re-enable the I2C watchdog of the left keyboard half which was accidentally disabled starting from firmware 8.4.3. This should fix the freezes of the left keyboard half.
## [8.5.2] - 2018-10-06
Device Protocol: 4.5.0 | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
- Don't suppress keys upon keymap change.
## [8.5.1] - 2018-10-04
Device Protocol: 4.5.0 | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
- Reset UsbReportUpdateSemaphore if it gets stuck for 100ms. This should fix occasional freezes.
## [8.5.0] - 2018-10-04
Device Protocol: 4.**5.0** | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
- Send primary role modifiers consistently.
- Only allow layer switcher keys to deactivate toggled layers.
- Deactivate secondary roles when switching keymaps.
- Use the correct scancode so that commas are outputted for macros.
- Move the pointer not by 1 but by 5 pixels when testing the USB stack to make the pointer easier to see.
- Expose UsbReportUpdateSemaphore via UsbCommand_{Get,Set}Variable() `DEVICEPROTOCOL:MINOR`
- Extract CurrentTime and remove Timer_{Get,Set}CurrentTime()
## [8.4.5] - 2018-08-21
Device Protocol: 4.4.0 | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
- Suppress pressed keys when the layer or keymap changes.
## [8.4.4] - 2018-08-14
Device Protocol: 4.4.0 | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
- Don't wake the host if a key is held down through the beginning of sleep.
- Ensure that secondary roles are triggered consistently.
## [8.4.3] - 2018-08-12
Device Protocol: 4.4.0 | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
- Compensate "double tap to lock layer" timeouts for the timer fix to make them as long as before 8.3.3
## [8.4.2] - 2018-08-02
Device Protocol: 4.4.0 | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
- Fix various bugs related to secondary role handling and sticky modifier states.
## [8.4.1] - 2018-07-31
Device Protocol: 4.4.0 | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
- Make some improvements to the sleep/wake code.
## [8.4.0] - 2018-07-24
Device Protocol: 4.**4.0** | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
- Rewrite the key debouncer and set the press and release timeouts to 50ms.
- Add hardcoded test keymap.
- Make debounce timeouts configurable via USB. `DEVICEPROTOCOL:MINOR`
- Make the hardcoded test keymap able to trigger via USB. `DEVICEPROTOCOL:MINOR`
- Allow the USB stack test mode to be activated via USB. `DEVICEPROTOCOL:MINOR`
## [8.3.3] - 2018-07-03
Device Protocol: 4.3.1 | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
- Implement the macro engine.
- Fix the timer which makes it tick twice as fast as before.
- Fix the nondeterministic bug that made USB hang.
- Restore the Windows related commits of firmware 8.3.1 because the USB hang bug has been fixed.
- Restore debouncing to 100ms until it gets really fixed.
## [8.3.2] - 2018-06-27
Device Protocol: 4.3.1 | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
- Make the debouncer debounce not only on key presses but also on key releases, and change the debounce interval from 100ms to the suggested 5ms of MX switches.
- Revert the Windows related commits of firmware 8.3.1 because they introduced a nondeterministic bug that made USB hang.
- Add base layer key mappings for the left and right add-ons for testing purposes.
## [8.3.1] - 2018-06-07
Device Protocol: 4.3.1 | Module Protocol: 4.0.0 | User Config: 4.1.0 | Hardware Config: 1.0.0
- Fix media key repetition bug on Windows.
- Fix bug that made Windows unable to sleep when the UHK was plugged in.
- Fix bug that made Chrome Remote Desktop blocked from interacting on Windows.
- Fix bug that made locked layers not release. This bug was introduced in the previous release.
## [8.3.0] - 2018-06-03
Device Protocol: 4.3.1 | Module Protocol: 4.0.0 | User Config: 4.**1.0** | Hardware Config: 1.0.0
- Make the config parser handle switch layer actions with hold on double tap disabled. `USERCONFIG:MINOR`
- Set key debounce timeout from 80ms to 100ms. This should further reduce key chattering.
## [8.2.5] - 2018-05-27
Device Protocol: 4.3.1 | Module Protocol: 4.0.0 | User Config: 4.0.1 | Hardware Config: 1.0.0
- Now really fix the bug that made the hardware and user configuration not load from the EEPROM on some hosts right after firmware update.
## [8.2.4] - 2018-05-21
Device Protocol: 4.3.**1** | Module Protocol: 4.0.0 | User Config: 4.0.1 | Hardware Config: 1.0.0
- Fix the bug that made the hardware and user configuration not load from the EEPROM on some hosts right after firmware update.
- Set the signature of the hardware config to "FTY" in the RAM when the keyboard is in factory reset mode, allowing Agent to be aware of the factory reset state. `DEVICEPROTOCOL:PATCH`
- Load the hardware and user configuration from the EEPROM even in factory reset mode.
- Set key debounce timeout from 60ms to 80ms. This should further reduce key chattering.
## [8.2.3] - 2018-05-15
Device Protocol: 4.3.0 | Module Protocol: 4.0.0 | User Config: 4.0.1 | Hardware Config: 1.0.0
- Don't switch keymaps instead of playing macros.
- Make saving the user configuration faster by only writing the part of the EEPROM which actually contains the user configuration.
## [8.2.2] - 2018-05-09
Device Protocol: 4.3.0 | Module Protocol: 4.0.0 | User Config: 4.0.**1** | Hardware Config: 1.0.0
- Parse long media macro actions. `USERCONFIG:PATCH`
- Fix vendor-specific USB usage page entry. This makes the HIDAPI Linux/hidraw driver able to access interface 0.
## [8.2.1] - 2018-05-02
Device Protocol: 4.3.0 | Module Protocol: 4.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
- Don't suppress modifier keys upon releasing a layer.
- Restore Caps Lock indicator when saving the configuration.
## [8.2.0] - 2018-04-20
Device Protocol: 4.**3.0** | Module Protocol: 4.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
- Change the scheduling of USB reports which changes mouse pointer speeds.
- Disable LEDs while the host sleeps.
- Make any key wake up the host while it sleeps.
- Add UsbCommand_SwitchKeymap(). `DEVICEPROTOCOL:MINOR`
- Make GCC optimize the release builds for execution speed (-O3).
## [8.1.5] - 2018-04-04
Device Protocol: 4.2.0 | Module Protocol: 4.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
- Set key debounce timeout from 30ms to 60ms. This should eliminate key chattering.
- Use the correct scancode for the menu key of the factory keymap.
## [8.1.4] - 2018-03-05
Device Protocol: 4.2.0 | Module Protocol: 4.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
- Set key debounce timeout from 20ms to 30ms. This should eliminate key chattering.
- Set double tap lock layer timeout from 250ms to 150ms. This should minimize the chance of locking layers accidentally by double tapping their keys.
## [8.1.3] - 2018-02-18
Device Protocol: 4.2.0 | Module Protocol: 4.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
- Fix system keyboard descriptor, so it is byte-aligned.
- Set key debounce timeout from 15ms to 20ms. This should at least reduce and hopefully eliminate key chattering.
## [8.1.2] - 2018-02-13
Device Protocol: 4.2.0 | Module Protocol: 4.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
- Detect Caps Lock USB state and light up the Caps Lock icon of the LED display accordingly.
- Set key debounce timeout from 10ms to 15ms. This should at least reduce and hopefully eliminate key chattering.
## [8.1.1] - 2018-02-11
Device Protocol: 4.2.0 | Module Protocol: 4.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
- Lock layers every time when double-tapping their layer switcher keys, regardless of how many times the layer switcher key was tapped before.
- Only lock layers via double-tapping if the second tap gets released within 100ms.
## [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
+8
View File
@@ -0,0 +1,8 @@
Before submitting a new issue, make sure to do the following:
1. If you're using Karabiner Elements on your Mac, close it!
2. Install the latest Agent:
https://github.com/UltimateHackingKeyboard/agent/releases/latest
3. Use Agent to update to the latest firmware:
https://github.com/UltimateHackingKeyboard/firmware/releases/latest
4. Try to reproduce the issue, and only report it if it still persists.
+9 -9
View File
@@ -4,23 +4,23 @@
This repository hosts the firmware of the [Ultimate Hacking Keyboard](https://ultimatehackingkeyboard.com/). This repository hosts the firmware of the [Ultimate Hacking Keyboard](https://ultimatehackingkeyboard.com/).
## Cloning the repository If you want to use the latest firmware version for your UHK, then instead of going through the pain of building the firmware, simply download the [latest release of Agent](https://github.com/UltimateHackingKeyboard/agent/releases/latest) and update to the latest firmware version within Agent with a click of a button.
Please make sure to clone this repo with: If you're one of the brave few who wants to hack the firmware then read on.
1. Make sure to clone this repo with:
`git clone --recursive git@github.com:UltimateHackingKeyboard/firmware.git` `git clone --recursive git@github.com:UltimateHackingKeyboard/firmware.git`
This will download the dependent submodules, which are required to build the firmware. 2. Download and install MCUXpresso IDE for [Linux](https://storage.googleapis.com/ugl-static/mcuxpresso-ide/mcuxpressoide-10.2.1_795.x86_64.deb.bin), [Mac](https://storage.googleapis.com/ugl-static/mcuxpresso-ide/MCUXpressoIDE_10.2.1_795.pkg), or [Windows](https://storage.googleapis.com/ugl-static/mcuxpresso-ide/MCUXpressoIDE_10.2.1_795.exe).
## Importing the firmware 3. In the IDE, import the project by invoking *File -> Import -> General -> Existing Projects into Workspace*, select the *left* or *right* directory depending on the desired firmware, then click on the *Finish* button.
Install [Kinetis Design Studio](http://www.nxp.com/products/software-and-tools/run-time-software/kinetis-software-and-tools/ides-for-kinetis-mcus/kinetis-design-studio-integrated-development-environment-ide:KDS_IDE) (KDS), import the project by invoking *File -> Import -> General -> Existing Projects into Workspace*, select the *left* or *right* directory depending on the desired firmware, then click on the *Finish* button. 4. In order to be able to flash the firmware via USB from the IDE, you must build [Agent](https://github.com/UltimateHackingKeyboard/agent) which is Git submodule of the this repo and located in the `lib/agent` directory.
## Building and flashing the firmware 5. Finally, in the IDE, click on *Run -> External Tools -> External Tools Configurations*, then select a release firmware to be flashed such as *uhk60-right_release_kboot*, and click on the *Run* button.
For the left keyboard half, make sure to power it via the right keyboard half (which must be powered via USB). Also connect the left keyboard half to your SEGGER J-Link USB debug probe (which must also be connected via USB). Then in KDS, click on *Run -> Run Configurations*, select *GDB SEGGER J-Link Debugging -> uhk-left release jlink*, and click on the *Debug* button. Going forward, it's easier to flash the firmware of your choice by using the downwards toolbar icon which is located rightwards of the *green play + toolbox icon*.
For the right keyboard half, flash [the bootloader](https://github.com/UltimateHackingKeyboard/bootloader) first. Then in KDS, click on *Run -> Run Configurations*, select *C/C++ Application -> uhk-right release blhost*, and click on the *Debug* button. Please note that this update method only works on Linux out of the box. On other operating systems, you have to execute the relevant commands of the [blhost-unix.sh](right/build/kds/blhost-unix.sh) script.
## Contributing ## Contributing
-35
View File
@@ -1,35 +0,0 @@
cask 'gcc-arm-embedded' do
version '4_8-2014q3'
sha256 '6b30901738b09a8d22fdfff99e991217444b80ac492a6163af5c06a3baaa3487'
# launchpad.net/gcc-arm-embedded/ was verified as official when first introduced to the cask
url "https://launchpad.net/gcc-arm-embedded/4.8/4.8-2014-q3-update/+download/gcc-arm-none-eabi-#{version}-20140805-mac.tar.bz2"
name 'GCC ARM Embedded'
homepage 'https://developer.arm.com/open-source/gnu-toolchain/gnu-rm'
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-addr2line"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-ar"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-as"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-c++"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-c++filt"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-cpp"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-elfedit"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-g++"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gcc"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gcc-ar"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gcc-nm"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gcc-ranlib"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gcov"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gdb"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gprof"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-ld"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-ld.bfd"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-nm"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-objcopy"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-objdump"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-ranlib"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-readelf"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-size"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-strings"
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-strip"
end
+58
View File
@@ -0,0 +1,58 @@
# Copyright (C) 2018 Kristian Lauszus. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Contact information
# -------------------
# Kristian Lauszus
# Web : http://www.lauszus.com
# e-mail : lauszus@gmail.com
# Set project name.
PROJECT_NAME = uhk_left
# Defines the part type that this project uses.
PART = MKL03Z32VFK4
# Defines the linker script to use for the application.
LDSCRIPT = ../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/gcc/MKL03Z32xxx4_flash.ld
# Size of the heap and stack.
HEAP_SIZE = 0
STACK_SIZE = 0x0050
# Set the compiler CPU and FPU options.
CPU = -mcpu=cortex-m0plus
FPU = -mfloat-abi=soft
# Command for flashing the left half of the keyboard.
FLASH_CMD = node ../lib/agent/packages/usb/update-module-firmware.js leftHalf $(PROJECT_OBJ:.axf=.bin)
# Path to the JLink script used for the left half.
JLINK_SCRIPT = ../scripts/flash-left.jlink
# Source files.
SOURCE = $(wildcard src/*.c) \
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/system_MKL03Z4.c \
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/gcc/startup_MKL03Z4.S \
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_clock.c \
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_gpio.c \
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_i2c.c \
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_lptmr.c \
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_spi.c \
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_tpm.c \
$(wildcard ../shared/*.c) \
$(wildcard ../shared/slave/*.c)
# Header files.
IPATH = src \
../lib/KSDK_2.0_MKL03Z8xxx4/CMSIS/Include \
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4 \
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers \
../shared
# Include main Makefile.
include ../scripts/Makedefs.mk
+350
View 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.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<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"/>
</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.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" 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.most" 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:/uhk-left}/../" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1406291427" incrementalBuildTarget="all DEBUG=1" keepEnvironmentInBuildfile="false" managedBuildOn="false" 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.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<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"/>
</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.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" 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:/uhk-left}/../" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1689719605" incrementalBuildTarget="all DEBUG=0" keepEnvironmentInBuildfile="false" managedBuildOn="false" 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>
+4
View File
@@ -0,0 +1,4 @@
/.settings/
/uhk60-left_debug/
/uhk60-left_release/
/uhk60-left_release/
+30 -20
View File
@@ -31,6 +31,16 @@
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures> </natures>
<linkedResources> <linkedResources>
<link>
<name>Makedefs.mk</name>
<type>1</type>
<locationURI>PARENT-2-PROJECT_LOC/scripts/Makedefs.mk</locationURI>
</link>
<link>
<name>Makefile</name>
<type>1</type>
<locationURI>PARENT-1-PROJECT_LOC/Makefile</locationURI>
</link>
<link> <link>
<name>drivers</name> <name>drivers</name>
<type>2</type> <type>2</type>
@@ -39,12 +49,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 +64,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>
-198
View File
@@ -1,198 +0,0 @@
INCLUDE(CMakeForceCompiler)
# CROSS COMPILER SETTING
SET(CMAKE_SYSTEM_NAME Generic)
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
# THE VERSION NUMBER
SET (Tutorial_VERSION_MAJOR 1)
SET (Tutorial_VERSION_MINOR 0)
# ENABLE ASM
ENABLE_LANGUAGE(ASM)
SET(CMAKE_STATIC_LIBRARY_PREFIX)
SET(CMAKE_STATIC_LIBRARY_SUFFIX)
SET(CMAKE_EXECUTABLE_LIBRARY_PREFIX)
SET(CMAKE_EXECUTABLE_LIBRARY_SUFFIX)
# CURRENT DIRECTORY
SET(SrcDir "${CMAKE_CURRENT_SOURCE_DIR}/../../src")
SET(KsdkDir "${SrcDir}/../../lib/KSDK_2.0_MKL03Z8xxx4")
SET(ProjDirPath ${CMAKE_CURRENT_SOURCE_DIR})
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -DDEBUG")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -D__STARTUP_CLEAR_BSS")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -g")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -flto")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -mcpu=cortex-m0plus")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -Wall")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -mfloat-abi=soft")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -mthumb")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -fno-common")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -ffunction-sections")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -fdata-sections")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -ffreestanding")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -fno-builtin")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -mapcs")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -std=gnu99")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -D__STARTUP_CLEAR_BSS")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -flto")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -mcpu=cortex-m0plus")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -Wall")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -mfloat-abi=soft")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -mthumb")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -fno-common")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -ffunction-sections")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -fdata-sections")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -ffreestanding")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -fno-builtin")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -mapcs")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -std=gnu99")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DCPU_MKL03Z32VFK4")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DPRINTF_FLOAT_ENABLE=0")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSCANF_FLOAT_ENABLE=0")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DPRINTF_ADVANCED_ENABLE=0")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSCANF_ADVANCED_ENABLE=0")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DFRDM_KL03Z")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DFREEDOM")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -flto")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mcpu=cortex-m0plus")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mfloat-abi=soft")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mthumb")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -MMD")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -MP")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fno-common")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ffunction-sections")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fdata-sections")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ffreestanding")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fno-builtin")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mapcs")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -std=gnu99")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNDEBUG")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DCPU_MKL03Z32VFK4")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DPRINTF_FLOAT_ENABLE=0")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DSCANF_FLOAT_ENABLE=0")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DPRINTF_ADVANCED_ENABLE=0")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DSCANF_ADVANCED_ENABLE=0")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DFRDM_KL03Z")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DFREEDOM")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Os")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -flto")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mcpu=cortex-m0plus")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mfloat-abi=soft")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mthumb")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -MMD")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -MP")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fno-common")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffunction-sections")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fdata-sections")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffreestanding")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fno-builtin")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mapcs")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -std=gnu99")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -flto")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -mcpu=cortex-m0plus")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Wall")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -mfloat-abi=soft")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} --specs=nano.specs")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -fno-common")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -ffunction-sections")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -fdata-sections")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -ffreestanding")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -fno-builtin")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -mthumb")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -mapcs")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} --gc-sections")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -static")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -z")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} muldefs")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -g")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -flto")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -mcpu=cortex-m0plus")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -Wall")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -mfloat-abi=soft")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} --specs=nano.specs")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fno-common")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -ffunction-sections")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fdata-sections")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -ffreestanding")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fno-builtin")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -mthumb")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -mapcs")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} --gc-sections")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -static")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -z")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} muldefs")
include_directories(${KsdkDir}/CMSIS/Include)
include_directories(${ProjDirPath}/../../../../../devices)
include_directories(${KsdkDir}/devices/MKL03Z4/drivers)
include_directories(${ProjDirPath}/..)
include_directories(${ProjDirPath}/../../../../../devices/MKL03Z4/utilities)
include_directories(${ProjDirPath}/../../..)
include_directories(${KsdkDir}/devices/MKL03Z4)
include_directories(${ProjDirPath}/../../../../../CMSIS/Include)
include_directories(${ProjDirPath}/../../../../../devices)
include_directories(${ProjDirPath}/../../../../../devices/MKL03Z4/drivers)
include_directories(${ProjDirPath}/..)
include_directories(${ProjDirPath}/../../../../../devices/MKL03Z4/utilities)
include_directories(${ProjDirPath}/../../..)
include_directories(${ProjDirPath}/../../../../../devices/MKL03Z4)
add_executable(uhk-left.elf
"${KsdkDir}/devices/MKL03Z4/gcc/startup_MKL03Z4.S"
#"${ProjDirPath}/../../../../../devices/MKL03Z4/drivers/fsl_lpuart.h"
#"${ProjDirPath}/../../../../../devices/MKL03Z4/drivers/fsl_lpuart.c"
"${KsdkDir}/devices/MKL03Z4/drivers/fsl_port.h"
"${SrcDir}/main.c"
"${SrcDir}/clock_config.c"
"${SrcDir}/clock_config.h"
#"${KsdkDir}/devices/MKL03Z4/drivers/fsl_common.h"
#"${KsdkDir}/devices/MKL03Z4/drivers/fsl_common.c"
#"${ProjDirPath}/../../../../../devices/MKL03Z4/utilities/fsl_debug_console.c"
#"${ProjDirPath}/../../../../../devices/MKL03Z4/utilities/fsl_debug_console.h"
"${KsdkDir}/devices/MKL03Z4/system_MKL03Z4.c"
"${KsdkDir}/devices/MKL03Z4/system_MKL03Z4.h"
"${KsdkDir}/devices/MKL03Z4/drivers/fsl_gpio.h"
"${KsdkDir}/devices/MKL03Z4/drivers/fsl_gpio.c"
#"${KsdkDir}/../clock_config.c"
#"${rojDirPath}/../clock_config.h"
"${KsdkDir}/devices/MKL03Z4/drivers/fsl_smc.h"
"${KsdkDir}/devices/MKL03Z4/drivers/fsl_smc.c"
"${KsdkDir}/devices/MKL03Z4/drivers/fsl_clock.h"
"${KsdkDir}/devices/MKL03Z4/drivers/fsl_clock.c"
)
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -T${KsdkDir}/devices/MKL03Z4/gcc/MKL03Z32xxx4_flash.ld -static")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -T${KsdkDir}/devices/MKL03Z4/gcc/MKL03Z32xxx4_flash.ld -static")
TARGET_LINK_LIBRARIES(uhk-left.elf -Wl,--start-group)
target_link_libraries(uhk-left.elf debug m)
target_link_libraries(uhk-left.elf debug c)
target_link_libraries(uhk-left.elf debug gcc)
target_link_libraries(uhk-left.elf debug nosys)
target_link_libraries(uhk-left.elf optimized m)
target_link_libraries(uhk-left.elf optimized c)
target_link_libraries(uhk-left.elf optimized gcc)
target_link_libraries(uhk-left.elf optimized nosys)
TARGET_LINK_LIBRARIES(uhk-left.elf -Wl,--end-group)
-6
View File
@@ -1,6 +0,0 @@
echo "This script is not supposed to work. Please port the BASH version to Windows!"
cmake -DCMAKE_TOOLCHAIN_FILE="%KSDK_DIR%/tools/cmake_toolchain_files/armgcc.cmake" -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug .
mingw32-make -j4
cmake -DCMAKE_TOOLCHAIN_FILE="%KSDK_DIR%/tools/cmake_toolchain_files/armgcc.cmake" -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release .
mingw32-make -j4
pause
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
./build_debug.sh
./build_release.sh
-4
View File
@@ -1,4 +0,0 @@
echo "This script is not supposed to work. Please port the BASH version to Windows!"
cmake -DCMAKE_TOOLCHAIN_FILE="%KSDK_DIR%/tools/cmake_toolchain_files/armgcc.cmake" -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug .
mingw32-make -j4
pause
-4
View File
@@ -1,4 +0,0 @@
#!/bin/sh
. ./ksdk_dir.sh
cmake -DCMAKE_TOOLCHAIN_FILE="$KSDK_DIR/tools/cmake_toolchain_files/armgcc.cmake" -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug .
make -j4
-4
View File
@@ -1,4 +0,0 @@
echo "This script is not supposed to work. Please port the BASH version to Windows!"
cmake -DCMAKE_TOOLCHAIN_FILE="%KSDK_DIR%/tools/cmake_toolchain_files/armgcc.cmake" -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release .
mingw32-make -j4
pause
-4
View File
@@ -1,4 +0,0 @@
#!/bin/sh
. ./ksdk_dir.sh
cmake -DCMAKE_TOOLCHAIN_FILE="$KSDK_DIR/tools/cmake_toolchain_files/armgcc.cmake" -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release .
make -j4
-3
View File
@@ -1,3 +0,0 @@
RD /s /Q Debug Release CMakeFiles
DEL /s /Q /F Makefile cmake_install.cmake CMakeCache.txt
pause
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
rm -rf debug release CMakeFiles
rm -rf Makefile cmake_install.cmake CMakeCache.txt
-2
View File
@@ -1,2 +0,0 @@
#!/bin/sh
export KSDK_DIR=/../../../lib/KSDK_2.0_MKL03Z8xxx4/
File diff suppressed because it is too large Load Diff
-15
View File
@@ -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="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList context=&quot;Context string&quot;/&gt;&#10;"/> <stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;memoryBlockExpressionList context=&quot;Context string&quot;/&gt;&#13;&#10;"/>
<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>
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="/usr/bin/make"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-j8 DEBUG=1 flash"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/uhk-left}/../"/>
</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="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList context=&quot;Context string&quot;/&gt;&#10;"/> <stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;memoryBlockExpressionList context=&quot;Context string&quot;/&gt;&#13;&#10;"/>
<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>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="/usr/bin/make"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-j8 DEBUG=0 flash"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/uhk-left}/../"/>
</launchConfiguration>
-8
View File
@@ -1,8 +0,0 @@
#ifndef __CONFIG_H__
#define __CONFIG_H__
// Macros:
// #define DEBUG_OVER_SPI
#endif
-62
View File
@@ -1,62 +0,0 @@
#include "debug_over_spi.h"
#include "config.h"
#include "fsl_gpio.h"
#ifdef DEBUG_OVER_SPI
#define EXAMPLE_SPI_MASTER (SPI0)
#define EXAMPLE_SPI_MASTER_SOURCE_CLOCK (kCLOCK_BusClk)
#define BUFFER_SIZE (64)
static uint8_t srcBuff[BUFFER_SIZE];
static spi_transfer_t xfer = {0};
static spi_master_config_t userConfig;
spi_master_handle_t handle;
static volatile bool masterFinished = true;
#endif
static void masterCallback(SPI_Type *base, spi_master_handle_t *masterHandle, status_t status, void *userData)
{
#ifdef DEBUG_OVER_SPI
masterFinished = true;
#endif
}
void DebugOverSpi_Init(void)
{
#ifdef DEBUG_OVER_SPI
CLOCK_EnableClock(DEBUG_OVER_SPI_MOSI_CLOCK);
CLOCK_EnableClock(DEBUG_OVER_SPI_SCK_CLOCK);
PORT_SetPinMux(DEBUG_OVER_SPI_MOSI_PORT, DEBUG_OVER_SPI_MOSI_PIN, kPORT_MuxAlt3);
PORT_SetPinMux(DEBUG_OVER_SPI_SCK_PORT, DEBUG_OVER_SPI_SCK_PIN, kPORT_MuxAlt3);
GPIO_PinInit(DEBUG_OVER_SPI_MOSI_GPIO, DEBUG_OVER_SPI_MOSI_PIN, &(gpio_pin_config_t){kGPIO_DigitalOutput, 0});
GPIO_PinInit(DEBUG_OVER_SPI_SCK_GPIO, DEBUG_OVER_SPI_SCK_PIN, &(gpio_pin_config_t){kGPIO_DigitalOutput, 0});
GPIO_SetPinsOutput(DEBUG_OVER_SPI_MOSI_GPIO, 1U << DEBUG_OVER_SPI_MOSI_PIN);
GPIO_SetPinsOutput(DEBUG_OVER_SPI_SCK_GPIO, 1U << DEBUG_OVER_SPI_SCK_PIN);
SPI_MasterGetDefaultConfig(&userConfig);
uint32_t srcFreq = CLOCK_GetFreq(EXAMPLE_SPI_MASTER_SOURCE_CLOCK);
SPI_MasterInit(EXAMPLE_SPI_MASTER, &userConfig, srcFreq);
SPI_MasterTransferCreateHandle(EXAMPLE_SPI_MASTER, &handle, masterCallback, NULL);
#endif
}
void DebugOverSpi_Send(uint8_t *tx, uint8_t len)
{
#ifdef DEBUG_OVER_SPI
if (masterFinished) {
masterFinished = false;
memcpy(srcBuff, tx, MIN(BUFFER_SIZE, len));
xfer.txData = srcBuff;
xfer.dataSize = len;
SPI_MasterTransferNonBlocking(EXAMPLE_SPI_MASTER, &handle, &xfer);
}
#endif
}
-27
View File
@@ -1,27 +0,0 @@
#ifndef __DEBUG_OVER_SPI_H__
#define __DEBUG_OVER_SPI_H__
// Includes:
#include "fsl_common.h"
#include "fsl_port.h"
#include "fsl_spi.h"
// Macros:
#define DEBUG_OVER_SPI_MOSI_PORT PORTA
#define DEBUG_OVER_SPI_MOSI_GPIO GPIOA
#define DEBUG_OVER_SPI_MOSI_CLOCK kCLOCK_PortA
#define DEBUG_OVER_SPI_MOSI_PIN 7
#define DEBUG_OVER_SPI_SCK_PORT PORTB
#define DEBUG_OVER_SPI_SCK_GPIO GPIOB
#define DEBUG_OVER_SPI_SCK_CLOCK kCLOCK_PortB
#define DEBUG_OVER_SPI_SCK_PIN 0
// Functions:
void DebugOverSpi_Init(void);
void DebugOverSpi_Send(uint8_t *tx, uint8_t len);
#endif
+20 -24
View File
@@ -4,34 +4,30 @@
#include "test_led.h" #include "test_led.h"
#include "init_peripherals.h" #include "init_peripherals.h"
// NOTE: Because of a bug in the ROM bootloader of the KL03Z, the watchdog timer is disabled and cannot be re-enabled.
// See https://community.nxp.com/thread/457893
// Therefore the hardware watchdog timer cannot be used without an extra way to enter bootloader or application mode.
static uint32_t prevWatchdogCounter = 0; static uint32_t prevWatchdogCounter = 0;
uint32_t I2cWatchdog_InnerCounter; static uint32_t I2cWatchdog_RecoveryCounter; // Counter for how many times we had to recover and restart
volatile uint32_t I2cWatchdog_OuterCounter;
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 counter = 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) counter++;
{ if (counter == 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(); counter=0;
I2cWatchdog_OuterCounter++; TestLed_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); I2C_SlaveDeinit(I2C_BUS_BASEADDR);
InitI2c(); initI2c();
}
}
prevWatchdogCounter = I2C_Watchdog;
} }
prevWatchdogCounter = I2C_Watchdog;
LPTMR_ClearStatusFlags(LPTMR0, kLPTMR_TimerCompareFlag);
} }
-1
View File
@@ -13,7 +13,6 @@
// Functions: // Functions:
void InitI2cWatchdog(void);
void RunWatchdog(void); void RunWatchdog(void);
#endif #endif
+6 -9
View File
@@ -9,7 +9,7 @@
#include "led_pwm.h" #include "led_pwm.h"
#include "slave_protocol_handler.h" #include "slave_protocol_handler.h"
#include "i2c_watchdog.h" #include "i2c_watchdog.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;
@@ -22,7 +22,6 @@ static void i2cSlaveCallback(I2C_Type *base, i2c_slave_transfer_t *xfer, void *u
{ {
dosBuffer[0] = xfer->event; dosBuffer[0] = xfer->event;
dosBuffer[1] = userData; dosBuffer[1] = userData;
DebugOverSpi_Send(dosBuffer, 2);
switch (xfer->event) { switch (xfer->event) {
case kI2C_SlaveTransmitEvent: case kI2C_SlaveTransmitEvent:
@@ -44,14 +43,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 +80,9 @@ void InitLedDriver(void)
void InitPeripherals(void) void InitPeripherals(void)
{ {
InitInterruptPriorities(); initInterruptPriorities();
InitLedDriver(); InitLedDriver();
InitTestLed(); TestLed_Init();
LedPwm_Init(); LedPwm_Init();
// InitI2cWatchdog(); initI2c();
DebugOverSpi_Init();
InitI2c();
} }
+1 -1
View File
@@ -11,6 +11,6 @@
// Functions: // Functions:
void InitPeripherals(void); void InitPeripherals(void);
void InitI2c(void); void initI2c(void);
#endif #endif
+22
View File
@@ -0,0 +1,22 @@
#include "fsl_lptmr.h"
#include "key_scanner.h"
#include "i2c_watchdog.h"
void KEY_SCANNER_HANDLER(void)
{
KeyMatrix_ScanRow(&keyMatrix);
RunWatchdog();
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
View 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
+2 -1
View File
@@ -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 -17
View File
@@ -1,9 +1,9 @@
#include "main.h" #include "main.h"
#include "init_clock.h" #include "slave/init_clock.h"
#include "init_peripherals.h" #include "init_peripherals.h"
#include "bootloader.h" #include "bootloader.h"
#include <stdio.h> #include <stdio.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)
@@ -14,11 +14,7 @@ key_matrix_t keyMatrix = {
{PORTB, GPIOB, kCLOCK_PortB, 11}, {PORTB, GPIOB, kCLOCK_PortB, 11},
{PORTA, GPIOA, kCLOCK_PortA, 6}, {PORTA, GPIOA, kCLOCK_PortA, 6},
{PORTA, GPIOA, kCLOCK_PortA, 8}, {PORTA, GPIOA, kCLOCK_PortA, 8},
#ifdef DEBUG_OVER_SPI
{PORTA, GPIOA, kCLOCK_PortA, 8},
#else
{PORTB, GPIOB, kCLOCK_PortB, 0}, {PORTB, GPIOB, kCLOCK_PortB, 0},
#endif
{PORTB, GPIOB, kCLOCK_PortB, 6}, {PORTB, GPIOB, kCLOCK_PortB, 6},
{PORTA, GPIOA, kCLOCK_PortA, 3}, {PORTA, GPIOA, kCLOCK_PortA, 3},
{PORTA, GPIOA, kCLOCK_PortA, 12} {PORTA, GPIOA, kCLOCK_PortA, 12}
@@ -27,28 +23,19 @@ key_matrix_t keyMatrix = {
{PORTB, GPIOB, kCLOCK_PortB, 7}, {PORTB, GPIOB, kCLOCK_PortB, 7},
{PORTB, GPIOB, kCLOCK_PortB, 10}, {PORTB, GPIOB, kCLOCK_PortB, 10},
{PORTA, GPIOA, kCLOCK_PortA, 5}, {PORTA, GPIOA, kCLOCK_PortA, 5},
#ifdef DEBUG_OVER_SPI
{PORTA, GPIOA, kCLOCK_PortA, 5},
#else
{PORTA, GPIOA, kCLOCK_PortA, 7}, {PORTA, GPIOA, kCLOCK_PortA, 7},
#endif
{PORTA, GPIOA, kCLOCK_PortA, 4} {PORTA, GPIOA, kCLOCK_PortA, 4}
} }
}; };
#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();
} }
} }
+1 -1
View File
@@ -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
+28 -26
View File
@@ -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,12 +37,12 @@ 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;
bool isLedOn = RxMessage.data[1]; bool isLedOn = RxMessage.data[1];
TEST_LED_SET(isLedOn); TestLed_Set(isLedOn);
break; break;
case SlaveCommand_SetLedPwmBrightness: case SlaveCommand_SetLedPwmBrightness:
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;
} }
} }
-5
View File
@@ -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;
+2 -2
View File
@@ -1,10 +1,10 @@
#include "test_led.h" #include "test_led.h"
#include "fsl_port.h" #include "fsl_port.h"
extern void InitTestLed(void) extern void TestLed_Init(void)
{ {
CLOCK_EnableClock(TEST_LED_CLOCK); CLOCK_EnableClock(TEST_LED_CLOCK);
PORT_SetPinMux(TEST_LED_PORT, TEST_LED_PIN, kPORT_MuxAsGpio); PORT_SetPinMux(TEST_LED_PORT, TEST_LED_PIN, kPORT_MuxAsGpio);
GPIO_PinInit(TEST_LED_GPIO, TEST_LED_PIN, &(gpio_pin_config_t){kGPIO_DigitalOutput, 0}); GPIO_PinInit(TEST_LED_GPIO, TEST_LED_PIN, &(gpio_pin_config_t){kGPIO_DigitalOutput, 0});
TEST_LED_ON(); TestLed_On();
} }
+20 -5
View File
@@ -15,13 +15,28 @@
#define TEST_LED_CLOCK kCLOCK_PortB #define TEST_LED_CLOCK kCLOCK_PortB
#define TEST_LED_PIN 13 #define TEST_LED_PIN 13
#define TEST_LED_ON() GPIO_SetPinsOutput(TEST_LED_GPIO, 1U << TEST_LED_PIN) static inline void TestLed_On(void)
#define TEST_LED_OFF() GPIO_ClearPinsOutput(TEST_LED_GPIO, 1U << TEST_LED_PIN) {
#define TEST_LED_SET(state) GPIO_WritePinOutput(TEST_LED_GPIO, TEST_LED_PIN, (state)) GPIO_SetPinsOutput(TEST_LED_GPIO, 1U << TEST_LED_PIN);
#define TEST_LED_TOGGLE() GPIO_TogglePinsOutput(TEST_LED_GPIO, 1U << TEST_LED_PIN) }
static inline void TestLed_Off(void)
{
GPIO_ClearPinsOutput(TEST_LED_GPIO, 1U << TEST_LED_PIN);
}
static inline void TestLed_Set(bool state)
{
GPIO_WritePinOutput(TEST_LED_GPIO, TEST_LED_PIN, state);
}
static inline void TestLed_Toggle(void)
{
GPIO_TogglePinsOutput(TEST_LED_GPIO, 1U << TEST_LED_PIN);
}
// Functions: // Functions:
void InitTestLed(void); void TestLed_Init(void);
#endif #endif
-18
View File
@@ -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"
}
-15
View File
@@ -1,15 +0,0 @@
#!/usr/bin/env sh
version=$1
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
rm -r $releaseDir
mkdir $releaseDir
cp $rightFirmwareFile $releaseDir
cp $leftFirmwareFile $releaseDir
echo $version > $releaseDir/version
tar -cvjSf $releaseName.tar.bz2 -C $releaseDir .
+76
View File
@@ -0,0 +1,76 @@
# Copyright (C) 2018 Kristian Lauszus. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Contact information
# -------------------
# Kristian Lauszus
# Web : http://www.lauszus.com
# e-mail : lauszus@gmail.com
# Set project name.
PROJECT_NAME = uhk_right
# Defines the part type that this project uses.
PART = MK22FN512VLH12
# Defines the linker script to use for the application.
LDSCRIPT = src/link/MK22FN512xxx12_flash.ld
# Size of the heap and stack.
HEAP_SIZE = 0x2000
STACK_SIZE = 0x0400
# Set the compiler CPU and FPU options.
CPU = -mcpu=cortex-m4
FPU = -mfpu=fpv4-sp-d16 -mfloat-abi=hard
# Command for flashing the right half of the keyboard.
FLASH_CMD = node ../lib/agent/packages/usb/update-device-firmware.js $(PROJECT_OBJ:.axf=.hex)
# Path to the JLink script used for the right half.
JLINK_SCRIPT = ../scripts/flash-right.jlink
# Preprocessor directives.
BUILD_FLAGS = -DCPU_$(PART)_cm4 -DUSB_STACK_BM -DBL_HAS_BOOTLOADER_CONFIG=1
# Address of the app vector table. The bootloader will take up the flash before this address.
BL_APP_VECTOR_TABLE_ADDRESS ?= 0xc000
# Source files.
SOURCE = $(wildcard src/*.c) \
$(wildcard src/*/*.c) \
$(wildcard src/*/*/*.c) \
../lib/bootloader/src/bootloader/src/wormhole.c \
$(wildcard ../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device/*.c) \
$(wildcard ../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa/*.c) \
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/system_MK22F51212.c \
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/gcc/startup_MK22F51212.S \
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_adc16.c \
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_clock.c \
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_ftm.c \
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_gpio.c \
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_i2c.c \
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_pit.c \
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_smc.c \
$(wildcard ../shared/*.c)
# Header files.
IPATH = src \
src/ksdk_usb \
src/buspal \
src/buspal/bm_usb \
../lib/bootloader/src \
../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device \
../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/include \
../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa \
../lib/KSDK_2.0_MK22FN512xxx12/CMSIS/Include \
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212 \
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers \
../shared
# Include main Makefile.
include ../scripts/Makedefs.mk
@@ -2,22 +2,22 @@
<?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.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<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"/>
<extension id="org.eclipse.cdt.core.CWDLocator" 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.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.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.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
</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.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" 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.most" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.704315278" 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.messagelength.704315278" 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.108613118" 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.signedchar.108613118" 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.916504304" 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.functionsections.916504304" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
@@ -57,7 +57,7 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.1518272175" 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.toerrors.1518272175" 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.addtools.createlisting.104956045" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.104956045" 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.1135747399" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1135747399" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
<builder buildPath="${workspace_loc:/k64f}/release" id="ilg.gnuarmeclipse.managedbuild.cross.builder.789002772" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/> <builder buildPath="${workspace_loc:/uhk-right}/../" id="ilg.gnuarmeclipse.managedbuild.cross.builder.789002772" incrementalBuildTarget="all DEBUG=0" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.2026990925" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler"> <tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.2026990925" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.494477502" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.494477502" 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.1465555477" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1465555477" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
@@ -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"/>
@@ -142,19 +142,19 @@
<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.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<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"/>
<extension id="org.eclipse.cdt.core.CWDLocator" 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.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.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.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
</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.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" 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"/>
@@ -197,7 +197,7 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.2098763517" 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.toerrors.2098763517" 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.addtools.createlisting.836473542" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.836473542" 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.1768350063" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1768350063" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
<builder buildPath="${workspace_loc:/k64f}/release" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1931309296" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/> <builder buildPath="${workspace_loc:/uhk-right}/../" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1931309296" incrementalBuildTarget="all DEBUG=1" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.894450" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler"> <tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.894450" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.555709175" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.555709175" 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.1619685061" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1619685061" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
@@ -211,19 +211,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 +265,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,19 +285,19 @@
<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.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<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"/>
<extension id="org.eclipse.cdt.core.CWDLocator" 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.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.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.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
</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.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" 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"/>
@@ -340,7 +340,7 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.2124713168" 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.toerrors.2124713168" 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.addtools.createlisting.1228214828" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.1228214828" 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.1911575583" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1911575583" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
<builder buildPath="${workspace_loc:/k64f}/release" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1942759303" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/> <builder buildPath="${workspace_loc:/uhk-right}/../" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1942759303" incrementalBuildTarget="all DEBUG=1 BL_APP_VECTOR_TABLE_ADDRESS=0" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1355758441" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler"> <tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1355758441" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.511724221" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.511724221" 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.1130167410" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/> <option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1130167410" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
@@ -354,19 +354,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 +432,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 +446,98 @@
<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">
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
</configuration>
<configuration configurationName="uhk60-right_release">
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
</configuration>
<configuration configurationName="uhk60-right_debug_standalone">
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
</configuration>
</storageModule>
<storageModule moduleId="com.crt.config">
<projectStorage>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;TargetConfig&gt;
&lt;Properties property_3="NXP" property_4="MK22FN512xxx12" property_count="5" version="100200"/&gt;
&lt;infoList vendor="NXP"&gt;&lt;info chip="MK22FN512xxx12" name="MK22FN512xxx12"&gt;&lt;chip&gt;&lt;name&gt;MK22FN512xxx12&lt;/name&gt;
&lt;family&gt;K2x&lt;/family&gt;
&lt;vendor&gt;NXP&lt;/vendor&gt;
&lt;memory can_program="true" id="Flash" is_ro="true" size="0" type="Flash"/&gt;
&lt;memory id="RAM" size="0" type="RAM"/&gt;
&lt;memoryInstance derived_from="Flash" driver="FTFA_2K.cfx" id="PROGRAM_FLASH" location="0x00000000" size="0x00080000"/&gt;
&lt;memoryInstance derived_from="RAM" id="SRAM_UPPER" location="0x20000000" size="0x00010000"/&gt;
&lt;memoryInstance derived_from="RAM" id="SRAM_LOWER" location="0x1fff0000" size="0x00010000"/&gt;
&lt;peripheralInstance derived_from="FTFA-FlashConfig" determined="infoFile" id="FTFA-FlashConfig" location="0x400"/&gt;
&lt;peripheralInstance derived_from="DMA" determined="infoFile" id="DMA" location="0x40008000"/&gt;
&lt;peripheralInstance derived_from="FB" determined="infoFile" id="FB" location="0x4000C000"/&gt;
&lt;peripheralInstance derived_from="FMC" determined="infoFile" id="FMC" location="0x4001F000"/&gt;
&lt;peripheralInstance derived_from="FTFA" determined="infoFile" id="FTFA" location="0x40020000"/&gt;
&lt;peripheralInstance derived_from="DMAMUX" determined="infoFile" id="DMAMUX" location="0x40021000"/&gt;
&lt;peripheralInstance derived_from="FTM0" determined="infoFile" id="FTM0" location="0x40038000"/&gt;
&lt;peripheralInstance derived_from="FTM1" determined="infoFile" id="FTM1" location="0x40039000"/&gt;
&lt;peripheralInstance derived_from="FTM2" determined="infoFile" id="FTM2" location="0x4003A000"/&gt;
&lt;peripheralInstance derived_from="FTM3" determined="infoFile" id="FTM3" location="0x40026000"/&gt;
&lt;peripheralInstance derived_from="ADC0" determined="infoFile" id="ADC0" location="0x4003B000"/&gt;
&lt;peripheralInstance derived_from="ADC1" determined="infoFile" id="ADC1" location="0x40027000"/&gt;
&lt;peripheralInstance derived_from="DAC0" determined="infoFile" id="DAC0" location="0x4003F000"/&gt;
&lt;peripheralInstance derived_from="DAC1" determined="infoFile" id="DAC1" location="0x40028000"/&gt;
&lt;peripheralInstance derived_from="RNG" determined="infoFile" id="RNG" location="0x40029000"/&gt;
&lt;peripheralInstance derived_from="LPUART0" determined="infoFile" id="LPUART0" location="0x4002A000"/&gt;
&lt;peripheralInstance derived_from="SPI0" determined="infoFile" id="SPI0" location="0x4002C000"/&gt;
&lt;peripheralInstance derived_from="SPI1" determined="infoFile" id="SPI1" location="0x4002D000"/&gt;
&lt;peripheralInstance derived_from="I2S0" determined="infoFile" id="I2S0" location="0x4002F000"/&gt;
&lt;peripheralInstance derived_from="CRC" determined="infoFile" id="CRC" location="0x40032000"/&gt;
&lt;peripheralInstance derived_from="PDB0" determined="infoFile" id="PDB0" location="0x40036000"/&gt;
&lt;peripheralInstance derived_from="PIT" determined="infoFile" id="PIT" location="0x40037000"/&gt;
&lt;peripheralInstance derived_from="RTC" determined="infoFile" id="RTC" location="0x4003D000"/&gt;
&lt;peripheralInstance derived_from="RFVBAT" determined="infoFile" id="RFVBAT" location="0x4003E000"/&gt;
&lt;peripheralInstance derived_from="LPTMR0" determined="infoFile" id="LPTMR0" location="0x40040000"/&gt;
&lt;peripheralInstance derived_from="RFSYS" determined="infoFile" id="RFSYS" location="0x40041000"/&gt;
&lt;peripheralInstance derived_from="SIM" determined="infoFile" id="SIM" location="0x40047000"/&gt;
&lt;peripheralInstance derived_from="PORTA" determined="infoFile" id="PORTA" location="0x40049000"/&gt;
&lt;peripheralInstance derived_from="PORTB" determined="infoFile" id="PORTB" location="0x4004A000"/&gt;
&lt;peripheralInstance derived_from="PORTC" determined="infoFile" id="PORTC" location="0x4004B000"/&gt;
&lt;peripheralInstance derived_from="PORTD" determined="infoFile" id="PORTD" location="0x4004C000"/&gt;
&lt;peripheralInstance derived_from="PORTE" determined="infoFile" id="PORTE" location="0x4004D000"/&gt;
&lt;peripheralInstance derived_from="WDOG" determined="infoFile" id="WDOG" location="0x40052000"/&gt;
&lt;peripheralInstance derived_from="EWM" determined="infoFile" id="EWM" location="0x40061000"/&gt;
&lt;peripheralInstance derived_from="MCG" determined="infoFile" id="MCG" location="0x40064000"/&gt;
&lt;peripheralInstance derived_from="OSC" determined="infoFile" id="OSC" location="0x40065000"/&gt;
&lt;peripheralInstance derived_from="I2C0" determined="infoFile" id="I2C0" location="0x40066000"/&gt;
&lt;peripheralInstance derived_from="I2C1" determined="infoFile" id="I2C1" location="0x40067000"/&gt;
&lt;peripheralInstance derived_from="UART0" determined="infoFile" id="UART0" location="0x4006A000"/&gt;
&lt;peripheralInstance derived_from="UART1" determined="infoFile" id="UART1" location="0x4006B000"/&gt;
&lt;peripheralInstance derived_from="UART2" determined="infoFile" id="UART2" location="0x4006C000"/&gt;
&lt;peripheralInstance derived_from="USB0" determined="infoFile" id="USB0" location="0x40072000"/&gt;
&lt;peripheralInstance derived_from="CMP0" determined="infoFile" id="CMP0" location="0x40073000"/&gt;
&lt;peripheralInstance derived_from="CMP1" determined="infoFile" id="CMP1" location="0x40073008"/&gt;
&lt;peripheralInstance derived_from="VREF" determined="infoFile" id="VREF" location="0x40074000"/&gt;
&lt;peripheralInstance derived_from="LLWU" determined="infoFile" id="LLWU" location="0x4007C000"/&gt;
&lt;peripheralInstance derived_from="PMC" determined="infoFile" id="PMC" location="0x4007D000"/&gt;
&lt;peripheralInstance derived_from="SMC" determined="infoFile" id="SMC" location="0x4007E000"/&gt;
&lt;peripheralInstance derived_from="RCM" determined="infoFile" id="RCM" location="0x4007F000"/&gt;
&lt;peripheralInstance derived_from="GPIOA" determined="infoFile" id="GPIOA" location="0x400FF000"/&gt;
&lt;peripheralInstance derived_from="GPIOB" determined="infoFile" id="GPIOB" location="0x400FF040"/&gt;
&lt;peripheralInstance derived_from="GPIOC" determined="infoFile" id="GPIOC" location="0x400FF080"/&gt;
&lt;peripheralInstance derived_from="GPIOD" determined="infoFile" id="GPIOD" location="0x400FF0C0"/&gt;
&lt;peripheralInstance derived_from="GPIOE" determined="infoFile" id="GPIOE" location="0x400FF100"/&gt;
&lt;peripheralInstance derived_from="SystemControl" determined="infoFile" id="SystemControl" location="0xE000E000"/&gt;
&lt;peripheralInstance derived_from="SysTick" determined="infoFile" id="SysTick" location="0xE000E010"/&gt;
&lt;peripheralInstance derived_from="NVIC" determined="infoFile" id="NVIC" location="0xE000E100"/&gt;
&lt;peripheralInstance derived_from="MCM" determined="infoFile" id="MCM" location="0xE0080000"/&gt;
&lt;/chip&gt;
&lt;processor&gt;&lt;name gcc_name="cortex-m4"&gt;Cortex-M4&lt;/name&gt;
&lt;family&gt;Cortex-M&lt;/family&gt;
&lt;/processor&gt;
&lt;link href="MK22F51212_internal_peripheral.xml" show="embed" type="simple"/&gt;
&lt;/info&gt;
&lt;/infoList&gt;
&lt;/TargetConfig&gt;</projectStorage>
</storageModule>
<storageModule moduleId="com.nxp.mcuxpresso.core.datamodels">
<sdkName>SDK_2.x_MK22FN512xxx12</sdkName>
<sdkVersion>2.2.0</sdkVersion>
</storageModule>
</cproject> </cproject>
+4
View File
@@ -0,0 +1,4 @@
/.settings/
/uhk60-right_release/
/uhk60-right_debug/
/uhk60-right_debug_standalone/
@@ -30,6 +30,16 @@
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures> </natures>
<linkedResources> <linkedResources>
<link>
<name>Makedefs.mk</name>
<type>1</type>
<locationURI>PARENT-2-PROJECT_LOC/scripts/Makedefs.mk</locationURI>
</link>
<link>
<name>Makefile</name>
<type>1</type>
<locationURI>PARENT-1-PROJECT_LOC/Makefile</locationURI>
</link>
<link> <link>
<name>bootloader-shared</name> <name>bootloader-shared</name>
<type>2</type> <type>2</type>
@@ -48,12 +58,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 +78,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>
@@ -196,21 +196,27 @@ SECTIONS
text_end = ORIGIN(m_text) + LENGTH(m_text); text_end = ORIGIN(m_text) + LENGTH(m_text);
ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data") ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data")
USB_RAM_GAP = DEFINED(__usb_ram_size__) ? __usb_ram_size__ : 0x800;
/* Uninitialized data section */ /* Uninitialized data section */
.bss : .bss : ALIGN(4)
{ {
/* This is used by the startup in order to initialize the .bss section */ /* This is used by the startup in order to initialize the .bss section */
. = ALIGN(4);
__START_BSS = .; __START_BSS = .;
__bss_start__ = .; __bss_start__ = .;
*(.bss) *(.bss)
*(.bss*) *(.bss*)
. = ALIGN(512);
USB_RAM_START = .;
. += USB_RAM_GAP;
*(COMMON) *(COMMON)
. = ALIGN(4); . = ALIGN(4);
} > m_data
.m_usb_bdt (NOLOAD) :
{
. = ALIGN(512);
*(m_usb_bdt)
} > m_data
.m_usb_global (NOLOAD) :
{
*(m_usb_global)
__bss_end__ = .; __bss_end__ = .;
__END_BSS = .; __END_BSS = .;
} > m_data } > m_data
@@ -239,17 +245,6 @@ SECTIONS
. += STACK_SIZE; . += STACK_SIZE;
} > m_data_2 } > m_data_2
m_usb_bdt USB_RAM_START (NOLOAD) :
{
*(m_usb_bdt)
USB_RAM_BDT_END = .;
}
m_usb_global USB_RAM_BDT_END (NOLOAD) :
{
*(m_usb_global)
}
/* Initializes stack on the end of block */ /* Initializes stack on the end of block */
__StackTop = ORIGIN(m_data_2) + LENGTH(m_data_2); __StackTop = ORIGIN(m_data_2) + LENGTH(m_data_2);
__StackLimit = __StackTop - STACK_SIZE; __StackLimit = __StackTop - STACK_SIZE;
@@ -204,21 +204,27 @@ SECTIONS
text_end = ORIGIN(m_text) + LENGTH(m_text); text_end = ORIGIN(m_text) + LENGTH(m_text);
ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data") ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data")
USB_RAM_GAP = DEFINED(__usb_ram_size__) ? __usb_ram_size__ : 0x800;
/* Uninitialized data section */ /* Uninitialized data section */
.bss : .bss : ALIGN(4)
{ {
/* This is used by the startup in order to initialize the .bss section */ /* This is used by the startup in order to initialize the .bss section */
. = ALIGN(4);
__START_BSS = .; __START_BSS = .;
__bss_start__ = .; __bss_start__ = .;
*(.bss) *(.bss)
*(.bss*) *(.bss*)
. = ALIGN(512);
USB_RAM_START = .;
. += USB_RAM_GAP;
*(COMMON) *(COMMON)
. = ALIGN(4); . = ALIGN(4);
} > m_data
.m_usb_bdt (NOLOAD) :
{
. = ALIGN(512);
*(m_usb_bdt)
} > m_data
.m_usb_global (NOLOAD) :
{
*(m_usb_global)
__bss_end__ = .; __bss_end__ = .;
__END_BSS = .; __END_BSS = .;
} > m_data } > m_data
@@ -247,17 +253,6 @@ SECTIONS
. += STACK_SIZE; . += STACK_SIZE;
} > m_data_2 } > m_data_2
m_usb_bdt USB_RAM_START (NOLOAD) :
{
*(m_usb_bdt)
USB_RAM_BDT_END = .;
}
m_usb_global USB_RAM_BDT_END (NOLOAD) :
{
*(m_usb_global)
}
/* Initializes stack on the end of block */ /* Initializes stack on the end of block */
__StackTop = ORIGIN(m_data_2) + LENGTH(m_data_2); __StackTop = ORIGIN(m_data_2) + LENGTH(m_data_2);
__StackLimit = __StackTop - STACK_SIZE; __StackLimit = __StackTop - STACK_SIZE;
-239
View File
@@ -1,239 +0,0 @@
INCLUDE(CMakeForceCompiler)
# CROSS COMPILER SETTING
SET(CMAKE_SYSTEM_NAME Generic)
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
# THE VERSION NUMBER
SET (Tutorial_VERSION_MAJOR 1)
SET (Tutorial_VERSION_MINOR 0)
# ENABLE ASM
ENABLE_LANGUAGE(ASM)
SET(CMAKE_STATIC_LIBRARY_PREFIX)
SET(CMAKE_STATIC_LIBRARY_SUFFIX)
SET(CMAKE_EXECUTABLE_LIBRARY_PREFIX)
SET(CMAKE_EXECUTABLE_LIBRARY_SUFFIX)
# CURRENT DIRECTORY
SET(SrcDir "${CMAKE_CURRENT_SOURCE_DIR}/../../src")
SET(KsdkDir "${SrcDir}/../../lib/KSDK_2.0_MK22FN512xxx12/")
SET(IncludeDir "${SrcDir}/../shared")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -DDEBUG")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -D__STARTUP_CLEAR_BSS")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -g")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -mcpu=cortex-m4")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -Wall")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -mfloat-abi=hard")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -mfpu=fpv4-sp-d16")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -mthumb")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -fno-common")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -ffunction-sections")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -fdata-sections")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -ffreestanding")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -fno-builtin")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -mapcs")
SET(CMAKE_ASM_FLAGS_DEBUG "${CMAKE_ASM_FLAGS_DEBUG} -std=gnu99")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -D__STARTUP_CLEAR_BSS")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -mcpu=cortex-m4")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -Wall")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -mfloat-abi=hard")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -mfpu=fpv4-sp-d16")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -mthumb")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -fno-common")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -ffunction-sections")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -fdata-sections")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -ffreestanding")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -fno-builtin")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -mapcs")
SET(CMAKE_ASM_FLAGS_RELEASE "${CMAKE_ASM_FLAGS_RELEASE} -std=gnu99")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG=1")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DCPU_MK22FN512VLH12")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DUSB_STACK_BM")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DFRDM_K22F")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DFREEDOM")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mcpu=cortex-m4")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mfloat-abi=hard")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mfpu=fpv4-sp-d16")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mthumb")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -MMD")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -MP")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fno-common")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ffunction-sections")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fdata-sections")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ffreestanding")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -fno-builtin")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -mapcs")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -std=gnu99")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -D_DEBUG=0")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DCPU_MK22FN512VLH12")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DUSB_STACK_BM")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DFRDM_K22F")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DFREEDOM")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Os")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mcpu=cortex-m4")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mfloat-abi=hard")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mfpu=fpv4-sp-d16")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mthumb")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -MMD")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -MP")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fno-common")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffunction-sections")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fdata-sections")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ffreestanding")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fno-builtin")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -mapcs")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -std=gnu99")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -mcpu=cortex-m4")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Wall")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -mfloat-abi=hard")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -mfpu=fpv4-sp-d16")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} --specs=nano.specs")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -fno-common")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -ffunction-sections")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -fdata-sections")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -ffreestanding")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -fno-builtin")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -mthumb")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -mapcs")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} --gc-sections")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -static")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -z")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} muldefs")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -g")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -mcpu=cortex-m4")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -Wall")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -mfloat-abi=hard")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -mfpu=fpv4-sp-d16")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} --specs=nano.specs")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fno-common")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -ffunction-sections")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fdata-sections")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -ffreestanding")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fno-builtin")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -mthumb")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -mapcs")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} --gc-sections")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -static")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -z")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -Xlinker")
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} muldefs")
include_directories(${SrcDir})
include_directories(${SrcDir}/ksdk_usb)
include_directories(${SrcDir}/usb_descriptors)
include_directories(${SrcDir}/../../shared)
include_directories(${KsdkDir}/middleware/usb_1.0.0)
include_directories(${KsdkDir}/middleware/usb_1.0.0/osa)
include_directories(${KsdkDir}/middleware/usb_1.0.0/include)
include_directories(${KsdkDir}/middleware/usb_1.0.0/device)
include_directories(${KsdkDir}/CMSIS/Include)
include_directories(${KsdkDir}/boards/frdmk22f)
include_directories(${KsdkDir}/devices/MK22F51212/drivers)
include_directories(${KsdkDir}/devices/MK22F51212)
include_directories(${IncludeDir})
add_executable(dev_composite_hid_mouse_hid_keyboard_bm.elf
"${KsdkDir}/devices/MK22F51212/gcc/startup_MK22F51212.S"
"${KsdkDir}/devices/MK22F51212/system_MK22F51212.c"
"${KsdkDir}/devices/MK22F51212/system_MK22F51212.h"
"${KsdkDir}/devices/MK22F51212/drivers/fsl_clock.h"
"${KsdkDir}/devices/MK22F51212/drivers/fsl_clock.c"
"${KsdkDir}/devices/MK22F51212/drivers/fsl_gpio.h"
"${KsdkDir}/devices/MK22F51212/drivers/fsl_gpio.c"
"${KsdkDir}/devices/MK22F51212/drivers/fsl_i2c.h"
"${KsdkDir}/devices/MK22F51212/drivers/fsl_i2c.c"
"${KsdkDir}/devices/MK22F51212/drivers/fsl_smc.h"
"${KsdkDir}/devices/MK22F51212/drivers/fsl_smc.c"
"${KsdkDir}/middleware/usb_1.0.0/device/usb_device_khci.c"
"${KsdkDir}/middleware/usb_1.0.0/device/usb_device_khci.h"
"${KsdkDir}/middleware/usb_1.0.0/device/usb_device.h"
"${KsdkDir}/middleware/usb_1.0.0/device/usb_device_dci.c"
"${KsdkDir}/middleware/usb_1.0.0/device/usb_device_dci.h"
"${KsdkDir}/middleware/usb_1.0.0/osa/usb_osa.h"
"${KsdkDir}/middleware/usb_1.0.0/osa/usb_osa_bm.h"
"${KsdkDir}/middleware/usb_1.0.0/osa/usb_osa_bm.c"
"${KsdkDir}/middleware/usb_1.0.0/include/usb.h"
"${SrcDir}/ksdk_usb/usb_device_class.c"
"${SrcDir}/ksdk_usb/usb_device_class.h"
"${SrcDir}/ksdk_usb/usb_device_hid.c"
"${SrcDir}/ksdk_usb/usb_device_hid.h"
"${SrcDir}/ksdk_usb/usb_device_ch9.c"
"${SrcDir}/ksdk_usb/usb_device_ch9.h"
"${SrcDir}/main.c"
"${SrcDir}/usb_composite_device.c"
"${SrcDir}/usb_composite_device.h"
"${SrcDir}/usb_descriptors/usb_descriptor_configuration.c"
"${SrcDir}/usb_descriptors/usb_descriptor_configuration.h"
"${SrcDir}/usb_descriptors/usb_descriptor_device.c"
"${SrcDir}/usb_descriptors/usb_descriptor_device.h"
"${SrcDir}/usb_descriptors/usb_descriptor_generic_hid_report.c"
"${SrcDir}/usb_descriptors/usb_descriptor_generic_hid_report.h"
"${SrcDir}/usb_descriptors/usb_descriptor_hid.c"
"${SrcDir}/usb_descriptors/usb_descriptor_hid.h"
"${SrcDir}/usb_descriptors/usb_descriptor_keyboard_report.c"
"${SrcDir}/usb_descriptors/usb_descriptor_keyboard_report.h"
"${SrcDir}/usb_descriptors/usb_descriptor_mouse_report.c"
"${SrcDir}/usb_descriptors/usb_descriptor_mouse_report.h"
"${SrcDir}/usb_descriptors/usb_descriptor_strings.c"
"${SrcDir}/usb_descriptors/usb_descriptor_strings.h"
"${SrcDir}/usb_device_config.h"
"${SrcDir}/usb_interface_generic_hid.c"
"${SrcDir}/usb_interface_generic_hid.h"
"${SrcDir}/usb_interface_keyboard.c"
"${SrcDir}/usb_interface_keyboard.h"
"${SrcDir}/usb_interface_mouse.c"
"${SrcDir}/usb_interface_mouse.h"
"${SrcDir}/init_peripherials.c"
"${SrcDir}/init_peripherials.h"
"${SrcDir}/init_clock.c"
"${SrcDir}/init_clock.h"
"${SrcDir}/led_driver.c"
"${SrcDir}/led_driver.h"
"${SrcDir}/reset_button.c"
"${SrcDir}/reset_button.h"
"${SrcDir}/test_led.c"
"${SrcDir}/test_led.h"
"${SrcDir}/usb_protocol_handler.c"
"${SrcDir}/usb_protocol_handler.h"
)
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -T${KsdkDir}/devices/MK22F51212/gcc/MK22FN512xxx12_flash.ld -static")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -T${KsdkDir}/devices/MK22F51212/gcc/MK22FN512xxx12_flash.ld -static")
TARGET_LINK_LIBRARIES(dev_composite_hid_mouse_hid_keyboard_bm.elf -Wl,--start-group)
target_link_libraries(dev_composite_hid_mouse_hid_keyboard_bm.elf debug m)
target_link_libraries(dev_composite_hid_mouse_hid_keyboard_bm.elf debug c)
target_link_libraries(dev_composite_hid_mouse_hid_keyboard_bm.elf debug gcc)
target_link_libraries(dev_composite_hid_mouse_hid_keyboard_bm.elf debug nosys)
target_link_libraries(dev_composite_hid_mouse_hid_keyboard_bm.elf optimized m)
target_link_libraries(dev_composite_hid_mouse_hid_keyboard_bm.elf optimized c)
target_link_libraries(dev_composite_hid_mouse_hid_keyboard_bm.elf optimized gcc)
target_link_libraries(dev_composite_hid_mouse_hid_keyboard_bm.elf optimized nosys)
TARGET_LINK_LIBRARIES(dev_composite_hid_mouse_hid_keyboard_bm.elf -Wl,--end-group)
-4
View File
@@ -1,4 +0,0 @@
# ARM GCC build environment
This build environment is set up for command line use. Given that the development dependencies are
installed on your system you can use the available scripts to build the firmware with ARM GCC.
-6
View File
@@ -1,6 +0,0 @@
echo "This script is not supposed to work. Please port the BASH version to Windows!"
cmake -DCMAKE_TOOLCHAIN_FILE="%KSDK_DIR%/tools/cmake_toolchain_files/armgcc.cmake" -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug .
mingw32-make -j4
cmake -DCMAKE_TOOLCHAIN_FILE="%KSDK_DIR%/tools/cmake_toolchain_files/armgcc.cmake" -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release .
mingw32-make -j4
pause
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
./build_debug.sh
./build_release.sh
-4
View File
@@ -1,4 +0,0 @@
echo "This script is not supposed to work. Please port the BASH version to Windows!"
cmake -DCMAKE_TOOLCHAIN_FILE="%KSDK_DIR%/tools/cmake_toolchain_files/armgcc.cmake" -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug .
mingw32-make -j4
pause
-4
View File
@@ -1,4 +0,0 @@
#!/bin/sh
. ./ksdk_dir.sh
cmake -DCMAKE_TOOLCHAIN_FILE="$KSDK_DIR/tools/cmake_toolchain_files/armgcc.cmake" -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug .
make -j4
-4
View File
@@ -1,4 +0,0 @@
echo "This script is not supposed to work. Please port the BASH version to Windows!"
cmake -DCMAKE_TOOLCHAIN_FILE="%KSDK_DIR%/tools/cmake_toolchain_files/armgcc.cmake" -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release .
mingw32-make -j4
pause
-4
View File
@@ -1,4 +0,0 @@
#!/bin/sh
. ./ksdk_dir.sh
cmake -DCMAKE_TOOLCHAIN_FILE="$KSDK_DIR/tools/cmake_toolchain_files/armgcc.cmake" -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release .
make -j4
-3
View File
@@ -1,3 +0,0 @@
RD /s /Q Debug Release CMakeFiles
DEL /s /Q /F Makefile cmake_install.cmake CMakeCache.txt
pause
-3
View File
@@ -1,3 +0,0 @@
#!/bin/sh
rm -rf debug release CMakeFiles
rm -rf Makefile cmake_install.cmake CMakeCache.txt
-2
View File
@@ -1,2 +0,0 @@
#!/bin/sh
export KSDK_DIR=/../../../lib/KSDK_2.0_MK22FN512xxx12/
-16
View File
@@ -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/
-35
View File
@@ -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
@@ -1,49 +0,0 @@
<?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="uhk-right-debug-srec/uhk-right.srec"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="blhost-unix.sh"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-right"/>
<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"/>
<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/uhk-right"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList context=&quot;reserved-for-future-use&quot;/&gt;&#10;"/>
<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>
@@ -1,49 +0,0 @@
<?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="uhk-right-release-srec/uhk-right.srec"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="blhost-unix.sh"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-right"/>
<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"/>
<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/uhk-right"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList context=&quot;reserved-for-future-use&quot;/&gt;&#10;"/>
<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>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
<stringAttribute key="bad_container_name" value="/uhk-l"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="/usr/bin/make"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-j8 DEBUG=1 flash"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/uhk-right}/../"/>
</launchConfiguration>
@@ -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="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList context=&quot;Context string&quot;/&gt;&#10;"/> <stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;memoryBlockExpressionList context=&quot;Context string&quot;/&gt;&#13;&#10;"/>
<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>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
<stringAttribute key="bad_container_name" value="/uhk-l"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="/usr/bin/make"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-j8 DEBUG=0 flash"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/uhk-right}/../"/>
</launchConfiguration>
-6
View File
@@ -1,6 +0,0 @@
#ifndef __BOOTLOADER_CONFIG_H__
#define __BOOTLOADER_CONFIG_H__
//#define ENABLE_BUSPAL
#endif
-1
View File
@@ -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"
+8 -6
View File
@@ -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);
@@ -588,9 +593,6 @@ static status_t handle_command_internal(uint8_t *packet, uint32_t packetLength)
else else
{ {
#if FIXED_BUSPAL_BOOTLOADER #if FIXED_BUSPAL_BOOTLOADER
size_t offset;
int res;
status = kStatus_Success; /* set default */ status = kStatus_Success; /* set default */
res = WaitForStartByte(rxBuf, &offset); res = WaitForStartByte(rxBuf, &offset);
if (res==1 && offset==1) if (res==1 && offset==1)
+1 -1
View File
@@ -110,7 +110,7 @@ status_t serial_packet_read(const peripheral_descriptor_t *self,
// Receive the framing data packet. // Receive the framing data packet.
isPacketOk = true; isPacketOk = true;
status_t status = read_data_packet(&framingPacket, g_serialContext.data, packetType); status = read_data_packet(&framingPacket, g_serialContext.data, packetType);
if (status != kStatus_Success) if (status != kStatus_Success)
{ {
// No packet available. // No packet available.
-5
View File
@@ -3,9 +3,4 @@
// Macros: // Macros:
#define I2C_WATCHDOG
// #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
+19 -16
View File
@@ -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;
+6 -6
View File
@@ -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
+21
View File
@@ -6,12 +6,20 @@ static uint8_t hardwareConfig[HARDWARE_CONFIG_SIZE];
static uint8_t ATTR_DATA2 stagingUserConfig[USER_CONFIG_SIZE]; static uint8_t ATTR_DATA2 stagingUserConfig[USER_CONFIG_SIZE];
static uint8_t validatedUserConfig[USER_CONFIG_SIZE]; static uint8_t validatedUserConfig[USER_CONFIG_SIZE];
uint16_t ValidatedUserConfigLength;
config_buffer_t HardwareConfigBuffer = { hardwareConfig }; config_buffer_t HardwareConfigBuffer = { hardwareConfig };
config_buffer_t StagingUserConfigBuffer = { stagingUserConfig }; config_buffer_t StagingUserConfigBuffer = { stagingUserConfig };
config_buffer_t ValidatedUserConfigBuffer = { validatedUserConfig }; config_buffer_t ValidatedUserConfigBuffer = { validatedUserConfig };
hardware_config_t *HardwareConfig = (hardware_config_t*)hardwareConfig;
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 +33,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;
}
}
+22 -1
View File
@@ -6,6 +6,10 @@
#include "fsl_common.h" #include "fsl_common.h"
#include "basic_types.h" #include "basic_types.h"
// Macros:
#define HARDWARE_CONFIG_SIGNATURE_LENGTH 3
// Typedefs: // Typedefs:
typedef enum { typedef enum {
@@ -14,15 +18,32 @@
ConfigBufferId_ValidatedUserConfig, ConfigBufferId_ValidatedUserConfig,
} config_buffer_id_t; } config_buffer_id_t;
typedef struct {
uint8_t signatureLength;
char signature[HARDWARE_CONFIG_SIGNATURE_LENGTH];
uint8_t majorVersion;
uint8_t minorVersion;
uint8_t patchVersion;
uint8_t brandId;
uint8_t deviceId;
uint32_t uniqueId;
bool isVendorModeOn;
bool isIso;
} hardware_config_t;
// Variables: // Variables:
extern bool ParserRunDry; extern bool ParserRunDry;
extern uint16_t ValidatedUserConfigLength;
extern config_buffer_t HardwareConfigBuffer; extern config_buffer_t HardwareConfigBuffer;
extern config_buffer_t StagingUserConfigBuffer; extern config_buffer_t StagingUserConfigBuffer;
extern config_buffer_t ValidatedUserConfigBuffer; extern config_buffer_t ValidatedUserConfigBuffer;
extern hardware_config_t *HardwareConfig;
// 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
+111 -14
View File
@@ -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)dataModelMajorVersion;
(void)dataModelMinorVersion;
(void)dataModelPatchVersion;
(void)deviceName;
(void)doubleTapSwitchLayerTimeout;
// 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,35 @@ 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
ValidatedUserConfigLength = userConfigLength;
IconsAndLayerTextsBrightness = iconsAndLayerTextsBrightness;
AlphanumericSegmentsBrightness = alphanumericSegmentsBrightness;
KeyBacklightBrightness = keyBacklightBrightness;
// 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;
} }
+15 -14
View File
@@ -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:
+30 -70
View File
@@ -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); switch_layer_mode_t mode = ReadUInt8(buffer);
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,71 +70,34 @@ 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;
} }
keyAction->type = KeyActionType_SwitchKeymap; keyAction->type = KeyActionType_PlayMacro;
keyAction->playMacro.macroId = macroIndex; keyAction->playMacro.macroId = macroIndex;
return ParserError_Success; return ParserError_Success;
} }
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;
@@ -235,4 +196,3 @@ parser_error_t ParseKeymap(config_buffer_t *buffer, uint8_t keymapIdx, uint8_t k
} }
return ParserError_Success; return ParserError_Success;
} }
+4
View File
@@ -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:
+17 -15
View File
@@ -7,14 +7,16 @@ parser_error_t parseKeyMacroAction(config_buffer_t *buffer, macro_action_t *macr
uint8_t keyMacroType = macroActionType - SerializedMacroActionType_KeyMacroAction; uint8_t keyMacroType = macroActionType - SerializedMacroActionType_KeyMacroAction;
uint8_t action = keyMacroType & 0b11; uint8_t action = keyMacroType & 0b11;
uint8_t type; uint8_t type;
uint8_t scancode; uint16_t scancode = 0;
uint8_t modifierMask; uint8_t modifierMask;
keyMacroType >>= 2; keyMacroType >>= 2;
type = keyMacroType & 0b11; type = keyMacroType & 0b11;
keyMacroType >>= 2; keyMacroType >>= 2;
scancode = keyMacroType & 0b10 ? readUInt8(buffer) : 0; if (keyMacroType & 0b10) {
modifierMask = keyMacroType & 0b01 ? readUInt8(buffer) : 0; scancode = type == SerializedKeystrokeType_LongMedia ? ReadUInt16(buffer) : ReadUInt8(buffer);
}
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 +28,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 +38,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 +49,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 +60,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); uint16_t delay = ReadUInt16(buffer);
macroAction->type = MacroActionType_Delay; macroAction->type = MacroActionType_Delay;
macroAction->delay.delay = delay; macroAction->delay.delay = delay;
@@ -68,7 +70,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 +80,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 +103,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;
+20 -16
View File
@@ -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; volatile 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; static 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;
} }
@@ -96,30 +94,31 @@ void EEPROM_Init(void)
I2C_MasterTransferCreateHandle(I2C_EEPROM_BUS_BASEADDR, &i2cHandle, i2cCallback, NULL); I2C_MasterTransferCreateHandle(I2C_EEPROM_BUS_BASEADDR, &i2cHandle, i2cCallback, NULL);
} }
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 configBufferId, void (*successCallback))
{ {
if (IsEepromBusy) { if (IsEepromBusy) {
return kStatus_I2C_Busy; return kStatus_I2C_Busy;
} }
CurrentEepromOperation = operation; CurrentEepromOperation = operation;
CurrentConfigBufferId = config_buffer_id; CurrentConfigBufferId = configBufferId;
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;
sourceOffset = 0; sourceOffset = 0;
sourceLength = isHardwareConfig ? HARDWARE_CONFIG_SIZE : USER_CONFIG_SIZE; uint16_t userConfigSize = ValidatedUserConfigLength && configBufferId == ConfigBufferId_ValidatedUserConfig ? ValidatedUserConfigLength : USER_CONFIG_SIZE;
sourceLength = isHardwareConfig ? HARDWARE_CONFIG_SIZE : userConfigSize;
LastEepromTransferStatus = writePage(); LastEepromTransferStatus = writePage();
break; break;
} }
@@ -127,3 +126,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;
}
+4 -4
View File
@@ -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:
@@ -24,12 +24,12 @@
// Variables: // Variables:
extern bool IsEepromBusy; extern volatile bool IsEepromBusy;
extern status_t EepromTransferStatus;
// Functions: // Functions:
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 -5
View File
@@ -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,14 +30,17 @@
// 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_GPIO GPIOC
#define I2C_EEPROM_BUS_SDA_PORT PORTC #define I2C_EEPROM_BUS_SDA_PORT PORTC
#define I2C_EEPROM_BUS_SDA_CLOCK kCLOCK_PortC #define I2C_EEPROM_BUS_SDA_CLOCK kCLOCK_PortC
#define I2C_EEPROM_BUS_SDA_PIN 11 #define I2C_EEPROM_BUS_SDA_PIN 11
#define I2C_EEPROM_BUS_SCL_GPIO GPIOC
#define I2C_EEPROM_BUS_SCL_PORT PORTC #define I2C_EEPROM_BUS_SCL_PORT PORTC
#define I2C_EEPROM_BUS_SCL_CLOCK kCLOCK_PortC #define I2C_EEPROM_BUS_SCL_CLOCK kCLOCK_PortC
#define I2C_EEPROM_BUS_SCL_PIN 10 #define I2C_EEPROM_BUS_SCL_PIN 10
+25
View 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
View 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
+10 -15
View File
@@ -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);
} }
+6 -6
View File
@@ -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:
+95 -58
View File
@@ -8,116 +8,153 @@
#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 "usb_api.h"
#include "slave_scheduler.h"
#include "bootloader/wormhole.h"
void InitInterruptPriorities(void) bool IsBusPalOn;
{ volatile uint32_t I2cMainBusRequestedBaudRateBps = I2C_MAIN_BUS_NORMAL_BAUD_RATE;
NVIC_SetPriority(I2C0_IRQn, 1); volatile uint32_t I2cMainBusActualBaudRateBps;
NVIC_SetPriority(I2C1_IRQn, 1);
NVIC_SetPriority(USB0_IRQn, 1); static i2c_bus_t i2cMainBus = {
.baseAddr = I2C_MAIN_BUS_BASEADDR,
.clockSrc = I2C_MAIN_BUS_CLK_SRC,
.mux = I2C_MAIN_BUS_MUX,
.sdaClock = I2C_MAIN_BUS_SDA_CLOCK,
.sdaGpio = I2C_MAIN_BUS_SDA_GPIO,
.sdaPort = I2C_MAIN_BUS_SDA_PORT,
.sdaPin = I2C_MAIN_BUS_SDA_PIN,
.sclClock = I2C_MAIN_BUS_SCL_CLOCK,
.sclGpio = I2C_MAIN_BUS_SCL_GPIO,
.sclPort = I2C_MAIN_BUS_SCL_PORT,
.sclPin = I2C_MAIN_BUS_SCL_PIN,
};
static i2c_bus_t i2cEepromBus = {
.baseAddr = I2C_EEPROM_BUS_BASEADDR,
.clockSrc = I2C_EEPROM_BUS_CLK_SRC,
.mux = I2C_EEPROM_BUS_MUX,
.sdaClock = I2C_EEPROM_BUS_SDA_CLOCK,
.sdaGpio = I2C_EEPROM_BUS_SDA_GPIO,
.sdaPort = I2C_EEPROM_BUS_SDA_PORT,
.sdaPin = I2C_EEPROM_BUS_SDA_PIN,
.sclClock = I2C_EEPROM_BUS_SCL_CLOCK,
.sclGpio = I2C_EEPROM_BUS_SCL_GPIO,
.sclPort = I2C_EEPROM_BUS_SCL_PORT,
.sclPin = I2C_EEPROM_BUS_SCL_PIN,
};
static 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 delay(void) static void initInterruptPriorities(void)
{
NVIC_SetPriority(PIT_I2C_WATCHDOG_IRQ_ID, 1);
NVIC_SetPriority(I2C_EEPROM_BUS_IRQ_ID, 0);
NVIC_SetPriority(PIT_TIMER_IRQ_ID, 3);
NVIC_SetPriority(I2C_MAIN_BUS_IRQ_ID, 4);
NVIC_SetPriority(USB_IRQ_ID, 4);
}
static void delay(void)
{ {
for (volatile uint32_t i=0; i<62; i++); for (volatile uint32_t i=0; i<62; i++);
} }
void recoverI2c(void) static void recoverI2cBus(i2c_bus_t *i2cBus)
{ {
PORT_SetPinMux(I2C_MAIN_BUS_SDA_PORT, I2C_MAIN_BUS_SDA_PIN, kPORT_MuxAsGpio); PORT_SetPinMux(i2cBus->sdaPort, i2cBus->sdaPin, kPORT_MuxAsGpio);
PORT_SetPinMux(I2C_MAIN_BUS_SCL_PORT, I2C_MAIN_BUS_SCL_PIN, kPORT_MuxAsGpio); PORT_SetPinMux(i2cBus->sclPort, i2cBus->sclPin, kPORT_MuxAsGpio);
GPIO_PinInit(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, &(gpio_pin_config_t){kGPIO_DigitalOutput, 1}); GPIO_PinInit(i2cBus->sclGpio, i2cBus->sclPin, &(gpio_pin_config_t){kGPIO_DigitalOutput, 1});
bool isOn = true; bool isOn = true;
for (int i=0; i<20; i++) { for (int i=0; i<20; i++) {
GPIO_PinInit(I2C_MAIN_BUS_SDA_GPIO, I2C_MAIN_BUS_SDA_PIN, &(gpio_pin_config_t){kGPIO_DigitalInput}); GPIO_PinInit(i2cBus->sdaGpio, i2cBus->sdaPin, &(gpio_pin_config_t){kGPIO_DigitalInput});
bool isSdaHigh = GPIO_ReadPinInput(I2C_MAIN_BUS_SDA_GPIO, I2C_MAIN_BUS_SDA_PIN); bool isSdaHigh = GPIO_ReadPinInput(i2cBus->sdaGpio, i2cBus->sdaPin);
GPIO_PinInit(I2C_MAIN_BUS_SDA_GPIO, I2C_MAIN_BUS_SDA_PIN, &(gpio_pin_config_t){kGPIO_DigitalOutput, 1}); GPIO_PinInit(i2cBus->sdaGpio, i2cBus->sdaPin, &(gpio_pin_config_t){kGPIO_DigitalOutput, 1});
if (isSdaHigh) { if (isSdaHigh) {
return; return;
} }
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, isOn); GPIO_WritePinOutput(i2cBus->sclGpio, i2cBus->sclPin, isOn);
delay(); delay();
isOn = !isOn; isOn = !isOn;
} }
GPIO_WritePinOutput(I2C_MAIN_BUS_SDA_GPIO, I2C_MAIN_BUS_SDA_PIN, 0); GPIO_WritePinOutput(i2cBus->sdaGpio, i2cBus->sdaPin, 0);
delay(); delay();
GPIO_WritePinOutput(I2C_MAIN_BUS_SCL_GPIO, I2C_MAIN_BUS_SCL_PIN, 1); GPIO_WritePinOutput(i2cBus->sclGpio, i2cBus->sclPin, 1);
delay(); delay();
GPIO_WritePinOutput(I2C_MAIN_BUS_SDA_GPIO, I2C_MAIN_BUS_SDA_PIN, 1); GPIO_WritePinOutput(i2cBus->sdaGpio, i2cBus->sdaPin, 1);
delay(); delay();
} }
void InitI2cMainBus(void) static void initI2cBus(i2c_bus_t *i2cBus)
{ {
CLOCK_EnableClock(I2C_MAIN_BUS_SDA_CLOCK); CLOCK_EnableClock(i2cBus->sdaClock);
CLOCK_EnableClock(I2C_MAIN_BUS_SCL_CLOCK); CLOCK_EnableClock(i2cBus->sclClock);
recoverI2c(); recoverI2cBus(i2cBus);
port_pin_config_t pinConfig = { port_pin_config_t pinConfig = {
.pullSelect = kPORT_PullUp, .pullSelect = kPORT_PullUp,
.openDrainEnable = kPORT_OpenDrainEnable, .openDrainEnable = kPORT_OpenDrainEnable,
.mux = I2C_MAIN_BUS_MUX, .mux = i2cBus->mux,
}; };
PORT_SetPinConfig(I2C_MAIN_BUS_SDA_PORT, I2C_MAIN_BUS_SDA_PIN, &pinConfig); PORT_SetPinConfig(i2cBus->sdaPort, i2cBus->sdaPin, &pinConfig);
PORT_SetPinConfig(I2C_MAIN_BUS_SCL_PORT, I2C_MAIN_BUS_SCL_PIN, &pinConfig); PORT_SetPinConfig(i2cBus->sclPort, i2cBus->sclPin, &pinConfig);
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 = i2cBus == &i2cMainBus ? I2cMainBusRequestedBaudRateBps : I2C_EEPROM_BUS_BAUD_RATE;
uint32_t sourceClock = CLOCK_GetFreq(I2C_MASTER_BUS_CLK_SRC); uint32_t sourceClock = CLOCK_GetFreq(i2cBus->clockSrc);
I2C_MasterInit(I2C_MAIN_BUS_BASEADDR, &masterConfig, sourceClock);} I2C_MasterInit(i2cBus->baseAddr, &masterConfig, sourceClock);
void initI2cEepromBus(void) if (i2cBus == &i2cMainBus) {
{ I2cMainBusActualBaudRateBps = I2C_ActualBaudRate;
port_pin_config_t pinConfig = { }
.pullSelect = kPORT_PullUp,
.openDrainEnable = kPORT_OpenDrainEnable,
.mux = I2C_EEPROM_BUS_MUX,
};
CLOCK_EnableClock(I2C_EEPROM_BUS_SDA_CLOCK);
CLOCK_EnableClock(I2C_EEPROM_BUS_SCL_CLOCK);
PORT_SetPinConfig(I2C_EEPROM_BUS_SDA_PORT, I2C_EEPROM_BUS_SDA_PIN, &pinConfig);
PORT_SetPinConfig(I2C_EEPROM_BUS_SCL_PORT, I2C_EEPROM_BUS_SCL_PIN, &pinConfig);
i2c_master_config_t masterConfig;
I2C_MasterGetDefaultConfig(&masterConfig);
masterConfig.baudRate_Bps = I2C_EEPROM_BUS_BAUD_RATE;
uint32_t sourceClock = CLOCK_GetFreq(I2C_EEPROM_BUS_CLK_SRC);
I2C_MasterInit(I2C_EEPROM_BUS_BASEADDR, &masterConfig, sourceClock);
} }
void InitI2c(void) void ReinitI2cMainBus(void)
{ {
InitI2cMainBus(); I2C_MasterDeinit(I2C_MAIN_BUS_BASEADDR);
initI2cEepromBus(); initI2cBus(&i2cMainBus);
InitSlaveScheduler();
}
static void initI2c(void)
{
initI2cBus(&i2cMainBus);
initI2cBus(&i2cEepromBus);
} }
void InitPeripherals(void) void InitPeripherals(void)
{ {
InitInterruptPriorities(); initBusPalState();
initInterruptPriorities();
Timer_Init();
InitLedDriver(); InitLedDriver();
InitResetButton(); InitResetButton();
InitMergeSensor(); InitMergeSensor();
ADC_Init(); ADC_Init();
InitI2c(); initI2c();
InitTestLed(); TestLed_Init();
LedPwm_Init(); LedPwm_Init();
#ifdef I2C_WATCHDOG
InitI2cWatchdog(); InitI2cWatchdog();
#endif
EEPROM_Init(); EEPROM_Init();
//microseconds_init();
} }
+26 -2
View File
@@ -1,13 +1,37 @@
#ifndef __INIT_PERIPHERALS_H__ #ifndef __INIT_PERIPHERALS_H__
#define __INIT_PERIPHERALS_H__ #define __INIT_PERIPHERALS_H__
// Includes // Includes:
#include "fsl_common.h" #include "fsl_common.h"
// Typedefs:
typedef struct {
clock_name_t clockSrc;
I2C_Type *baseAddr;
uint16_t mux;
clock_ip_name_t sdaClock;
GPIO_Type *sdaGpio;
PORT_Type *sdaPort;
uint32_t sdaPin;
clock_ip_name_t sclClock;
GPIO_Type *sclGpio;
PORT_Type *sclPort;
uint32_t sclPin;
} i2c_bus_t;
// Variables:
extern bool IsBusPalOn;
extern volatile uint32_t I2cMainBusRequestedBaudRateBps;
extern volatile uint32_t I2cMainBusActualBaudRateBps;
// Functions: // Functions:
void InitPeripherals(void); void InitPeripherals(void);
void InitI2cMainBus(void); void ReinitI2cMainBus(void);
#endif #endif
+13 -37
View File
@@ -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:
@@ -27,7 +19,6 @@
KeyActionType_SwitchLayer, KeyActionType_SwitchLayer,
KeyActionType_SwitchKeymap, KeyActionType_SwitchKeymap,
KeyActionType_PlayMacro, KeyActionType_PlayMacro,
KeyActionType_Test,
} key_action_type_t; } key_action_type_t;
typedef enum { typedef enum {
@@ -36,48 +27,33 @@
KeystrokeType_System, KeystrokeType_System,
} keystroke_type_t; } keystroke_type_t;
typedef enum {
SwitchLayerMode_HoldAndDoubleTapToggle,
SwitchLayerMode_Toggle,
SwitchLayerMode_Hold,
} 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 {
+3
View File
@@ -0,0 +1,3 @@
#include "key_states.h"
key_state_t KeyStates[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];
+24
View File
@@ -0,0 +1,24 @@
#ifndef __KEY_STATES_H__
#define __KEY_STATES_H__
// Includes:
#include "fsl_common.h"
#include "slot.h"
#include "module.h"
// Typedefs:
typedef struct {
uint8_t timestamp;
bool previous : 1;
bool current : 1;
bool suppressed : 1;
bool debouncing : 1;
} key_state_t;
// Variables:
extern key_state_t KeyStates[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];
#endif
+152 -38
View File
@@ -1,26 +1,44 @@
#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] = {
{
.abbreviation = "FTY",
.offset = 0,
.abbreviationLen = 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 SwitchKeymapById(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_UpdateText();
} }
bool SwitchKeymapByAbbreviation(uint8_t length, char *abbrev)
{
for (uint8_t i=0; i<AllKeymapsCount; i++) {
keymap_reference_t *keymap = AllKeymaps + i;
if (keymap->abbreviationLen == length && memcmp(keymap->abbreviation, abbrev, length) == 0) {
SwitchKeymapById(i);
return true;
}
}
return false;
}
// 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 +83,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 +111,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 +129,108 @@ 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 },
},
// Left module
{
// Row 1
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_GRAVE_ACCENT_AND_TILDE }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_1_AND_EXCLAMATION }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_2_AND_AT }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_3_AND_HASHMARK }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_4_AND_DOLLAR }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_5_AND_PERCENTAGE }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_6_AND_CARET }},
// Row 2
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_TAB }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_Q }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_W }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_E }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_R }},
{ .type = KeyActionType_None },
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_T }},
// Row 3
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mouse }},
{ .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_D }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_F }},
{ .type = KeyActionType_None },
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_G }},
// Row 4
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_SHIFT }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_NON_US_BACKSLASH_AND_PIPE }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_Z }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_X }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_C }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_V }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_B }},
// Row 5
{ .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_SwitchLayer, .switchLayer = { .layer = LayerId_Fn }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_SPACE }},
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mod }},
{ .type = KeyActionType_None },
},
// Right module
{
// Row 1
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_GRAVE_ACCENT_AND_TILDE }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_1_AND_EXCLAMATION }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_2_AND_AT }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_3_AND_HASHMARK }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_4_AND_DOLLAR }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_5_AND_PERCENTAGE }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_6_AND_CARET }},
// Row 2
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_TAB }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_Q }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_W }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_E }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_R }},
{ .type = KeyActionType_None },
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_T }},
// Row 3
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mouse }},
{ .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_D }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_F }},
{ .type = KeyActionType_None },
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_G }},
// Row 4
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_SHIFT }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_NON_US_BACKSLASH_AND_PIPE }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_Z }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_X }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_C }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_V }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_B }},
// Row 5
{ .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_SwitchLayer, .switchLayer = { .layer = LayerId_Fn }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_SPACE }},
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mod }},
{ .type = KeyActionType_None }, { .type = KeyActionType_None },
} }
}, },
@@ -158,17 +272,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 = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_APPLICATION }},
{ .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 +324,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 +378,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 +423,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 +447,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 +479,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 +504,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 +522,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 },
} }
}, },

Some files were not shown because too many files have changed in this diff Show More