# Copyright (c) 2017 Linaro Limited
# SPDX-License-Identifier: Apache-2.0

menuconfig LWM2M_IPSO_SUPPORT
	bool "IPSO Alliance Smart Object Support"
	help
	  This option adds general support for IPSO objects

if LWM2M_IPSO_SUPPORT

config LWM2M_IPSO_TEMP_SENSOR
	bool "IPSO Temperature Sensor Support"
	help
	  This IPSO object should be used with a temperature sensor to
	  report a temperature measurement. It also provides resources for
	  minimum/maximum measured values and the minimum/maximum range
	  that can be measured by the temperature sensor.

config LWM2M_IPSO_TEMP_SENSOR_INSTANCE_COUNT
	int "Maximum # of IPSO Temperature Sensor object instances"
	default 1
	depends on LWM2M_IPSO_TEMP_SENSOR
	help
	  This setting establishes the total count of IPSO Temperature
	  Sensor instances available to the LWM2M client.

choice LWM2M_IPSO_TEMP_SENSOR_VERSION
	prompt "IPSO Temperature object version"
	depends on LWM2M_IPSO_TEMP_SENSOR
	default LWM2M_IPSO_TEMP_SENSOR_VERSION_1_0
	help
	  Select which version of the IPSO Temperature object should be used.

config LWM2M_IPSO_TEMP_SENSOR_VERSION_1_0
	bool "IPSO Temperature object version 1.0"

config LWM2M_IPSO_TEMP_SENSOR_VERSION_1_1
	bool "IPSO Temperature object version 1.1"

endchoice

config LWM2M_IPSO_GENERIC_SENSOR
	bool "IPSO Generic Sensor Support"
	help
	  This IPSO object can be used to prototype a sensor.

if LWM2M_IPSO_GENERIC_SENSOR

config LWM2M_IPSO_GENERIC_SENSOR_INSTANCE_COUNT
	int "Maximum # of IPSO Generic Sensor object instances"
	default 1
	help
	  This setting establishes the total count of IPSO Generic
	  Sensor instances available to the LWM2M client.

choice LWM2M_IPSO_GENERIC_SENSOR_VERSION
	prompt "IPSO Generic Sensor object version"
	default LWM2M_IPSO_GENERIC_SENSOR_VERSION_1_0
	help
	  Select which version of the IPSO Generic Sensor object should be used.

config LWM2M_IPSO_GENERIC_SENSOR_VERSION_1_0
	bool "IPSO Generic Sensor object version 1.0"

config LWM2M_IPSO_GENERIC_SENSOR_VERSION_1_1
	bool "IPSO Generic Sensor object version 1.1"

endchoice

config LWM2M_IPSO_GENERIC_SENSOR_NAME
	string "Name that will show up in debug output when object is created"
	default "Generic"

config LWM2M_IPSO_GENERIC_SENSOR_TYPE
	string "Sensor type"
	default "Generic sensor"
	help
	  The type of the sensor (for instance PIR type).

endif # LWM2M_IPSO_GENERIC_SENSOR

config LWM2M_IPSO_HUMIDITY_SENSOR
	bool "IPSO Humidity Sensor Support"
	help
	  This IPSO object can be used to prototype a sensor.

if LWM2M_IPSO_HUMIDITY_SENSOR

config LWM2M_IPSO_HUMIDITY_SENSOR_INSTANCE_COUNT
	int "Maximum # of IPSO Humidity Sensor object instances"
	default 1
	help
	  This setting establishes the total count of IPSO Humidity
	  Sensor instances available to the LWM2M client.

choice LWM2M_IPSO_HUMIDITY_SENSOR_VERSION
	prompt "IPSO Humidity Sensor object version"
	default LWM2M_IPSO_HUMIDITY_SENSOR_VERSION_1_0
	help
	  Select which version of the IPSO Humidity Sensor object should be
	  used.

config LWM2M_IPSO_HUMIDITY_SENSOR_VERSION_1_0
	bool "IPSO Humidity Sensor object version 1.0"

config LWM2M_IPSO_HUMIDITY_SENSOR_VERSION_1_1
	bool "IPSO Humidity Sensor object version 1.1"

endchoice

endif # LWM2M_IPSO_HUMIDITY_SENSOR

config LWM2M_IPSO_PRESSURE_SENSOR
	bool "IPSO Pressure Sensor Support"
	help
	  This IPSO object can be used to prototype a sensor.

if LWM2M_IPSO_PRESSURE_SENSOR

config LWM2M_IPSO_PRESSURE_SENSOR_INSTANCE_COUNT
	int "Maximum # of IPSO Pressure Sensor object instances"
	default 1
	help
	  This setting establishes the total count of IPSO Pressure
	  Sensor instances available to the LWM2M client.

