#ifndef TESTS_FUNCTIONAL_PA_CLIENT_INCLUDE_COMMAND_H_
#define TESTS_FUNCTIONAL_PA_CLIENT_INCLUDE_COMMAND_H_

#include <stddef.h>
#include "pa_api.h"
#include "pa_tz_api.h"

enum {
  kCommandIdAuthenticate = 0x01,
  kCommandReadFromNwdTask,
  kCommandWriteToNwdTask,
  kCommandReadBigBufferNwdTask,
  kCommandWriteBigBufferNwdTask,
  kPerformanceNativeClient,
  kPerformanceNativeClientRead,
  kPerformanceNativeClientWrite,
  kTestSimpleAuthenticate,
  KAuthenticateWithProcessInfo,
  KAuthenticateWithProvidedAppName,
  kAuthenticateByAppName,
  kAuthenticateByPidAndAppName,
  kStressAuthentication = 0x00001000,
};

enum {
  kStartInitValue = 0xAA,
  kUpdateInitValue = 0xBB
};

#define RESP_FAILED  (0)
#define RESP_SUCCESS (1)

#define MAX_BUFFER_SIZE (1024 * 10)

#define MESSAGE_FROM_NWD "a_very_secret_buffer_with_a_key"
#define MESSAGE_FROM_SWD "it_is_a_fake_key!"

#define HANDLER_NUM 5

typedef struct {
  uint32_t cmdId;
  uint32_t resp;
  PaHandler handler;
  uint64_t address;
  uint64_t size;
  uint64_t address_big_buffer;
  uint64_t size_big_buffer;
  uint64_t checksum_big_buffer;
  uint32_t authentication_exec_time;
  ProcessInfo process_info;
  PaTzResult tz_result;
  char app_name[MAX_BUFFER_SIZE];
  PaHandler handler_set[HANDLER_NUM];
  uint32_t handler_num;
  uint32_t authentication_attempts_number;
  uint32_t pid;
} TciCommand;

#endif  // TESTS_FUNCTIONAL_PA_CLIENT_INCLUDE_COMMAND_H_
