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 USBHOSTHUB_H
anhtran 0:e9fd5575b10e 18 #define USBHOSTHUB_H
anhtran 0:e9fd5575b10e 19
anhtran 0:e9fd5575b10e 20 #include "USBHostConf.h"
anhtran 0:e9fd5575b10e 21
anhtran 0:e9fd5575b10e 22 #if MAX_HUB_NB
anhtran 0:e9fd5575b10e 23
anhtran 0:e9fd5575b10e 24 #include "USBHostTypes.h"
anhtran 0:e9fd5575b10e 25 #include "IUSBEnumerator.h"
anhtran 0:e9fd5575b10e 26
anhtran 0:e9fd5575b10e 27 class USBHost;
anhtran 0:e9fd5575b10e 28 class USBDeviceConnected;
anhtran 0:e9fd5575b10e 29 class USBEndpoint;
anhtran 0:e9fd5575b10e 30
anhtran 0:e9fd5575b10e 31 /**
anhtran 0:e9fd5575b10e 32 * A class to use a USB Hub
anhtran 0:e9fd5575b10e 33 */
anhtran 0:e9fd5575b10e 34 class USBHostHub : public IUSBEnumerator {
anhtran 0:e9fd5575b10e 35 public:
anhtran 0:e9fd5575b10e 36 /**
anhtran 0:e9fd5575b10e 37 * Constructor
anhtran 0:e9fd5575b10e 38 */
anhtran 0:e9fd5575b10e 39 USBHostHub();
anhtran 0:e9fd5575b10e 40 #if defined(TARGET_RZ_A2XX)
anhtran 0:e9fd5575b10e 41 ~USBHostHub();
anhtran 0:e9fd5575b10e 42 #endif
anhtran 0:e9fd5575b10e 43
anhtran 0:e9fd5575b10e 44 /**
anhtran 0:e9fd5575b10e 45 * Check if a USB Hub is connected
anhtran 0:e9fd5575b10e 46 *
anhtran 0:e9fd5575b10e 47 * @return true if a serial device is connected
anhtran 0:e9fd5575b10e 48 */
anhtran 0:e9fd5575b10e 49 bool connected();
anhtran 0:e9fd5575b10e 50
anhtran 0:e9fd5575b10e 51 /**
anhtran 0:e9fd5575b10e 52 * Try to connect device
anhtran 0:e9fd5575b10e 53 *
anhtran 0:e9fd5575b10e 54 * @param dev device to connect
anhtran 0:e9fd5575b10e 55 * @return true if connection was successful
anhtran 0:e9fd5575b10e 56 */
anhtran 0:e9fd5575b10e 57 bool connect(USBDeviceConnected * dev);
anhtran 0:e9fd5575b10e 58
anhtran 0:e9fd5575b10e 59 /**
anhtran 0:e9fd5575b10e 60 * Automatically called by USBHost when a device
anhtran 0:e9fd5575b10e 61 * has been enumerated by usb_thread
anhtran 0:e9fd5575b10e 62 *
anhtran 0:e9fd5575b10e 63 * @param dev device connected
anhtran 0:e9fd5575b10e 64 */
anhtran 0:e9fd5575b10e 65 void deviceConnected(USBDeviceConnected * dev);
anhtran 0:e9fd5575b10e 66
anhtran 0:e9fd5575b10e 67 /**
anhtran 0:e9fd5575b10e 68 * Automatically called by USBHost when a device
anhtran 0:e9fd5575b10e 69 * has been disconnected from this hub
anhtran 0:e9fd5575b10e 70 *
anhtran 0:e9fd5575b10e 71 * @param dev device disconnected
anhtran 0:e9fd5575b10e 72 */
anhtran 0:e9fd5575b10e 73 void deviceDisconnected(USBDeviceConnected * dev);
anhtran 0:e9fd5575b10e 74
anhtran 0:e9fd5575b10e 75 /**
anhtran 0:e9fd5575b10e 76 * Rest a specific port
anhtran 0:e9fd5575b10e 77 *
anhtran 0:e9fd5575b10e 78 * @param port port number
anhtran 0:e9fd5575b10e 79 */
anhtran 0:e9fd5575b10e 80 void portReset(uint8_t port);
anhtran 0:e9fd5575b10e 81
anhtran 0:e9fd5575b10e 82 /*
anhtran 0:e9fd5575b10e 83 * Called by USBHost to set the instance of USBHost
anhtran 0:e9fd5575b10e 84 *
anhtran 0:e9fd5575b10e 85 * @param host host instance
anhtran 0:e9fd5575b10e 86 */
anhtran 0:e9fd5575b10e 87 void setHost(USBHost * host);
anhtran 0:e9fd5575b10e 88
anhtran 0:e9fd5575b10e 89 /**
anhtran 0:e9fd5575b10e 90 * Called by USBhost when a hub has been disconnected
anhtran 0:e9fd5575b10e 91 */
anhtran 0:e9fd5575b10e 92 void hubDisconnected();
anhtran 0:e9fd5575b10e 93
anhtran 0:e9fd5575b10e 94 protected:
anhtran 0:e9fd5575b10e 95 //From IUSBEnumerator
anhtran 0:e9fd5575b10e 96 virtual void setVidPid(uint16_t vid, uint16_t pid);
anhtran 0:e9fd5575b10e 97 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 98 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 99
anhtran 0:e9fd5575b10e 100 private:
anhtran 0:e9fd5575b10e 101 USBHost * host;
anhtran 0:e9fd5575b10e 102 USBDeviceConnected * dev;
anhtran 0:e9fd5575b10e 103 bool dev_connected;
anhtran 0:e9fd5575b10e 104 USBEndpoint * int_in;
anhtran 0:e9fd5575b10e 105 uint8_t nb_port;
anhtran 0:e9fd5575b10e 106 uint8_t hub_characteristics;
anhtran 0:e9fd5575b10e 107
anhtran 0:e9fd5575b10e 108 void rxHandler();
anhtran 0:e9fd5575b10e 109
anhtran 0:e9fd5575b10e 110 #if defined(TARGET_RZ_A2XX)
anhtran 0:e9fd5575b10e 111 uint8_t * buf;
anhtran 0:e9fd5575b10e 112 uint32_t * p_st;
anhtran 0:e9fd5575b10e 113 #else
anhtran 0:e9fd5575b10e 114 uint8_t buf[sizeof(HubDescriptor)];
anhtran 0:e9fd5575b10e 115 #endif
anhtran 0:e9fd5575b10e 116
anhtran 0:e9fd5575b10e 117 int hub_intf;
anhtran 0:e9fd5575b10e 118 bool hub_device_found;
anhtran 0:e9fd5575b10e 119
anhtran 0:e9fd5575b10e 120 void setPortFeature(uint32_t feature, uint8_t port);
anhtran 0:e9fd5575b10e 121 void clearPortFeature(uint32_t feature, uint8_t port);
anhtran 0:e9fd5575b10e 122 uint32_t getPortStatus(uint8_t port);
anhtran 0:e9fd5575b10e 123
anhtran 0:e9fd5575b10e 124 USBDeviceConnected * device_children[MAX_HUB_PORT];
anhtran 0:e9fd5575b10e 125
anhtran 0:e9fd5575b10e 126 void init();
anhtran 0:e9fd5575b10e 127 void disconnect();
anhtran 0:e9fd5575b10e 128
anhtran 0:e9fd5575b10e 129 };
anhtran 0:e9fd5575b10e 130
anhtran 0:e9fd5575b10e 131 #endif
anhtran 0:e9fd5575b10e 132
anhtran 0:e9fd5575b10e 133 #endif