252 Commits
2.0.0 ... 8.0.0

Author SHA1 Message Date
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
László Monda
4563d26a5c Update changelog and package.json 2017-10-13 22:58:26 +02:00
László Monda
0b120a3286 Fix generic HID descriptor enumeration error by making UsbGenericHidReportDescriptor extern. 2017-10-13 22:49:09 +02:00
László Monda
d4200524d7 Make the firmware depend of the wormhole.[ch] files of the bootloader. Remove local wormhole.[ch] files. 2017-10-13 22:09:52 +02:00
László Monda
ef34094004 Add jump to slave bootloader command. 2017-10-12 19:57:41 +02:00
László Monda
d2fd7bc613 Add conditions that external components must satisfy in regards to version numbers in order to be interface with the UHK. 2017-10-11 15:32:57 +02:00
174 changed files with 3485 additions and 2727 deletions

8
.gitignore vendored
View File

@@ -1,6 +1,2 @@
CMakeCache.txt
CMakeFiles
Makefile
cmake_install.cmake
debug
release
package-lock.json
node_modules

View File

@@ -1,18 +1,25 @@
language: generic
os: osx
cache:
directories:
- $HOME/Library/Caches/Homebrew/Cask
install:
- brew update && brew bundle -v
- /Applications/Eclipse\ CPP.app/Contents/MacOS/eclipse -noSplash
-application org.eclipse.equinox.p2.director
-repository http://gnuarmeclipse.sourceforge.net/updates
-installIUs ilg.gnuarmeclipse.managedbuild.cross.feature.group
-profileProperties org.eclipse.update.install.features=true
script:
- /Applications/Eclipse\ CPP.app/Contents/MacOS/eclipse -noSplash
-application org.eclipse.cdt.managedbuilder.core.headlessbuild
-import $TRAVIS_BUILD_DIR/left/build/kds
-import $TRAVIS_BUILD_DIR/right/build/kds
-build all
install: eclipse -noSplash
-application org.eclipse.equinox.p2.director
-repository http://gnuarmeclipse.sourceforge.net/updates
-installIUs ilg.gnuarmeclipse.managedbuild.cross.feature.group
-profileProperties org.eclipse.update.install.features=true
script: eclipse -noSplash
-application org.eclipse.cdt.managedbuilder.core.headlessbuild
-import $TRAVIS_BUILD_DIR/left/build
-import $TRAVIS_BUILD_DIR/right/build
-build all
matrix:
include:
- os: linux
sudo: required
before_install:
- curl https://nixos.org/nix/install | sh && . ~/.nix-profile/etc/profile.d/nix.sh
- nix-env -i gcc-arm-embedded-4.8-2014q1-20140314
- nix-env -i eclipse-cpp
- os: osx
env: PATH="$PATH:/Applications/Eclipse CPP.app/Contents/MacOS"
before_install: brew update && brew bundle -v

View File

@@ -5,22 +5,106 @@ 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/)
and this project adheres to the [UHK Versioning](VERSIONING.md) conventions.
## [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
Device Protocol: 1.**2.0** | Module Protocol: 2.**1.0** | User Config: 1.0.0 | Hardware Config: 1.0.0
- Add jumpToSlaveBootloader USB and Module Protocol command. `DEVICEPROTOCOL:MINOR` `MODULEPROTOCOL:MINOR`
- Fix generic HID descriptor enumeration error.
## [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.
- 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.
- 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 merge sensor state and attached module IDs to GetDebugInfo(). `USBPROTOCOL:PATCH`
- Throw ParserError_InvalidKeymapCount if keymapCount == 0. `DATAMODEL:PATCH`
- Add merge sensor state and attached module IDs to GetDebugInfo(). `DEVICEPROTOCOL:PATCH`
- Throw ParserError_InvalidKeymapCount if keymapCount == 0. `USERCONFIG:PATCH`
## [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

View File

@@ -14,6 +14,8 @@ The UHK USB protocol is used by the UHK to interact with the host system via USB
* The minor number is bumped upon an extension of the protocol, such as adding a new protocol command ID, or utilizing a previously unutilized byte within the payload.
* The patch number is bumped upon a protocol related implementation fix, for example adding a new validation check.
In order for a host application to communicate with the UHK, its major USB protocol version must match, and its minor USB protocol version must be less or equal.
## Slave protocol version
The Slave protocol is the I2C based application protocol of the UHK via which the master module (right keyboard half), and the slave modules (left keyboard half, left add-on, right add-on) communicate.
@@ -22,6 +24,8 @@ The Slave protocol is the I2C based application protocol of the UHK via which th
* The minor number is bumped upon an extension of the protocol, such as adding a new protocol command ID, or extending the payload.
* The patch number is bumped upon a protocol related implementation fix, for example adding a new validation check.
In order for the master module to communicate with the slave modules, its major slave protocol version must match, and its minor slave protocol version must be less or equal.
## Data model version
The data model is the binary serialization format of the user configuration which includes keymaps, macros, and every other configuration item.
@@ -30,6 +34,8 @@ The data model is the binary serialization format of the user configuration whic
* The minor number is bumped upon an extension of the data model, such as using a previously unutilized interval of a type number to add a new item type.
* The patch number is bumped upon a data model related implementation fix, for example adding a new validation check.
In order for a host application to parse the configuration of the UHK, its major data model version must match, and its minor data model version must be less or equal.
For the sake of completeness, it's worth mentioning that not only the (user) data model exists, but the hardware data model too which contains hardware-specific configuration items, such as ANSI vs ISO keyboard type. The hardware data model also has a version number field, but it's not expected to ever change so for the sake of simplicity, it's not included into changelog releases. The hardware configuration version is 1.0.0
## Firmware version

