Hi,
For example, you can hardcode/manually set Central OOB own data and store it in an array. This data will be sent Out of Band to the peer device (using SPI, UART, I2C, etc.) and, at the same time, this data will be provided to the stack using Gap_ProvideOob. This data must be common on both Central and Peripheral devices. Gap_ProvideOob should be implemented in response to gConnEvtOobRequest_c event at the BleConnManager_GapCentralEvent function.
static uint8_t gOobOwnTKData[16] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
On the peripheral side you can, for example, store the data previously received Out of Band from the peer device (using SPI, UART, I2C, etc.) in an array, but the procedure to fill this array with the data received from the peer depends entirely on your application. The received data from the peer should be sent to the stack by executing Gap_ProvideOob.
static uint8_t gOobReceivedTKDataFromPeer[16];
I apologize for insisting, but please refer to KW36 - Enabling Out Of Band Pairing on a Bluetooth LE Central and Peripheral. This guide describes how to enable OOB pairing using either Secure Connections or Legacy Pairing in both Peripheral and Central devices.
Regards,
Eduardo.