Bluetooth: Mesh: Provisioning PDU length defines

Adds length defines for all provisioning PDUs and uses them to split
prov_link.conf_inputs into separate fields.

Signed-off-by: Trond Einar Snekvik <Trond.Einar.Snekvik@nordicsemi.no>
This commit is contained in:
Trond Einar Snekvik 2021-06-16 15:12:57 +02:00 committed by Carles Cufí
commit abcbfed6c3
4 changed files with 80 additions and 55 deletions

View file

@ -34,6 +34,10 @@
struct bt_mesh_prov_link bt_mesh_prov_link;
const struct bt_mesh_prov *bt_mesh_prov;
/* Verify specification defined length: */
BUILD_ASSERT(sizeof(bt_mesh_prov_link.conf_inputs) == 145,
"Confirmation inputs shall be 145 bytes");
static void pub_key_ready(const uint8_t *pkey)
{
if (!pkey) {
@ -53,7 +57,7 @@ int bt_mesh_prov_reset_state(void (*func)(const uint8_t key[64]))
pub_key_cb.func = func ? func : pub_key_ready;
/* Disable Attention Timer if it was set */
if (bt_mesh_prov_link.conf_inputs[0]) {
if (bt_mesh_prov_link.conf_inputs.invite[0]) {
bt_mesh_attention(NULL, 0);
}
@ -260,16 +264,16 @@ static void prov_recv(const struct prov_bearer *bearer, void *cb_data,
struct net_buf_simple *buf)
{
static const uint8_t op_len[10] = {
[PROV_INVITE] = 1,
[PROV_CAPABILITIES] = 11,
[PROV_START] = 5,
[PROV_PUB_KEY] = 64,
[PROV_INPUT_COMPLETE] = 0,
[PROV_CONFIRM] = 16,
[PROV_RANDOM] = 16,
[PROV_DATA] = 33,
[PROV_COMPLETE] = 0,
[PROV_FAILED] = 1,
[PROV_INVITE] = PDU_LEN_INVITE,
[PROV_CAPABILITIES] = PDU_LEN_CAPABILITIES,
[PROV_START] = PDU_LEN_START,
[PROV_PUB_KEY] = PDU_LEN_PUB_KEY,
[PROV_INPUT_COMPLETE] = PDU_LEN_INPUT_COMPLETE,
[PROV_CONFIRM] = PDU_LEN_CONFIRM,
[PROV_RANDOM] = PDU_LEN_RANDOM,
[PROV_DATA] = PDU_LEN_DATA,
[PROV_COMPLETE] = PDU_LEN_COMPLETE,
[PROV_FAILED] = PDU_LEN_FAILED,
};
uint8_t type = buf->data[0];