choice LWM2M_IPSO_PRESSURE_SENSOR_VERSION
	prompt "IPSO Pressure Sensor object version"
	default LWM2M_IPSO_PRESSURE_SENSOR_VERSION_1_0
	help
	  Select which version of the IPSO Pressure Sensor object should be
	  used.

config LWM2M_IPSO_PRESSURE_SENSOR_VERSION_1_0
	bool "IPSO Pressure Sensor object version 1.0"

config LWM2M_IPSO_PRESSURE_SENSOR_VERSION_1_1
	bool "IPSO Pressure Sensor object version 1.1"

endchoice

endif # LWM2M_IPSO_PRESSURE_SENSOR

config LWM2M_IPSO_LIGHT_CONTROL
	bool "IPSO Light Control Support"
	help
	  This Object is used to control a light source, such as a LED or other
	  light. It allows a light to be turned on or off and its dimmer
	  setting to be controlled as a % between 0 and 100. An optional color
	  setting enables a string to be used to indicate the desired color.

config LWM2M_IPSO_LIGHT_CONTROL_INSTANCE_COUNT
	int "Maximum # of IPSO Light Control object instances"
	default 1
	depends on LWM2M_IPSO_LIGHT_CONTROL
	help
	  This setting establishes the total count of IPSO Light Control
	  instances available to the LWM2M client.

config LWM2M_IPSO_ACCELEROMETER
	bool "IPSO Accelerometer Support"
	help
	  This Object is used to used to represent a 1-3 axis accelerometer.

config LWM2M_IPSO_ACCELEROMETER_INSTANCE_COUNT
	int "Maximum # of IPSO Accelerometer object instances"
	default 1
	depends on LWM2M_IPSO_ACCELEROMETER
	help
	  This setting establishes the total count of IPSO Accelerometer
	  instances available to the LWM2M client.

choice LWM2M_IPSO_ACCELEROMETER_VERSION
	prompt "IPSO Accelerometer object version"
	depends on LWM2M_IPSO_ACCELEROMETER
	default LWM2M_IPSO_ACCELEROMETER_VERSION_1_0
	help
	  Select which version of the IPSO Accelerometer object should be used.

config LWM2M_IPSO_ACCELEROMETER_VERSION_1_0
	bool "IPSO Accelerometer object version 1.0"

config LWM2M_IPSO_ACCELEROMETER_VERSION_1_1
	bool "IPSO Accelerometer object version 1.1"

endchoice

config LWM2M_IPSO_BUZZER
	bool "IPSO Buzzer Support"
	help
	  This Object is used to actuate an audible alarm such as a buzzer,
	  beeper, or vibration alarm.

config LWM2M_IPSO_BUZZER_INSTANCE_COUNT
	int "Maximum # of IPSO Buzzer instances"
	default 1
	depends on LWM2M_IPSO_BUZZER
	help
	  This setting establishes the total count of IPSO Buzzer
	  instances available to the LWM2M client.

choice LWM2M_IPSO_BUZZER_VERSION
	prompt "IPSO Buzzer object version"
	depends on LWM2M_IPSO_BUZZER
	default LWM2M_IPSO_BUZZER_VERSION_1_0
	help
	  Select which version of the IPSO Buzzer object should be used.

config LWM2M_IPSO_BUZZER_VERSION_1_0
	bool "IPSO Buzzer object version 1.0"

config LWM2M_IPSO_BUZZER_VERSION_1_1
	bool "IPSO Buzzer object version 1.1"

endchoice

config LWM2M_IPSO_TIMER
	bool "IPSO Timer Support"
	help
	  This Object is used to time events / actions

config LWM2M_IPSO_TIMER_INSTANCE_COUNT
	int "Maximum # of IPSO Timer object instances"
	default 1
	depends on LWM2M_IPSO_TIMER
	help
	  This setting establishes the total count of IPSO Timer
	  instances available to the LWM2M client.

config LWM2M_IPSO_ONOFF_SWITCH
	bool "IPSO On/Off Switch Support"
	help
	  This object is used with an On/Off switch to report it's state.

config LWM2M_IPSO_ONOFF_SWITCH_INSTANCE_COUNT
	int "Maximum # of IPSO On/Off Switch object instances"
	default 1
	depends on LWM2M_IPSO_ONOFF_SWITCH
	help
	  This setting establishes the total count of IPSO On/Off Switch
	  instances available to the LWM2M client.

choice LWM2M_IPSO_ONOFF_SWITCH_VERSION
	prompt "IPSO On/Off Switch object version"
	depends on LWM2M_IPSO_ONOFF_SWITCH
	default LWM2M_IPSO_ONOFF_SWITCH_VERSION_1_0
	help
	  Select which version of the IPSO On/Off Switch object should be used.

