#include <tee_internal_api.h>

#include <errno.h>
#include <stdint.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>

#include "platform_driver_api.h"
#include "driver_ipc.h"
#include "driver_log.h"


PaTzResult PlatformCallDriver(uint32_t id_driver, uint32_t ioctl_cmd,
                              void *params, uint32_t size_params) {
  int fd = open(kProcaTeegrisDriverName, O_RDWR, 0);
  if (fd < 0) {
    LOG_E("ERROR in driver open!");
    return PA_TZ_GENERAL_ERROR;
  }

  int res = ioctl(fd, ioctl_cmd, (unsigned long)params);
  if (res < 0) {
    LOG_E("Driver ioctl() call error.\n");
    LOG_D("Received errno = %d\n", errno);
    close(fd);
    return PA_TZ_GENERAL_ERROR;
  }

  res = close(fd);
  if (res < 0) {
    LOG_E("Driver close() call error.\n");
    LOG_D("Received errno = %d\n", errno);
    return PA_TZ_GENERAL_ERROR;
  }

  return PA_TZ_SUCCESS;
}

void PlatformRegisterTrustletOutputBuffer(void *data, size_t size) {
}

void PlatformRegisterTrustletInputBuffer(const void *data, size_t size) {
}
