| /****************************************************************************** |
| * @file usb_desc.h |
| * |
| * @brief for TLSR chips |
| * |
| * @author public@telink-semi.com; |
| * @date Sep. 30, 2010 |
| * |
| * @attention |
| * |
| * Copyright (C) 2019-2020 Telink Semiconductor (Shanghai) Co., Ltd. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| *****************************************************************************/ |
| #pragma once |
| |
| #include <application/usbstd/CDCClassCommon.h> |
| |
| enum { |
| BTUSB_USB_STRING_LANGUAGE = 0, |
| BTUSB_USB_STRING_VENDOR, |
| BTUSB_USB_STRING_PRODUCT, |
| BTUSB_USB_STRING_SERIAL, |
| }; |
| |
| typedef struct { |
| USB_Descriptor_Configuration_Hdr_t Config; |
| USB_Descriptor_Interface_Association_t intfa; |
| |
| USB_Descriptor_Interface_t intf0; |
| USB_Descriptor_Endpoint_t irq_in; |
| USB_Descriptor_Endpoint_t bulk_in; |
| USB_Descriptor_Endpoint_t bulk_out; |
| |
| USB_Descriptor_Interface_t intf1_0; |
| USB_Descriptor_Endpoint_t iso_in; |
| USB_Descriptor_Endpoint_t iso_out; |
| |
| USB_Descriptor_Interface_t intf1_1; |
| USB_Descriptor_Endpoint_t iso_in1; |
| USB_Descriptor_Endpoint_t iso_out1; |
| |
| USB_Descriptor_Interface_t intf_prn; |
| USB_Descriptor_Endpoint_t endp0; |
| USB_Descriptor_Endpoint_t endp1; |
| } BTUSB_Descriptor_Configuration_with_Printer_t; |
| |
| typedef struct { |
| USB_Descriptor_Configuration_Hdr_t Config; |
| USB_Descriptor_Interface_Association_t intfa; |
| |
| USB_Descriptor_Interface_t intf0; |
| USB_Descriptor_Endpoint_t irq_in; |
| USB_Descriptor_Endpoint_t bulk_in; |
| USB_Descriptor_Endpoint_t bulk_out; |
| |
| USB_Descriptor_Interface_t intf1_0; |
| USB_Descriptor_Endpoint_t iso_in; |
| USB_Descriptor_Endpoint_t iso_out; |
| |
| USB_Descriptor_Interface_t intf1_1; |
| USB_Descriptor_Endpoint_t iso_in1; |
| USB_Descriptor_Endpoint_t iso_out1; |
| } BTUSB_Descriptor_Configuration_t; |
| |
| u8* btusb_usbdesc_get_language(void); |
| u8* btusb_usbdesc_get_vendor(void); |
| u8* btusb_usbdesc_get_product(void); |
| u8* btusb_usbdesc_get_serial(void); |
| u8* btusb_usbdesc_get_device(void); |
| u8* btusb_usbdesc_get_configuration(void); |
| int btusb_usbdesc_get_configuration_size(void); |
| |
| void btusb_select_cdc_device (int en); |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| //typedef void (*usb_bulk_out_callback_t)(u8 *p, int n, int offset); |
| |
| void myusb_bulk_drv_init (void *p); //initialization |
| int myusb_bulk_in (u8 *p, int n); //send status |
| int myusb_bulk_proc (); //called in main loop |
| void myusb_bulk_out_command (u8 *p, int n, int offset); |
| |
| #define CMD_GET_VERSION 0 //0x00 |
| #define CMD_SELECT_DPIMPL 16//0x10 |
| #define CMD_SET_TCK_FREQUENCY 17//0x11 |
| #define CMD_GET_TCK_FREQUENCY 18//0x12 |
| #define CMD_MEASURE_MAX_TCK_FREQ 21//0x15 |
| #define CMD_MEASURE_RTCK_RESPONSE 22//0x16 |
| #define CMD_TAP_SHIFT 23//0x17 |
| #define CMD_SET_TAPHW_STATE 32//0x20 |
| #define CMD_GET_TAPHW_STATE 33//0x21 |
| #define CMD_TGPWR_SETUP 34//0x22 |
| |
| |
| |
| //--------------- CDC ---------------------------------- |
| |
| /** Endpoint number of the CDC device-to-host notification IN endpoint. */ |
| #define CDC_NOTIFICATION_EPNUM 2 |
| /** Endpoint number of the CDC device-to-host data IN endpoint. */ |
| #define CDC_TX_EPNUM 4 |
| /** Endpoint number of the CDC host-to-device data OUT endpoint. */ |
| #define CDC_RX_EPNUM 5 |
| /** Size in bytes of the CDC device-to-host notification IN endpoint. */ |
| #define CDC_NOTIFICATION_EPSIZE 8 |
| /** Size in bytes of the CDC data IN and OUT endpoints. */ |
| #define CDC_TXRX_EPSIZE 64 |
| |
| enum { |
| USB_STRING_LANGUAGE = 0, |
| USB_STRING_VENDOR, |
| USB_STRING_PRODUCT, |
| USB_STRING_SERIAL, |
| }; |
| |
| // interface id |
| typedef enum { |
| USB_INTF_CDC_CCI, |
| USB_INTF_CDC_DCI, |
| USB_INTF_MAX, |
| } USB_INTF_ID_E; |
| |
| typedef struct { |
| // CDC Control Interface |
| USB_CDC_Descriptor_FunctionalHeader_t CDC_Functional_Header; |
| USB_CDC_Descriptor_FunctionalACM_t CDC_Functional_ACM; |
| USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_Union; |
| USB_CDC_Descriptor_FunctionalUnion_t CDC_Functional_CallManagement; |
| USB_Descriptor_Endpoint_t CDC_NotificationEndpoint; |
| |
| // CDC Data Interface |
| USB_Descriptor_Interface_t CDC_DCI_Interface; |
| USB_Descriptor_Endpoint_t CDC_DataOutEndpoint; |
| USB_Descriptor_Endpoint_t CDC_DataInEndpoint; |
| } USB_CDC_Descriptor_t; |
| |
| typedef struct { |
| USB_Descriptor_Configuration_Hdr_t Config; |
| USB_Descriptor_Interface_Association_t cdc_iad; |
| USB_Descriptor_Interface_t cdc_interface; |
| USB_CDC_Descriptor_t cdc_descriptor; |
| } USB_Descriptor_Configuration_t; |