350
left/build/.cproject Normal file
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.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861" name="uhk60-left_debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug">
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861." name="/" resourcePath="">
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug.439601044" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.780228407" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1547417078" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.765602671" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.910567930" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.243581182" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.416266830" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1613409592" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.default" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.556186202" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.default" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.873832382" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" value="Custom" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.1923839154" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.architecture" value="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.arm" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.292907889" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m0plus" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.1510156849" name="Instruction set" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.thumb" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.1110645397" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" value="arm-none-eabi-" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.1996567256" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" value="gcc" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.2014665560" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" value="g++" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.867581768" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" value="objcopy" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.315789427" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" value="objdump" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.348642956" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.670689833" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.654501139" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.967248865" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.1390211406" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.useglobalpath.228343129" name="Use global path" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.useglobalpath" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.1173170148" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.default" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.1949324826" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.soft" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar.1370140886" name="Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar" value="ar" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nocommon.9959419695" name="No common unitialized (-fno-common)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nocommon" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding.2882966171" name="Assume freestanding environment (-ffreestanding)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin.9288453635" name="Disable builtin (-fno-builtin)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto.2986114257" name="Link-time optimizer (-flto)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.nowarn.7864424720" name="Inhibit all warnings (-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.nowarn" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn.6408004182" name="Enable extra warnings (-Wextra)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.conversion.8753144693" name="Warn on implicit conversions (-Wconversion)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.conversion" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pointerarith.7561379406" name="Warn if pointer arithmetic (-Wpointer-arith)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pointerarith" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.shadow.5875269774" name="Warn if shadowed variable (-Wshadow)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.shadow" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.logicalop.8232620757" name="Warn if suspicious logical ops (-Wlogical-op)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.logicalop" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.agreggatereturn.5398426966" name="Warn if struct is returned (-Wagreggate-return)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.agreggatereturn" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.floatequal.4503086702" name="Warn if floats are compared as equal (-Wfloat-equal)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.floatequal" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.4431038008" name="Generate errors instead of warnings (-Werror)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.unitialized.8290768044" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.unitialized" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.missingdeclaration.378454944" name="Warn on undeclared global function (-Wmissing-declaration)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.missingdeclaration" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast.2943267007" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.9995899345" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1777290613" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
<builder buildPath="${workspace_loc:/k64f}/debug" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1406291427" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.2007968129" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1246588554" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.2122094274" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.1822362302" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" valueType="definedSymbols">
<listOptionValue builtIn="false" value="DEBUG"/>
<listOptionValue builtIn="false" value="__STARTUP_CLEAR_BSS"/>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.nostdinc.8788969731" name="Do not search system directories (-nostdinc)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.nostdinc" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.other.1923601167" name="Other assembler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.other" value=" -mapcs " valueType="string"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.2014783385" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1397207158" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.336878990" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/CMSIS/Include"/>
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices"/>
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers"/>
<listOptionValue builtIn="false" value=".."/>
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/utilities"/>
<listOptionValue builtIn="false" value="../../.."/>
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4"/>
<listOptionValue builtIn="false" value="../../../shared"/>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.933718024" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.gnu99" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.7934865376" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="DEBUG"/>
<listOptionValue builtIn="false" value="CPU_MKL03Z32VFK4"/>
<listOptionValue builtIn="false" value="PRINTF_FLOAT_ENABLE=0"/>
<listOptionValue builtIn="false" value="SCANF_FLOAT_ENABLE=0"/>
<listOptionValue builtIn="false" value="PRINTF_ADVANCED_ENABLE=0"/>
<listOptionValue builtIn="false" value="SCANF_ADVANCED_ENABLE=0"/>
<listOptionValue builtIn="false" value="FRDM_KL03Z"/>
<listOptionValue builtIn="false" value="FREEDOM"/>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.nostdinc.1704317783" name="Do not search system directories (-nostdinc)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.nostdinc" useByScannerDiscovery="true" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other.1560348183" name="Other compiler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other" useByScannerDiscovery="true" value=" -mapcs " valueType="string"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1895544709" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.435207489" name="Cross ARM C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.2050754817" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="UHK_PCB_MAJOR_VERSION=7"/>
</option>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1699166727" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1681324840" name="Cross ARM C Linker" outputPrefix="" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.1850945755" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano.1816597929" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile.1573832003" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.libs.2061142742" name="Libraries (-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.libs"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input.1168552163" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool commandLinePattern="${COMMAND} ${cross_toolchain_flags} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} -Xlinker --start-group ${INPUTS} -Xlinker --end-group" id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1475612095" name="Cross ARM C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.42905068" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano.1816597929" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs.6905766738" name="Other objects" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.4021849263" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" valueType="stringList">
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/gcc/MKL03Z32xxx4_flash.ld"/>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart.6846138787" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs.8043932112" name="Do not use default libraries (-nodefaultlibs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs.2257416827" name="Libraries (-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs" valueType="libs">
<listOptionValue builtIn="false" value="m"/>
<listOptionValue builtIn="false" value="g"/>
<listOptionValue builtIn="false" value="gcc"/>
<listOptionValue builtIn="false" value="nosys"/>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref.6563555683" name="Cross reference (-Xlinker --cref)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections.8052175158" name="Print removed sections (-Xlinker --print-gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip.4023108413" name="Omit all symbol information (-s)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other.255052480" name="Other linker flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other" value="-mapcs -Xlinker -static -Xlinker -z -Xlinker muldefs -Xlinker -defsym=__heap_size__=0" valueType="string"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.658447495" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.717958418" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
<tool command="${cross_prefix}${cross_objcopy}${cross_suffix}" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT}" id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1498748442" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.396105459" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.1921141825" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.1147761851" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.326654770" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.2012585764" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.1639985926" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.795915960" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.204256629" name="Cross ARM GNU Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.48990078" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format"/>
</tool>
</toolChain>
</folderInfo>
<fileInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861.1146590441" name="fsl_clock.h" rcbsApplicability="disable" resourcePath="drivers/fsl_clock.h" toolsToInvoke=""/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule moduleId="ilg.gnuarmeclipse.managedbuild.packs"/>
</cconfiguration>
<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078" moduleId="org.eclipse.cdt.core.settings" name="uhk60-left_release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078" name="uhk60-left_release" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078." name="/" resourcePath="">
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.1802192936" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.918206081" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.size" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1247972134" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1651670889" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.1807399992" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1522408084" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.881879429" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.417088354" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.none" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.471396471" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.default" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.378484607" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" value="Custom" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.1093394082" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.architecture" value="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.arm" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.1818095636" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m0plus" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.336711378" name="Instruction set" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.thumb" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.1351526286" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" value="arm-none-eabi-" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.1438555896" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" value="gcc" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.1588534593" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" value="g++" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1663641144" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" value="objcopy" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.200920623" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" value="objdump" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.362080964" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.2009924231" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.1536468905" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.925865305" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.1208668505" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.useglobalpath.1166058417" name="Use global path" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.useglobalpath" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar.1139561820" name="Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar" value="ar" valueType="string"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.671070963" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.soft" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nocommon.1275482104" name="No common unitialized (-fno-common)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nocommon" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding.407638415" name="Assume freestanding environment (-ffreestanding)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin.1259530104" name="Disable builtin (-fno-builtin)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto.809059548" name="Link-time optimizer (-flto)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.nowarn.1208094284" name="Inhibit all warnings (-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.nowarn" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn.67984531" name="Enable extra warnings (-Wextra)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.conversion.593444999" name="Warn on implicit conversions (-Wconversion)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.conversion" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pointerarith.813635782" name="Warn if pointer arithmetic (-Wpointer-arith)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pointerarith" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.shadow.1455227593" name="Warn if shadowed variable (-Wshadow)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.shadow" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.logicalop.1717005013" name="Warn if suspicious logical ops (-Wlogical-op)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.logicalop" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.agreggatereturn.383697767" name="Warn if struct is returned (-Wagreggate-return)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.agreggatereturn" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.floatequal.628316174" name="Warn if floats are compared as equal (-Wfloat-equal)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.floatequal" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.1624700406" name="Generate errors instead of warnings (-Werror)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.unitialized.3064955983.625210850" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.unitialized" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.missingdeclaration.907753672" name="Warn on undeclared global function (-Wmissing-declaration)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.missingdeclaration" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast.6545741443.1540890614" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.1382191896" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.2107171855" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
<builder buildPath="${workspace_loc:/k64f}/release" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1689719605" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1477971290" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.334227408" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1702866230" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.1072633432" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__STARTUP_CLEAR_BSS"/>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.nostdinc.415052570" name="Do not search system directories (-nostdinc)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.nostdinc" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.other.1359123195" name="Other assembler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.other" value=" -mapcs " valueType="string"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1499693341" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1046326518" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.746372967" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/CMSIS/Include"/>
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices"/>
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers"/>
<listOptionValue builtIn="false" value=".."/>
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/utilities"/>
<listOptionValue builtIn="false" value="../../.."/>
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4"/>
<listOptionValue builtIn="false" value="../../../shared"/>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.1703504273" name="Language standard" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.std.gnu99" valueType="enumerated"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.220715196" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="NDEBUG"/>
<listOptionValue builtIn="false" value="CPU_MKL03Z32VFK4"/>
<listOptionValue builtIn="false" value="PRINTF_FLOAT_ENABLE=0"/>
<listOptionValue builtIn="false" value="SCANF_FLOAT_ENABLE=0"/>
<listOptionValue builtIn="false" value="PRINTF_ADVANCED_ENABLE=0"/>
<listOptionValue builtIn="false" value="SCANF_ADVANCED_ENABLE=0"/>
<listOptionValue builtIn="false" value="FRDM_KL03Z"/>
<listOptionValue builtIn="false" value="FREEDOMx"/>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.nostdinc.1784976960" name="Do not search system directories (-nostdinc)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.nostdinc" useByScannerDiscovery="true" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other.182809566" name="Other compiler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other" useByScannerDiscovery="true" value=" -mapcs " valueType="string"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.2141870622" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1055651769" name="Cross ARM C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.1344565144" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="UHK_PCB_MAJOR_VERSION=7"/>
</option>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1785701410" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1248876094" name="Cross ARM C Linker" outputPrefix="" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.205211813" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano.764117584" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano" value="true" valueType="boolean"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input.424272008" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool commandLinePattern="${COMMAND} ${cross_toolchain_flags} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} -Xlinker --start-group ${INPUTS} -Xlinker --end-group" id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.20615499" name="Cross ARM C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.1664132146" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano.1704968656" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs.359701763" name="Other objects" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.otherobjs"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.51816293" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" valueType="stringList">
<listOptionValue builtIn="false" value="../../../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/gcc/MKL03Z32xxx4_flash.ld"/>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart.554768103" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs.1987989417" name="Do not use default libraries (-nodefaultlibs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs.1653206096" name="Libraries (-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs" valueType="libs">
<listOptionValue builtIn="false" value="m"/>
<listOptionValue builtIn="false" value="g"/>
<listOptionValue builtIn="false" value="gcc"/>
<listOptionValue builtIn="false" value="nosys"/>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref.1514842438" name="Cross reference (-Xlinker --cref)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections.1127263805" name="Print removed sections (-Xlinker --print-gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip.549891305" name="Omit all symbol information (-s)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip" value="false" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other.1551896832" name="Other linker flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.other" value="-mapcs -Xlinker -static -Xlinker -z -Xlinker muldefs" valueType="string"/>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.772761405" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.1579053840" name="Cross ARM GNU Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1400319152" name="Cross ARM GNU Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1328839591" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"/>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.733953661" name="Cross ARM GNU Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.1802395103" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.1353511477" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.562396163" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.1889527374" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.2076712477" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.843351449" name="Cross ARM GNU Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.1881713953" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule moduleId="ilg.gnuarmeclipse.managedbuild.packs"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="k64f.ilg.gnuarmeclipse.managedbuild.cross.target.elf.1537007018" name="Executable" projectType="ilg.gnuarmeclipse.managedbuild.cross.target.elf"/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders">
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861;ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.435207489;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1699166727">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834;ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.955273220;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1711058916">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834;ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.270191615;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1469754472">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861;ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1397207158;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1895544709">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="uhk60-left_release">
<resource resourceType="PROJECT" workspacePath="/uhk-left"/>
</configuration>
<configuration configurationName="uhk60-left_debug">
<resource resourceType="PROJECT" workspacePath="/uhk-left"/>
</configuration>
</storageModule>
</cproject>

3
left/build/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
/.settings/
/uhk60-left_debug/
/uhk60-left_release/

View File

@@ -39,12 +39,12 @@
<link>
<name>shared</name>
<type>2</type>
<locationURI>PARENT-3-PROJECT_LOC/shared</locationURI>
<locationURI>PARENT-2-PROJECT_LOC/shared</locationURI>
</link>
<link>
<name>src</name>
<type>2</type>
<locationURI>PARENT-2-PROJECT_LOC/src</locationURI>
<locationURI>PARENT-1-PROJECT_LOC/src</locationURI>
</link>
<link>
<name>startup</name>
@@ -54,92 +54,92 @@
<link>
<name>drivers/fsl_clock.c</name>
<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>
<name>drivers/fsl_clock.h</name>
<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>
<name>drivers/fsl_gpio.c</name>
<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>
<name>drivers/fsl_gpio.h</name>
<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>
<name>drivers/fsl_i2c.c</name>
<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>
<name>drivers/fsl_i2c.h</name>
<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>
<name>drivers/fsl_lptmr.c</name>
<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>
<name>drivers/fsl_lptmr.h</name>
<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>
<name>drivers/fsl_port.h</name>
<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>
<name>drivers/fsl_smc.c</name>
<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>
<name>drivers/fsl_smc.h</name>
<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>
<name>drivers/fsl_spi.c</name>
<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>
<name>drivers/fsl_spi.h</name>
<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>
<name>drivers/fsl_tpm.c</name>
<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>
<name>drivers/fsl_tpm.h</name>
<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>
<name>startup/startup_MKL03Z4.S</name>
<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>
<name>startup/system_MKL03Z4.c</name>
<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>
<name>startup/system_MKL03Z4.h</name>
<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>
</linkedResources>
</projectDescription>

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)

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

View File

@@ -1,3 +0,0 @@
#!/bin/sh
./build_debug.sh
./build_release.sh

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

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

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

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

View File

@@ -1,3 +0,0 @@
RD /s /Q Debug Release CMakeFiles
DEL /s /Q /F Makefile cmake_install.cmake CMakeCache.txt
pause

View File

@@ -1,3 +0,0 @@
#!/bin/sh
rm -rf debug release CMakeFiles
rm -rf Makefile cmake_install.cmake CMakeCache.txt

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

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/

View File

@@ -67,7 +67,7 @@
<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_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"/>
<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"/>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.cdt.launch.applicationLaunchType">
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB" value="true"/>
<listAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB_LIST"/>
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="gdb"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_ON_FORK" value="false"/>
<stringAttribute key="org.eclipse.cdt.dsf.gdb.GDB_INIT" value=".gdbinit"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.REVERSE" value="false"/>
<listAttribute key="org.eclipse.cdt.dsf.gdb.SOLIB_PATH"/>
<stringAttribute key="org.eclipse.cdt.dsf.gdb.TRACEPOINT_MODE" value="TP_NORMAL_ONLY"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="gdb"/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="leftHalf uhk60-left_debug/uhk-left.bin"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="../../lib/agent/packages/usb/update-module-firmware.js"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-left"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861"/>
<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/uhk-left"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
</launchConfiguration>

View File

@@ -67,10 +67,10 @@
<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_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"/>
<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">
<listEntry value="/uhk-left"/>
</listAttribute>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.cdt.launch.applicationLaunchType">
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB" value="true"/>
<listAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB_LIST"/>
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="gdb"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_ON_FORK" value="false"/>
<stringAttribute key="org.eclipse.cdt.dsf.gdb.GDB_INIT" value=".gdbinit"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.REVERSE" value="false"/>
<listAttribute key="org.eclipse.cdt.dsf.gdb.SOLIB_PATH"/>
<stringAttribute key="org.eclipse.cdt.dsf.gdb.TRACEPOINT_MODE" value="TP_NORMAL_ONLY"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="gdb"/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="leftHalf uhk60-left_release/uhk-left.bin"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="../../lib/agent/packages/usb/update-module-firmware.js"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-left"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078"/>
<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/uhk-left"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.DefaultEvent" value="true"/>
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.HideUnresolvedSymbols" value="true"/>
<stringAttribute key="org.eclipse.linuxtools.internal.perf.attr.Kernel.Location" value=""/>
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Kernel.SourceLineNumbers" value="false"/>
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ModuleSymbols" value="false"/>
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.MultipleEvents" value="false"/>
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Multiplex" value="false"/>
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Realtime" value="false"/>
<intAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Realtime.Priority" value="1"/>
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Verbose" value="false"/>
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ShowSourceDisassembly" value="false"/>
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ShowStat" value="false"/>
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.SourceLineNumbers" value="true"/>
<intAttribute key="org.eclipse.linuxtools.internal.perf.attr.StatRunCount" value="1"/>
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
</launchConfiguration>

View File

@@ -1,8 +1,9 @@
#ifdef DEBUG_OVER_SPI
#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)
@@ -16,19 +17,13 @@ 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);
@@ -45,12 +40,10 @@ void DebugOverSpi_Init(void)
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));
@@ -58,5 +51,6 @@ void DebugOverSpi_Send(uint8_t *tx, uint8_t len)
xfer.dataSize = len;
SPI_MasterTransferNonBlocking(EXAMPLE_SPI_MASTER, &handle, &xfer);
}
#endif
}
#endif

View File

@@ -1,3 +1,5 @@
#ifdef DEBUG_OVER_SPI
#ifndef __DEBUG_OVER_SPI_H__
#define __DEBUG_OVER_SPI_H__
@@ -25,3 +27,8 @@
void DebugOverSpi_Send(uint8_t *tx, uint8_t len);
#endif
#else
#define DebugOverSpi_Init()
#define DebugOverSpi_Send(tx, len)
#endif

View File

@@ -4,9 +4,9 @@
#include "test_led.h"
#include "init_peripherals.h"
static uint32_t prevWatchdogCounter = 0;
uint32_t I2cWatchdog_InnerCounter;
volatile uint32_t I2cWatchdog_OuterCounter;
//static uint32_t prevWatchdogCounter = 0;
uint32_t I2cWatchdog_RecoveryCounter;
volatile uint32_t I2cWatchdog_WatchCounter;
void InitI2cWatchdog(void)
{
@@ -18,15 +18,15 @@ void InitI2cWatchdog(void)
EnableIRQ(LPTMR0_IRQn);
LPTMR_StartTimer(LPTMR0);
}
/*
void I2C_WATCHDOG_LPTMR_HANDLER(void)
{
TEST_LED_TOGGLE();
I2cWatchdog_OuterCounter++;
I2cWatchdog_WatchCounter++;
if (I2C_Watchdog == prevWatchdogCounter) { // Restart I2C if there hasn't been any interrupt during 100 ms
// NVIC_SystemReset();
I2cWatchdog_InnerCounter++;
I2cWatchdog_RecoveryCounter++;
I2C_SlaveDeinit(I2C_BUS_BASEADDR);
InitI2c();
}
@@ -35,3 +35,4 @@ void I2C_WATCHDOG_LPTMR_HANDLER(void)
LPTMR_ClearStatusFlags(LPTMR0, kLPTMR_TimerCompareFlag);
}
*/

21
left/src/key_scanner.c Normal file
View File

