This bitfield defines what access is available to the property. It's assigned by the peripheral, and provides information to the central device about how the characteristic can be read or written.
BleCharacteristicProperty::BROADCAST(0x01) The value can be broadcast.
BleCharacteristicProperty::READ(0x02) The value can be read.
BleCharacteristicProperty::WRITE_WO_RSP(0x04) The value can be written without acknowledgement. For example, the UART peripheral example uses this characteristic properly to receive UART data from the central device.
BleCharacteristicProperty::WRITE(0x08) The value can be written to the peripheral from the central device.
BleCharacteristicProperty::NOTIFY(0x10) The value is published by the peripheral without acknowledgement. This is the standard way peripherals periodically publish data.
BleCharacteristicProperty::INDICATE(0x20) The value can be indicated, basically publish with acknowledgement.
BleCharacteristicProperty::AUTH_SIGN_WRITES(0x40) The value supports signed writes. This is operation not supported.
BleCharacteristicProperty::EXTENDED_PROP(0x80) The value supports extended properties. This operation is not supported.
You only assign these values as a peripheral device, and will typically use one of two values:
BleCharacteristicProperty::NOTIFYwhen your peripheral periodically publishes data
BleCharacteristicProperty::WRITE_WO_RSPwhen your peripheral receives data from the central device.
For bidirectional data transfer you typically assign two different characteristics, one for receive and one for transmit, as shown in the UART examples.