metee.h(3) Library Functions Manual metee.h(3)

metee.h - metee library API

#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>


struct _TEEHANDLE
struct tee_device_address
struct teeDriverVersion_t


#define TEEHANDLE_ZERO {0}
#define TEE_ERROR_BASE 0x0000U
#define TEE_SUCCESS (TEE_ERROR_BASE + 0)
#define TEE_INTERNAL_ERROR (TEE_ERROR_BASE + 1)
#define TEE_DEVICE_NOT_FOUND (TEE_ERROR_BASE + 2)
#define TEE_DEVICE_NOT_READY (TEE_ERROR_BASE + 3)
#define TEE_INVALID_PARAMETER (TEE_ERROR_BASE + 4)
#define TEE_UNABLE_TO_COMPLETE_OPERATION (TEE_ERROR_BASE + 5)
#define TEE_TIMEOUT (TEE_ERROR_BASE + 6)
#define TEE_NOTSUPPORTED (TEE_ERROR_BASE + 7)
#define TEE_CLIENT_NOT_FOUND (TEE_ERROR_BASE + 8)
#define TEE_BUSY (TEE_ERROR_BASE + 9)
#define TEE_DISCONNECTED (TEE_ERROR_BASE + 10)
#define TEE_INSUFFICIENT_BUFFER (TEE_ERROR_BASE + 11)
#define TEE_PERMISSION_DENIED (TEE_ERROR_BASE + 12)
#define TEE_IS_SUCCESS(Status) (((TEESTATUS)(Status)) == TEE_SUCCESS)


typedef void(* TeeLogCallback) (bool is_error, const char *fmt,...)
typedef struct _TEEHANDLE TEEHANDLE
typedef TEEHANDLE * PTEEHANDLE
A type definition for pointer to TEEHANDLE. typedef uint16_t TEESTATUS


enum tee_log_level { TEE_LOG_LEVEL_QUIET = 0, TEE_LOG_LEVEL_ERROR = 1, TEE_LOG_LEVEL_VERBOSE = 2, TEE_LOG_LEVEL_MAX = 3 }


TEESTATUS TEEAPI TeeInitFull (IN OUT PTEEHANDLE handle, IN const GUID *guid, IN const struct tee_device_address device, IN uint32_t log_level, IN OPTIONAL TeeLogCallback log_callback)
TEESTATUS TEEAPI TeeInit (IN OUT PTEEHANDLE handle, IN const GUID *guid, IN OPTIONAL const char *device)
TEESTATUS TEEAPI TeeInitHandle (IN OUT PTEEHANDLE handle, IN const GUID *guid, IN const TEE_DEVICE_HANDLE device_handle)
TEESTATUS TEEAPI TeeConnect (OUT PTEEHANDLE handle)
TEESTATUS TEEAPI TeeRead (IN PTEEHANDLE handle, IN OUT void *buffer, IN size_t bufferSize, OUT OPTIONAL size_t *pNumOfBytesRead, IN OPTIONAL uint32_t timeout)
TEESTATUS TEEAPI TeeWrite (IN PTEEHANDLE handle, IN const void *buffer, IN size_t bufferSize, OUT OPTIONAL size_t *numberOfBytesWritten, IN OPTIONAL uint32_t timeout)
TEESTATUS TEEAPI TeeFWStatus (IN PTEEHANDLE handle, IN uint32_t fwStatusNum, OUT uint32_t *fwStatus)
TEESTATUS TEEAPI TeeGetTRC (IN PTEEHANDLE handle, OUT uint32_t *trc_val)
void TEEAPI TeeDisconnect (IN PTEEHANDLE handle)
TEE_DEVICE_HANDLE TEEAPI TeeGetDeviceHandle (IN PTEEHANDLE handle)
TEESTATUS TEEAPI GetDriverVersion (IN PTEEHANDLE handle, IN OUT teeDriverVersion_t *driverVersion)
uint32_t TEEAPI TeeSetLogLevel (IN PTEEHANDLE handle, IN uint32_t log_level)
uint32_t TEEAPI TeeGetLogLevel (IN const PTEEHANDLE handle)
TEESTATUS TEEAPI TeeSetLogCallback (IN const PTEEHANDLE handle, TeeLogCallback log_callback)

metee library API

Definition in file metee.h.

The device is busy

Definition at line 141 of file metee.h.

The ME client is not present in the firmware

Definition at line 139 of file metee.h.

The device is not in the system or is not working

Definition at line 127 of file metee.h.

The device is not ready for the operation

Definition at line 129 of file metee.h.

The ME client is not connected

Definition at line 143 of file metee.h.

METEE ERROR BASE

Definition at line 121 of file metee.h.

The buffer for read not big enough

Definition at line 145 of file metee.h.

An internal error occurred in the library

Definition at line 125 of file metee.h.

An invalid parameter was used in the call

Definition at line 131 of file metee.h.

Macro for successful operation result check

Definition at line 151 of file metee.h.

The operation is not supported

Definition at line 137 of file metee.h.

The user don't have permission for this operation

Definition at line 147 of file metee.h.

METEE SUCCESS

Definition at line 123 of file metee.h.

The operation has timed out

Definition at line 135 of file metee.h.

It is not possible to complete the operation