@@ -0,0 +1,21 @@
#include "fsl_lptmr.h"
#include "key_scanner.h"
#include "main.h"
void KEY_SCANNER_HANDLER(void)
{
KeyMatrix_ScanRow(&keyMatrix);
LPTMR_ClearStatusFlags(KEY_SCANNER_LPTMR_BASEADDR, kLPTMR_TimerCompareFlag);
}
void InitKeyScanner(void)
{
lptmr_config_t lptmrConfig;
LPTMR_GetDefaultConfig(&lptmrConfig);
LPTMR_Init(KEY_SCANNER_LPTMR_BASEADDR, &lptmrConfig);
LPTMR_SetTimerPeriod(KEY_SCANNER_LPTMR_BASEADDR, USEC_TO_COUNT(KEY_SCANNER_INTERVAL_USEC, LPTMR_SOURCE_CLOCK));
LPTMR_EnableInterrupts(KEY_SCANNER_LPTMR_BASEADDR, kLPTMR_TimerInterruptEnable);
EnableIRQ(KEY_SCANNER_LPTMR_IRQ_ID);
LPTMR_StartTimer(KEY_SCANNER_LPTMR_BASEADDR);
}

22
left/src/key_scanner.h Normal file
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

View File

@@ -1,7 +1,8 @@
#include "led_pwm.h"
#include "fsl_port.h"
void LedPwm_Init(void) {
void LedPwm_Init(void)
{
CLOCK_EnableClock(LED_PWM_CLOCK);
PORT_SetPinMux(LED_PWM_PORT, LED_PWM_PIN, kPORT_MuxAlt2);

View File

@@ -4,6 +4,7 @@
#include "bootloader.h"
#include <stdio.h>
#include "config.h"
#include "key_scanner.h"
DEFINE_BOOTLOADER_CONFIG_AREA(I2C_ADDRESS_LEFT_KEYBOARD_HALF_BOOTLOADER)
@@ -36,19 +37,14 @@ key_matrix_t keyMatrix = {
}
};
#define ALWAYS_ENTER_BOOTLOADER (0)
/*! set to 1 for easier bootloader debugging. With this, the KL03 always enters bootloader mode after reset */
int main(void)
{
InitClock();
InitPeripherals();
KeyMatrix_Init(&keyMatrix);
#if ALWAYS_ENTER_BOOTLOADER
JumpToBootloader(); /* << EST: \todo Temporary only */
#endif
InitKeyScanner();
while (1) {
KeyMatrix_Scan(&keyMatrix);
__WFI();
}
}

View File

@@ -6,6 +6,6 @@
#define MODULE_PROTOCOL_VERSION 1
#define MODULE_ID ModuleId_LeftKeyboardHalf
#define MODULE_KEY_COUNT (KEYBOARD_MATRIX_ROWS_NUM * KEYBOARD_MATRIX_COLS_NUM)
#define MODULE_HAS_POINTER false
#define MODULE_POINTER_COUNT 0
#endif

View File

@@ -10,28 +10,22 @@
#include "bool_array_converter.h"
#include "bootloader.h"
#include "module.h"
#include "versions.h"
i2c_message_t RxMessage;
i2c_message_t TxMessage;
void SetError(uint8_t error);
void SetGenericError(void);
void SetResponseByte(uint8_t response);
static version_t moduleProtocolVersion = {
MODULE_PROTOCOL_MAJOR_VERSION,
MODULE_PROTOCOL_MINOR_VERSION,
MODULE_PROTOCOL_PATCH_VERSION,
};
void SetError(uint8_t error) {
TxMessage.data[0] = error;
}
void SetGenericError(void)
{
SetError(PROTOCOL_RESPONSE_GENERIC_ERROR);
}
// Set a single byte as the response.
void SetResponseByte(uint8_t response)
{
TxMessage.data[1] = response;
}
static version_t firmwareVersion = {
FIRMWARE_MAJOR_VERSION,
FIRMWARE_MINOR_VERSION,
FIRMWARE_PATCH_VERSION,
};
void SlaveRxHandler(void)
{
@@ -43,7 +37,7 @@ void SlaveRxHandler(void)
uint8_t commandId = RxMessage.data[0];
switch (commandId) {
case SlaveCommand_JumpToBootloader:
JumpToBootloader();
NVIC_SystemReset();
break;
case SlaveCommand_SetTestLed:
TxMessage.length = 0;
@@ -70,21 +64,29 @@ void SlaveTxHandler(void)
TxMessage.length = SLAVE_SYNC_STRING_LENGTH;
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: {
TxMessage.data[0] = MODULE_ID;
TxMessage.length = 1;
break;
}
case SlaveProperty_ProtocolVersion: {
TxMessage.data[0] = MODULE_PROTOCOL_VERSION;
case SlaveProperty_KeyCount: {
TxMessage.data[0] = MODULE_KEY_COUNT;
TxMessage.length = 1;
break;
}
case SlaveProperty_Features: {
uhk_module_features_t *moduleFeatures = (uhk_module_features_t*)&TxMessage.data;
moduleFeatures->keyCount = MODULE_KEY_COUNT;
moduleFeatures->hasPointer = MODULE_HAS_POINTER;
TxMessage.length = sizeof(uhk_module_features_t);
case SlaveProperty_PointerCount: {
TxMessage.data[0] = MODULE_POINTER_COUNT;
TxMessage.length = 1;
break;
}
}

View File

@@ -7,11 +7,6 @@
#include "crc16.h"
#include "slave_protocol.h"
// Macros:
#define PROTOCOL_RESPONSE_SUCCESS 0
#define PROTOCOL_RESPONSE_GENERIC_ERROR 1
// Variables:
extern i2c_message_t RxMessage;

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.0.0",
"dataModelVersion": "1.0.0",
"usbProtocolVersion": "1.1.0",
"slaveProtocolVersion": "2.0.0"
}

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 .

View File

@@ -2,7 +2,7 @@
<?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.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/>
<extensions>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
@@ -14,7 +14,7 @@
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331" name="uhk-right-release-srec" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331" name="uhk60-right_release" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331." name="/" resourcePath="">
<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"/>
@@ -70,18 +70,19 @@
</tool>
<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">
<listOptionValue builtIn="false" value="../../../src"/>
<listOptionValue builtIn="false" value="../../../src/ksdk_usb"/>
<listOptionValue builtIn="false" value="../../../src/buspal"/>
<listOptionValue builtIn="false" value="../../../src/buspal/bm_usb"/>
<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/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/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"/>
<listOptionValue builtIn="false" value="../../../../shared"/>
<listOptionValue builtIn="false" value="../../src"/>
<listOptionValue builtIn="false" value="../../src/ksdk_usb"/>
<listOptionValue builtIn="false" value="../../src/buspal"/>
<listOptionValue builtIn="false" value="../../src/buspal/bm_usb"/>
<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/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/device"/>
<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"/>
<listOptionValue builtIn="false" value="../../../shared"/>
</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.defs.336821673" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
@@ -121,7 +122,7 @@
</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.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 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"/>
@@ -135,13 +136,16 @@
</tool>
</toolChain>
</folderInfo>
<fileInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.621318926" name="wormhole.c" rcbsApplicability="disable" resourcePath="bootloader-shared/wormhole.c" toolsToInvoke="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.813655335.948885614">
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.813655335.948885614" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.813655335"/>
</fileInfo>
</configuration>
</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.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/>
<extensions>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
@@ -153,7 +157,7 @@
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062" name="uhk-right-debug-srec" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062" name="uhk60-right_debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062." name="/" resourcePath="">
<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"/>
@@ -210,18 +214,19 @@
</tool>
<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">
<listOptionValue builtIn="false" value="../../../src"/>
<listOptionValue builtIn="false" value="../../../src/ksdk_usb"/>
<listOptionValue builtIn="false" value="../../../src/buspal"/>
<listOptionValue builtIn="false" value="../../../src/buspal/bm_usb"/>
<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/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/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"/>
<listOptionValue builtIn="false" value="../../../../shared"/>
<listOptionValue builtIn="false" value="../../src"/>
<listOptionValue builtIn="false" value="../../src/ksdk_usb"/>
<listOptionValue builtIn="false" value="../../src/buspal"/>
<listOptionValue builtIn="false" value="../../src/buspal/bm_usb"/>
<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/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/device"/>
<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"/>
<listOptionValue builtIn="false" value="../../../shared"/>
</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.defs.1312429299" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
@@ -263,7 +268,7 @@
</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.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 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"/>
@@ -283,7 +288,7 @@
<storageModule moduleId="ilg.gnuarmeclipse.managedbuild.packs"/>
</cconfiguration>
<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/>
<extensions>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
@@ -295,7 +300,7 @@
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="Debug version of uhk-right without the bootloader" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142" name="uhk-right-debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="Debug version of uhk60-right without the bootloader" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142" name="uhk60-right_debug_standalone" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142." name="/" resourcePath="">
<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"/>
@@ -352,18 +357,19 @@
</tool>
<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">
<listOptionValue builtIn="false" value="../../../src"/>
<listOptionValue builtIn="false" value="../../../src/ksdk_usb"/>
<listOptionValue builtIn="false" value="../../../src/buspal"/>
<listOptionValue builtIn="false" value="../../../src/buspal/bm_usb"/>
<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/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/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"/>
<listOptionValue builtIn="false" value="../../../../shared"/>
<listOptionValue builtIn="false" value="../../src"/>
<listOptionValue builtIn="false" value="../../src/ksdk_usb"/>
<listOptionValue builtIn="false" value="../../src/buspal"/>
<listOptionValue builtIn="false" value="../../src/buspal/bm_usb"/>
<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/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/device"/>
<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"/>
<listOptionValue builtIn="false" value="../../../shared"/>
</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.defs.1448177506" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="false" valueType="definedSymbols">
@@ -429,39 +435,6 @@
<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 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="release">
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
</configuration>
<configuration configurationName="v6-release"/>
<configuration configurationName="v7-debug"/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
<storageModule moduleId="scannerConfiguration">
@@ -476,4 +449,15 @@
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="uhk60-right_debug_standalone">
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
</configuration>
<configuration configurationName="uhk60-right_release">
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
</configuration>
<configuration configurationName="uhk60-right_debug">
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
</configuration>
</storageModule>
</cproject>

4
right/build/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
/.settings/
/uhk60-right_release/
/uhk60-right_debug/
/uhk60-right_debug_standalone/

View File

@@ -30,6 +30,11 @@
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
<linkedResources>
<link>
<name>bootloader-shared</name>
<type>2</type>
<locationURI>virtual:/virtual</locationURI>
</link>
<link>
<name>drivers</name>
<type>2</type>
@@ -43,12 +48,12 @@
<link>
<name>shared</name>
<type>2</type>
<locationURI>PARENT-3-PROJECT_LOC/shared</locationURI>
<locationURI>PARENT-2-PROJECT_LOC/shared</locationURI>
</link>
<link>
<name>src</name>
<type>2</type>
<locationURI>PARENT-2-PROJECT_LOC/src</locationURI>
<locationURI>PARENT-1-PROJECT_LOC/src</locationURI>
</link>
<link>
<name>startup</name>
@@ -60,125 +65,135 @@
<type>2</type>
<locationURI>virtual:/virtual</locationURI>
</link>
<link>
<name>bootloader-shared/wormhole.c</name>
<type>1</type>
<locationURI>PARENT-2-PROJECT_LOC/lib/bootloader/src/bootloader/src/wormhole.c</locationURI>
</link>
<link>
<name>bootloader-shared/wormhole.h</name>
<type>1</type>
<locationURI>PARENT-2-PROJECT_LOC/lib/bootloader/src/bootloader/wormhole.h</locationURI>
</link>
<link>
<name>drivers/fsl_adc16.c</name>
<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>
<name>drivers/fsl_adc16.h</name>
<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>
<name>drivers/fsl_clock.c</name>
<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>
<name>drivers/fsl_clock.h</name>
<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>
<name>drivers/fsl_ftm.c</name>
<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>
<name>drivers/fsl_ftm.h</name>
<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>
<name>drivers/fsl_gpio.c</name>
<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>
<name>drivers/fsl_gpio.h</name>
<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>
<name>drivers/fsl_i2c.c</name>
<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>
<name>drivers/fsl_i2c.h</name>
<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>
<name>drivers/fsl_pit.c</name>
<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>
<name>drivers/fsl_pit.h</name>
<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>
<name>drivers/fsl_sim.c</name>
<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>
<name>drivers/fsl_smc.c</name>
<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>
<name>osa/usb_osa.h</name>
<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>
<name>osa/usb_osa_bm.c</name>
<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>
<name>osa/usb_osa_bm.h</name>
<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>
<name>startup/startup_MK22F51212.S</name>
<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>
<name>startup/system_MK22F51212.c</name>
<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>
<name>startup/system_MK22F51212.h</name>
<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>
<name>usb/usb_device_dci.c</name>
<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>
<name>usb/usb_device_dci.h</name>
<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>
<name>usb/usb_device_khci.c</name>
<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>
<name>usb/usb_device_khci.h</name>
<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>
</linkedResources>
</projectDescription>

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)

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.

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

View File

@@ -1,3 +0,0 @@
#!/bin/sh
./build_debug.sh
./build_release.sh

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

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

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

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

View File

@@ -1,3 +0,0 @@
RD /s /Q Debug Release CMakeFiles
DEL /s /Q /F Makefile cmake_install.cmake CMakeCache.txt
pause

View File

@@ -1,3 +0,0 @@
#!/bin/sh
rm -rf debug release CMakeFiles
rm -rf Makefile cmake_install.cmake CMakeCache.txt

View File

@@ -1,2 +0,0 @@
#!/bin/sh
export KSDK_DIR=/../../../lib/KSDK_2.0_MK22FN512xxx12/

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/

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

View File

@@ -18,8 +18,8 @@
<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.PROGRAM_ARGUMENTS" value="uhk60-right_debug/uhk-right.hex"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="../../lib/agent/packages/usb/update-device-firmware.js"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-right"/>
<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"/>

View File

@@ -64,7 +64,7 @@
<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_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/uhk-right.elf"/>
<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.2081695142"/>

View File

@@ -18,8 +18,8 @@
<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.PROGRAM_ARGUMENTS" value="uhk60-right_release/uhk-right.hex"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="../../lib/agent/packages/usb/update-device-firmware.js"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-right"/>
<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"/>

View File

@@ -1,6 +0,0 @@
#ifndef __BOOTLOADER_CONFIG_H__
#define __BOOTLOADER_CONFIG_H__
//#define ENABLE_BUSPAL
#endif

View File

@@ -2,7 +2,6 @@
#include "usb_descriptor.h"
#include "usb_device_config.h"
#include "composite.h"
#include "bootloader_config.h"
#include "microseconds/microseconds.h"
#include "i2c.h"
#include "peripherals/test_led.h"

View File

@@ -3,9 +3,10 @@
#include "crc16.h"
#include "bus_pal_hardware.h"
#include "peripherals/test_led.h"
#if FIXED_BUSPAL_BOOTLOADER
#include "microseconds/microseconds.h"
#endif
#include "microseconds/microseconds.h"
#include "bootloader/wormhole.h"
#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;
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);
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);

