only for STM32F769NI-DISCOVERY, porting from mbed OS5 unsupport functions

Committer:
kenjiArai
Date:
Wed Aug 07 05:33:53 2019 +0000
Revision:
0:dae1ac0c0a7b
only for STM32F769NI-DISCOVERY, porting from mbed OS5 unsupport functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:dae1ac0c0a7b 1 /* mbed USBHost Library
kenjiArai 0:dae1ac0c0a7b 2 * Copyright (c) 2006-2013 ARM Limited
kenjiArai 0:dae1ac0c0a7b 3 *
kenjiArai 0:dae1ac0c0a7b 4 * Licensed under the Apache License, Version 2.0 (the "License");
kenjiArai 0:dae1ac0c0a7b 5 * you may not use this file except in compliance with the License.
kenjiArai 0:dae1ac0c0a7b 6 * You may obtain a copy of the License at
kenjiArai 0:dae1ac0c0a7b 7 *
kenjiArai 0:dae1ac0c0a7b 8 * http://www.apache.org/licenses/LICENSE-2.0
kenjiArai 0:dae1ac0c0a7b 9 *
kenjiArai 0:dae1ac0c0a7b 10 * Unless required by applicable law or agreed to in writing, software
kenjiArai 0:dae1ac0c0a7b 11 * distributed under the License is distributed on an "AS IS" BASIS,
kenjiArai 0:dae1ac0c0a7b 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kenjiArai 0:dae1ac0c0a7b 13 * See the License for the specific language governing permissions and
kenjiArai 0:dae1ac0c0a7b 14 * limitations under the License.
kenjiArai 0:dae1ac0c0a7b 15 */
kenjiArai 0:dae1ac0c0a7b 16
kenjiArai 0:dae1ac0c0a7b 17 #ifndef USBHOSTHUB_H
kenjiArai 0:dae1ac0c0a7b 18 #define USBHOSTHUB_H
kenjiArai 0:dae1ac0c0a7b 19
kenjiArai 0:dae1ac0c0a7b 20 #include "USBHostConf.h"
kenjiArai 0:dae1ac0c0a7b 21
kenjiArai 0:dae1ac0c0a7b 22 #if MAX_HUB_NB
kenjiArai 0:dae1ac0c0a7b 23
kenjiArai 0:dae1ac0c0a7b 24 #include "USBHostTypes.h"
kenjiArai 0:dae1ac0c0a7b 25 #include "IUSBEnumerator.h"
kenjiArai 0:dae1ac0c0a7b 26
kenjiArai 0:dae1ac0c0a7b 27 class USBHost;
kenjiArai 0:dae1ac0c0a7b 28 class USBDeviceConnected;
kenjiArai 0:dae1ac0c0a7b 29 class USBEndpoint;
kenjiArai 0:dae1ac0c0a7b 30
kenjiArai 0:dae1ac0c0a7b 31 /**
kenjiArai 0:dae1ac0c0a7b 32 * A class to use a USB Hub
kenjiArai 0:dae1ac0c0a7b 33 */
kenjiArai 0:dae1ac0c0a7b 34 class USBHostHub : public IUSBEnumerator
kenjiArai 0:dae1ac0c0a7b 35 {
kenjiArai 0:dae1ac0c0a7b 36 public:
kenjiArai 0:dae1ac0c0a7b 37 /**
kenjiArai 0:dae1ac0c0a7b 38 * Constructor
kenjiArai 0:dae1ac0c0a7b 39 */
kenjiArai 0:dae1ac0c0a7b 40 USBHostHub();
kenjiArai 0:dae1ac0c0a7b 41
kenjiArai 0:dae1ac0c0a7b 42 /**
kenjiArai 0:dae1ac0c0a7b 43 * Check if a USB Hub is connected
kenjiArai 0:dae1ac0c0a7b 44 *
kenjiArai 0:dae1ac0c0a7b 45 * @return true if a serial device is connected
kenjiArai 0:dae1ac0c0a7b 46 */
kenjiArai 0:dae1ac0c0a7b 47 bool connected();
kenjiArai 0:dae1ac0c0a7b 48
kenjiArai 0:dae1ac0c0a7b 49 /**
kenjiArai 0:dae1ac0c0a7b 50 * Try to connect device
kenjiArai 0:dae1ac0c0a7b 51 *
kenjiArai 0:dae1ac0c0a7b 52 * @param dev device to connect
kenjiArai 0:dae1ac0c0a7b 53 * @return true if connection was successful
kenjiArai 0:dae1ac0c0a7b 54 */
kenjiArai 0:dae1ac0c0a7b 55 bool connect(USBDeviceConnected * dev);
kenjiArai 0:dae1ac0c0a7b 56
kenjiArai 0:dae1ac0c0a7b 57 /**
kenjiArai 0:dae1ac0c0a7b 58 * Automatically called by USBHost when a device
kenjiArai 0:dae1ac0c0a7b 59 * has been enumerated by usb_thread
kenjiArai 0:dae1ac0c0a7b 60 *
kenjiArai 0:dae1ac0c0a7b 61 * @param dev device connected
kenjiArai 0:dae1ac0c0a7b 62 */
kenjiArai 0:dae1ac0c0a7b 63 void deviceConnected(USBDeviceConnected * dev);
kenjiArai 0:dae1ac0c0a7b 64
kenjiArai 0:dae1ac0c0a7b 65 /**
kenjiArai 0:dae1ac0c0a7b 66 * Automatically called by USBHost when a device
kenjiArai 0:dae1ac0c0a7b 67 * has been disconnected from this hub
kenjiArai 0:dae1ac0c0a7b 68 *
kenjiArai 0:dae1ac0c0a7b 69 * @param dev device disconnected
kenjiArai 0:dae1ac0c0a7b 70 */
kenjiArai 0:dae1ac0c0a7b 71 void deviceDisconnected(USBDeviceConnected * dev);
kenjiArai 0:dae1ac0c0a7b 72
kenjiArai 0:dae1ac0c0a7b 73 /**
kenjiArai 0:dae1ac0c0a7b 74 * Rest a specific port
kenjiArai 0:dae1ac0c0a7b 75 *
kenjiArai 0:dae1ac0c0a7b 76 * @param port port number
kenjiArai 0:dae1ac0c0a7b 77 */
kenjiArai 0:dae1ac0c0a7b 78 void portReset(uint8_t port);
kenjiArai 0:dae1ac0c0a7b 79
kenjiArai 0:dae1ac0c0a7b 80 /*
kenjiArai 0:dae1ac0c0a7b 81 * Called by USBHost to set the instance of USBHost
kenjiArai 0:dae1ac0c0a7b 82 *
kenjiArai 0:dae1ac0c0a7b 83 * @param host host instance
kenjiArai 0:dae1ac0c0a7b 84 */
kenjiArai 0:dae1ac0c0a7b 85 void setHost(USBHost * host);
kenjiArai 0:dae1ac0c0a7b 86
kenjiArai 0:dae1ac0c0a7b 87 /**
kenjiArai 0:dae1ac0c0a7b 88 * Called by USBhost when a hub has been disconnected
kenjiArai 0:dae1ac0c0a7b 89 */
kenjiArai 0:dae1ac0c0a7b 90 void hubDisconnected();
kenjiArai 0:dae1ac0c0a7b 91
kenjiArai 0:dae1ac0c0a7b 92 protected:
kenjiArai 0:dae1ac0c0a7b 93 //From IUSBEnumerator
kenjiArai 0:dae1ac0c0a7b 94 virtual void setVidPid(uint16_t vid, uint16_t pid);
kenjiArai 0:dae1ac0c0a7b 95 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
kenjiArai 0:dae1ac0c0a7b 96 virtual bool useEndpoint(uint8_t intf_nb, ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir); //Must return true if the endpoint will be used
kenjiArai 0:dae1ac0c0a7b 97
kenjiArai 0:dae1ac0c0a7b 98 private:
kenjiArai 0:dae1ac0c0a7b 99 USBHost * host;
kenjiArai 0:dae1ac0c0a7b 100 USBDeviceConnected * dev;
kenjiArai 0:dae1ac0c0a7b 101 bool dev_connected;
kenjiArai 0:dae1ac0c0a7b 102 USBEndpoint * int_in;
kenjiArai 0:dae1ac0c0a7b 103 uint8_t nb_port;
kenjiArai 0:dae1ac0c0a7b 104 uint8_t hub_characteristics;
kenjiArai 0:dae1ac0c0a7b 105
kenjiArai 0:dae1ac0c0a7b 106 void rxHandler();
kenjiArai 0:dae1ac0c0a7b 107
kenjiArai 0:dae1ac0c0a7b 108 uint8_t buf[sizeof(HubDescriptor)];
kenjiArai 0:dae1ac0c0a7b 109
kenjiArai 0:dae1ac0c0a7b 110 int hub_intf;
kenjiArai 0:dae1ac0c0a7b 111 bool hub_device_found;
kenjiArai 0:dae1ac0c0a7b 112
kenjiArai 0:dae1ac0c0a7b 113 void setPortFeature(uint32_t feature, uint8_t port);
kenjiArai 0:dae1ac0c0a7b 114 void clearPortFeature(uint32_t feature, uint8_t port);
kenjiArai 0:dae1ac0c0a7b 115 uint32_t getPortStatus(uint8_t port);
kenjiArai 0:dae1ac0c0a7b 116
kenjiArai 0:dae1ac0c0a7b 117 USBDeviceConnected * device_children[MAX_HUB_PORT];
kenjiArai 0:dae1ac0c0a7b 118
kenjiArai 0:dae1ac0c0a7b 119 void init();
kenjiArai 0:dae1ac0c0a7b 120 void disconnect();
kenjiArai 0:dae1ac0c0a7b 121
kenjiArai 0:dae1ac0c0a7b 122 };
kenjiArai 0:dae1ac0c0a7b 123
kenjiArai 0:dae1ac0c0a7b 124 #endif
kenjiArai 0:dae1ac0c0a7b 125
kenjiArai 0:dae1ac0c0a7b 126 #endif