USBHost library. NOTE: This library is only officially supported on the LPC1768 platform. For more information, please see the handbook page.
Dependencies: FATFileSystem mbed-rtos
Dependents: BTstack WallbotWii SD to Flash Data Transfer USBHost-MSD_HelloWorld ... more
USBHostMouse.h
00001 /* mbed USBHost Library 00002 * Copyright (c) 2006-2013 ARM Limited 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 00017 #ifndef USBHOSTMOUSE_H 00018 #define USBHOSTMOUSE_H 00019 00020 #include "USBHostConf.h" 00021 00022 #if USBHOST_MOUSE 00023 00024 #include "USBHost.h" 00025 00026 /** 00027 * A class to communicate a USB mouse 00028 */ 00029 class USBHostMouse : public IUSBEnumerator 00030 { 00031 public: 00032 00033 /** 00034 * Constructor 00035 */ 00036 USBHostMouse(); 00037 00038 /** 00039 * Try to connect a mouse device 00040 * 00041 * @return true if connection was successful 00042 */ 00043 bool connect(); 00044 00045 /** 00046 * Check if a mouse is connected 00047 * 00048 * @returns true if a mouse is connected 00049 */ 00050 bool connected(); 00051 00052 /** 00053 * Attach a callback called when a mouse event is received 00054 * 00055 * @param ptr function pointer 00056 */ 00057 inline void attachEvent(void (*ptr)(uint8_t buttons, int8_t x, int8_t y, int8_t z)) 00058 { 00059 if (ptr != NULL) { 00060 onUpdate = ptr; 00061 } 00062 } 00063 00064 /** 00065 * Attach a callback called when the button state changes 00066 * 00067 * @param ptr function pointer 00068 */ 00069 inline void attachButtonEvent(void (*ptr)(uint8_t buttons)) 00070 { 00071 if (ptr != NULL) { 00072 onButtonUpdate = ptr; 00073 } 00074 } 00075 00076 /** 00077 * Attach a callback called when the X axis value changes 00078 * 00079 * @param ptr function pointer 00080 */ 00081 inline void attachXEvent(void (*ptr)(int8_t x)) 00082 { 00083 if (ptr != NULL) { 00084 onXUpdate = ptr; 00085 } 00086 } 00087 00088 /** 00089 * Attach a callback called when the Y axis value changes 00090 * 00091 * @param ptr function pointer 00092 */ 00093 inline void attachYEvent(void (*ptr)(int8_t y)) 00094 { 00095 if (ptr != NULL) { 00096 onYUpdate = ptr; 00097 } 00098 } 00099 00100 /** 00101 * Attach a callback called when the Z axis value changes (scrolling) 00102 * 00103 * @param ptr function pointer 00104 */ 00105 inline void attachZEvent(void (*ptr)(int8_t z)) 00106 { 00107 if (ptr != NULL) { 00108 onZUpdate = ptr; 00109 } 00110 } 00111 00112 protected: 00113 //From IUSBEnumerator 00114 virtual void setVidPid(uint16_t vid, uint16_t pid); 00115 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 00116 virtual bool useEndpoint(uint8_t intf_nb, ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir); //Must return true if the endpoint will be used 00117 00118 private: 00119 USBHost * host; 00120 USBDeviceConnected * dev; 00121 USBEndpoint * int_in; 00122 uint8_t report[64]; 00123 bool dev_connected; 00124 bool mouse_device_found; 00125 int mouse_intf; 00126 00127 uint8_t buttons; 00128 int8_t x; 00129 int8_t y; 00130 int8_t z; 00131 00132 void rxHandler(); 00133 void (*onUpdate)(uint8_t buttons, int8_t x, int8_t y, int8_t z); 00134 void (*onButtonUpdate)(uint8_t buttons); 00135 void (*onXUpdate)(int8_t x); 00136 void (*onYUpdate)(int8_t y); 00137 void (*onZUpdate)(int8_t z); 00138 int report_id; 00139 void init(); 00140 }; 00141 00142 #endif 00143 00144 #endif
Generated on Tue Jul 12 2022 13:32:26 by 1.7.2