View File

@@ -5,7 +5,5 @@
#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

View File

@@ -1,34 +1,37 @@
#include "basic_types.h"
uint8_t readUInt8(config_buffer_t *buffer) {
uint8_t ReadUInt8(config_buffer_t *buffer)
{
return buffer->buffer[buffer->offset++];
}
uint16_t readUInt16(config_buffer_t *buffer) {
uint16_t uInt16 = readUInt8(buffer);
uInt16 |= readUInt8(buffer) << 8;
uint16_t ReadUInt16(config_buffer_t *buffer)
{
uint16_t uInt16 = ReadUInt8(buffer);
uInt16 |= ReadUInt8(buffer) << 8;
return uInt16;
}
int16_t readInt16(config_buffer_t *buffer) {
return readUInt16(buffer);
int16_t ReadInt16(config_buffer_t *buffer)
{
return ReadUInt16(buffer);
}
bool readBool(config_buffer_t *buffer) {
return readUInt8(buffer);
bool ReadBool(config_buffer_t *buffer)
{
return ReadUInt8(buffer);
}
uint16_t readCompactLength(config_buffer_t *buffer) {
uint16_t compactLength = readUInt8(buffer);
return compactLength == 0xFF ? readUInt16(buffer) : compactLength;
uint16_t ReadCompactLength(config_buffer_t *buffer)
{
uint16_t compactLength = ReadUInt8(buffer);
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;
*len = readCompactLength(buffer);
*len = ReadCompactLength(buffer);
string = (const char *)(buffer->buffer + buffer->offset);
buffer->offset += *len;
return string;

View File

@@ -14,11 +14,11 @@
// Functions:
uint8_t readUInt8(config_buffer_t *buffer);
uint16_t readUInt16(config_buffer_t *buffer);
int16_t readInt16(config_buffer_t *buffer);
bool readBool(config_buffer_t *buffer);
uint16_t readCompactLength(config_buffer_t *buffer);
const char *readString(config_buffer_t *buffer, uint16_t *len);
uint8_t ReadUInt8(config_buffer_t *buffer);
uint16_t ReadUInt16(config_buffer_t *buffer);
int16_t ReadInt16(config_buffer_t *buffer);
bool ReadBool(config_buffer_t *buffer);
uint16_t ReadCompactLength(config_buffer_t *buffer);
const char *ReadString(config_buffer_t *buffer, uint16_t *len);
#endif

View File

@@ -12,6 +12,11 @@ config_buffer_t ValidatedUserConfigBuffer = { validatedUserConfig };
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)
{
switch (configBufferId) {
@@ -25,3 +30,16 @@ config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId)
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;
}
}

View File

@@ -23,6 +23,8 @@
// Functions:
bool IsConfigBufferIdValid(config_buffer_id_t configBufferId);
config_buffer_t* ConfigBufferIdToConfigBuffer(config_buffer_id_t configBufferId);
uint16_t ConfigBufferIdToBufferSize(config_buffer_id_t configBufferId);
#endif

View File

@@ -1,33 +1,97 @@
#include "parse_config.h"
#include "parse_keymap.h"
#include "parse_macro.h"
#include "keymaps.h"
#include "keymap.h"
#include "config_globals.h"
#include "macros.h"
#include "usb_report_updater.h"
#include "led_display.h"
#include "slave_scheduler.h"
#include "slave_drivers/is31fl3731_driver.h"
static parser_error_t parseModuleConfiguration(config_buffer_t *buffer)
{
uint8_t id = readUInt8(buffer);
uint8_t initialPointerSpeed = readUInt8(buffer);
uint8_t pointerAcceleration = readUInt8(buffer);
uint8_t maxPointerSpeed = readUInt8(buffer);
uint8_t id = ReadUInt8(buffer);
uint8_t pointerMode = ReadUInt8(buffer); // move vs scroll
uint8_t deceleratedPointerSpeedMultiplier = 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)initialPointerSpeed;
(void)pointerAcceleration;
(void)maxPointerSpeed;
(void)pointerMode;
(void)deceleratedPointerSpeedMultiplier;
(void)basePointerSpeedMultiplier;
(void)acceleratedPointerSpeed;
(void)angularShift;
(void)modLayerPointerFunction;
(void)fnLayerPointerFunction;
(void)mouseLayerPointerFunction;
return ParserError_Success;
}
parser_error_t ParseConfig(config_buffer_t *buffer)
{
uint16_t dataModelVersion = readUInt16(buffer);
parser_error_t errorCode;
uint16_t moduleConfigurationCount = readCompactLength(buffer);
// Miscellaneous properties
uint16_t len;
uint16_t macroCount;
uint16_t keymapCount;
parser_error_t errorCode;
(void)dataModelVersion;
uint16_t dataModelMajorVersion = ReadUInt16(buffer);
uint16_t dataModelMinorVersion = ReadUInt16(buffer);
uint16_t dataModelPatchVersion = ReadUInt16(buffer);
uint16_t userConfigLength = ReadUInt16(buffer);
const char *deviceName = ReadString(buffer, &len);
uint16_t doubleTapSwitchLayerTimeout = ReadUInt16(buffer);
(void)userConfigLength;
(void)dataModelMajorVersion;
(void)dataModelMinorVersion;
(void)dataModelPatchVersion;
(void)deviceName;
// LED brightness
uint8_t iconsAndLayerTextsBrightness = ReadUInt8(buffer);
uint8_t alphanumericSegmentsBrightness = ReadUInt8(buffer);
uint8_t keyBacklightBrightness = ReadUInt8(buffer);
// Mouse kinetic properties
uint8_t mouseMoveInitialSpeed = ReadUInt8(buffer);
uint8_t mouseMoveAcceleration = ReadUInt8(buffer);
uint8_t mouseMoveDeceleratedSpeed = ReadUInt8(buffer);
uint8_t mouseMoveBaseSpeed = ReadUInt8(buffer);
uint8_t mouseMoveAcceleratedSpeed = ReadUInt8(buffer);
uint8_t mouseScrollInitialSpeed = ReadUInt8(buffer);
uint8_t mouseScrollAcceleration = ReadUInt8(buffer);
uint8_t mouseScrollDeceleratedSpeed = ReadUInt8(buffer);
uint8_t mouseScrollBaseSpeed = ReadUInt8(buffer);
uint8_t mouseScrollAcceleratedSpeed = ReadUInt8(buffer);
if (mouseMoveInitialSpeed == 0 ||
mouseMoveAcceleration == 0 ||
mouseMoveDeceleratedSpeed == 0 ||
mouseMoveBaseSpeed == 0 ||
mouseMoveAcceleratedSpeed == 0 ||
mouseScrollInitialSpeed == 0 ||
mouseScrollAcceleration == 0 ||
mouseScrollDeceleratedSpeed == 0 ||
mouseScrollBaseSpeed == 0 ||
mouseScrollAcceleratedSpeed == 0)
{
return ParserError_InvalidMouseKineticProperty;
}
// Module configurations
uint16_t moduleConfigurationCount = ReadCompactLength(buffer);
if (moduleConfigurationCount > 255) {
return ParserError_InvalidModuleConfigurationCount;
@@ -40,7 +104,9 @@ parser_error_t ParseConfig(config_buffer_t *buffer)
}
}
macroCount = readCompactLength(buffer);
// Macros
macroCount = ReadCompactLength(buffer);
if (macroCount > MAX_MACRO_NUM) {
return ParserError_InvalidMacroCount;
}
@@ -52,7 +118,9 @@ parser_error_t ParseConfig(config_buffer_t *buffer)
}
}
keymapCount = readCompactLength(buffer);
// Keymaps
keymapCount = ReadCompactLength(buffer);
if (keymapCount == 0 || keymapCount > MAX_KEYMAP_NUM) {
return ParserError_InvalidKeymapCount;
}
@@ -64,7 +132,35 @@ parser_error_t ParseConfig(config_buffer_t *buffer)
}
}
// If parsing succeeded then apply the parsed values.
if (!ParserRunDry) {
DoubleTapSwitchLayerTimeout = doubleTapSwitchLayerTimeout;
// Update LED brightnesses and reinitialize LED drivers
IconsAndLayerTextsBrightness = iconsAndLayerTextsBrightness;
AlphanumericSegmentsBrightness = alphanumericSegmentsBrightness;
KeyBacklightBrightness = keyBacklightBrightness;
Slaves[SlaveId_LeftLedDriver].isConnected = false;
Slaves[SlaveId_RightLedDriver].isConnected = false;
// 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;
AllMacrosCount = macroCount;
}

View File

@@ -8,20 +8,21 @@
// Typedefs:
typedef enum {
ParserError_Success,
ParserError_InvalidSerializedKeystrokeType,
ParserError_InvalidSerializedMouseAction,
ParserError_InvalidSerializedKeyActionType,
ParserError_InvalidLayerCount,
ParserError_InvalidModuleCount,
ParserError_InvalidActionCount,
ParserError_InvalidSerializedMacroActionType,
ParserError_InvalidSerializedSwitchKeymapAction,
ParserError_InvalidModuleConfigurationCount,
ParserError_InvalidKeymapCount,
ParserError_InvalidAbbreviationLen,
ParserError_InvalidMacroCount,
ParserError_InvalidSerializedPlayMacroAction,
ParserError_Success = 0,
ParserError_InvalidSerializedKeystrokeType = 1,
ParserError_InvalidSerializedMouseAction = 2,
ParserError_InvalidSerializedKeyActionType = 3,
ParserError_InvalidLayerCount = 4,
ParserError_InvalidModuleCount = 5,
ParserError_InvalidActionCount = 6,
ParserError_InvalidSerializedMacroActionType = 7,
ParserError_InvalidSerializedSwitchKeymapAction = 8,
ParserError_InvalidModuleConfigurationCount = 9,
ParserError_InvalidKeymapCount = 10,
ParserError_InvalidAbbreviationLen = 11,
ParserError_InvalidMacroCount = 12,
ParserError_InvalidSerializedPlayMacroAction = 13,
ParserError_InvalidMouseKineticProperty = 14,
} parser_error_t;
// Functions:

View File

