# Kconfig - GATT Device Information service
#
# Copyright (c) 2018 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig BT_GATT_DIS
	bool "Enable GATT Device Information service"
	default n

if BT_GATT_DIS

config BT_GATT_DIS_MODEL
	string "Model name"
	default SOC
	help
	 The device model inside Device Information Service.

config BT_GATT_DIS_MANUF
	string "Manufacturer name"
	default "Manufacturer"
	help
	 The device manufacturer inside Device Information Service.

config BT_GATT_DIS_PNP
	bool "Enable PnP_ID characteristic"
	default y
	help
	 Enable PnP_ID characteristic in Device Information Service.

if BT_GATT_DIS_PNP

config BT_GATT_DIS_PNP_VID_SRC
	int "Vendor ID source"
	range 1 2
	default 1
	help
	 The Vendor ID Source field designates which organization assigned the
	 value used in the Vendor ID field value.
	 The possible values are:
	 - 1 Bluetooth SIG, the Vendor ID was assigned by the Bluetooth SIG
	 - 2 USB IF, the Vendor ID was assigned by the USB IF

config BT_GATT_DIS_PNP_VID
	hex "Vendor ID"
	range 0 0xFFFF
	default 0
	help
	 The Vendor ID field is intended to uniquely identify the vendor of the
	 device. This field is used in conjunction with Vendor ID Source field,
	 which determines which organization assigned the Vendor ID field value.
	 Note: The Bluetooth Special Interest Group assigns Device ID Vendor ID,
	 and the USB Implementer’s Forum assigns Vendor IDs,
	 either of which can be used for the Vendor ID field value.
	 Device providers should procure the Vendor ID from the USB Implementer’s
	 Forum or the Company Identifier from the Bluetooth SIG.

config BT_GATT_DIS_PNP_PID
	hex "Product ID"
	range 0 0xFFFF
	default 0
	help
	 The Product ID field is intended to distinguish between different products
	 made by the vendor identified with the Vendor ID field. The vendors
	 themselves manage Product ID field values.

config BT_GATT_DIS_PNP_VER
	hex "Product Version"
	range 0 0xFFFF
	default 1
	help
	 The Product Version field is a numeric expression identifying the device
	 release number in Binary-Coded Decimal. This is a vendor-assigned value,
	 which defines the version of the product identified by the Vendor ID and
	 Product ID fields. This field is intended to differentiate between
	 versions of products with identical Vendor IDs and Product IDs.
	 The value of the field value is 0xJJMN for version JJ.M.N
	 (JJ – major version number, M – minor version number,
	 N – sub-minor version number); e.g., version 2.1.3 is represented with
	 value 0x0213 and version 2.0.0 is represented with a value of 0x0200.
	 When upward-compatible changes are made to the device, it is recommended
	 that the minor version number be incremented. If incompatible changes are
	 made to the device, it is recommended that the major version number be
	 incremented. The sub-minor version is incremented for bug fixes.

endif #BT_GATT_DIS_PNP

endif #BT_GATT_DIS
