#include <stdio.h>

#include <tee_client_api.h>

TEEC_UUID uuid = {
    .timeLow = 0x30315f74,
    .timeMid = 0x615f,
    .timeHiAndVersion = 0x7361,
    .clockSeqAndNode = {0x6d, 0x70, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00},
};

int main(int argc, char **argv) {
  TEEC_Context context;
  TEEC_Session session;
  TEEC_Operation operation;
  uint32_t returnOrigin;
  TEEC_Result res = TEEC_InitializeContext(NULL, &context);

  if (res != TEEC_SUCCESS) {
    fprintf(stderr, "InitializeContext failed: %x\n", res);
    goto exit;
  }

  res = TEEC_OpenSession(&context, &session, &uuid, 0, NULL, NULL, &returnOrigin);

  if (res != TEEC_SUCCESS) {
    fprintf(stderr, "TEEC_OpenSession returned %x from %x\n", res, returnOrigin);
    goto finalize_context;
  }

  operation.paramTypes = TEEC_PARAM_TYPES(TEEC_NONE,
                                          TEEC_NONE,
                                          TEEC_NONE,
                                          TEEC_NONE);

  res = TEEC_InvokeCommand(&session, 0x0, &operation, &returnOrigin);

  if (res != TEEC_SUCCESS) {
    fprintf(stderr, "TEEC_InvokeCommand returned %x from %x\n", res, returnOrigin);
  }

  TEEC_CloseSession(&session);

finalize_context:
  TEEC_FinalizeContext(&context);

exit:
  return (res != TEEC_SUCCESS);
}