@@ -2,7 +2,7 @@
#include "config_parser/parse_config.h"
#include "config_parser/parse_keymap.h"
#include "key_action.h"
#include "keymaps.h"
#include "keymap.h"
#include "led_display.h"
static uint8_t tempKeymapCount;
@@ -34,31 +34,31 @@ static parser_error_t parseKeyStrokeAction(key_action_t *keyAction, uint8_t keyS
return ParserError_InvalidSerializedKeystrokeType;
}
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;
keyAction->keystroke.modifiers = keyStrokeAction & SERIALIZED_KEYSTROKE_TYPE_MASK_HAS_MODIFIERS
? readUInt8(buffer)
? ReadUInt8(buffer)
: 0;
keyAction->keystroke.longPressAction = keyStrokeAction & SERIALIZED_KEYSTROKE_TYPE_MASK_HAS_LONGPRESS
? readUInt8(buffer)
keyAction->keystroke.secondaryRole = keyStrokeAction & SERIALIZED_KEYSTROKE_TYPE_MASK_HAS_LONGPRESS
? ReadUInt8(buffer) + 1
: 0;
return ParserError_Success;
}
static parser_error_t parseSwitchLayerAction(key_action_t *KeyAction, config_buffer_t *buffer)
{
uint8_t layer = readUInt8(buffer) + 1;
bool isToggle = readBool(buffer);
uint8_t layer = ReadUInt8(buffer) + 1;
uint8_t mode = ReadBool(buffer) ? SwitchLayerMode_Toggle : SwitchLayerMode_HoldAndDoubleTapToggle;
KeyAction->type = KeyActionType_SwitchLayer;
KeyAction->switchLayer.layer = layer;
KeyAction->switchLayer.isToggle = isToggle;
KeyAction->switchLayer.mode = mode;
return ParserError_Success;
}
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) {
return ParserError_InvalidSerializedSwitchKeymapAction;
@@ -70,7 +70,7 @@ static parser_error_t parseSwitchKeymapAction(key_action_t *keyAction, config_bu
static parser_error_t parsePlayMacroAction(key_action_t *keyAction, config_buffer_t *buffer)
{
uint8_t macroIndex = readUInt8(buffer);
uint8_t macroIndex = ReadUInt8(buffer);
if (macroIndex >= tempMacroCount) {
return ParserError_InvalidSerializedPlayMacroAction;
@@ -82,59 +82,22 @@ static parser_error_t parsePlayMacroAction(key_action_t *keyAction, config_buffe
static parser_error_t parseMouseAction(key_action_t *keyAction, config_buffer_t *buffer)
{
uint8_t mouseAction = readUInt8(buffer);
keyAction->type = KeyActionType_Mouse;
memset(&keyAction->mouse, 0, sizeof keyAction->mouse);
switch (mouseAction) {
case SerializedMouseAction_LeftClick:
keyAction->mouse.buttonActions = MouseButton_Left;
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;
uint8_t mouseAction = ReadUInt8(buffer);
if (mouseAction > SerializedMouseAction_Last) {
return ParserError_InvalidSerializedMouseAction;
}
memset(&keyAction->mouseAction, 0, sizeof keyAction->mouseAction);
keyAction->mouseAction = mouseAction;
return ParserError_Success;
}
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) {
case SerializedKeyActionType_None:
@@ -153,10 +116,10 @@ static parser_error_t parseKeyAction(key_action_t *keyAction, config_buffer_t *b
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;
uint16_t actionCount = readCompactLength(buffer);
uint16_t actionCount = ReadCompactLength(buffer);
key_action_t dummyKeyAction;
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)
{
uint8_t moduleId = readUInt8(buffer);
uint8_t pointerRole = readUInt8(buffer);
return parseKeyActions(layer, buffer, moduleId, pointerRole);
uint8_t moduleId = ReadUInt8(buffer);
return parseKeyActions(layer, buffer, moduleId);
}
static parser_error_t parseLayer(config_buffer_t *buffer, uint8_t layer)
{
parser_error_t errorCode;
uint16_t moduleCount = readCompactLength(buffer);
uint16_t moduleCount = ReadCompactLength(buffer);
if (moduleCount > SLOT_COUNT) {
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 nameLen;
uint16_t descriptionLen;
const char *abbreviation = readString(buffer, &abbreviationLen);
bool isDefault = readBool(buffer);
const char *name = readString(buffer, &nameLen);
const char *description = readString(buffer, &descriptionLen);
uint16_t layerCount = readCompactLength(buffer);
const char *abbreviation = ReadString(buffer, &abbreviationLen);
bool isDefault = ReadBool(buffer);
const char *name = ReadString(buffer, &nameLen);
const char *description = ReadString(buffer, &descriptionLen);
uint16_t layerCount = ReadCompactLength(buffer);
(void)name;
(void)description;

View File

@@ -48,6 +48,10 @@
SerializedMouseAction_ScrollRight,
SerializedMouseAction_Accelerate,
SerializedMouseAction_Decelerate,
SerializedMouseAction_Last = SerializedMouseAction_Decelerate,
SerializedMouseAction_Button_4,
SerializedMouseAction_Button_5,
SerializedMouseAction_Button_6,
} serialized_mouse_action_t;
// Functions:

View File

@@ -13,8 +13,8 @@ parser_error_t parseKeyMacroAction(config_buffer_t *buffer, macro_action_t *macr
keyMacroType >>= 2;
type = keyMacroType & 0b11;
keyMacroType >>= 2;
scancode = keyMacroType & 0b10 ? readUInt8(buffer) : 0;
modifierMask = keyMacroType & 0b01 ? readUInt8(buffer) : 0;
scancode = keyMacroType & 0b10 ? ReadUInt8(buffer) : 0;
modifierMask = keyMacroType & 0b01 ? ReadUInt8(buffer) : 0;
macroAction->type = MacroActionType_Key;
macroAction->key.action = action;
macroAction->key.type = type;
@@ -26,7 +26,7 @@ parser_error_t parseKeyMacroAction(config_buffer_t *buffer, macro_action_t *macr
parser_error_t parseMouseButtonMacroAction(config_buffer_t *buffer, macro_action_t *macroAction, serialized_macro_action_type_t macroActionType)
{
uint8_t action = macroActionType - SerializedMacroActionType_MouseButtonMacroAction;
uint8_t mouseButtonsMask = readUInt8(buffer);
uint8_t mouseButtonsMask = ReadUInt8(buffer);
macroAction->type = MacroActionType_MouseButton;
macroAction->mouseButton.action = action;
@@ -36,8 +36,8 @@ parser_error_t parseMouseButtonMacroAction(config_buffer_t *buffer, macro_action
parser_error_t parseMoveMouseMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
{
int16_t x = readInt16(buffer);
int16_t y = readInt16(buffer);
int16_t x = ReadInt16(buffer);
int16_t y = ReadInt16(buffer);
macroAction->type = MacroActionType_MoveMouse;
macroAction->moveMouse.x = x;
@@ -47,8 +47,8 @@ parser_error_t parseMoveMouseMacroAction(config_buffer_t *buffer, macro_action_t
parser_error_t parseScrollMouseMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
{
int16_t x = readInt16(buffer);
int16_t y = readInt16(buffer);
int16_t x = ReadInt16(buffer);
int16_t y = ReadInt16(buffer);
macroAction->type = MacroActionType_ScrollMouse;
macroAction->scrollMouse.x = x;
@@ -58,7 +58,7 @@ parser_error_t parseScrollMouseMacroAction(config_buffer_t *buffer, macro_action
parser_error_t parseDelayMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
{
int16_t delay = readInt16(buffer);
int16_t delay = ReadInt16(buffer);
macroAction->type = MacroActionType_Delay;
macroAction->delay.delay = delay;
@@ -68,7 +68,7 @@ parser_error_t parseDelayMacroAction(config_buffer_t *buffer, macro_action_t *ma
parser_error_t parseTextMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
{
uint16_t textLen;
const char *text = readString(buffer, &textLen);
const char *text = ReadString(buffer, &textLen);
macroAction->type = MacroActionType_Text;
macroAction->text.text = text;
@@ -78,7 +78,7 @@ parser_error_t parseTextMacroAction(config_buffer_t *buffer, macro_action_t *mac
parser_error_t ParseMacroAction(config_buffer_t *buffer, macro_action_t *macroAction)
{
uint8_t macroActionType = readUInt8(buffer);
uint8_t macroActionType = ReadUInt8(buffer);
switch (macroActionType) {
case SerializedMacroActionType_KeyMacroAction ... SerializedMacroActionType_LastKeyMacroAction:
@@ -101,10 +101,10 @@ parser_error_t ParseMacro(config_buffer_t *buffer, uint8_t macroIdx)
{
parser_error_t errorCode;
uint16_t nameLen;
bool isLooped = readBool(buffer);
bool isPrivate = readBool(buffer);
const char *name = readString(buffer, &nameLen);
uint16_t macroActionsCount = readCompactLength(buffer);
bool isLooped = ReadBool(buffer);
bool isPrivate = ReadBool(buffer);
const char *name = ReadString(buffer, &nameLen);
uint16_t macroActionsCount = ReadCompactLength(buffer);
uint16_t firstMacroActionOffset = buffer->offset;
macro_action_t dummyMacroAction;

View File

@@ -4,12 +4,13 @@
#include "i2c.h"
#include "eeprom.h"
#include "config_parser/config_globals.h"
#include "buffer.h"
bool IsEepromBusy;
static eeprom_operation_t CurrentEepromOperation;
static config_buffer_id_t CurrentConfigBufferId;
status_t LastEepromTransferStatus;
void (*SuccessCallback)();
void (*SuccessCallback)(void);
static i2c_master_handle_t i2cHandle;
static i2c_master_transfer_t i2cTransfer;
@@ -20,7 +21,6 @@ static uint16_t eepromStartAddress;
static uint16_t sourceLength;
static uint8_t writeLength;
static bool isReadSent;
static uint8_t addressBuffer[EEPROM_ADDRESS_LENGTH];
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 uint8_t buffer[EEPROM_BUFFER_SIZE];
uint16_t targetEepromOffset = sourceOffset + eepromStartAddress;
buffer[0] = targetEepromOffset >> 8;
buffer[1] = targetEepromOffset & 0xff;
SetBufferUint16Be(buffer, 0, eepromStartAddress + sourceOffset);
writeLength = MIN(sourceLength - sourceOffset, EEPROM_PAGE_SIZE);
memcpy(buffer+EEPROM_ADDRESS_LENGTH, sourceBuffer+sourceOffset, writeLength);
status_t status = i2cAsyncWrite(buffer, writeLength+EEPROM_ADDRESS_LENGTH);
memcpy(buffer+EEPROM_ADDRESS_SIZE, sourceBuffer+sourceOffset, writeLength);
status_t status = i2cAsyncWrite(buffer, writeLength+EEPROM_ADDRESS_SIZE);
return status;
}
@@ -104,17 +102,17 @@ status_t EEPROM_LaunchTransfer(eeprom_operation_t operation, config_buffer_id_t
CurrentEepromOperation = operation;
CurrentConfigBufferId = config_buffer_id;
SuccessCallback = successCallback;
bool isHardwareConfig = CurrentConfigBufferId == ConfigBufferId_HardwareConfig;
eepromStartAddress = isHardwareConfig ? 0 : HARDWARE_CONFIG_SIZE;
addressBuffer[0] = eepromStartAddress >> 8;
addressBuffer[1] = eepromStartAddress & 0xff;
switch (CurrentEepromOperation) {
case EepromOperation_Read:
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;
case EepromOperation_Write:
sourceBuffer = ConfigBufferIdToConfigBuffer(CurrentConfigBufferId)->buffer;
@@ -127,3 +125,8 @@ status_t EEPROM_LaunchTransfer(eeprom_operation_t operation, config_buffer_id_t
IsEepromBusy = LastEepromTransferStatus == kStatus_Success;
return LastEepromTransferStatus;
}
bool IsEepromOperationValid(eeprom_operation_t operation)
{
return operation == EepromOperation_Read || operation == EepromOperation_Write;
}

View File

@@ -11,9 +11,9 @@
#define HARDWARE_CONFIG_SIZE 64
#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_BUFFER_SIZE (EEPROM_ADDRESS_LENGTH + EEPROM_PAGE_SIZE)
#define EEPROM_BUFFER_SIZE (EEPROM_ADDRESS_SIZE + EEPROM_PAGE_SIZE)
// Typedefs:
@@ -31,5 +31,6 @@
void EEPROM_Init(void);
status_t EEPROM_LaunchTransfer(eeprom_operation_t operation, config_buffer_id_t config_buffer_id, void (*successCallback));
bool IsEepromOperationValid(eeprom_operation_t operation);
#endif

View File

@@ -11,8 +11,9 @@
// Main bus
#define I2C_MAIN_BUS_BASEADDR I2C0
#define I2C_MASTER_BUS_CLK_SRC I2C0_CLK_SRC
#define I2C_MAIN_BUS_BAUD_RATE 100000 // 100 kHz works even with a 20 meter long bridge cable.
#define I2C_MAIN_BUS_IRQ_ID I2C0_IRQn
#define I2C_MAIN_BUS_CLK_SRC I2C0_CLK_SRC
#define I2C_MAIN_BUS_BAUD_RATE 100000 // 100 kHz works even with a 20 meter long bridge cable.
#define I2C_MAIN_BUS_MUX kPORT_MuxAlt7
#define I2C_MAIN_BUS_SDA_GPIO GPIOD
@@ -28,8 +29,9 @@
// EEPROM bus
#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_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_SDA_PORT PORTC

View File

@@ -8,8 +8,8 @@
#include "slave_scheduler.h"
#include "init_peripherals.h"
uint32_t I2cWatchdog_OuterCounter;
uint32_t I2cWatchdog_InnerCounter;
uint32_t I2cWatchdog_WatchCounter;
uint32_t I2cWatchdog_RecoveryCounter;
static uint32_t prevWatchdogCounter;
@@ -18,9 +18,9 @@ static uint32_t prevWatchdogCounter;
// This method relies on a patched KSDK which increments I2C_Watchdog upon I2C transfers.
void PIT_I2C_WATCHDOG_HANDLER(void)
{
I2cWatchdog_OuterCounter++;
I2cWatchdog_WatchCounter++;
if (I2C_Watchdog == prevWatchdogCounter) { // Restart I2C if there haven't been any interrupts recently
I2cWatchdog_InnerCounter++;
I2cWatchdog_RecoveryCounter++;
i2c_master_config_t masterConfig;
I2C_MasterGetDefaultConfig(&masterConfig);
I2C_MasterDeinit(I2C_MAIN_BUS_BASEADDR);
@@ -30,7 +30,7 @@ void PIT_I2C_WATCHDOG_HANDLER(void)
prevWatchdogCounter = I2C_Watchdog;
PIT_ClearStatusFlags(PIT, kPIT_Chnl_0, PIT_TFLG_TIF_MASK);
PIT_ClearStatusFlags(PIT, PIT_I2C_WATCHDOG_CHANNEL, PIT_TFLG_TIF_MASK);
}
void InitI2cWatchdog(void)
@@ -38,8 +38,8 @@ void InitI2cWatchdog(void)
pit_config_t pitConfig;
PIT_GetDefaultConfig(&pitConfig);
PIT_Init(PIT, &pitConfig);
PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(I2C_WATCHDOG_INTERVAL_USEC, PIT_SOURCE_CLOCK));
PIT_EnableInterrupts(PIT, kPIT_Chnl_0, kPIT_TimerInterruptEnable);
PIT_SetTimerPeriod(PIT, PIT_I2C_WATCHDOG_CHANNEL, USEC_TO_COUNT(I2C_WATCHDOG_INTERVAL_USEC, PIT_SOURCE_CLOCK));
PIT_EnableInterrupts(PIT, PIT_I2C_WATCHDOG_CHANNEL, kPIT_TimerInterruptEnable);
EnableIRQ(PIT_I2C_WATCHDOG_IRQ_ID);
PIT_StartTimer(PIT, kPIT_Chnl_0);
PIT_StartTimer(PIT, PIT_I2C_WATCHDOG_CHANNEL);
}

View File

@@ -1,18 +1,18 @@
#ifndef __I2C_WATCHDOG_H__
#define __I2C_WATCHDOG_H__
// Includes:
#include "peripherals/pit.h"
// Macros:
#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:
extern uint32_t I2cWatchdog_InnerCounter;
extern uint32_t I2cWatchdog_OuterCounter;
extern uint32_t I2cWatchdog_RecoveryCounter;
extern uint32_t I2cWatchdog_WatchCounter;
// Functions:

View File

@@ -8,17 +8,22 @@
#include "peripherals/led_driver.h"
#include "peripherals/merge_sensor.h"
#include "led_pwm.h"
#include "slave_scheduler.h"
#include "peripherals/adc.h"
#include "init_peripherals.h"
#include "eeprom.h"
#include "microseconds/microseconds_pit.c"
#include "timer.h"
#include "key_debouncer.h"
#include "usb_api.h"
void InitInterruptPriorities(void)
{
NVIC_SetPriority(I2C0_IRQn, 1);
NVIC_SetPriority(I2C1_IRQn, 1);
NVIC_SetPriority(USB0_IRQn, 1);
NVIC_SetPriority(PIT_I2C_WATCHDOG_IRQ_ID, 1);
NVIC_SetPriority(PIT_TIMER_IRQ_ID, 2);
NVIC_SetPriority(PIT_KEY_SCANNER_IRQ_ID, 3);
NVIC_SetPriority(PIT_KEY_DEBOUNCER_IRQ_ID, 3);
NVIC_SetPriority(I2C_MAIN_BUS_IRQ_ID, 3);
NVIC_SetPriority(I2C_EEPROM_BUS_IRQ_ID, 3);
NVIC_SetPriority(USB_IRQ_ID, 3);
}
void delay(void)
@@ -74,8 +79,9 @@ void InitI2cMainBus(void)
i2c_master_config_t masterConfig;
I2C_MasterGetDefaultConfig(&masterConfig);
masterConfig.baudRate_Bps = I2C_MAIN_BUS_BAUD_RATE;
uint32_t sourceClock = CLOCK_GetFreq(I2C_MASTER_BUS_CLK_SRC);
I2C_MasterInit(I2C_MAIN_BUS_BASEADDR, &masterConfig, sourceClock);}
uint32_t sourceClock = CLOCK_GetFreq(I2C_MAIN_BUS_CLK_SRC);
I2C_MasterInit(I2C_MAIN_BUS_BASEADDR, &masterConfig, sourceClock);
}
void initI2cEepromBus(void)
{
@@ -108,6 +114,7 @@ void InitI2c(void)
void InitPeripherals(void)
{
InitInterruptPriorities();
Timer_Init();
InitLedDriver();
InitResetButton();
InitMergeSensor();
@@ -118,6 +125,6 @@ void InitPeripherals(void)
#ifdef I2C_WATCHDOG
InitI2cWatchdog();
#endif
InitKeyDebouncer();
EEPROM_Init();
//microseconds_init();
}

View File

@@ -1,5 +1,5 @@
#ifndef __ACTION_H__
#define __ACTION_H__
#ifndef __KEY_ACTION_H__
#define __KEY_ACTION_H__
// Includes:
@@ -7,16 +7,8 @@
#include "attributes.h"
#include "lufa/HIDClassCommon.h"
#include "usb_composite_device.h"
#include "main.h"
#include "module.h"
// Macros:
#define MOUSE_WHEEL_SPEED 1
#define MOUSE_WHEEL_DIVISOR 4
#define MOUSE_MAX_SPEED 10
#define MOUSE_SPEED_ACCEL_DIVISOR 50
#include "config_parser/parse_keymap.h"
// Typedefs:
@@ -36,48 +28,33 @@
KeystrokeType_System,
} keystroke_type_t;
typedef enum {
SwitchLayerMode_Hold,
SwitchLayerMode_HoldAndDoubleTapToggle,
SwitchLayerMode_Toggle,
} switch_layer_mode_t;
typedef enum {
MouseButton_Left = 1 << 0,
MouseButton_Right = 1 << 1,
MouseButton_Middle = 1 << 2,
MouseButton_4 = 1 << 3,
MouseButton_5 = 1 << 4,
MouseButton_t = 1 << 5,
MouseButton_6 = 1 << 5,
} 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 {
uint8_t type;
union {
struct {
keystroke_type_t keystrokeType;
uint8_t longPressAction;
uint8_t secondaryRole;
uint8_t modifiers;
uint16_t scancode;
} ATTR_PACKED keystroke;
serialized_mouse_action_t mouseAction;
struct {
mouse_button_t buttonActions;
mouse_scroll_t scrollActions;
mouse_move_action_t moveActions;
} ATTR_PACKED mouse;
struct {
bool isToggle;
switch_layer_mode_t mode;
uint8_t layer;
} ATTR_PACKED switchLayer;
struct {

32
right/src/key_debouncer.c Normal file
View File

@@ -0,0 +1,32 @@
#include "key_debouncer.h"
#include "fsl_pit.h"
#include "slot.h"
#include "module.h"
#include "key_states.h"
#include "peripherals/test_led.h"
void PIT_KEY_DEBOUNCER_HANDLER(void)
{
TEST_LED_TOGGLE();
for (uint8_t slotId=0; slotId<SLOT_COUNT; slotId++) {
for (uint8_t keyId=0; keyId<MAX_KEY_COUNT_PER_MODULE; keyId++) {
uint8_t *debounceCounter = &KeyStates[slotId][keyId].debounceCounter;
if (*debounceCounter < 0xff) {
(*debounceCounter)++;
}
}
}
PIT_ClearStatusFlags(PIT, PIT_KEY_DEBOUNCER_CHANNEL, PIT_TFLG_TIF_MASK);
}
void InitKeyDebouncer(void)
{
pit_config_t pitConfig;
PIT_GetDefaultConfig(&pitConfig);
PIT_Init(PIT, &pitConfig);
PIT_SetTimerPeriod(PIT, PIT_KEY_DEBOUNCER_CHANNEL, MSEC_TO_COUNT(KEY_DEBOUNCER_INTERVAL_MSEC, PIT_SOURCE_CLOCK));
PIT_EnableInterrupts(PIT, PIT_KEY_DEBOUNCER_CHANNEL, kPIT_TimerInterruptEnable);
EnableIRQ(PIT_KEY_DEBOUNCER_IRQ_ID);
PIT_StartTimer(PIT, PIT_KEY_DEBOUNCER_CHANNEL);
}

18
right/src/key_debouncer.h Normal file
View File

@@ -0,0 +1,18 @@
#ifndef __KEY_DEBOUNCER_H__
#define __KEY_DEBOUNCER_H__
// Includes:
#include "peripherals/pit.h"
#include "fsl_common.h"
// Macros:
#define KEY_DEBOUNCER_INTERVAL_MSEC 1
#define KEY_DEBOUNCER_TIMEOUT_MSEC 10
// Functions:
void InitKeyDebouncer(void);
#endif

22
right/src/key_scanner.c Normal file
View File

@@ -0,0 +1,22 @@
#include "fsl_pit.h"
#include "key_scanner.h"
uint32_t KeyScannerCounter;
void PIT_KEY_SCANNER_HANDLER(void)
{
KeyMatrix_ScanRow(&RightKeyMatrix);
KeyScannerCounter++;
PIT_ClearStatusFlags(PIT, PIT_KEY_SCANNER_CHANNEL, PIT_TFLG_TIF_MASK);
}
void InitKeyScanner(void)
{
pit_config_t pitConfig;
PIT_GetDefaultConfig(&pitConfig);
PIT_Init(PIT, &pitConfig);
PIT_SetTimerPeriod(PIT, PIT_KEY_SCANNER_CHANNEL, USEC_TO_COUNT(KEY_SCANNER_INTERVAL_USEC, PIT_SOURCE_CLOCK));
PIT_EnableInterrupts(PIT, PIT_KEY_SCANNER_CHANNEL, kPIT_TimerInterruptEnable);
EnableIRQ(PIT_KEY_SCANNER_IRQ_ID);
PIT_StartTimer(PIT, PIT_KEY_SCANNER_CHANNEL);
}

21
right/src/key_scanner.h Normal file
View File

@@ -0,0 +1,21 @@
#ifndef __KEY_SCANNER_H__
#define __KEY_SCANNER_H__
// Includes:
#include "peripherals/pit.h"
#include "right_key_matrix.h"
// Macros:
#define KEY_SCANNER_INTERVAL_USEC (1000 / RIGHT_KEY_MATRIX_ROWS_NUM)
// Variables:
extern uint32_t KeyScannerCounter;
// Functions:
void InitKeyScanner(void);
#endif

3
right/src/key_states.c Normal file
View File

@@ -0,0 +1,3 @@
#include "key_states.h"
key_state_t KeyStates[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];

23
right/src/key_states.h Normal file
View File

@@ -0,0 +1,23 @@
#ifndef __KEY_STATES_H__
#define __KEY_STATES_H__
// Includes:
#include "fsl_common.h"
#include "slot.h"
#include "module.h"
// Typedefs:
typedef struct {
bool previous;
bool current;
bool suppressed;
uint8_t debounceCounter;
} key_state_t;
// Variables:
extern key_state_t KeyStates[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];
#endif

View File

@@ -1,26 +1,25 @@
#include "arduino_hid/ConsumerAPI.h"
#include "arduino_hid/SystemAPI.h"
#include "keymaps.h"
#include "keymap.h"
#include "led_display.h"
#include "config_parser/parse_keymap.h"
#include "config_parser/config_globals.h"
#include "macros.h"
// TODO: Restore Ctrl and Super keys and Mod+N.
keymap_reference_t AllKeymaps[MAX_KEYMAP_NUM] = { { "QTY", 0, 3 } };
keymap_reference_t AllKeymaps[MAX_KEYMAP_NUM] = { { "FTY", 0, 3 } };
uint8_t AllKeymapsCount;
uint8_t DefaultKeymapIndex;
uint8_t CurrentKeymapIndex = 0;
void Keymaps_Switch(uint8_t index)
void SwitchKeymap(uint8_t index)
{
CurrentKeymapIndex = index;
ValidatedUserConfigBuffer.offset = AllKeymaps[index].offset;
ParseKeymap(&ValidatedUserConfigBuffer, index, AllKeymapsCount, AllMacrosCount);
LedDisplay_SetText(AllKeymaps[index].abbreviationLen, AllKeymaps[index].abbreviation);
LedDisplay_SetCurrentKeymapText();
}
// The factory keymap is initialized before it gets overwritten by the default keymap of the EEPROM.
key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] = {
// Base layer
{
@@ -65,11 +64,11 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
// Row 5
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_SPACE }},
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_MOD }},
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_FN }},
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mod }},
{ .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_CONTROL }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_GUI }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_CONTROL }},
},
// Left keyboard half
@@ -93,7 +92,7 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_T }},
// 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_S }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_D }},
@@ -111,12 +110,12 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_B }},
// 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_GUI }},
{ .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_SwitchLayer, .switchLayer = { .layer = LAYER_ID_MOD }},
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mod }},
{ .type = KeyActionType_None },
}
},
@@ -158,17 +157,17 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
{ .type = KeyActionType_None },
{ .type = KeyActionType_None },
{ .type = KeyActionType_None },
{ .type = KeyActionType_None },
{ .type = HID_KEYBOARD_SC_MENU },
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_SHIFT }},
{ .type = KeyActionType_None },
// Row 5
{ .type = KeyActionType_None },
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_MOD }},
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mod }},
{ .type = KeyActionType_None },
{ .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_CONTROL }},
},
// Left keyboard half
@@ -210,12 +209,12 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
{ .type = KeyActionType_None },
// 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_GUI }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_ALT }},
{ .type = KeyActionType_None },
{ .type = KeyActionType_None },
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_MOD }},
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mod }},
{ .type = KeyActionType_None },
}
},
@@ -264,10 +263,10 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
// Row 5
{ .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_CONTROL }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_GUI }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_RIGHT_CONTROL }},
},
// Left keyboard half
@@ -309,10 +308,10 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
{ .type = KeyActionType_None },
// 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_GUI }},
{ .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 },
@@ -333,23 +332,23 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
{ .type = KeyActionType_None },
// Row 2
{ .type = KeyActionType_Mouse, .mouse = { .buttonActions = MouseButton_4 }},
{ .type = KeyActionType_Mouse, .mouse = { .moveActions = MouseMove_Up }},
{ .type = KeyActionType_Mouse, .mouse = { .buttonActions = MouseButton_5 }},
{ .type = KeyActionType_Mouse, .mouse = { .buttonActions = MouseButton_t }},
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_Button_4 },
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_MoveUp },
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_Button_5 },
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_Button_6 },
{ .type = KeyActionType_None },
{ .type = KeyActionType_None },
{ .type = KeyActionType_None },
{ .type = KeyActionType_Mouse, .mouse = { .scrollActions = MouseScroll_Up }},
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_ScrollUp },
// Row 3
{ .type = KeyActionType_Mouse, .mouse = { .moveActions = MouseMove_Left }},
{ .type = KeyActionType_Mouse, .mouse = { .moveActions = MouseMove_Down }},
{ .type = KeyActionType_Mouse, .mouse = { .moveActions = MouseMove_Right }},
{ .type = KeyActionType_Mouse, .mouseAction= SerializedMouseAction_MoveLeft },
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_MoveDown },
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_MoveRight },
{ .type = KeyActionType_None },
{ .type = KeyActionType_None },
{ .type = KeyActionType_None },
{ .type = KeyActionType_Mouse, .mouse = { .scrollActions = MouseScroll_Down }},
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_ScrollDown },
// Row 4
{ .type = KeyActionType_None },
@@ -365,8 +364,8 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
{ .type = KeyActionType_None },
{ .type = KeyActionType_None },
{ .type = KeyActionType_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_CONTROL }},
},
// Left keyboard half
@@ -390,11 +389,11 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
{ .type = KeyActionType_None },
// Row 3
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LAYER_ID_MOUSE }},
{ .type = KeyActionType_SwitchLayer, .switchLayer = { .layer = LayerId_Mouse }},
{ .type = KeyActionType_None },
{ .type = KeyActionType_Mouse, .mouse = { .buttonActions = MouseButton_Right }},
{ .type = KeyActionType_Mouse, .mouse = { .buttonActions = MouseButton_Middle }},
{ .type = KeyActionType_Mouse, .mouse = { .buttonActions = MouseButton_Left }},
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_RightClick },
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_MiddleClick },
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_LeftClick },
{ .type = KeyActionType_None },
{ .type = KeyActionType_None },
@@ -408,12 +407,12 @@ key_action_t CurrentKeymap[LAYER_COUNT][SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE] =
{ .type = KeyActionType_None },
// 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_GUI }},
{ .type = KeyActionType_Keystroke, .keystroke = { .scancode = HID_KEYBOARD_SC_LEFT_ALT }},
{ .type = KeyActionType_None },
{ .type = KeyActionType_Mouse, .mouse = { .moveActions = MouseMove_Decelerate }},
{ .type = KeyActionType_Mouse, .mouse = { .moveActions = MouseMove_Accelerate }},
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_Decelerate },
{ .type = KeyActionType_Mouse, .mouseAction = SerializedMouseAction_Accelerate },
{ .type = KeyActionType_None },
}
},

