Silicon Labs Host Libraries
silabs_defs.h
1  /*++
2 
3  VER_LEGALCOPYRIGHT_STR
4 
5 Module Name:
6 
7  silabs_defs.h
8 
9 Abstract:
10 
11  A top-level, across-all-repos, collection of some "useful" defines/enums
12 
13 Environment:
14 
15  User or kernel mode
16 
17 --*/
18 //
19 #if (_MSC_VER > 1000)
20 #pragma once
21 #endif
22 
23 #ifndef HOST_COMMON_INCLUDE_SILABS_DEFS_H_INCLUDED_BVHHTNCO7E
24 #define HOST_COMMON_INCLUDE_SILABS_DEFS_H_INCLUDED_BVHHTNCO7E
25 
31 
32 #include "silabs_sal.h"
33 
34 #ifdef _WIN32
35 #if ! defined(__cplusplus)
36 #define bool BOOLEAN
37 #endif // ! defined(__cplusplus)
38 #else
39 typedef unsigned char BYTE;
42 #endif
43 
44 
45 #ifndef _WIN32
46 #define UNREFERENCED_PARAMETER(p) (void)(p)
47 #endif
48 
49 #if defined(DEFINE_GUID)
50 
53 DEFINE_GUID(GUID_DEVINTERFACE_SILABS_CP210x,
54  0xa2a39220, 0x39f4, 0x4b88, 0xae, 0xcb, 0x3d, 0x86, 0xa3, 0x5d, 0xc7, 0x48);
55 
58 DEFINE_GUID(GUID_DEVINTERFACE_SILABS_CP213x,
59  0xf81d8403, 0x3c27, 0x45ff, 0x98, 0xb7, 0x3d, 0x00, 0xf1, 0x91, 0x69, 0xce);
60 
63 DEFINE_GUID(GUID_DEVINTERFACE_SILABS_CP2615,
64  0x26C6CE68, 0x9013, 0x4B40, 0xB7, 0x2A, 0x29, 0x8E, 0xB2, 0xBD, 0xD2, 0x69);
65 
68 DEFINE_GUID(GUID_DEVINTERFACE_SILABS_USBXPRESS_BRIDGE,
69 0x3c5e1462, 0x5695, 0x4e18, 0x87, 0x6b, 0xf3, 0xf3, 0xd0, 0x8a, 0xaf, 0x18);
70 
72 #endif // DEFINE_GUID
73 
74 #define SILABS_TEST_FILL 0xa5
75 
76 
80 typedef enum _SILABS_VID {
81  SILABS_VID_10C4 = ((unsigned short)(0xFFFF & 0x10C4))
82  , SILABS_VID_1BA4 = ((unsigned short)(0xFFFF & 0x1BA4))
83  , SILABS_VID_2544 = ((unsigned short)(0xFFFF & 0x2544))
87 
91 _Check_return_
92 _Success_(return == TRUE)
93 __inline static bool IsValidSILABS_VID ( _In_ const SILABS_VID _v ) { return (SILABS_VID_10C4 == _v); }
94 
98 typedef enum _SILABS_PID {
99  SILABS_PID_UNKNOWN = ((unsigned short)(0xFFFF & 0x0000))
100  , SILABS_PID_CP210SINGLEPORT = ((unsigned short)(0xFFFF & 0xEA60))
101  , SILABS_PID_CP210SINGLEPORTII = ((unsigned short)(0xFFFF & 0xEA63))
107  , SILABS_PID_CP210DUALPORT = ((unsigned short)(0xFFFF & 0xEA70))
108  , SILABS_PID_CP210DUALPORTII = ((unsigned short)(0xFFFF & 0xEA7A))
111  , SILABS_PID_CP210QUADPORT = ((unsigned short)(0xFFFF & 0xEA71))
112  , SILABS_PID_CP210QUADPORTII = ((unsigned short)(0xFFFF & 0xEA7B))
116  , SILABS_PID_CP2110 = ((unsigned short)(0xFFFF & 0xEA80))
118  , SILABS_PID_CP2112 = ((unsigned short)(0xFFFF & 0xEA90))
119  , SILABS_PID_CP2114 = ((unsigned short)(0xFFFF & 0xEAB0))
120  , SILABS_PID_CP2130 = ((unsigned short)(0xFFFF & 0x87A0))
121  , SILABS_PID_CP2615 = ((unsigned short)(0xFFFF & 0xEAC1))
122  , SILABS_PID_DIRECTACCESS = ((unsigned short)(0xFFFF & 0xEA61))
127 
131 _Check_return_
132 _Success_(return == TRUE)
133 __inline static bool IsValidSILABS_PID(_In_ const SILABS_PID _p) {
134 #ifdef _WIN32
135 #pragma warning ( push )
136 #pragma warning ( disable : 6287 ) // warning C6287: redundant code: the left and right sub-expressions are identical
137 #endif
141  || (SILABS_PID_CP2101 == _p) || (SILABS_PID_CP2102 == _p) || (SILABS_PID_CP2102N == _p) || (SILABS_PID_CP2103 == _p)
142  || (SILABS_PID_CP2104 == _p)
143  || (SILABS_PID_CP2105 == _p) || (SILABS_PID_CP2105II == _p)
144  || (SILABS_PID_CP2108 == _p) || (SILABS_PID_CP2108II == _p)
145  || (SILABS_PID_CP2109 == _p)
146  || (SILABS_PID_CP2110 == _p) || (SILABS_PID_CP2111 == _p) || (SILABS_PID_CP2112 == _p) || (SILABS_PID_CP2114 == _p)
147  || (SILABS_PID_CP2130 == _p)
148  || (SILABS_PID_CP2615 == _p)
149  || (SILABS_PID_DIRECTACCESS == _p));
150 #ifdef _WIN32
151 #pragma warning ( pop )
152 #endif
153 }
157 _Check_return_
158 _Success_(return == TRUE)
159 __inline static bool IsValidCP210X_PID(_In_ const SILABS_PID _p) {
160 #ifdef _WIN32
161 #pragma warning ( push )
162 #pragma warning ( disable : 6287 ) // warning C6287: redundant code: the left and right sub-expressions are identical
163 #endif
167  || (SILABS_PID_CP2101 == _p) || (SILABS_PID_CP2102 == _p) || (SILABS_PID_CP2102N == _p) || (SILABS_PID_CP2103 == _p)
168  || (SILABS_PID_CP2104 == _p)
169  || (SILABS_PID_CP2105 == _p) || (SILABS_PID_CP2105II == _p)
170  || (SILABS_PID_CP2108 == _p) || (SILABS_PID_CP2108II == _p)
171  || (SILABS_PID_CP2109 == _p));
172 #ifdef _WIN32
173 #pragma warning ( pop )
174 #endif
175 }
176 
179 typedef enum _SILABS_PARTNUM_CPXXXX {
180  CP210x_PARTNUM_UNKNOWN = ((BYTE)(0xFF & 0x00))
181  , CP210x_PARTNUM_CP2101 = ((BYTE)(0xFF & 0x01))
182  , CP210x_PARTNUM_CP2102 = ((BYTE)(0xFF & 0x02))
183  , CP210x_PARTNUM_CP2103 = ((BYTE)(0xFF & 0x03))
184  , CP210x_PARTNUM_CP2104 = ((BYTE)(0xFF & 0x04))
185  , CP210x_PARTNUM_CP2105 = ((BYTE)(0xFF & 0x05))
186  , CP210x_PARTNUM_CP2108 = ((BYTE)(0xFF & 0x08))
187  , CP210x_PARTNUM_CP2109 = ((BYTE)(0xFF & 0x09))
188 
189  , SILABS_PARTNUM_CP2110 = ((BYTE)(0xFF & 0x0A))
190  , HID_UART_PART_CP2110 = SILABS_PARTNUM_CP2110
191 
192  , CP210x_PARTNUM_CP2112 = ((BYTE)(0xFF & 0x0C))
194 
195  , SILABS_PARTNUM_CP2114 = ((BYTE)(0xFF & 0x0E))
196  , HID_UART_PART_CP2114 = SILABS_PARTNUM_CP2114
197 
198  , CP210x_PARTNUM_CP2102N_QFN28 = ((BYTE)(0xFF & 0x20))
199  , CP210x_PARTNUM_CP2102N_QFN24 = ((BYTE)(0xFF & 0x21))
200  , CP210x_PARTNUM_CP2102N_QFN20 = ((BYTE)(0xFF & 0x22))
201 
202  , CP210x_PARTNUM_USBXPRESS_F3XX = ((BYTE)(0xFF & 0x80))
203  , CP210x_PARTNUM_USBXPRESS_EFM8 = ((BYTE)(0xFF & 0x80))
204  , CP210x_PARTNUM_USBXPRESS_EFM32 = ((BYTE)(0xFF & 0x81))
208 #define CP210X_PARTNUM SILABS_PARTNUM_CPXXXX
209 _Check_return_
213 _Success_(return == TRUE)
214 __inline static bool IsValidCP210X_PARTNUM(_In_ const SILABS_PARTNUM_CPXXXX _v) {
216 }
220 _Check_return_
221 _Success_(return == TRUE)
222 __inline static bool IsCP2102N_PARTNUM(_In_ const SILABS_PARTNUM_CPXXXX _v) {
224 }
228 _Check_return_
229 _Success_(return == TRUE)
230 __inline static bool IsOTPCP210X_PARTNUM(_In_ const SILABS_PARTNUM_CPXXXX _v) {
231  return ((CP210x_PARTNUM_CP2104 == _v) || (CP210x_PARTNUM_CP2105 == _v) || (CP210x_PARTNUM_CP2109 == _v));
232 }
237 _Check_return_
238 _Success_(return == TRUE)
239 __inline static bool IsOTP(_In_ const SILABS_PID _p, _In_ const SILABS_PARTNUM_CPXXXX _v) {
240  return IsValidCP210X_PID(_p) ? IsOTPCP210X_PARTNUM(_v) : ((SILABS_PID_CP2110 == (SILABS_PID)_v) || (SILABS_PID_CP2112 == (SILABS_PID)_v) || (SILABS_PID_CP2114 == (SILABS_PID)_v) || (SILABS_PID_CP2130 == (SILABS_PID)_v));
241 }
245 _Check_return_
246 _Success_(return == TRUE)
247 __inline static bool IsWriteReadLatchPartNum(_In_ const SILABS_PARTNUM_CPXXXX _v) {
248  return (IsCP2102N_PARTNUM(_v) || (CP210x_PARTNUM_CP2103 == _v) || (CP210x_PARTNUM_CP2104 == _v) || (CP210x_PARTNUM_CP2105 == _v) || (CP210x_PARTNUM_CP2108 == _v));
249 }
253 _Check_return_
254 _Success_(return == TRUE)
255 __inline static bool IsMultiInterfacePartNum(_In_ const SILABS_PARTNUM_CPXXXX _v) {
256  return ((CP210x_PARTNUM_CP2105 == _v) || (CP210x_PARTNUM_CP2108 == _v));
257 }
258 
261 typedef enum _SILABS_STATUS {
262  SILABS_STATUS_SUCCESS = ((BYTE)(0xFF & 0x00))
263 
264  , SILABS_STATUS_TBD = ((BYTE)(0xFF & 0x01))
265  , SILABS_STATUS_INVALID_PARAMETER = ((BYTE)(0xFF & 0x02))
266  , SILABS_STATUS_INVALID_HANDLE = ((BYTE)(0xFF & 0x03))
267 
268  , SILABS_STATUS_DEVICE_NOT_FOUND = ((BYTE)(0xFF & 0x04))
269  , SILABS_STATUS_DEVICE_TBD = ((BYTE)(0xFF & 0x05))
271 
272  , SILABS_STATUS_DEVICE_ERROR = ((BYTE)(0xFF & 0x07))
275 
277 
279  , SILABS_STATUS_SYSTEM_ERROR = ((BYTE)(0xFF & 0x74))
280  , SILABS_STATUS_UNKNOWN_ERROR = ((BYTE)(0xFF & 0xFF))
284 _Check_return_
285 _Success_(return == TRUE)
286 __inline static bool IsValidSILABS_STATUS(_In_ const SILABS_STATUS _s) {
287  return (((SILABS_STATUS_SUCCESS <= _s) && (_s <= SILABS_STATUS_DEVICE_ERROR_TIMEOUT))
290  || (SILABS_STATUS_SYSTEM_ERROR == _s)
291  || (SILABS_STATUS_UNKNOWN_ERROR == _s));
292 }
293 _Check_return_
294 _Success_(return == TRUE)
295 __inline static bool IsSuccessSILABS_STATUS(_In_ const SILABS_STATUS _s) { return SILABS_STATUS_SUCCESS == _s; }
296 
298 
299 #endif // !defined(HOST_COMMON_INCLUDE_SILABS_DEFS_H_INCLUDED_BVHHTNCO7E)
300 
Decimal 9540; VID aquired via Energy Micro.
Definition: silabs_defs.h:83
Single port CP210x device/s (Windows Update PID)
Definition: silabs_defs.h:101
tbd
Definition: silabs_defs.h:264
CP2114.
Definition: silabs_defs.h:119
CP2110 HID_UART_PART_CP2110.
Definition: silabs_defs.h:189
CP2102.
Definition: silabs_defs.h:103
Quad port CP210x device/s (Windows Update PID)
Definition: silabs_defs.h:112
CP2114 HID_UART_PART_CP2114.
Definition: silabs_defs.h:195
CP2105.
Definition: silabs_defs.h:109
CP2110.
Definition: silabs_defs.h:116
CP2112.
Definition: silabs_defs.h:118
CP2109.
Definition: silabs_defs.h:115
the specified function is not supported
Definition: silabs_defs.h:276
CP2108.
Definition: silabs_defs.h:186
Direct Access (nee USBXPress)
Definition: silabs_defs.h:123
CP2102N QFN28.
Definition: silabs_defs.h:198
CP2112 HID_SMBUS_PART_CP2112.
Definition: silabs_defs.h:192
no error
Definition: silabs_defs.h:262
CP2101.
Definition: silabs_defs.h:181
CP2102N QFN20.
Definition: silabs_defs.h:200
CP2102N.
Definition: silabs_defs.h:104
CP2105.
Definition: silabs_defs.h:185
USBXPRESS_EFM8.
Definition: silabs_defs.h:203
Decimal 7076; VID aquired via Ember.
Definition: silabs_defs.h:82
USBXPRESS_F3XX.
Definition: silabs_defs.h:202
CP2101.
Definition: silabs_defs.h:102
SILABS_PARTNUM_CPXXXX
Definition: silabs_defs.h:179
device-side timed out the operation
Definition: silabs_defs.h:274
enum _SILABS_PID * PSILABS_PID
silabs pid pointer
SILABS_VID
Definition: silabs_defs.h:80
Dual port CP210x device/s (Windows Update PID)
Definition: silabs_defs.h:108
#define HID_SMBUS_PART_CP2112
HID SMBus part number cp2112.
Definition: SLABCP2112.h:242
Decimal 4292; VID aquired via Cygnal.
Definition: silabs_defs.h:81
an unexpected, unrecoverable error happened while interacting with the operating system ...
Definition: silabs_defs.h:279
SILABS_PID
Definition: silabs_defs.h:98
an handle parameter was not valid
Definition: silabs_defs.h:266
the specified device is tbd
Definition: silabs_defs.h:269
CP2103.
Definition: silabs_defs.h:105
CP2130.
Definition: silabs_defs.h:120
unsigned char BYTE
Byte definition.
Definition: silabs_defs.h:41
device-side in wrong state to perform operation
Definition: silabs_defs.h:273
Single port CP210x device/s.
Definition: silabs_defs.h:100
an otherwise unclassified error occurred
Definition: silabs_defs.h:280
CP2102N QFN24.
Definition: silabs_defs.h:199
CP2103.
Definition: silabs_defs.h:183
general/underetmined device-side error
Definition: silabs_defs.h:272
the specified device was not found
Definition: silabs_defs.h:268
CP2109.
Definition: silabs_defs.h:187
CP2102.
Definition: silabs_defs.h:182
CP2108 (Windows Update PID)
Definition: silabs_defs.h:114
Direct Access.
Definition: silabs_defs.h:122
Quad port CP210x device/s.
Definition: silabs_defs.h:111
Dual port CP210x device/s.
Definition: silabs_defs.h:107
a parameter was not valid
Definition: silabs_defs.h:265
CP2104.
Definition: silabs_defs.h:106
USBXPRESS_EFM32.
Definition: silabs_defs.h:204
SILABS_STATUS
Definition: silabs_defs.h:261
CP2615.
Definition: silabs_defs.h:121
CP2108.
Definition: silabs_defs.h:113
CP2104.
Definition: silabs_defs.h:184
CP2105 (Windows Update PID)
Definition: silabs_defs.h:110
CP2111.
Definition: silabs_defs.h:117
an attempt to dynamically allocate memory failed
Definition: silabs_defs.h:278
enum _SILABS_STATUS * PSILABS_STATUS
API Status return codes pointer.
enum _SILABS_PARTNUM_CPXXXX * PSILABS_PARTNUM_CPXXXX
Device Part Numbers pointer.
enum _SILABS_VID * PSILABS_VID
silabs vid pointer
the specified device is already (exclusively) opened
Definition: silabs_defs.h:270