metee
metee.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: Apache-2.0 */
2 /*
3  * Copyright (C) 2014-2021 Intel Corporation
4  */
8 #ifndef __METEE_H
9 #define __METEE_H
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 #include <stddef.h>
16 #include <stdint.h>
18 #ifdef _WIN32
19  #include <Windows.h>
20  #include <initguid.h>
21 
22  #ifndef METEE_DLL
23  #define METEE_DLL_API
24  #else /* METEE_DLL */
25  #ifdef METEE_DLL_EXPORT
26  #define METEE_DLL_API __declspec(dllexport)
27  #else
28  #define METEE_DLL_API __declspec(dllimport)
29  #endif /* METEE_DLL_EXPORT */
30  #endif /* METEE_DLL */
31  #define TEEAPI METEE_DLL_API __stdcall
32  #define TEE_DEVICE_HANDLE HANDLE
33  #define TEE_INVALID_DEVICE_HANDLE ((void*)0)
34 #else /* _WIN32 */
35  #include <linux/uuid.h>
36 
37  #ifndef METEE_DLL
38  #define METEE_DLL_API
39  #else
40  #ifdef METEE_DLL_EXPORT
41  #define METEE_DLL_API __attribute__((__visibility__("default")))
42  #else
43  #define METEE_DLL_API
44  #endif /* METEE_DLL_EXPORT */
45  #endif /* METEE_DLL */
46  #define TEEAPI METEE_DLL_API
47  #define GUID uuid_le
48  #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
49  const uuid_le name = UUID_LE(l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
50  #define TEE_DEVICE_HANDLE int
51  #define TEE_INVALID_DEVICE_HANDLE (-1)
52  #ifndef IN
53  #define IN
54  #endif
55  #ifndef OUT
56  #define OUT
57  #endif
58  #ifndef OPTIONAL
59  #define OPTIONAL
60  #endif
61 #endif /* _WIN32 */
63 
70 };
71 
75 typedef struct _TEEHANDLE {
76 
77  void *handle;
78  size_t maxMsgLen;
79  uint8_t protcolVer;
82 
88 
89 
90 
92 #define TEEHANDLE_ZERO {0}
93 
94 typedef uint16_t TEESTATUS;
96 #define TEE_ERROR_BASE 0x0000U
98 #define TEE_SUCCESS (TEE_ERROR_BASE + 0)
100 #define TEE_INTERNAL_ERROR (TEE_ERROR_BASE + 1)
102 #define TEE_DEVICE_NOT_FOUND (TEE_ERROR_BASE + 2)
104 #define TEE_DEVICE_NOT_READY (TEE_ERROR_BASE + 3)
106 #define TEE_INVALID_PARAMETER (TEE_ERROR_BASE + 4)
108 #define TEE_UNABLE_TO_COMPLETE_OPERATION (TEE_ERROR_BASE + 5)
110 #define TEE_TIMEOUT (TEE_ERROR_BASE + 6)
112 #define TEE_NOTSUPPORTED (TEE_ERROR_BASE + 7)
114 #define TEE_CLIENT_NOT_FOUND (TEE_ERROR_BASE + 8)
116 #define TEE_BUSY (TEE_ERROR_BASE + 9)
118 #define TEE_DISCONNECTED (TEE_ERROR_BASE + 10)
120 #define TEE_INSUFFICIENT_BUFFER (TEE_ERROR_BASE + 11)
122 #define TEE_PERMISSION_DENIED (TEE_ERROR_BASE + 12)
123 
126 #define TEE_IS_SUCCESS(Status) (((TEESTATUS)(Status)) == TEE_SUCCESS)
127 
135 TEESTATUS TEEAPI TeeInit(IN OUT PTEEHANDLE handle, IN const GUID *guid,
136  IN OPTIONAL const char *device);
137 
138 #ifdef _WIN32
147 TEESTATUS TEEAPI TeeInitGUID(IN OUT PTEEHANDLE handle, IN const GUID *guid,
148  IN OPTIONAL const GUID *device);
149 #endif /* _WIN32 */
150 
158 TEESTATUS TEEAPI TeeInitHandle(IN OUT PTEEHANDLE handle, IN const GUID *guid,
159  IN const TEE_DEVICE_HANDLE device_handle);
160 
165 TEESTATUS TEEAPI TeeConnect(OUT PTEEHANDLE handle);
166 
176 TEESTATUS TEEAPI TeeRead(IN PTEEHANDLE handle, IN OUT void *buffer, IN size_t bufferSize,
177  OUT OPTIONAL size_t *pNumOfBytesRead, IN OPTIONAL uint32_t timeout);
178 
188 TEESTATUS TEEAPI TeeWrite(IN PTEEHANDLE handle, IN const void *buffer, IN size_t bufferSize,
189  OUT OPTIONAL size_t *numberOfBytesWritten, IN OPTIONAL uint32_t timeout);
190 
198  IN uint32_t fwStatusNum, OUT uint32_t *fwStatus);
199 
205 void TEEAPI TeeDisconnect(IN PTEEHANDLE handle);
206 
212 TEE_DEVICE_HANDLE TEEAPI TeeGetDeviceHandle(IN PTEEHANDLE handle);
213 
216 typedef struct {
217  uint16_t major;
218  uint16_t minor;
219  uint16_t hotfix;
220  uint16_t build;
222 
229 TEESTATUS TEEAPI GetDriverVersion(IN PTEEHANDLE handle, IN OUT teeDriverVersion_t *driverVersion);
230 
237 uint32_t TEEAPI TeeSetLogLevel(IN PTEEHANDLE handle, IN uint32_t log_level);
238 
244 uint32_t TEEAPI TeeGetLogLevel(IN const PTEEHANDLE handle);
245 
246 #ifdef __cplusplus
247 }
248 #endif
249 
250 #endif /* __METEE_H */
uint16_t TEESTATUS
Definition: metee.h:94
tee_log_level
Definition: metee.h:66
@ TEE_LOG_LEVEL_ERROR
Definition: metee.h:68
@ TEE_LOG_LEVEL_VERBOSE
Definition: metee.h:69
@ TEE_LOG_LEVEL_QUIET
Definition: metee.h:67
TEEHANDLE * PTEEHANDLE
A type definition for pointer to TEEHANDLE.
Definition: metee.h:87
TEESTATUS TEEAPI GetDriverVersion(IN PTEEHANDLE handle, IN OUT teeDriverVersion_t *driverVersion)
TEESTATUS TEEAPI TeeRead(IN PTEEHANDLE handle, IN OUT void *buffer, IN size_t bufferSize, OUT OPTIONAL size_t *pNumOfBytesRead, IN OPTIONAL uint32_t timeout)
TEE_DEVICE_HANDLE TEEAPI TeeGetDeviceHandle(IN PTEEHANDLE handle)
TEESTATUS TEEAPI TeeFWStatus(IN PTEEHANDLE handle, IN uint32_t fwStatusNum, OUT uint32_t *fwStatus)
uint32_t TEEAPI TeeGetLogLevel(IN const PTEEHANDLE handle)
TEESTATUS TEEAPI TeeInitHandle(IN OUT PTEEHANDLE handle, IN const GUID *guid, IN const TEE_DEVICE_HANDLE device_handle)
TEESTATUS TEEAPI TeeInit(IN OUT PTEEHANDLE handle, IN const GUID *guid, IN OPTIONAL const char *device)
void TEEAPI TeeDisconnect(IN PTEEHANDLE handle)
TEESTATUS TEEAPI TeeConnect(OUT PTEEHANDLE handle)
TEESTATUS TEEAPI TeeWrite(IN PTEEHANDLE handle, IN const void *buffer, IN size_t bufferSize, OUT OPTIONAL size_t *numberOfBytesWritten, IN OPTIONAL uint32_t timeout)
struct _TEEHANDLE TEEHANDLE
uint32_t TEEAPI TeeSetLogLevel(IN PTEEHANDLE handle, IN uint32_t log_level)
uint8_t protcolVer
Definition: metee.h:79
enum tee_log_level log_level
Definition: metee.h:80
size_t maxMsgLen
Definition: metee.h:78
void * handle
Definition: metee.h:77
uint16_t major
Definition: metee.h:217
uint16_t build
Definition: metee.h:220
uint16_t minor
Definition: metee.h:218
uint16_t hotfix
Definition: metee.h:219