View File

@@ -29,6 +29,6 @@
// Functions:
void Keymaps_Switch(uint8_t index);
void SwitchKeymap(uint8_t index);
#endif

73
right/src/layer.c Normal file
View File

@@ -0,0 +1,73 @@
#include "layer.h"
#include "slot.h"
#include "module.h"
#include "key_states.h"
#include "keymap.h"
static bool heldLayers[LAYER_COUNT];
static switch_layer_mode_t pressedLayers[LAYER_COUNT];
void updateLayerStates(void)
{
memset(heldLayers, false, LAYER_COUNT);
memset(pressedLayers, false, LAYER_COUNT);
for (uint8_t slotId=0; slotId<SLOT_COUNT; slotId++) {
for (uint8_t keyId=0; keyId<MAX_KEY_COUNT_PER_MODULE; keyId++) {
key_state_t *keyState = &KeyStates[slotId][keyId];
if (keyState->current) {
key_action_t action = CurrentKeymap[LayerId_Base][slotId][keyId];
if (action.type == KeyActionType_SwitchLayer) {
if (action.switchLayer.mode != SwitchLayerMode_Toggle) {
heldLayers[action.switchLayer.layer] = true;
}
if (action.switchLayer.mode != SwitchLayerMode_Hold && !keyState->previous && keyState->current) {
pressedLayers[action.switchLayer.layer] = action.switchLayer.mode;
}
}
}
}
}
}
layer_id_t PreviousHeldLayer = LayerId_Base;
layer_id_t ToggledLayer = LayerId_Base;
layer_id_t GetActiveLayer()
{
updateLayerStates();
// Handle toggled layers
for (layer_id_t layerId=LayerId_Mod; layerId<=LayerId_Mouse; layerId++) {
if (pressedLayers[layerId]) {
if (ToggledLayer == layerId) {
ToggledLayer = LayerId_Base;
break;
} else if (ToggledLayer == LayerId_Base && pressedLayers[layerId] == SwitchLayerMode_Toggle) {
ToggledLayer = layerId;
break;
}
}
}
if (ToggledLayer != LayerId_Base) {
return ToggledLayer;
}
// Handle held layers
layer_id_t heldLayer = LayerId_Base;
for (layer_id_t layerId=LayerId_Mod; layerId<=LayerId_Mouse; layerId++) {
if (heldLayers[layerId]) {
heldLayer = layerId;
break;
}
}
heldLayer = heldLayer != LayerId_Base && heldLayers[PreviousHeldLayer] ? PreviousHeldLayer : heldLayer;
PreviousHeldLayer = heldLayer;
return heldLayer;
}

