# The post-building script uses this file to generate specified static configurations.
# All '#' prefixed lines are ignored by the script.
# Each line defines a static configuration by 3 fields separated by commas.
#
# The 1st field is a 16-bit ID from 0x2000 to 0x3ffff.
# All IDs in this file have to be different.
#
# The 2nd field is a type to which the script interprets the value according.
#
# The 3rd field is a value of the static configuration. The value format depends on what the value type is:
# - hex: Multiple hexadecimal values separated by commas.
# - uint32/uint16/uint8/int16/int8: A integer.
# - eui64: random or btext. If the value is btext, the configuration will be generated from the BT address.
#
# ID, type, value
# EUI64
0x2000, eui64, random
# Setup Pin Code
0x2105, uint32, 20202021
# Setup Discriminator
0x2107, uint32, 3840
