summaryrefslogtreecommitdiff
path: root/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcacm.h
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcacm.h')
-rw-r--r--tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcacm.h252
1 files changed, 0 insertions, 252 deletions
diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcacm.h b/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcacm.h
deleted file mode 100644
index 2a38524d8c..0000000000
--- a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/cdcacm.h
+++ /dev/null
@@ -1,252 +0,0 @@
-/* Copyright (C) 2011 Circuits At Home, LTD. All rights reserved.
-
-This software may be distributed and modified under the terms of the GNU
-General Public License version 2 (GPL2) as published by the Free Software
-Foundation and appearing in the file GPL2.TXT included in the packaging of
-this file. Please note that GPL2 Section 2[b] requires that all works based
-on this software must also be made publicly available under the terms of
-the GPL2 ("Copyleft").
-
-Contact information
--------------------
-
-Circuits At Home, LTD
-Web : http://www.circuitsathome.com
-e-mail : support@circuitsathome.com
- */
-#if !defined(__CDCACM_H__)
-#define __CDCACM_H__
-
-#include "Usb.h"
-
-#define bmREQ_CDCOUT USB_SETUP_HOST_TO_DEVICE|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_INTERFACE
-#define bmREQ_CDCIN USB_SETUP_DEVICE_TO_HOST|USB_SETUP_TYPE_CLASS|USB_SETUP_RECIPIENT_INTERFACE
-
-// CDC Subclass Constants
-#define CDC_SUBCLASS_DLCM 0x01 // Direct Line Control Model
-#define CDC_SUBCLASS_ACM 0x02 // Abstract Control Model
-#define CDC_SUBCLASS_TCM 0x03 // Telephone Control Model
-#define CDC_SUBCLASS_MCCM 0x04 // Multi Channel Control Model
-#define CDC_SUBCLASS_CAPI 0x05 // CAPI Control Model
-#define CDC_SUBCLASS_ETHERNET 0x06 // Ethernet Network Control Model
-#define CDC_SUBCLASS_ATM 0x07 // ATM Network Control Model
-#define CDC_SUBCLASS_WIRELESS_HANDSET 0x08 // Wireless Handset Control Model
-#define CDC_SUBCLASS_DEVICE_MANAGEMENT 0x09 // Device Management
-#define CDC_SUBCLASS_MOBILE_DIRECT_LINE 0x0A // Mobile Direct Line Model
-#define CDC_SUBCLASS_OBEX 0x0B // OBEX
-#define CDC_SUBCLASS_ETHERNET_EMU 0x0C // Ethernet Emulation Model
-
-// Communication Interface Class Control Protocol Codes
-#define CDC_PROTOCOL_ITU_T_V_250 0x01 // AT Commands defined by ITU-T V.250
-#define CDC_PROTOCOL_PCCA_101 0x02 // AT Commands defined by PCCA-101
-#define CDC_PROTOCOL_PCCA_101_O 0x03 // AT Commands defined by PCCA-101 & Annex O
-#define CDC_PROTOCOL_GSM_7_07 0x04 // AT Commands defined by GSM 7.07
-#define CDC_PROTOCOL_3GPP_27_07 0x05 // AT Commands defined by 3GPP 27.007
-#define CDC_PROTOCOL_C_S0017_0 0x06 // AT Commands defined by TIA for CDMA
-#define CDC_PROTOCOL_USB_EEM 0x07 // Ethernet Emulation Model
-
-// CDC Commands defined by CDC 1.2
-#define CDC_SEND_ENCAPSULATED_COMMAND 0x00
-#define CDC_GET_ENCAPSULATED_RESPONSE 0x01
-
-// CDC Commands defined by PSTN 1.2
-#define CDC_SET_COMM_FEATURE 0x02
-#define CDC_GET_COMM_FEATURE 0x03
-#define CDC_CLEAR_COMM_FEATURE 0x04
-#define CDC_SET_AUX_LINE_STATE 0x10
-#define CDC_SET_HOOK_STATE 0x11
-#define CDC_PULSE_SETUP 0x12
-#define CDC_SEND_PULSE 0x13
-#define CDC_SET_PULSE_TIME 0x14
-#define CDC_RING_AUX_JACK 0x15
-#define CDC_SET_LINE_CODING 0x20
-#define CDC_GET_LINE_CODING 0x21
-#define CDC_SET_CONTROL_LINE_STATE 0x22
-#define CDC_SEND_BREAK 0x23
-#define CDC_SET_RINGER_PARMS 0x30
-#define CDC_GET_RINGER_PARMS 0x31
-#define CDC_SET_OPERATION_PARMS 0x32
-#define CDC_GET_OPERATION_PARMS 0x33
-#define CDC_SET_LINE_PARMS 0x34
-#define CDC_GET_LINE_PARMS 0x35
-#define CDC_DIAL_DIGITS 0x36
-
-//Class-Specific Notification Codes
-#define NETWORK_CONNECTION 0x00
-#define RESPONSE_AVAILABLE 0x01
-#define AUX_JACK_HOOK_STATE 0x08
-#define RING_DETECT 0x09
-#define SERIAL_STATE 0x20
-#define CALL_STATE_CHANGE 0x28
-#define LINE_STATE_CHANGE 0x29
-#define CONNECTION_SPEED_CHANGE 0x2a
-
-// CDC Functional Descriptor Structures
-
-typedef struct {
- uint8_t bFunctionLength;
- uint8_t bDescriptorType;
- uint8_t bDescriptorSubtype;
- uint8_t bmCapabilities;
- uint8_t bDataInterface;
-} CALL_MGMNT_FUNC_DESCR;
-
-typedef struct {
- uint8_t bFunctionLength;
- uint8_t bDescriptorType;
- uint8_t bDescriptorSubtype;
- uint8_t bmCapabilities;
-} ACM_FUNC_DESCR, DLM_FUNC_DESCR, TEL_OPER_MODES_FUNC_DESCR,
-TEL_CALL_STATE_REP_CPBL_FUNC_DESCR;
-
-typedef struct {
- uint8_t bFunctionLength;
- uint8_t bDescriptorType;
- uint8_t bDescriptorSubtype;
- uint8_t bRingerVolSteps;
- uint8_t bNumRingerPatterns;
-} TEL_RINGER_FUNC_DESCR;
-
-typedef struct {
- uint32_t dwDTERate; // Data Terminal Rate in bits per second
- uint8_t bCharFormat; // 0 - 1 stop bit, 1 - 1.5 stop bits, 2 - 2 stop bits
- uint8_t bParityType; // 0 - None, 1 - Odd, 2 - Even, 3 - Mark, 4 - Space
- uint8_t bDataBits; // Data bits (5, 6, 7, 8 or 16)
-} LINE_CODING;
-
-typedef struct {
- uint8_t bmRequestType; // 0xa1 for class-specific notifications
- uint8_t bNotification;
- uint16_t wValue;
- uint16_t wIndex;
- uint16_t wLength;
- uint16_t bmState; //UART state bitmap for SERIAL_STATE, other notifications variable length
-} CLASS_NOTIFICATION;
-
-class ACM;
-
-class CDCAsyncOper {
-public:
-
- virtual uint8_t OnInit(ACM *pacm) {
- return 0;
- };
- //virtual void OnDataRcvd(ACM *pacm, uint8_t nbytes, uint8_t *dataptr) = 0;
- //virtual void OnDisconnected(ACM *pacm) = 0;
-};
-
-/**
- * This structure is used to report the extended capabilities of the connected device.
- * It is also used to report the current status.
- * Regular CDC-ACM reports all as false.
- */
-typedef struct {
-
- union {
- uint8_t tty;
-
- struct {
- bool enhanced : 1; // Do we have the ability to set/clear any features?
- // Status and 8th bit in data stream.
- // Presence only indicates feature is available, but this isn't used for CDC-ACM.
- bool wide : 1;
- bool autoflow_RTS : 1; // Has autoflow on RTS/CTS
- bool autoflow_DSR : 1; // Has autoflow on DTR/DSR
- bool autoflow_XON : 1; // Has autoflow XON/XOFF
- bool half_duplex : 1; // Has half-duplex capability.
- } __attribute__((packed));
- };
-} tty_features;
-
-#define ACM_MAX_ENDPOINTS 4
-
-class ACM : public USBDeviceConfig, public UsbConfigXtracter {
-protected:
- static const uint8_t epDataInIndex; // DataIn endpoint index
- static const uint8_t epDataOutIndex; // DataOUT endpoint index
- static const uint8_t epInterruptInIndex; // InterruptIN endpoint index
-
- USB *pUsb;
- CDCAsyncOper *pAsync;
- uint8_t bAddress;
- uint8_t bConfNum; // configuration number
- uint8_t bControlIface; // Control interface value
- uint8_t bDataIface; // Data interface value
- uint8_t bNumEP; // total number of EP in the configuration
- uint32_t qNextPollTime; // next poll time
- volatile bool bPollEnable; // poll enable flag
- volatile bool ready; //device ready indicator
- tty_features _enhanced_status; // current status
-
- EpInfo epInfo[ACM_MAX_ENDPOINTS];
-
- void PrintEndpointDescriptor(const USB_ENDPOINT_DESCRIPTOR* ep_ptr);
-
-public:
- ACM(USB *pusb, CDCAsyncOper *pasync);
-
- uint8_t SetCommFeature(uint16_t fid, uint8_t nbytes, uint8_t *dataptr);
- uint8_t GetCommFeature(uint16_t fid, uint8_t nbytes, uint8_t *dataptr);
- uint8_t ClearCommFeature(uint16_t fid);
- uint8_t SetLineCoding(const LINE_CODING *dataptr);
- uint8_t GetLineCoding(LINE_CODING *dataptr);
- uint8_t SetControlLineState(uint8_t state);
- uint8_t SendBreak(uint16_t duration);
- uint8_t GetNotif(uint16_t *bytes_rcvd, uint8_t *dataptr);
-
- // Methods for receiving and sending data
- uint8_t RcvData(uint16_t *nbytesptr, uint8_t *dataptr);
- uint8_t SndData(uint16_t nbytes, uint8_t *dataptr);
-
- // USBDeviceConfig implementation
- uint8_t Init(uint8_t parent, uint8_t port, bool lowspeed);
- uint8_t Release();
- uint8_t Poll();
-
- bool available(void) {
- return false;
- };
-
- virtual uint8_t GetAddress() {
- return bAddress;
- };
-
- virtual bool isReady() {
- return ready;
- };
-
- virtual tty_features enhanced_status(void) {
- return _enhanced_status;
- };
-
- virtual tty_features enhanced_features(void) {
- tty_features rv;
- rv.enhanced = false;
- rv.autoflow_RTS = false;
- rv.autoflow_DSR = false;
- rv.autoflow_XON = false;
- rv.half_duplex = false;
- rv.wide = false;
- return rv;
- };
-
- virtual void autoflowRTS(bool s) {
- };
-
- virtual void autoflowDSR(bool s) {
- };
-
- virtual void autoflowXON(bool s) {
- };
-
- virtual void half_duplex(bool s) {
- };
-
- virtual void wide(bool s) {
- };
-
- // UsbConfigXtracter implementation
- void EndpointXtract(uint8_t conf, uint8_t iface, uint8_t alt, uint8_t proto, const USB_ENDPOINT_DESCRIPTOR *ep);
-};
-
-#endif // __CDCACM_H__