config LWM2M_IPSO_ONOFF_SWITCH_VERSION_1_0
	bool "IPSO On/Off Switch object version 1.0"

config LWM2M_IPSO_ONOFF_SWITCH_VERSION_1_1
	bool "IPSO On/Off Switch object version 1.1"

endchoice

config LWM2M_IPSO_PUSH_BUTTON
	bool "IPSO Push Button Support"
	help
	  This Object is used to report the state of a momentary action push
	  button control and to count the number of times the control has
	  been operated since the last observation.

config LWM2M_IPSO_PUSH_BUTTON_INSTANCE_COUNT
	int "Maximum # of IPSO On/Off Switch object instances"
	default 1
	depends on LWM2M_IPSO_PUSH_BUTTON
	help
	  This setting establishes the total count of IPSO Push Button
	  instances available to the LWM2M client.

choice LWM2M_IPSO_PUSH_BUTTON_VERSION
	prompt "IPSO Push Button object version"
	depends on LWM2M_IPSO_PUSH_BUTTON
	default LWM2M_IPSO_PUSH_BUTTON_VERSION_1_0
	help
	  Select which version of the IPSO Push Button object should be used.

config LWM2M_IPSO_PUSH_BUTTON_VERSION_1_0
	bool "IPSO Push Button object version 1.0"

config LWM2M_IPSO_PUSH_BUTTON_VERSION_1_1
	bool "IPSO Push Button object version 1.1"

endchoice

config LWM2M_IPSO_CURRENT_SENSOR
	bool "IPSO Current Sensor Support"
	help
	  This IPSO object should be used with a current sensor to
	  report a current measurement. It also provides resources for
	  minimum/maximum measured values and the minimum/maximum range
	  that can be measured by the sensor.

config LWM2M_IPSO_CURRENT_SENSOR_INSTANCE_COUNT
	int "Maximum # of IPSO Current Sensor object instances"
	default 1
	depends on LWM2M_IPSO_CURRENT_SENSOR
	help
	  This setting establishes the total count of IPSO Current
	  Sensor instances available to the LWM2M client.

choice LWM2M_IPSO_CURRENT_SENSOR_VERSION
	prompt "IPSO Current object version"
	default LWM2M_IPSO_CURRENT_SENSOR_VERSION_1_0
	depends on LWM2M_IPSO_CURRENT_SENSOR
	help
	  Select which version of the IPSO Current object should be used.

config LWM2M_IPSO_CURRENT_SENSOR_VERSION_1_0
	bool "IPSO Current object version 1.0"

config LWM2M_IPSO_CURRENT_SENSOR_VERSION_1_1
	bool "IPSO Current object version 1.1"
	help
	  Adds timestamp and measurement quality

endchoice

config LWM2M_IPSO_VOLTAGE_SENSOR
	bool "IPSO Voltage Sensor Support"
	help
	  This IPSO object should be used with a voltage sensor to
	  report a voltage measurement. It also provides resources for
	  minimum/maximum measured values and the minimum/maximum range
	  that can be measured by the sensor.

config LWM2M_IPSO_VOLTAGE_SENSOR_INSTANCE_COUNT
	int "Maximum # of IPSO Voltage Sensor object instances"
	default 1
	depends on LWM2M_IPSO_VOLTAGE_SENSOR
	help
	  This setting establishes the total count of IPSO Voltage
	  Sensor instances available to the LWM2M client.

choice LWM2M_IPSO_VOLTAGE_SENSOR_VERSION
	prompt "IPSO Voltage object version"
	default LWM2M_IPSO_VOLTAGE_SENSOR_VERSION_1_0
	depends on LWM2M_IPSO_VOLTAGE_SENSOR
	help
	  Select which version of the IPSO Voltage object should be used.

config LWM2M_IPSO_VOLTAGE_SENSOR_VERSION_1_0
	bool "IPSO Voltage object version 1.0"

config LWM2M_IPSO_VOLTAGE_SENSOR_VERSION_1_1
	bool "IPSO Voltage object version 1.1"
	help
	  Adds timestamp and measurement quality

endchoice

config LWM2M_IPSO_FILLING_SENSOR
	bool "IPSO Filling sensor Support"
	help
	  This IPSO object can be used with an ultrasonic sensor to
	  report how full a container is.

config LWM2M_IPSO_FILLING_SENSOR_INSTANCE_COUNT
	int "Maximum # of IPSO filling sensor object instances"
	default 1
	depends on LWM2M_IPSO_FILLING_SENSOR
	help
	  This setting establishes the total count of IPSO filling
	  sensor instances available to the LwM2M client.

endif # LWM2M_LWM2M_IPSO_SUPPORT
