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 #pragma once
abanum 0:a30ec7d94c3a 2 #include "mbed.h"
abanum 0:a30ec7d94c3a 3 #include "USBHostTypes.h"
abanum 0:a30ec7d94c3a 4 #include "USBEndpoint.h"
abanum 0:a30ec7d94c3a 5
abanum 0:a30ec7d94c3a 6 class HC {
abanum 0:a30ec7d94c3a 7 static const uint8_t DIR_IN = 1;
abanum 0:a30ec7d94c3a 8 static const uint8_t DIR_OUT = 0;
abanum 0:a30ec7d94c3a 9
abanum 0:a30ec7d94c3a 10 public:
abanum 0:a30ec7d94c3a 11 HC();
abanum 0:a30ec7d94c3a 12 HC(int ch);
abanum 0:a30ec7d94c3a 13 ~HC();
abanum 0:a30ec7d94c3a 14 HAL_StatusTypeDef Init(uint8_t epnum, uint8_t dev_address, uint8_t speed, uint8_t ep_type, uint16_t mps);
abanum 0:a30ec7d94c3a 15 HAL_StatusTypeDef SubmitRequest(uint8_t* pbuff, uint16_t length, bool setup = false);
abanum 0:a30ec7d94c3a 16 HCD_URBStateTypeDef GetURBState();
abanum 0:a30ec7d94c3a 17 HCD_HCStateTypeDef GetState();
abanum 0:a30ec7d94c3a 18 uint32_t GetXferCount();
abanum 0:a30ec7d94c3a 19 void SetToggle(uint8_t toggle);
abanum 0:a30ec7d94c3a 20
abanum 0:a30ec7d94c3a 21 static uint8_t slot;
abanum 0:a30ec7d94c3a 22
abanum 0:a30ec7d94c3a 23 private:
abanum 0:a30ec7d94c3a 24 int _ch;
abanum 0:a30ec7d94c3a 25 uint8_t _ep_addr;
abanum 0:a30ec7d94c3a 26 uint8_t _ep_type;
abanum 0:a30ec7d94c3a 27 };
abanum 0:a30ec7d94c3a 28
abanum 0:a30ec7d94c3a 29 class USBHALHost {
abanum 0:a30ec7d94c3a 30 public:
abanum 0:a30ec7d94c3a 31 uint8_t LastStatus;
abanum 0:a30ec7d94c3a 32 uint8_t prev_LastStatus;
abanum 0:a30ec7d94c3a 33
abanum 0:a30ec7d94c3a 34 protected:
abanum 0:a30ec7d94c3a 35 USBHALHost();
abanum 0:a30ec7d94c3a 36 void init();
abanum 0:a30ec7d94c3a 37 virtual bool addDevice(USBDeviceConnected* parent, int port, bool lowSpeed) = 0;
abanum 0:a30ec7d94c3a 38 int token_setup(USBEndpoint* ep, SETUP_PACKET* setup, uint16_t wLength = 0);
abanum 0:a30ec7d94c3a 39 int token_iso_in(USBEndpoint* ep, uint8_t* data, int size);
abanum 0:a30ec7d94c3a 40 int multi_token_in(USBEndpoint* ep, uint8_t* data = NULL, size_t total = 0, bool block = true);
abanum 0:a30ec7d94c3a 41 int multi_token_out(USBEndpoint* ep, const uint8_t* data = NULL, size_t total = 0);
abanum 0:a30ec7d94c3a 42 void multi_token_inNB(USBEndpoint* ep, uint8_t* data, int size);
abanum 0:a30ec7d94c3a 43 USB_TYPE multi_token_inNB_result(USBEndpoint* ep);
abanum 0:a30ec7d94c3a 44 void setToggle(USBEndpoint* ep, uint8_t toggle);
abanum 0:a30ec7d94c3a 45
abanum 0:a30ec7d94c3a 46 private:
abanum 0:a30ec7d94c3a 47 int token_in(USBEndpoint* ep, uint8_t* data = NULL, int size = 0, int retryLimit = 10);
abanum 0:a30ec7d94c3a 48 int token_out(USBEndpoint* ep, const uint8_t* data = NULL, int size = 0, int retryLimit = 10);
abanum 0:a30ec7d94c3a 49 int token_ctl_in(USBEndpoint* ep, uint8_t* data, int size, int retryLimit);
abanum 0:a30ec7d94c3a 50 int token_int_in(USBEndpoint* ep, uint8_t* data, int size);
abanum 0:a30ec7d94c3a 51 int token_blk_in(USBEndpoint* ep, uint8_t* data, int size, int retryLimit);
abanum 0:a30ec7d94c3a 52 int token_ctl_out(USBEndpoint* ep, const uint8_t* data, int size, int retryLimit);
abanum 0:a30ec7d94c3a 53 int token_int_out(USBEndpoint* ep, const uint8_t* data, int size);
abanum 0:a30ec7d94c3a 54 int token_blk_out(USBEndpoint* ep, const uint8_t* data, int size, int retryLimit);
abanum 0:a30ec7d94c3a 55 bool wait_attach();
abanum 0:a30ec7d94c3a 56 static USBHALHost * instHost;
abanum 0:a30ec7d94c3a 57 };
abanum 0:a30ec7d94c3a 58
abanum 0:a30ec7d94c3a 59