Definition at line 133 of file metee.h.

ZERO/NULL device handle

Definition at line 117 of file metee.h.

A type definition for pointer to TEEHANDLE.

Definition at line 94 of file metee.h.

Structure to store connection data

log callback function format

Definition at line 76 of file metee.h.

return status for API functions

Definition at line 119 of file metee.h.

log level

Enumerator

no log prints
error log prints
verbose log prints
upper sentinel

Definition at line 67 of file metee.h.

TEESTATUS TEEAPI GetDriverVersion (IN PTEEHANDLE handle, IN OUT teeDriverVersion_t * driverVersion)

Obtains version of the TEE device driver Not implemented on Linux

Parameters

handle The handle of the session.
driverVersion Pointer to driver version struct

Returns

0 if successful, otherwise error code.

TEESTATUS TEEAPI TeeConnect (OUT PTEEHANDLE handle)

Connects to the TEE driver and starts a session

Parameters

handle A handle to the TEE device

Returns

0 if successful, otherwise error code

Closes the session to TEE driver Make sure that you call this function as soon as you are done with the device, as other clients might be blocked until the session is closed.

Parameters

handle The handle of the session to close.

TEESTATUS TEEAPI TeeFWStatus (IN PTEEHANDLE handle, IN uint32_t fwStatusNum, OUT uint32_t * fwStatus)

Retrieves specified FW status register.

Parameters

handle The handle of the session.
fwStatusNum The FW status register number (0-5).
fwStatus The memory to store obtained FW status.

Returns

0 if successful, otherwise error code.

Returns handle of TEE device Obtains HECI device handle on Windows and mei device file descriptor on Linux

Parameters

handle The handle of the session.

Returns

device handle

Retrieve current log level

Parameters

handle The handle of the session.

Returns

current log level

TEESTATUS TEEAPI TeeGetTRC (IN PTEEHANDLE handle, OUT uint32_t * trc_val)

Retrieves TRC register.

Parameters

handle The handle of the session.
trc_val The memory to store obtained TRC value.

Returns

0 if successful, otherwise error code.

TEESTATUS TEEAPI TeeInit (IN OUT PTEEHANDLE handle, IN const GUID * guid, IN OPTIONAL const char * device)

Initializes a TEE connection

Parameters

handle A handle to the TEE device. All subsequent calls to the lib's functions must be with this handle
guid GUID of the FW client that want to start a session
device optional device path, set NULL to use default

Returns

0 if successful, otherwise error code

TEESTATUS TEEAPI TeeInitFull (IN OUT PTEEHANDLE handle, IN const GUID * guid, IN const struct tee_device_address device, IN uint32_t log_level, IN OPTIONAL TeeLogCallback log_callback)

Initializes a TEE connection

Parameters

handle A handle to the TEE device. All subsequent calls to the lib's functions must be with this handle
guid GUID of the FW client that want to start a session
device device address structure
log_level log level to set (from enum tee_log_level)
log_callback pointer to function to run for log write, set NULL to use built-in function

Returns

0 if successful, otherwise error code

TEESTATUS TEEAPI TeeInitHandle (IN OUT PTEEHANDLE handle, IN const GUID * guid, IN const TEE_DEVICE_HANDLE device_handle)

Initializes a TEE connection

Parameters

handle A handle to the TEE device. All subsequent calls to the lib's functions must be with this handle
guid GUID of the FW client that want to start a session
device_handle open file handle

Returns

0 if successful, otherwise error code

TEESTATUS TEEAPI TeeRead (IN PTEEHANDLE handle, IN OUT void * buffer, IN size_t bufferSize, OUT OPTIONAL size_t * pNumOfBytesRead, IN OPTIONAL uint32_t timeout)

Read data from the TEE device synchronously.

Parameters

handle The handle of the session to read from.
buffer A pointer to a buffer that receives the data read from the TEE device.
bufferSize The number of bytes to be read.
pNumOfBytesRead A pointer to the variable that receives the number of bytes read, ignored if set to NULL.
timeout The timeout to complete read in milliseconds, zero for infinite

Returns

0 if successful, otherwise error code

TEESTATUS TEEAPI TeeSetLogCallback (IN const PTEEHANDLE handle, TeeLogCallback log_callback)

Set log callback

Parameters

handle The handle of the session.
log_callback pointer to function to run for log write, set NULL to use built-in function

Returns

0 if successful, otherwise error code.

Set log level

Parameters

handle The handle of the session.
log_level log level to set

Returns

previous log level

TEESTATUS TEEAPI TeeWrite (IN PTEEHANDLE handle, IN const void * buffer, IN size_t bufferSize, OUT OPTIONAL size_t * numberOfBytesWritten, IN OPTIONAL uint32_t timeout)

Writes the specified buffer to the TEE device synchronously.

Parameters

handle The handle of the session to write to.
buffer A pointer to the buffer containing the data to be written to the TEE device.
bufferSize The number of bytes to be written.
numberOfBytesWritten A pointer to the variable that receives the number of bytes written, ignored if set to NULL.
timeout The timeout to complete write in milliseconds, zero for infinite

Returns

0 if successful, otherwise error code

Generated automatically by Doxygen for metee from the source code.

Sat Mar 2 2024 13:33:21 metee