Phil COVAL
/
rzr-example-mbed
Demo example on FRDM-64F https://ide.mbed.com/compiler/#nav:/rzr-example-mbed;
Utils.cpp@3:807a69c34b8b, 2022-03-16 (annotated)
- Committer:
- rzrfreefr
- Date:
- Wed Mar 16 14:41:31 2022 +0000
- Revision:
- 3:807a69c34b8b
Publish
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rzrfreefr | 3:807a69c34b8b | 1 | /// SPDX-License-Indentifier: Apache-2.0 |
rzrfreefr | 3:807a69c34b8b | 2 | /// Copyright: 2020+ Philippe Coval <https://purl.org/rzr/> |
rzrfreefr | 3:807a69c34b8b | 3 | /// URL: https://os.mbed.com/users/rzrfreefr/code/rzr-example-mbed/ |
rzrfreefr | 3:807a69c34b8b | 4 | |
rzrfreefr | 3:807a69c34b8b | 5 | #include "Utils.h" |
rzrfreefr | 3:807a69c34b8b | 6 | |
rzrfreefr | 3:807a69c34b8b | 7 | //https://github.com/ARMmbed/mbed-os/blob/c6094f7b36dc0e90a6a7271870333fbba475286c/drivers/usb/source/USBKeyboard.cpp |
rzrfreefr | 3:807a69c34b8b | 8 | #define REPORT_ID_KEYBOARD 1 |
rzrfreefr | 3:807a69c34b8b | 9 | |
rzrfreefr | 3:807a69c34b8b | 10 | bool Utils::keyboard_key_code(USBKeyboard& usb, |
rzrfreefr | 3:807a69c34b8b | 11 | unsigned char const key, |
rzrfreefr | 3:807a69c34b8b | 12 | unsigned char const modifier, |
rzrfreefr | 3:807a69c34b8b | 13 | unsigned int delay) |
rzrfreefr | 3:807a69c34b8b | 14 | { |
rzrfreefr | 3:807a69c34b8b | 15 | HID_REPORT report; |
rzrfreefr | 3:807a69c34b8b | 16 | |
rzrfreefr | 3:807a69c34b8b | 17 | report.data[0] = REPORT_ID_KEYBOARD; |
rzrfreefr | 3:807a69c34b8b | 18 | report.data[1] = modifier; |
rzrfreefr | 3:807a69c34b8b | 19 | report.data[2] = 0; |
rzrfreefr | 3:807a69c34b8b | 20 | //report.data[3] = usb.keymap[key].usage; |
rzrfreefr | 3:807a69c34b8b | 21 | report.data[3] = key; |
rzrfreefr | 3:807a69c34b8b | 22 | |
rzrfreefr | 3:807a69c34b8b | 23 | report.data[4] = 0; |
rzrfreefr | 3:807a69c34b8b | 24 | report.data[5] = 0; |
rzrfreefr | 3:807a69c34b8b | 25 | report.data[6] = 0; |
rzrfreefr | 3:807a69c34b8b | 26 | report.data[7] = 0; |
rzrfreefr | 3:807a69c34b8b | 27 | report.data[8] = 0; |
rzrfreefr | 3:807a69c34b8b | 28 | |
rzrfreefr | 3:807a69c34b8b | 29 | report.length = 9; |
rzrfreefr | 3:807a69c34b8b | 30 | |
rzrfreefr | 3:807a69c34b8b | 31 | if (!usb.send(&report)) { |
rzrfreefr | 3:807a69c34b8b | 32 | return false; |
rzrfreefr | 3:807a69c34b8b | 33 | } |
rzrfreefr | 3:807a69c34b8b | 34 | if (delay) { |
rzrfreefr | 3:807a69c34b8b | 35 | ThisThread::sleep_for(delay); |
rzrfreefr | 3:807a69c34b8b | 36 | } |
rzrfreefr | 3:807a69c34b8b | 37 | report.data[1] = 0; |
rzrfreefr | 3:807a69c34b8b | 38 | report.data[3] = 0; |
rzrfreefr | 3:807a69c34b8b | 39 | |
rzrfreefr | 3:807a69c34b8b | 40 | if (!usb.send(&report)) { |
rzrfreefr | 3:807a69c34b8b | 41 | return false; |
rzrfreefr | 3:807a69c34b8b | 42 | } |
rzrfreefr | 3:807a69c34b8b | 43 | return true; |
rzrfreefr | 3:807a69c34b8b | 44 | } |