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 USBHOSTMOUSE_H
anhtran 0:e9fd5575b10e 18 #define USBHOSTMOUSE_H
anhtran 0:e9fd5575b10e 19
anhtran 0:e9fd5575b10e 20 #include "USBHostConf.h"
anhtran 0:e9fd5575b10e 21
anhtran 0:e9fd5575b10e 22 #if USBHOST_MOUSE
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 mouse
anhtran 0:e9fd5575b10e 28 */
anhtran 0:e9fd5575b10e 29 class USBHostMouse : 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 USBHostMouse();
anhtran 0:e9fd5575b10e 36 #if defined(TARGET_RZ_A2XX)
anhtran 0:e9fd5575b10e 37 ~USBHostMouse();
anhtran 0:e9fd5575b10e 38 #endif
anhtran 0:e9fd5575b10e 39
anhtran 0:e9fd5575b10e 40 /**
anhtran 0:e9fd5575b10e 41 * Try to connect a mouse 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 mouse is connected
anhtran 0:e9fd5575b10e 49 *
anhtran 0:e9fd5575b10e 50 * @returns true if a mouse 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 mouse 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 attachEvent(void (*ptr)(uint8_t buttons, int8_t x, int8_t y, int8_t z)) {
anhtran 0:e9fd5575b10e 60 if (ptr != NULL) {
anhtran 0:e9fd5575b10e 61 onUpdate = 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 the button state changes
anhtran 0:e9fd5575b10e 67 *
anhtran 0:e9fd5575b10e 68 * @param ptr function pointer
anhtran 0:e9fd5575b10e 69 */
anhtran 0:e9fd5575b10e 70 inline void attachButtonEvent(void (*ptr)(uint8_t buttons)) {
anhtran 0:e9fd5575b10e 71 if (ptr != NULL) {
anhtran 0:e9fd5575b10e 72 onButtonUpdate = ptr;
anhtran 0:e9fd5575b10e 73 }
anhtran 0:e9fd5575b10e 74 }
anhtran 0:e9fd5575b10e 75
anhtran 0:e9fd5575b10e 76 /**
anhtran 0:e9fd5575b10e 77 * Attach a callback called when the X axis value changes
anhtran 0:e9fd5575b10e 78 *
anhtran 0:e9fd5575b10e 79 * @param ptr function pointer
anhtran 0:e9fd5575b10e 80 */
anhtran 0:e9fd5575b10e 81 inline void attachXEvent(void (*ptr)(int8_t x)) {
anhtran 0:e9fd5575b10e 82 if (ptr != NULL) {
anhtran 0:e9fd5575b10e 83 onXUpdate = ptr;
anhtran 0:e9fd5575b10e 84 }
anhtran 0:e9fd5575b10e 85 }
anhtran 0:e9fd5575b10e 86
anhtran 0:e9fd5575b10e 87 /**
anhtran 0:e9fd5575b10e 88 * Attach a callback called when the Y axis value changes
anhtran 0:e9fd5575b10e 89 *
anhtran 0:e9fd5575b10e 90 * @param ptr function pointer
anhtran 0:e9fd5575b10e 91 */
anhtran 0:e9fd5575b10e 92 inline void attachYEvent(void (*ptr)(int8_t y)) {
anhtran 0:e9fd5575b10e 93 if (ptr != NULL) {
anhtran 0:e9fd5575b10e 94 onYUpdate = ptr;
anhtran 0:e9fd5575b10e 95 }
anhtran 0:e9fd5575b10e 96 }
anhtran 0:e9fd5575b10e 97
anhtran 0:e9fd5575b10e 98 /**
anhtran 0:e9fd5575b10e 99 * Attach a callback called when the Z axis value changes (scrolling)
anhtran 0:e9fd5575b10e 100 *
anhtran 0:e9fd5575b10e 101 * @param ptr function pointer
anhtran 0:e9fd5575b10e 102 */
anhtran 0:e9fd5575b10e 103 inline void attachZEvent(void (*ptr)(int8_t z)) {
anhtran 0:e9fd5575b10e 104 if (ptr != NULL) {
anhtran 0:e9fd5575b10e 105 onZUpdate = ptr;
anhtran 0:e9fd5575b10e 106 }
anhtran 0:e9fd5575b10e 107 }
anhtran 0:e9fd5575b10e 108
anhtran 0:e9fd5575b10e 109 protected:
anhtran 0:e9fd5575b10e 110 //From IUSBEnumerator
anhtran 0:e9fd5575b10e 111 virtual void setVidPid(uint16_t vid, uint16_t pid);
anhtran 0:e9fd5575b10e 112 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 113 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 114
anhtran 0:e9fd5575b10e 115 private:
anhtran 0:e9fd5575b10e 116 USBHost * host;
anhtran 0:e9fd5575b10e 117 USBDeviceConnected * dev;
anhtran 0:e9fd5575b10e 118 USBEndpoint * int_in;
anhtran 0:e9fd5575b10e 119 #if defined(TARGET_RZ_A2XX)
anhtran 0:e9fd5575b10e 120 uint8_t * report;
anhtran 0:e9fd5575b10e 121 #else
anhtran 0:e9fd5575b10e 122 uint8_t report[8];
anhtran 0:e9fd5575b10e 123 #endif
anhtran 0:e9fd5575b10e 124
anhtran 0:e9fd5575b10e 125 bool dev_connected;
anhtran 0:e9fd5575b10e 126 bool mouse_device_found;
anhtran 0:e9fd5575b10e 127 int mouse_intf;
anhtran 0:e9fd5575b10e 128
anhtran 0:e9fd5575b10e 129 uint8_t buttons;
anhtran 0:e9fd5575b10e 130 int8_t x;
anhtran 0:e9fd5575b10e 131 int8_t y;
anhtran 0:e9fd5575b10e 132 int8_t z;
anhtran 0:e9fd5575b10e 133
anhtran 0:e9fd5575b10e 134 void rxHandler();
anhtran 0:e9fd5575b10e 135 void (*onUpdate)(uint8_t buttons, int8_t x, int8_t y, int8_t z);
anhtran 0:e9fd5575b10e 136 void (*onButtonUpdate)(uint8_t buttons);
anhtran 0:e9fd5575b10e 137 void (*onXUpdate)(int8_t x);
anhtran 0:e9fd5575b10e 138 void (*onYUpdate)(int8_t y);
anhtran 0:e9fd5575b10e 139 void (*onZUpdate)(int8_t z);
anhtran 0:e9fd5575b10e 140 int report_id;
anhtran 0:e9fd5575b10e 141 void init();
anhtran 0:e9fd5575b10e 142 };
anhtran 0:e9fd5575b10e 143
anhtran 0:e9fd5575b10e 144 #endif
anhtran 0:e9fd5575b10e 145
anhtran 0:e9fd5575b10e 146 #endif