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 /* mbed USBHost Library
abanum 0:a30ec7d94c3a 2 * Copyright (c) 2006-2013 ARM Limited
abanum 0:a30ec7d94c3a 3 *
abanum 0:a30ec7d94c3a 4 * Licensed under the Apache License, Version 2.0 (the "License");
abanum 0:a30ec7d94c3a 5 * you may not use this file except in compliance with the License.
abanum 0:a30ec7d94c3a 6 * You may obtain a copy of the License at
abanum 0:a30ec7d94c3a 7 *
abanum 0:a30ec7d94c3a 8 * http://www.apache.org/licenses/LICENSE-2.0
abanum 0:a30ec7d94c3a 9 *
abanum 0:a30ec7d94c3a 10 * Unless required by applicable law or agreed to in writing, software
abanum 0:a30ec7d94c3a 11 * distributed under the License is distributed on an "AS IS" BASIS,
abanum 0:a30ec7d94c3a 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
abanum 0:a30ec7d94c3a 13 * See the License for the specific language governing permissions and
abanum 0:a30ec7d94c3a 14 * limitations under the License.
abanum 0:a30ec7d94c3a 15 */
abanum 0:a30ec7d94c3a 16
abanum 0:a30ec7d94c3a 17 #include "USBDeviceConnected.h"
abanum 0:a30ec7d94c3a 18 #include "dbg.h"
abanum 0:a30ec7d94c3a 19
abanum 0:a30ec7d94c3a 20 USBDeviceConnected::USBDeviceConnected() {
abanum 0:a30ec7d94c3a 21 init();
abanum 0:a30ec7d94c3a 22 }
abanum 0:a30ec7d94c3a 23
abanum 0:a30ec7d94c3a 24 void USBDeviceConnected::init() {
abanum 0:a30ec7d94c3a 25 port = 0;
abanum 0:a30ec7d94c3a 26 vid = 0;
abanum 0:a30ec7d94c3a 27 pid = 0;
abanum 0:a30ec7d94c3a 28 nb_interf = 0;
abanum 0:a30ec7d94c3a 29 enumerated = false;
abanum 0:a30ec7d94c3a 30 device_class = 0;
abanum 0:a30ec7d94c3a 31 device_subclass = 0;
abanum 0:a30ec7d94c3a 32 proto = 0;
abanum 0:a30ec7d94c3a 33 lowSpeed = false;
abanum 0:a30ec7d94c3a 34 hub_parent = NULL;
abanum 0:a30ec7d94c3a 35 }
abanum 0:a30ec7d94c3a 36
abanum 0:a30ec7d94c3a 37 bool USBDeviceConnected::addInterface(uint8_t intf_nb, uint8_t intf_class, uint8_t intf_subclass, uint8_t intf_protocol) {
abanum 0:a30ec7d94c3a 38 USB_DBG("intf_nb=%d", intf_nb);
abanum 0:a30ec7d94c3a 39 if (intf.count(intf_nb) > 0) {
abanum 0:a30ec7d94c3a 40 return false;
abanum 0:a30ec7d94c3a 41 }
abanum 0:a30ec7d94c3a 42 intf[intf_nb] = new INTERFACE(intf_class, intf_subclass, intf_protocol);
abanum 0:a30ec7d94c3a 43 return true;
abanum 0:a30ec7d94c3a 44 }
abanum 0:a30ec7d94c3a 45
abanum 0:a30ec7d94c3a 46 bool USBDeviceConnected::addEndpoint(uint8_t intf_nb, USBEndpoint * ept) {
abanum 0:a30ec7d94c3a 47 if (intf.count(intf_nb) > 0) {
abanum 0:a30ec7d94c3a 48 intf[intf_nb]->ep.push_back(ept);
abanum 0:a30ec7d94c3a 49 return true;
abanum 0:a30ec7d94c3a 50 }
abanum 0:a30ec7d94c3a 51 return false;
abanum 0:a30ec7d94c3a 52 }
abanum 0:a30ec7d94c3a 53
abanum 0:a30ec7d94c3a 54 void USBDeviceConnected::init(USBDeviceConnected* parent, uint8_t port_, bool lowSpeed_) {
abanum 0:a30ec7d94c3a 55 USB_DBG("init dev: %p", this);
abanum 0:a30ec7d94c3a 56 init();
abanum 0:a30ec7d94c3a 57 hub_parent = parent;
abanum 0:a30ec7d94c3a 58 port = port_;
abanum 0:a30ec7d94c3a 59 lowSpeed = lowSpeed_;
abanum 0:a30ec7d94c3a 60 }
abanum 0:a30ec7d94c3a 61
abanum 0:a30ec7d94c3a 62 void USBDeviceConnected::disconnect() {
abanum 0:a30ec7d94c3a 63 //for(int i = 0; i < MAX_INTF; i++) {
abanum 0:a30ec7d94c3a 64 // intf[i].detach.call();
abanum 0:a30ec7d94c3a 65 //}
abanum 0:a30ec7d94c3a 66 //init();
abanum 0:a30ec7d94c3a 67 }
abanum 0:a30ec7d94c3a 68
abanum 0:a30ec7d94c3a 69
abanum 0:a30ec7d94c3a 70 USBEndpoint * USBDeviceConnected::getEndpoint(uint8_t intf_nb, ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir, uint8_t index) {
abanum 0:a30ec7d94c3a 71 USB_DBG("intf_nb=%d", intf_nb);
abanum 0:a30ec7d94c3a 72 USB_TEST_ASSERT(intf.count(intf_nb) > 0);
abanum 0:a30ec7d94c3a 73 INTERFACE* inter = intf[intf_nb];
abanum 0:a30ec7d94c3a 74 for (int i = 0; i < inter->ep.size(); i++) {
abanum 0:a30ec7d94c3a 75 if ((inter->ep[i]->getType() == type) && (inter->ep[i]->getDir() == dir)) {
abanum 0:a30ec7d94c3a 76 if(index) {
abanum 0:a30ec7d94c3a 77 index--;
abanum 0:a30ec7d94c3a 78 } else {
abanum 0:a30ec7d94c3a 79 return inter->ep[i];
abanum 0:a30ec7d94c3a 80 }
abanum 0:a30ec7d94c3a 81 }
abanum 0:a30ec7d94c3a 82 }
abanum 0:a30ec7d94c3a 83 return NULL;
abanum 0:a30ec7d94c3a 84 }
abanum 0:a30ec7d94c3a 85
abanum 0:a30ec7d94c3a 86 USBEndpoint * USBDeviceConnected::getEndpoint(uint8_t intf_nb, uint8_t index) {
abanum 0:a30ec7d94c3a 87 USB_TEST_ASSERT(intf.count(intf_nb) > 0);
abanum 0:a30ec7d94c3a 88 return intf[intf_nb]->ep[index];
abanum 0:a30ec7d94c3a 89 }
abanum 0:a30ec7d94c3a 90