View File

@@ -1,13 +1,30 @@
#ifndef __LAYER_H__
#define __LAYER_H__
// Macros:
// Includes:
#define LAYER_ID_BASE 0
#define LAYER_ID_MOD 1
#define LAYER_ID_FN 2
#define LAYER_ID_MOUSE 3
#include "fsl_common.h"
// Macros:
#define LAYER_COUNT 4
// Typedefs:
typedef enum {
LayerId_Base,
LayerId_Mod,
LayerId_Fn,
LayerId_Mouse,
} layer_id_t;
// Variables:
extern layer_id_t PreviousHeldLayer;
extern layer_id_t ToggledLayer;
// Functions:
layer_id_t GetActiveLayer();
#endif

View File

@@ -1,6 +1,10 @@
#include "led_display.h"
#include "slave_drivers/is31fl3731_driver.h"
#include "layer.h"
#include "keymap.h"
uint8_t IconsAndLayerTextsBrightness = 0xff;
uint8_t AlphanumericSegmentsBrightness = 0xff;
static const uint16_t capitalLetterToSegmentSet[] = {
0b0000000011110111,
@@ -44,7 +48,8 @@ static const uint16_t digitToSegmentSet[] = {
0b0000000011101111,
};
static uint16_t characterToSegmentSet(char character) {
static uint16_t characterToSegmentSet(char character)
{
switch (character) {
case 'A' ... 'Z':
return capitalLetterToSegmentSet[character - 'A'];
@@ -54,7 +59,8 @@ static uint16_t characterToSegmentSet(char character) {
return 0;
}
void LedDisplay_SetText(uint8_t length, const char* text) {
void LedDisplay_SetText(uint8_t length, const char* text)
{
uint64_t allSegmentSets = 0;
switch (length) {
@@ -66,28 +72,36 @@ void LedDisplay_SetText(uint8_t length, const char* text) {
allSegmentSets |= characterToSegmentSet(text[0]);
}
LedDriverValues[LedDriverId_Left][11] = allSegmentSets & 0b00000001 ? LED_BRIGHTNESS_LEVEL : 0;
LedDriverValues[LedDriverId_Left][12] = allSegmentSets & 0b00000010 ? LED_BRIGHTNESS_LEVEL : 0;
LedDriverValues[LedDriverId_Left][11] = allSegmentSets & 0b00000001 ? AlphanumericSegmentsBrightness : 0;
LedDriverValues[LedDriverId_Left][12] = allSegmentSets & 0b00000010 ? AlphanumericSegmentsBrightness : 0;
allSegmentSets >>= 2;
for (uint8_t i = 24; i <= 136; i += 16) {
for (uint8_t j = 0; j < 5; j++) {
LedDriverValues[LedDriverId_Left][i + j] = allSegmentSets & 1 << j ? LED_BRIGHTNESS_LEVEL : 0;
LedDriverValues[LedDriverId_Left][i + j] = allSegmentSets & 1 << j ? AlphanumericSegmentsBrightness : 0;
}
allSegmentSets >>= 5;
}
}
void LedDisplay_SetLayer(uint8_t layerId) {
void LedDisplay_SetCurrentKeymapText(void)
{
keymap_reference_t *currentKeymap = AllKeymaps + CurrentKeymapIndex;
LedDisplay_SetText(currentKeymap->abbreviationLen, currentKeymap->abbreviation);
}
void LedDisplay_SetLayer(uint8_t layerId)
{
for (uint8_t i = 13; i <= 45; i += 16) {
LedDriverValues[LedDriverId_Left][i] = 0;
}
if (layerId >= LAYER_ID_MOD && layerId <= LAYER_ID_MOUSE) {
LedDriverValues[LedDriverId_Left][16 * layerId - 3] = LED_BRIGHTNESS_LEVEL;
if (layerId >= LayerId_Mod && layerId <= LayerId_Mouse) {
LedDriverValues[LedDriverId_Left][16 * layerId - 3] = IconsAndLayerTextsBrightness;
}
}
void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled) {
LedDriverValues[LedDriverId_Left][8 + icon] = isEnabled ? LED_BRIGHTNESS_LEVEL : 0;
void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled)
{
LedDriverValues[LedDriverId_Left][8 + icon] = isEnabled ? IconsAndLayerTextsBrightness : 0;
}

View File

@@ -14,9 +14,15 @@
LedDisplayIcon_Adaptive,
} led_display_icon_t;
// Variables:
extern uint8_t IconsAndLayerTextsBrightness;
extern uint8_t AlphanumericSegmentsBrightness;
// Functions:
void LedDisplay_SetText(uint8_t length, const char* text);
void LedDisplay_SetCurrentKeymapText(void);
void LedDisplay_SetLayer(uint8_t layerId);
void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled);

View File

@@ -1,7 +1,8 @@
#include "led_pwm.h"
#include "fsl_port.h"
void LedPwm_Init(void) {
void LedPwm_Init(void)
{
CLOCK_EnableClock(LED_PWM_CLOCK);
PORT_SetPinMux(LED_PWM_PORT, LED_PWM_PIN, kPORT_MuxAlt4);

View File

@@ -1,64 +1,16 @@
#include "config.h"
#include "main.h"
#include "init_clock.h"
#include "init_peripherals.h"
#include "usb_composite_device.h"
#include "peripherals/led_driver.h"
#include "key_action.h"
#include "slave_scheduler.h"
#include "peripherals/test_led.h"
#include "usb_interfaces/usb_interface_basic_keyboard.h"
#include "usb_interfaces/usb_interface_media_keyboard.h"
#include "bus_pal_hardware.h"
#include "bootloader_config.h"
#include "command.h"
#include "wormhole.h"
#include "bootloader/wormhole.h"
#include "eeprom.h"
key_matrix_t KeyMatrix = {
.colNum = KEYBOARD_MATRIX_COLS_NUM,
.rowNum = KEYBOARD_MATRIX_ROWS_NUM,
.cols = (key_matrix_pin_t[]){
{PORTA, GPIOA, kCLOCK_PortA, 5},
{PORTB, GPIOB, kCLOCK_PortB, 16},
{PORTB, GPIOB, kCLOCK_PortB, 17},
{PORTB, GPIOB, kCLOCK_PortB, 18},
{PORTB, GPIOB, kCLOCK_PortB, 19},
{PORTA, GPIOA, kCLOCK_PortA, 1},
{PORTB, GPIOB, kCLOCK_PortB, 1}
},
.rows = (key_matrix_pin_t[]){
{PORTA, GPIOA, kCLOCK_PortA, 12},
{PORTA, GPIOA, kCLOCK_PortA, 13},
{PORTC, GPIOC, kCLOCK_PortC, 1},
{PORTC, GPIOC, kCLOCK_PortC, 0},
{PORTD, GPIOD, kCLOCK_PortD, 5}
}
};
uint8_t CurrentKeyStates[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];
void UpdateUsbReports(void)
{
if (!IsUsbBasicKeyboardReportSent) {
return;
}
ResetActiveUsbBasicKeyboardReport();
ResetActiveUsbMediaKeyboardReport();
ResetActiveUsbSystemKeyboardReport();
KeyMatrix_Scan(&KeyMatrix);
memcpy(CurrentKeyStates[SlotId_RightKeyboardHalf], KeyMatrix.keyStates, MAX_KEY_COUNT_PER_MODULE);
UpdateActiveUsbReports();
SwitchActiveUsbBasicKeyboardReport();
SwitchActiveUsbMediaKeyboardReport();
SwitchActiveUsbSystemKeyboardReport();
IsUsbBasicKeyboardReportSent = false;
}
#include "key_scanner.h"
#include "usb_commands/usb_command_apply_config.h"
#include "peripherals/reset_button.h"
#include "usb_report_updater.h"
bool IsEepromInitialized = false;
bool IsConfigInitialized = false;
@@ -77,12 +29,10 @@ void main(void)
{
InitClock();
InitPeripherals();
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_HardwareConfig, hardwareConfigurationReadFinished);
#ifdef FORCE_BUSPAL
Wormhole.magicNumber = WORMHOLE_MAGIC_NUMBER;
Wormhole.enumerationMode = EnumerationMode_BusPal;
#endif
if (!RESET_BUTTON_IS_PRESSED) {
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_HardwareConfig, hardwareConfigurationReadFinished);
}
if (Wormhole.magicNumber == WORMHOLE_MAGIC_NUMBER && Wormhole.enumerationMode == EnumerationMode_BusPal) {
Wormhole.magicNumber = 0;
@@ -90,13 +40,14 @@ void main(void)
handleUsbBusPalCommand();
} else {
InitSlaveScheduler();
KeyMatrix_Init(&KeyMatrix);
KeyMatrix_Init(&RightKeyMatrix);
InitKeyScanner();
UpdateUsbReports();
InitUsb();
while (1) {
if (!IsConfigInitialized && IsEepromInitialized) {
ApplyConfig();
UsbCommand_ApplyConfig();
IsConfigInitialized = true;
}
UpdateUsbReports();

View File

@@ -1,22 +0,0 @@
#ifndef __MAIN_H__
#define __MAIN_H__
// Includes:
#include "key_matrix.h"
#include "slot.h"
#include "module.h"
// Macros:
#define KEYBOARD_MATRIX_COLS_NUM 7
#define KEYBOARD_MATRIX_ROWS_NUM 5
// Variables:
extern key_matrix_t KeyMatrix;
extern uint8_t PreviousKeyStates[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];
extern uint8_t CurrentKeyStates[SLOT_COUNT][MAX_KEY_COUNT_PER_MODULE];
extern void UpdateUsbReports(void);
#endif

View File

@@ -1,7 +1,8 @@
#include "merge_sensor.h"
#include "fsl_port.h"
void InitMergeSensor(void) {
void InitMergeSensor(void)
{
CLOCK_EnableClock(MERGE_SENSOR_CLOCK);
PORT_SetPinConfig(MERGE_SENSOR_PORT, MERGE_SENSOR_PIN,
&(port_pin_config_t){.pullSelect=kPORT_PullUp, .mux=kPORT_MuxAsGpio});

View File

@@ -0,0 +1,28 @@
#ifndef __PIT_H__
#define __PIT_H__
// Includes:
#include "peripherals/pit.h"
// Macros:
#define PIT_SOURCE_CLOCK CLOCK_GetFreq(kCLOCK_BusClk)
#define PIT_I2C_WATCHDOG_HANDLER PIT0_IRQHandler
#define PIT_I2C_WATCHDOG_IRQ_ID PIT0_IRQn
#define PIT_I2C_WATCHDOG_CHANNEL kPIT_Chnl_0
#define PIT_TIMER_HANDLER PIT1_IRQHandler
#define PIT_TIMER_IRQ_ID PIT1_IRQn
#define PIT_TIMER_CHANNEL kPIT_Chnl_1
#define PIT_KEY_SCANNER_HANDLER PIT2_IRQHandler
#define PIT_KEY_SCANNER_IRQ_ID PIT2_IRQn
#define PIT_KEY_SCANNER_CHANNEL kPIT_Chnl_2
#define PIT_KEY_DEBOUNCER_HANDLER PIT3_IRQHandler
#define PIT_KEY_DEBOUNCER_IRQ_ID PIT3_IRQn
#define PIT_KEY_DEBOUNCER_CHANNEL kPIT_Chnl_3
#endif

View File

@@ -1,8 +1,19 @@
#include "reset_button.h"
#include "fsl_port.h"
#include "bootloader/wormhole.h"
void InitResetButton(void) {
void RESET_BUTTON_IRQ_HANDLER(void)
{
Wormhole.magicNumber = WORMHOLE_MAGIC_NUMBER;
Wormhole.enumerationMode = EnumerationMode_NormalKeyboard;
NVIC_SystemReset();
}
void InitResetButton(void)
{
CLOCK_EnableClock(RESET_BUTTON_CLOCK);
PORT_SetPinInterruptConfig(RESET_BUTTON_PORT, RESET_BUTTON_PIN, kPORT_InterruptFallingEdge);
EnableIRQ(RESET_BUTTON_IRQ);
PORT_SetPinConfig(RESET_BUTTON_PORT, RESET_BUTTON_PIN,
&(port_pin_config_t){.pullSelect=kPORT_PullUp, .mux=kPORT_MuxAsGpio});
}

View File

@@ -0,0 +1,22 @@
#include "right_key_matrix.h"
key_matrix_t RightKeyMatrix = {
.colNum = RIGHT_KEY_MATRIX_COLS_NUM,
.rowNum = RIGHT_KEY_MATRIX_ROWS_NUM,
.cols = (key_matrix_pin_t[]){
{PORTA, GPIOA, kCLOCK_PortA, 5},
{PORTB, GPIOB, kCLOCK_PortB, 16},
{PORTB, GPIOB, kCLOCK_PortB, 17},
{PORTB, GPIOB, kCLOCK_PortB, 18},
{PORTB, GPIOB, kCLOCK_PortB, 19},
{PORTA, GPIOA, kCLOCK_PortA, 1},
{PORTB, GPIOB, kCLOCK_PortB, 1}
},
.rows = (key_matrix_pin_t[]){
{PORTA, GPIOA, kCLOCK_PortA, 12},
{PORTA, GPIOA, kCLOCK_PortA, 13},
{PORTC, GPIOC, kCLOCK_PortC, 1},
{PORTC, GPIOC, kCLOCK_PortC, 0},
{PORTD, GPIOD, kCLOCK_PortD, 5}
}
};

View File

@@ -0,0 +1,18 @@
#ifndef __RIGHT_KEY_MATRIX_H__
#define __RIGHT_KEY_MATRIX_H__
// Includes:
#include "key_matrix.h"
// Macros:
#define RIGHT_KEY_MATRIX_COLS_NUM 7
#define RIGHT_KEY_MATRIX_ROWS_NUM 5
#define RIGHT_KEY_MATRIX_KEY_COUNT (RIGHT_KEY_MATRIX_COLS_NUM * RIGHT_KEY_MATRIX_ROWS_NUM)
// Variables:
extern key_matrix_t RightKeyMatrix;
#endif

View File

@@ -3,6 +3,7 @@
#include "slave_scheduler.h"
#include "led_display.h"
uint8_t KeyBacklightBrightness = 0xff;
uint8_t LedDriverValues[LED_DRIVER_MAX_COUNT][LED_DRIVER_LED_COUNT];
static led_driver_state_t ledDriverStates[LED_DRIVER_MAX_COUNT] = {
@@ -61,7 +62,8 @@ static uint8_t setShutdownModeNormalBuffer[] = {LED_DRIVER_REGISTER_SHUTDOWN, SH
static uint8_t setFrame1Buffer[] = {LED_DRIVER_REGISTER_FRAME, LED_DRIVER_FRAME_1};
static uint8_t updatePwmRegistersBuffer[PWM_REGISTER_BUFFER_LENGTH];
void LedSlaveDriver_Init(uint8_t ledDriverId) {
void LedSlaveDriver_Init(uint8_t ledDriverId)
{
if (ledDriverId == ISO_KEY_LED_DRIVER_ID && IS_ISO) {
ledDriverStates[LedDriverId_Left].setupLedControlRegistersCommand[ISO_KEY_CONTROL_REGISTER_POS] |= 1 << ISO_KEY_CONTROL_REGISTER_BIT;
}
@@ -69,11 +71,18 @@ void LedSlaveDriver_Init(uint8_t ledDriverId) {
led_driver_state_t *currentLedDriverState = ledDriverStates + ledDriverId;
currentLedDriverState->phase = LedDriverPhase_SetFunctionFrame;
currentLedDriverState->ledIndex = 0;
memset(LedDriverValues[ledDriverId], LED_BRIGHTNESS_LEVEL, LED_DRIVER_LED_COUNT);
LedDisplay_SetText(3, "ABC");
memset(LedDriverValues[ledDriverId], KeyBacklightBrightness, LED_DRIVER_LED_COUNT);
if (ledDriverId == LedDriverId_Left) {
LedDisplay_SetIcon(LedDisplayIcon_CapsLock, false);
LedDisplay_SetIcon(LedDisplayIcon_Agent, false);
LedDisplay_SetIcon(LedDisplayIcon_Adaptive, false);
LedDisplay_SetCurrentKeymapText();
}
}
status_t LedSlaveDriver_Update(uint8_t ledDriverId) {
status_t LedSlaveDriver_Update(uint8_t ledDriverId)
{
status_t status = kStatus_Uhk_IdleSlave;
uint8_t *ledValues = LedDriverValues[ledDriverId];
led_driver_state_t *currentLedDriverState = ledDriverStates + ledDriverId;

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