include $(_sdk_dir)/tbase-utils.mk

##########################
# Strip input parameters #
##########################

LOCAL_NAME := $(strip $(LOCAL_NAME))
LOCAL_UUID := $(strip $(LOCAL_UUID))
LOCAL_KEYFILE := $(strip $(LOCAL_KEYFILE))
LOCAL_DRIVER_ID := $(strip $(LOCAL_DRIVER_ID))
LOCAL_SDK_PATH := $(strip $(LOCAL_SDK_PATH))

####################################
# Check necessary input parameters #
####################################

ifeq ($(LOCAL_NAME),)
  $(error LOCAL_NAME is not specified)
endif

ifeq ($(LOCAL_UUID),)
  $(error LOCAL_UUID is not specified)
endif

ifeq ($(LOCAL_DRIVER_ID),)
  $(error LOCAL_DRIVER_ID is not specified)
endif

#####################################
# Set defaut keyfile if not present #
#####################################

ifeq ($(LOCAL_KEYFILE),)
LOCAL_KEYFILE := $(realpath $(_sdk_dir)/../tools/tbase-keys/pair-vendor-tl-sign.pem)
endif

#######################################
# Set defaut api level if not present #
#######################################

ifeq ($(LOCAL_API_LEVEL),)
  LOCAL_API_LEVEL := 2
  # LOCAL_API_LEVEL <= 3 is not supported since Kinibi500.
  ifeq ($(call get-tbase-version,$(LOCAL_SDK_PATH)),5xx)
    LOCAL_API_LEVEL := 11
  endif
endif


##################################
# Set up driver build parameters #
##################################

OUTPUT_NAME := $(LOCAL_NAME)
DRIVER_UUID := $(LOCAL_UUID)
DRIVER_KEYFILE := $(LOCAL_KEYFILE)
# >100
DRIVER_ID := $(LOCAL_DRIVER_ID)

# 0: iram preferred; 1: iram; 2: eram
ifeq ($(LOCAL_MEMTYPE),)
  DRIVER_MEMTYPE := 2
else
  DRIVER_MEMTYPE := $(LOCAL_MEMTYPE)
endif

# min = 1; max = 8
ifeq ($(LOCAL_NUM_OF_THREADS),)
  DRIVER_NO_OF_THREADS := 3 
else
  DRIVER_NO_OF_THREADS := $(LOCAL_NUM_OF_THREADS)
endif

# 1: driver; 2: service provider trustlet; 3: system trustlet
ifeq ($(LOCAL_SERVICE_TYPE),)
  DRIVER_SERVICE_TYPE := 1
else
  DRIVER_SERVICE_TYPE := $(LOCAL_SERVICE_TYPE)
endif

ifeq ($(LOCAL_INSTANCES),)
  DRIVER_INSTANCES := 1
else
  DRIVER_INSTANCES := $(LOCAL_INSTANCES)
endif

# 0: no flag; 1: permanent; 2: service has no WSM control interface; 3: both (permanent and service has not WSM control interface)
ifeq ($(LOCAL_SIGN_FLAGS),)
  DRIVER_FLAGS:= 0
else
  DRIVER_FLAGS:= $(LOCAL_SIGN_FLAGS)
endif
