test public

Dependencies:   HttpServer_snapshot_mbed-os

Committer:
anhtran
Date:
Fri Oct 18 03:09:43 2019 +0000
Revision:
0:e9fd5575b10e
abc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
anhtran 0:e9fd5575b10e 1 /* mbed USBHost Library
anhtran 0:e9fd5575b10e 2 * Copyright (c) 2006-2013 ARM Limited
anhtran 0:e9fd5575b10e 3 *
anhtran 0:e9fd5575b10e 4 * Licensed under the Apache License, Version 2.0 (the "License");
anhtran 0:e9fd5575b10e 5 * you may not use this file except in compliance with the License.
anhtran 0:e9fd5575b10e 6 * You may obtain a copy of the License at
anhtran 0:e9fd5575b10e 7 *
anhtran 0:e9fd5575b10e 8 * http://www.apache.org/licenses/LICENSE-2.0
anhtran 0:e9fd5575b10e 9 *
anhtran 0:e9fd5575b10e 10 * Unless required by applicable law or agreed to in writing, software
anhtran 0:e9fd5575b10e 11 * distributed under the License is distributed on an "AS IS" BASIS,
anhtran 0:e9fd5575b10e 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
anhtran 0:e9fd5575b10e 13 * See the License for the specific language governing permissions and
anhtran 0:e9fd5575b10e 14 * limitations under the License.
anhtran 0:e9fd5575b10e 15 */
anhtran 0:e9fd5575b10e 16
anhtran 0:e9fd5575b10e 17 #ifndef USBHOSTKEYBOARD_H
anhtran 0:e9fd5575b10e 18 #define USBHOSTKEYBOARD_H
anhtran 0:e9fd5575b10e 19
anhtran 0:e9fd5575b10e 20 #include "USBHostConf.h"
anhtran 0:e9fd5575b10e 21
anhtran 0:e9fd5575b10e 22 #if USBHOST_KEYBOARD
anhtran 0:e9fd5575b10e 23
anhtran 0:e9fd5575b10e 24 #include "USBHost.h"
anhtran 0:e9fd5575b10e 25
anhtran 0:e9fd5575b10e 26 /**
anhtran 0:e9fd5575b10e 27 * A class to communicate a USB keyboard
anhtran 0:e9fd5575b10e 28 */
anhtran 0:e9fd5575b10e 29 class USBHostKeyboard : public IUSBEnumerator {
anhtran 0:e9fd5575b10e 30 public:
anhtran 0:e9fd5575b10e 31
anhtran 0:e9fd5575b10e 32 /**
anhtran 0:e9fd5575b10e 33 * Constructor
anhtran 0:e9fd5575b10e 34 */
anhtran 0:e9fd5575b10e 35 USBHostKeyboard();
anhtran 0:e9fd5575b10e 36 #if defined(TARGET_RZ_A2XX)
anhtran 0:e9fd5575b10e 37 ~USBHostKeyboard();
anhtran 0:e9fd5575b10e 38 #endif
anhtran 0:e9fd5575b10e 39
anhtran 0:e9fd5575b10e 40 /**
anhtran 0:e9fd5575b10e 41 * Try to connect a keyboard device
anhtran 0:e9fd5575b10e 42 *
anhtran 0:e9fd5575b10e 43 * @return true if connection was successful
anhtran 0:e9fd5575b10e 44 */
anhtran 0:e9fd5575b10e 45 bool connect();
anhtran 0:e9fd5575b10e 46
anhtran 0:e9fd5575b10e 47 /**
anhtran 0:e9fd5575b10e 48 * Check if a keyboard is connected
anhtran 0:e9fd5575b10e 49 *
anhtran 0:e9fd5575b10e 50 * @returns true if a keyboard is connected
anhtran 0:e9fd5575b10e 51 */
anhtran 0:e9fd5575b10e 52 bool connected();
anhtran 0:e9fd5575b10e 53
anhtran 0:e9fd5575b10e 54 /**
anhtran 0:e9fd5575b10e 55 * Attach a callback called when a keyboard event is received
anhtran 0:e9fd5575b10e 56 *
anhtran 0:e9fd5575b10e 57 * @param ptr function pointer
anhtran 0:e9fd5575b10e 58 */
anhtran 0:e9fd5575b10e 59 inline void attach(void (*ptr)(uint8_t key)) {
anhtran 0:e9fd5575b10e 60 if (ptr != NULL) {
anhtran 0:e9fd5575b10e 61 onKey = ptr;
anhtran 0:e9fd5575b10e 62 }
anhtran 0:e9fd5575b10e 63 }
anhtran 0:e9fd5575b10e 64
anhtran 0:e9fd5575b10e 65 /**
anhtran 0:e9fd5575b10e 66 * Attach a callback called when a keyboard event is received
anhtran 0:e9fd5575b10e 67 *
anhtran 0:e9fd5575b10e 68 * @param ptr function pointer
anhtran 0:e9fd5575b10e 69 */
anhtran 0:e9fd5575b10e 70 inline void attach(void (*ptr)(uint8_t keyCode, uint8_t modifier)) {
anhtran 0:e9fd5575b10e 71 if (ptr != NULL) {
anhtran 0:e9fd5575b10e 72 onKeyCode = ptr;
anhtran 0:e9fd5575b10e 73 }
anhtran 0:e9fd5575b10e 74 }
anhtran 0:e9fd5575b10e 75
anhtran 0:e9fd5575b10e 76 protected:
anhtran 0:e9fd5575b10e 77 //From IUSBEnumerator
anhtran 0:e9fd5575b10e 78 virtual void setVidPid(uint16_t vid, uint16_t pid);
anhtran 0:e9fd5575b10e 79 virtual bool parseInterface(uint8_t intf_nb, uint8_t intf_class, uint8_t intf_subclass, uint8_t intf_protocol); //Must return true if the interface should be parsed
anhtran 0:e9fd5575b10e 80 virtual bool useEndpoint(uint8_t intf_nb, ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir); //Must return true if the endpoint will be used
anhtran 0:e9fd5575b10e 81
anhtran 0:e9fd5575b10e 82 private:
anhtran 0:e9fd5575b10e 83 USBHost * host;
anhtran 0:e9fd5575b10e 84 USBDeviceConnected * dev;
anhtran 0:e9fd5575b10e 85 USBEndpoint * int_in;
anhtran 0:e9fd5575b10e 86 #if defined(TARGET_RZ_A2XX)
anhtran 0:e9fd5575b10e 87 uint8_t * report;
anhtran 0:e9fd5575b10e 88 #else
anhtran 0:e9fd5575b10e 89 uint8_t report[9];
anhtran 0:e9fd5575b10e 90 #endif
anhtran 0:e9fd5575b10e 91 int keyboard_intf;
anhtran 0:e9fd5575b10e 92 bool keyboard_device_found;
anhtran 0:e9fd5575b10e 93
anhtran 0:e9fd5575b10e 94 bool dev_connected;
anhtran 0:e9fd5575b10e 95
anhtran 0:e9fd5575b10e 96 void rxHandler();
anhtran 0:e9fd5575b10e 97
anhtran 0:e9fd5575b10e 98 void (*onKey)(uint8_t key);
anhtran 0:e9fd5575b10e 99 void (*onKeyCode)(uint8_t key, uint8_t modifier);
anhtran 0:e9fd5575b10e 100
anhtran 0:e9fd5575b10e 101 int report_id;
anhtran 0:e9fd5575b10e 102
anhtran 0:e9fd5575b10e 103 void init();
anhtran 0:e9fd5575b10e 104
anhtran 0:e9fd5575b10e 105 };
anhtran 0:e9fd5575b10e 106
anhtran 0:e9fd5575b10e 107 #endif
anhtran 0:e9fd5575b10e 108
anhtran 0:e9fd5575b10e 109 #endif