HEBOCON machine

Dependencies:   mbed Motorfader Servo WT2003M03

Committer:
abanum
Date:
Mon Jul 29 05:51:31 2019 +0000
Revision:
1:312b63cf250e
Parent:
0:a30ec7d94c3a
first pubrish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
abanum 0:a30ec7d94c3a 1 /*
abanum 0:a30ec7d94c3a 2 * modified from
abanum 0:a30ec7d94c3a 3 * mbed USBHost Gamepad driver sample
abanum 0:a30ec7d94c3a 4 * Copyright (c) 2014 Yuuichi Akagawa
abanum 0:a30ec7d94c3a 5 *
abanum 0:a30ec7d94c3a 6 * modified from mbed USBHostMouse
abanum 0:a30ec7d94c3a 7 *
abanum 0:a30ec7d94c3a 8 * Copyright (c) 2014 mbed.org, MIT License
abanum 0:a30ec7d94c3a 9 *
abanum 0:a30ec7d94c3a 10 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
abanum 0:a30ec7d94c3a 11 * and associated documentation files (the "Software"), to deal in the Software without
abanum 0:a30ec7d94c3a 12 * restriction, including without limitation the rights to use, copy, modify, merge, publish,
abanum 0:a30ec7d94c3a 13 * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
abanum 0:a30ec7d94c3a 14 * Software is furnished to do so, subject to the following conditions:
abanum 0:a30ec7d94c3a 15 *
abanum 0:a30ec7d94c3a 16 * The above copyright notice and this permission notice shall be included in all copies or
abanum 0:a30ec7d94c3a 17 * substantial portions of the Software.
abanum 0:a30ec7d94c3a 18 *
abanum 0:a30ec7d94c3a 19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
abanum 0:a30ec7d94c3a 20 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
abanum 0:a30ec7d94c3a 21 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
abanum 0:a30ec7d94c3a 22 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
abanum 0:a30ec7d94c3a 23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
abanum 0:a30ec7d94c3a 24 */
abanum 0:a30ec7d94c3a 25
abanum 0:a30ec7d94c3a 26 #ifndef USBHOSTGAMEPAD_H
abanum 0:a30ec7d94c3a 27 #define USBHOSTGAMEPAD_H
abanum 0:a30ec7d94c3a 28
abanum 0:a30ec7d94c3a 29 #include "USBHostConf.h"
abanum 0:a30ec7d94c3a 30
abanum 0:a30ec7d94c3a 31 //#if USBHOST_GAMEPAD
abanum 0:a30ec7d94c3a 32
abanum 0:a30ec7d94c3a 33 #include "USBHost.h"
abanum 0:a30ec7d94c3a 34 //HID Class Request
abanum 0:a30ec7d94c3a 35 #define HID_GET_REPORT 0x01
abanum 0:a30ec7d94c3a 36 #define HID_GET_IDLE 0x02
abanum 0:a30ec7d94c3a 37 #define HID_GET_PROTOCOL 0x03
abanum 0:a30ec7d94c3a 38 #define HID_GET_DESCRIPTOR 0x06
abanum 0:a30ec7d94c3a 39 #define HID_SET_REPORT 0x09
abanum 0:a30ec7d94c3a 40 #define HID_SET_IDLE 0x0a
abanum 0:a30ec7d94c3a 41 #define HID_SET_PROTOCOL 0x0b
abanum 0:a30ec7d94c3a 42
abanum 0:a30ec7d94c3a 43 /**
abanum 0:a30ec7d94c3a 44 * A class to communicate a USB MIDI device
abanum 0:a30ec7d94c3a 45 */
abanum 0:a30ec7d94c3a 46 class USBHostGamepad : public IUSBEnumerator {
abanum 0:a30ec7d94c3a 47 public:
abanum 0:a30ec7d94c3a 48 /**
abanum 0:a30ec7d94c3a 49 * Constructor
abanum 0:a30ec7d94c3a 50 */
abanum 0:a30ec7d94c3a 51 USBHostGamepad();
abanum 0:a30ec7d94c3a 52
abanum 0:a30ec7d94c3a 53 /**
abanum 0:a30ec7d94c3a 54 * Try to connect a gamepad device
abanum 0:a30ec7d94c3a 55 *
abanum 0:a30ec7d94c3a 56 * @return true if connection was successful
abanum 0:a30ec7d94c3a 57 */
abanum 0:a30ec7d94c3a 58 bool connect();
abanum 0:a30ec7d94c3a 59
abanum 0:a30ec7d94c3a 60 /**
abanum 0:a30ec7d94c3a 61 * Check if a gamepad is connected
abanum 0:a30ec7d94c3a 62 *
abanum 0:a30ec7d94c3a 63 * @returns true if a gamepad is connected
abanum 0:a30ec7d94c3a 64 */
abanum 0:a30ec7d94c3a 65 bool connected();
abanum 0:a30ec7d94c3a 66
abanum 0:a30ec7d94c3a 67 uint8_t report[8]; /* modified 2016 Racoon */
abanum 0:a30ec7d94c3a 68 int rxSize;
abanum 0:a30ec7d94c3a 69
abanum 0:a30ec7d94c3a 70 protected:
abanum 0:a30ec7d94c3a 71 //From IUSBEnumerator
abanum 0:a30ec7d94c3a 72 virtual void setVidPid(uint16_t vid, uint16_t pid);
abanum 0:a30ec7d94c3a 73 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
abanum 0:a30ec7d94c3a 74 virtual bool useEndpoint(uint8_t intf_nb, ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir); //Must return true if the endpoint will be used
abanum 0:a30ec7d94c3a 75
abanum 0:a30ec7d94c3a 76 private:
abanum 0:a30ec7d94c3a 77 USBHost * host;
abanum 0:a30ec7d94c3a 78 USBDeviceConnected * dev;
abanum 0:a30ec7d94c3a 79 USBEndpoint * int_in;
abanum 0:a30ec7d94c3a 80
abanum 0:a30ec7d94c3a 81 bool dev_connected;
abanum 0:a30ec7d94c3a 82 bool gamepad_device_found;
abanum 0:a30ec7d94c3a 83 int gamepad_intf;
abanum 0:a30ec7d94c3a 84
abanum 0:a30ec7d94c3a 85 void rxHandler();
abanum 0:a30ec7d94c3a 86 void init();
abanum 0:a30ec7d94c3a 87 };
abanum 0:a30ec7d94c3a 88
abanum 0:a30ec7d94c3a 89 #endif
abanum 0:a30ec7d94c3a 90