1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License. 5094332d3Sopenharmony_ci * You may obtain a copy of the License at 6094332d3Sopenharmony_ci * 7094332d3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8094332d3Sopenharmony_ci * 9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and 13094332d3Sopenharmony_ci * limitations under the License. 14094332d3Sopenharmony_ci */ 15094332d3Sopenharmony_ci 16094332d3Sopenharmony_ci#ifndef USB_HOST_SDK_RAW_SPEED_H 17094332d3Sopenharmony_ci#define USB_HOST_SDK_RAW_SPEED_H 18094332d3Sopenharmony_ci 19094332d3Sopenharmony_ci#include "hdf_base.h" 20094332d3Sopenharmony_ci#include "hdf_device_desc.h" 21094332d3Sopenharmony_ci#include "osal_atomic.h" 22094332d3Sopenharmony_ci#include "usb_raw_api.h" 23094332d3Sopenharmony_ci#include "data_fifo.h" 24094332d3Sopenharmony_ci 25094332d3Sopenharmony_ci#define TEST_LENGTH 512 26094332d3Sopenharmony_ci#define TEST_CYCLE 30 27094332d3Sopenharmony_ci#define TEST_TIME 0xffffffff 28094332d3Sopenharmony_ci#define TEST_PRINT_TIME 2 29094332d3Sopenharmony_ci#define TEST_PRINT_TIME_UINT 1000 30094332d3Sopenharmony_ci#define TEST_RECV_COUNT 10000 31094332d3Sopenharmony_ci#define TEST_BYTE_COUNT 1024 32094332d3Sopenharmony_ci#define TEST_FLOAT_COUNT (1.0) 33094332d3Sopenharmony_ci#define TEST_SLEEP_TIME 10 34094332d3Sopenharmony_ci 35094332d3Sopenharmony_ci#define TEST_WRITE true 36094332d3Sopenharmony_ci#define TEST_READ false 37094332d3Sopenharmony_ci#define USB_MAX_INTERFACES 32 38094332d3Sopenharmony_ci#define DATARATE 9600 39094332d3Sopenharmony_ci#define DATA_BITS_LENGTH 8 40094332d3Sopenharmony_ci#define ACM_NW 30 41094332d3Sopenharmony_ci#define ACM_NR 30 42094332d3Sopenharmony_ci#define READ_BUF_SIZE 8192 43094332d3Sopenharmony_ci#define USB_CTRL_SET_TIMEOUT 0 44094332d3Sopenharmony_ci#define USB_PIPE_DIR_OFFSET 7 45094332d3Sopenharmony_ci 46094332d3Sopenharmony_citypedef enum { 47094332d3Sopenharmony_ci TEST_ZERO_TYPE = 0, 48094332d3Sopenharmony_ci TEST_ONE_TYPE, 49094332d3Sopenharmony_ci TEST_TWO_TYPE, 50094332d3Sopenharmony_ci TEST_THREE_TYPE, 51094332d3Sopenharmony_ci TEST_FOUR_TYPE, 52094332d3Sopenharmony_ci TEST_FIVE_TYPE, 53094332d3Sopenharmony_ci TEST_SIX_TYPE, 54094332d3Sopenharmony_ci} TestCountType; 55094332d3Sopenharmony_ci 56094332d3Sopenharmony_citypedef enum { 57094332d3Sopenharmony_ci CMD_OPEN_PARM = 0, 58094332d3Sopenharmony_ci CMD_CLOSE_PARM, 59094332d3Sopenharmony_ci CMD_WRITE_PARM, 60094332d3Sopenharmony_ci CMD_READ_PARM, 61094332d3Sopenharmony_ci CMD_GET_BAUDRATE, 62094332d3Sopenharmony_ci CMD_SET_BAUDRATE, 63094332d3Sopenharmony_ci CMD_WRITE_DATA_SYNC, 64094332d3Sopenharmony_ci CMD_READ_DATA_SYNC, 65094332d3Sopenharmony_ci CMD_CLASS_CTRL_SYNC, 66094332d3Sopenharmony_ci CMD_STD_CTRL_GET_DESCRIPTOR_CMD, 67094332d3Sopenharmony_ci CMD_STD_CTRL_GET_STATUS_CMD, 68094332d3Sopenharmony_ci CMD_STD_CTRL_GET_CONFIGURATION, 69094332d3Sopenharmony_ci CMD_STD_CTRL_GET_INTERFACE, 70094332d3Sopenharmony_ci CMD_STD_CTRL_GET_DESCRIPTOR_ASYNC, 71094332d3Sopenharmony_ci CMD_ADD_INTERFACE, 72094332d3Sopenharmony_ci CMD_REMOVE_INTERFACE, 73094332d3Sopenharmony_ci} SerialOPCmd; 74094332d3Sopenharmony_ci 75094332d3Sopenharmony_cistruct AcmDevice; 76094332d3Sopenharmony_cistruct AcmDb { 77094332d3Sopenharmony_ci struct UsbRawRequest *request; 78094332d3Sopenharmony_ci struct AcmDevice *instance; 79094332d3Sopenharmony_ci uint8_t *buf; 80094332d3Sopenharmony_ci int32_t len; 81094332d3Sopenharmony_ci int32_t use; 82094332d3Sopenharmony_ci}; 83094332d3Sopenharmony_ci 84094332d3Sopenharmony_cistruct SerialDevice { 85094332d3Sopenharmony_ci struct AcmDevice *acm; 86094332d3Sopenharmony_ci struct UsbCdcLineCoding lineCoding; 87094332d3Sopenharmony_ci struct OsalMutex lock; 88094332d3Sopenharmony_ci struct DataFifo readFifo; 89094332d3Sopenharmony_ci}; 90094332d3Sopenharmony_ci 91094332d3Sopenharmony_cistruct UsbEndpoint { 92094332d3Sopenharmony_ci uint8_t addr; 93094332d3Sopenharmony_ci uint8_t interval; 94094332d3Sopenharmony_ci uint16_t maxPacketSize; 95094332d3Sopenharmony_ci}; 96094332d3Sopenharmony_ci 97094332d3Sopenharmony_cistruct AcmDevice { 98094332d3Sopenharmony_ci struct IDeviceIoService service; 99094332d3Sopenharmony_ci struct HdfDeviceObject *device; 100094332d3Sopenharmony_ci uint8_t ctrlIface; 101094332d3Sopenharmony_ci uint8_t dataIface; 102094332d3Sopenharmony_ci struct UsbEndpoint *notifyEp; 103094332d3Sopenharmony_ci struct UsbEndpoint *dataInEp; 104094332d3Sopenharmony_ci struct UsbEndpoint *dataOutEp; 105094332d3Sopenharmony_ci struct UsbEndpoint *dataEp; 106094332d3Sopenharmony_ci struct UsbRawConfigDescriptor *config; 107094332d3Sopenharmony_ci struct AcmDb db[TEST_CYCLE]; 108094332d3Sopenharmony_ci struct OsalMutex writeLock; 109094332d3Sopenharmony_ci struct OsalMutex readLock; 110094332d3Sopenharmony_ci struct UsbRawRequest *notifyReq; 111094332d3Sopenharmony_ci struct UsbRawRequest *readReq[ACM_NR]; 112094332d3Sopenharmony_ci struct UsbRawRequest *writeReq; 113094332d3Sopenharmony_ci struct UsbRawRequest *ctrlReq; 114094332d3Sopenharmony_ci uint32_t dataSize; 115094332d3Sopenharmony_ci struct OsalMutex lock; 116094332d3Sopenharmony_ci UsbRawHandle *devHandle; 117094332d3Sopenharmony_ci struct UsbSession *session; 118094332d3Sopenharmony_ci struct SerialDevice *port; 119094332d3Sopenharmony_ci uint32_t nbIndex; 120094332d3Sopenharmony_ci uint32_t nbSize; 121094332d3Sopenharmony_ci int32_t transmitting; 122094332d3Sopenharmony_ci uint8_t busNum; 123094332d3Sopenharmony_ci uint8_t devAddr; 124094332d3Sopenharmony_ci uint8_t interfaceCnt; 125094332d3Sopenharmony_ci uint8_t *notificationBuffer; 126094332d3Sopenharmony_ci uint8_t interfaceIndex[USB_MAX_INTERFACES]; 127094332d3Sopenharmony_ci struct UsbCdcLineCoding lineCoding; 128094332d3Sopenharmony_ci struct OsalThread ioThread; 129094332d3Sopenharmony_ci struct OsalThread ioSendThread; 130094332d3Sopenharmony_ci}; 131094332d3Sopenharmony_ci 132094332d3Sopenharmony_ci#endif /* USB_HOST_SDK_RAW_SPEED_H */ 133