# PLDM daemon options
option(
    'tests',
    type: 'feature',
    value: 'enabled',
    description: 'Build tests'
)

option(
    'utilities',
    type: 'feature',
    value: 'enabled',
    description: 'Enable debug utilities'
)

option(
    'libpldmresponder',
    type: 'feature',
    value: 'enabled',
    description: 'Enable libpldmresponder'
)

option(
    'systemd',
    type: 'feature',
    value: 'enabled',
    description: 'Include systemd support'
)

option(
    'transport-implementation',
    type: 'combo',
    choices: ['mctp-demux', 'af-mctp'],
    description: 'transport via af-mctp or mctp-demux'
)

# As per PLDM spec DSP0240 version 1.1.0, in Timing Specification for PLDM messages (Table 6),
# the instance ID for a given response will expire and become reusable if a response has not been
# received within a maximum of 6 seconds after a request is sent. By setting the dbus timeout
# value to 5 seconds we ensure that PLDM does not wait for a response from a dbus call even after
# the instance ID has expired. If the option is set to 5 seconds, any dbus call originated from
# PLDM daemon will timeout after 5 seconds.
option(
    'dbus-timeout-value',
    type: 'integer',
    min: 3,
    max: 10,
    value: 5,
    description: '''The amount of time pldm waits to get a response for a dbus
                    message before timing out'''
)

option(
    'heartbeat-timeout-seconds',
    type: 'integer',
    value: 120,
    description: '''The amount of time host waits for BMC to respond to pings
                    from host, as part of host-bmc surveillance'''
)

# Flight Recorder for PLDM Daemon
option(
    'flightrecorder-max-entries',
    type:'integer',
    min:0,
    max:30,
    value: 10,
    description: '''The max number of pldm messages that can be stored in the
                    recorder, this feature will be disabled if it is set to 0'''
)

# PLDM Daemon Terminus options
option(
    'terminus-id',
    type:'integer',
    min:0,
    max: 255,
    value:1,
    description: '''The terminus id value of the device that is running this
                    pldm stack'''
)

option(
    'terminus-handle',
    type:'integer',
    min:0,
    max:65535,
    value:1,
    description: '''The terminus handle value of the device that is running this
                    pldm stack'''
)

# Timing specification options for PLDM messages
option(
    'number-of-request-retries',
    type: 'integer',
    min: 2,
    max: 30,
    value: 2,
    description: '''The number of times a requester is obligated to retry a
                    request'''
)

option(
    'instance-id-expiration-interval',
    type: 'integer',
    min: 5,
    max: 6,
    value: 5,
    description: 'Instance ID expiration interval in seconds'
)

# Default response-time-out set to 2 seconds to facilitate a minimum retry of
# the request of 2.
option(
    'response-time-out',
    type: 'integer',
    min: 300,
    max: 4800,
    value: 2000,
    description: '''The amount of time a requester has to wait for a response
                    message in milliseconds'''
)

# Firmware update configuration parameters
option(
    'maximum-transfer-size',
    type: 'integer',
    min: 16,
    max: 4294967295,
    value: 4096,
    description: '''Maximum size in bytes of the variable payload allowed to be
                    requested by the FD, via RequestFirmwareData command'''
)

# Bios Attributes option
option(
    'system-specific-bios-json',
    type : 'feature',
    value: 'disabled',
    description : 'Support for different set of bios attributes for different types of systems'
)

# PLDM Soft Power off options
option(
    'softoff',
    type: 'feature',
    value: 'enabled',
    description: 'Build soft power off application'
)

option(
    'softoff-timeout-seconds',
    type: 'integer',
    value: 7200,
    description: 'softoff: Time to wait for host to gracefully shutdown'
)

# Vendor Specific Options

## OEM IBM Options
option(
    'oem-ibm',
    type: 'feature',
    value: 'enabled',
    description: 'Enable IBM OEM PLDM'
)

option(
    'oem-ibm-dma-maxsize',
    type: 'integer',
    min:4096,
    max: 16773120,
    value: 8384512,
    description: 'OEM-IBM: max DMA size'
)