1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #ifndef AUDIO_PNP_PARAM
16 #define AUDIO_PNP_PARAM
17 
18 #define AUDIO_UEVENT_USB_DEVICE_COUNT 10
19 #define ADD_DEVICE_HEADSET '1'
20 #define ADD_DEVICE_HEADSET_WITHOUT_MIC '2'
21 #define ADD_DEVICE_ADAPTER '4'
22 #define ADD_DEVICE_MIC_BLOCKED '5'
23 #define ADD_DEVICE_MIC_UN_BLOCKED '6'
24 #define AUDIO_DEVICE_ONLINE     1
25 #define AUDIO_DEVICE_WAIT_ONLINE 20
26 #define AUDIO_DEVICE_WAIT_TRY_TIME 10
27 #define AUDIO_EVENT_INFO_LEN_MAX 256
28 #define AUDIO_PNP_INFO_LEN_MAX  256
29 #define AUDIO_DEVICE_WAIT_USB_ONLINE 1000
30 #define AUDIO_DEVICE_WAIT_USB_EVENT_UPDATE 100
31 
32 #define BUS_USB_DIR             "bus/usb"
33 #define DEV_BUS_USB_DIR         "/dev/bus/usb"
34 #define INPUT_EVT_MAX_CNT       4
35 #define MOVE_NUM 16
36 #define REMOVE_AUDIO_DEVICE '0'
37 #define SWITCH_STATE_PATH    "/sys/class/switch/h2w/state"
38 #define STATE_PATH_ITEM_SIZE 1
39 
40 #define USB_IF_DESC_LEN         9
41 #define USB_IF_CLASS_OFFSET     5
42 #define USB_IF_SUBCLASS_OFFSET  6
43 #define USB_AUDIO_DESC_TYPE     0x4
44 #define USB_AUDIO_CLASS         1
45 #define USB_AUDIO_SUBCLASS_CTRL 1
46 #define USB_DEV_NAME_LEN_MAX    64
47 #define USB_DES_LEN_MAX         4096
48 
49 #define UEVENT_ACTION           "ACTION="
50 #define UEVENT_NAME             "NAME="
51 #define UEVENT_STATE            "STATE="
52 #define UEVENT_DEV_NAME         "DEVNAME="
53 #define UEVENT_DEVTYPE          "DEVTYPE="
54 #define UEVENT_SUBSYSTEM        "SUBSYSTEM="
55 #define UEVENT_SWITCH_NAME      "SWITCH_NAME="
56 #define UEVENT_SWITCH_STATE     "SWITCH_STATE="
57 #define UEVENT_HDI_NAME         "HID_NAME="
58 #define UEVENT_ACTION_ADD       "add"
59 #define UEVENT_ACTION_REMOVE    "remove"
60 #define UEVENT_ACTION_CHANGE    "change"
61 #define UEVENT_TYPE_EXTCON      "extcon3"
62 #define UEVENT_NAME_HEADSET     "headset"
63 #define UEVENT_STATE_ANALOG_HS0 "MICROPHONE=0"
64 #define UEVENT_STATE_ANALOG_HS1 "MICROPHONE=1"
65 #define UEVENT_SUBSYSTEM_SWITCH "switch"
66 #define UEVENT_SWITCH_NAME_H2W  "h2w"
67 #define UEVENT_SUBSYSTEM_USB        "usb"
68 #define UEVENT_SUBSYSTEM_USB_DEVICE "usb_device"
69 #define UEVENT_SOCKET_BUFF_SIZE (64 * 1024)
70 #define UEVENT_SOCKET_GROUPS    0xffffffff
71 #define UEVENT_MSG_LEN          2048
72 #define UEVENT_ID_MODEL         "ID_MODEL="
73 #define UEVENT_USB_AUDIO        "USB Audio"
74 #define UEVENT_USB_HEADSET      "HEADSET"
75 #define UEVENT_ARR_SIZE 9
76 #define UEVENT_POLL_WAIT_TIME 100
77 #define WAIT_THREAD_END_TIME_MS 1
78 
79 #include <string>
80 
81 namespace OHOS {
82 namespace AudioStandard {
83 using namespace std;
84 
85 struct UsbDevice {
86     int8_t devName[USB_DEV_NAME_LEN_MAX];
87     uint8_t desc[USB_DES_LEN_MAX];
88     size_t descLen;
89 };
90 
91 struct AudioPnpUevent {
92     const char *action;
93     const char *name;
94     const char *state;
95     const char *devType;
96     const char *subSystem;
97     const char *switchName;
98     const char *switchState;
99     const char *hidName;
100     const char *devName;
101 };
102 
103 struct AudioDevBusUsbDevice {
104     bool isUsed;
105     int8_t devName[USB_DEV_NAME_LEN_MAX];
106 };
107 
108 struct AudioEvent {
109     uint32_t eventType;
110     uint32_t deviceType;
111     std::string name;
112     std::string address;
113 };
114 } // namespace AudioStandard
115 } // namespace OHOS
116 #endif // AUDIO_PNP_PARAM