3603 lines
119 KiB
C
3603 lines
119 KiB
C
/********************************** (C) COPYRIGHT *******************************
|
|
* File Name : mesh_lib.h
|
|
* Author : WCH
|
|
* Version : V1.67
|
|
* Date : 2022/10/26
|
|
* Description :
|
|
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
|
|
*******************************************************************************/
|
|
|
|
#ifndef mesh_lib_H
|
|
#define mesh_lib_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
#pragma anon_unions
|
|
|
|
#include "stdint.h"
|
|
#include "stdio.h"
|
|
#include "stddef.h"
|
|
#include "string.h"
|
|
#include "app_mesh_config.h"
|
|
|
|
/******************************************************************************/
|
|
|
|
#ifndef int8
|
|
typedef signed char int8;
|
|
#endif
|
|
#ifndef int16
|
|
typedef short int16;
|
|
#endif
|
|
#ifndef BOOL
|
|
typedef unsigned char BOOL;
|
|
#endif
|
|
#ifndef s8
|
|
typedef signed char s8;
|
|
#endif
|
|
#ifndef s16
|
|
typedef signed short s16;
|
|
#endif
|
|
#ifndef s32
|
|
typedef signed long s32;
|
|
#endif
|
|
#ifndef u8
|
|
typedef unsigned char u8;
|
|
#endif
|
|
#ifndef u16
|
|
typedef unsigned short u16;
|
|
#endif
|
|
#ifndef u32
|
|
typedef unsigned long u32;
|
|
#endif
|
|
#ifndef u64
|
|
typedef unsigned long long u64;
|
|
#endif
|
|
#ifndef u8C
|
|
typedef const unsigned char u8C;
|
|
#endif
|
|
#ifndef u32V
|
|
typedef unsigned long volatile u32V;
|
|
#endif
|
|
#ifndef uint8
|
|
typedef unsigned char uint8;
|
|
#endif
|
|
#ifndef uint16
|
|
typedef unsigned short uint16;
|
|
#endif
|
|
#ifndef uint32
|
|
typedef unsigned long uint32;
|
|
#endif
|
|
#ifndef s8_t
|
|
typedef signed char s8_t;
|
|
#endif
|
|
#ifndef s16_t
|
|
typedef signed short s16_t;
|
|
#endif
|
|
#ifndef s32_t
|
|
typedef signed long s32_t;
|
|
#endif
|
|
#ifndef s64_t
|
|
typedef signed long long s64_t;
|
|
#endif
|
|
#ifndef u8_t
|
|
typedef unsigned char u8_t;
|
|
#endif
|
|
#ifndef u16_t
|
|
typedef unsigned short u16_t;
|
|
#endif
|
|
#ifndef u32_t
|
|
typedef unsigned long u32_t;
|
|
#endif
|
|
#ifndef u64_t
|
|
typedef unsigned long long u64_t;
|
|
#endif
|
|
#ifndef bt_mesh_atomic_t
|
|
typedef unsigned int bt_mesh_atomic_t;
|
|
#endif
|
|
#ifndef ssize_t
|
|
typedef signed int ssize_t;
|
|
#endif
|
|
|
|
#ifndef TRUE
|
|
#define TRUE 1
|
|
#endif
|
|
#ifndef FALSE
|
|
#define FALSE 0
|
|
#endif
|
|
#ifndef NULL
|
|
#define NULL 0
|
|
#endif
|
|
#ifndef VOID
|
|
#define VOID (void)
|
|
#endif
|
|
#ifndef CONST
|
|
#define CONST const
|
|
#endif
|
|
|
|
/******************************************************************************/
|
|
#define VER_MESH_FILE "MESH_LIB_V1.6"
|
|
extern const uint8_t VER_MESH_LIB[];
|
|
|
|
// Global_Error_Code
|
|
#define MESH_ERROR_BASE_NUM (0x0) ///< Global error base
|
|
|
|
#define NOERR (MESH_ERROR_BASE_NUM + 0)
|
|
#define EINVAL (MESH_ERROR_BASE_NUM + 1)
|
|
#define EALREADY (MESH_ERROR_BASE_NUM + 2)
|
|
#define ESRCH (MESH_ERROR_BASE_NUM + 3)
|
|
#define EBUSY (MESH_ERROR_BASE_NUM + 4)
|
|
#define ENOTCONN (MESH_ERROR_BASE_NUM + 5)
|
|
#define EAGAIN (MESH_ERROR_BASE_NUM + 6)
|
|
#define ENOBUFS (MESH_ERROR_BASE_NUM + 7)
|
|
#define ENOENT (MESH_ERROR_BASE_NUM + 8)
|
|
#define ENOMEM (MESH_ERROR_BASE_NUM + 9)
|
|
#define EEXIST (MESH_ERROR_BASE_NUM + 10)
|
|
#define EIO (MESH_ERROR_BASE_NUM + 11)
|
|
#define EDEADLK (MESH_ERROR_BASE_NUM + 12)
|
|
#define ESPIPE (MESH_ERROR_BASE_NUM + 13)
|
|
#define EACCES (MESH_ERROR_BASE_NUM + 14)
|
|
#define ENXIO (MESH_ERROR_BASE_NUM + 15)
|
|
#define ENOSPC (MESH_ERROR_BASE_NUM + 16)
|
|
#define EBADMSG (MESH_ERROR_BASE_NUM + 17)
|
|
#define E2BIG (MESH_ERROR_BASE_NUM + 18)
|
|
#define ENOTSUP (MESH_ERROR_BASE_NUM + 19)
|
|
#define EADDRINUSE (MESH_ERROR_BASE_NUM + 20)
|
|
#define EMSGSIZE (MESH_ERROR_BASE_NUM + 21)
|
|
#define ECANCELED (MESH_ERROR_BASE_NUM + 22)
|
|
#define ETIMEDOUT (MESH_ERROR_BASE_NUM + 23)
|
|
#define EADDRNOTAVAIL (MESH_ERROR_BASE_NUM + 24)
|
|
|
|
/* Primary Network Key index */
|
|
#define BLE_MESH_NET_PRIMARY 0x000
|
|
|
|
/* Function_State_Define */
|
|
#define BLE_MESH_RELAY_DISABLED 0x00
|
|
#define BLE_MESH_RELAY_ENABLED 0x01
|
|
#define BLE_MESH_RELAY_NOT_SUPPORTED 0x02
|
|
|
|
#define BLE_MESH_BEACON_DISABLED 0x00
|
|
#define BLE_MESH_BEACON_ENABLED 0x01
|
|
|
|
#define BLE_MESH_GATT_PROXY_DISABLED 0x00
|
|
#define BLE_MESH_GATT_PROXY_ENABLED 0x01
|
|
#define BLE_MESH_GATT_PROXY_NOT_SUPPORTED 0x02
|
|
|
|
#define BLE_MESH_FRIEND_DISABLED 0x00
|
|
#define BLE_MESH_FRIEND_ENABLED 0x01
|
|
#define BLE_MESH_FRIEND_NOT_SUPPORTED 0x02
|
|
|
|
#define BLE_MESH_NODE_IDENTITY_STOPPED 0x00
|
|
#define BLE_MESH_NODE_IDENTITY_RUNNING 0x01
|
|
#define BLE_MESH_NODE_IDENTITY_NOT_SUPPORTED 0x02
|
|
|
|
/* Features */
|
|
#define BLE_MESH_FEAT_RELAY BIT(0)
|
|
#define BLE_MESH_FEAT_PROXY BIT(1)
|
|
#define BLE_MESH_FEAT_FRIEND BIT(2)
|
|
#define BLE_MESH_FEAT_LOW_POWER BIT(3)
|
|
#define BLE_MESH_FEAT_SUPPORTED (BLE_MESH_FEAT_RELAY | \
|
|
BLE_MESH_FEAT_PROXY | \
|
|
BLE_MESH_FEAT_FRIEND | \
|
|
BLE_MESH_FEAT_LOW_POWER)
|
|
|
|
#define BLE_MESH_SDU_UNSEG_MAX 11 // The user's actual usable length is 7 bytes
|
|
#define BLE_MESH_CTL_SEG_SDU_MAX 8
|
|
#define BLE_MESH_APP_SEG_SDU_MAX 12
|
|
#define BLE_MESH_TX_SDU_MAX (32 * BLE_MESH_APP_SEG_SDU_MAX) // The user's actual usable length needs to be reduced by 8 bytes
|
|
#define BLE_MESH_RX_SDU_MAX (32 * BLE_MESH_APP_SEG_SDU_MAX)
|
|
#define BLE_MESH_RX_CTL_MAX (32 * BLE_MESH_CTL_SEG_SDU_MAX)
|
|
|
|
#define BLE_MESH_KEY_PRIMARY 0x0000
|
|
#define BLE_MESH_KEY_ANY 0xffff
|
|
|
|
#define BLE_MESH_ADDR_IS_UNICAST(addr) ((addr) && (addr) < 0x8000)
|
|
#define BLE_MESH_ADDR_IS_GROUP(addr) ((addr) >= 0xc000 && (addr) < 0xff00)
|
|
#define BLE_MESH_ADDR_IS_VIRTUAL(addr) ((addr) >= 0x8000 && (addr) < 0xc000)
|
|
#define BLE_MESH_ADDR_IS_RFU(addr) ((addr) >= 0xff00 && (addr) <= 0xfffb)
|
|
|
|
/**************************************ACCESS****************************************/
|
|
|
|
#define BLE_MESH_ADDR_UNASSIGNED 0x0000
|
|
#define BLE_MESH_ADDR_ALL_NODES 0xffff
|
|
#define BLE_MESH_ADDR_PROXIES 0xfffc
|
|
#define BLE_MESH_ADDR_FRIENDS 0xfffd
|
|
#define BLE_MESH_ADDR_RELAYS 0xfffe
|
|
|
|
#define BLE_MESH_KEY_UNUSED 0xffff
|
|
#define BLE_MESH_KEY_DEV 0xfffe
|
|
#define BLE_MESH_KEY_DEV_LOCAL BLE_MESH_KEY_DEV
|
|
#define BLE_MESH_KEY_DEV_REMOTE 0xfffd
|
|
#define BLE_MESH_KEY_DEV_ANY 0xfffc
|
|
|
|
#define BLE_MESH_IS_DEV_KEY(key) (key == BLE_MESH_KEY_DEV_LOCAL || \
|
|
key == BLE_MESH_KEY_DEV_REMOTE)
|
|
|
|
/**************************************k_timer****************************************/
|
|
#define MSEC_PER_SEC 1000U
|
|
#define K_NO_WAIT 0
|
|
#define K_MSEC(ms) (ms)
|
|
#define K_SECONDS(s) K_MSEC((s) * MSEC_PER_SEC)
|
|
#define K_MINUTES(m) K_SECONDS((m) * 60)
|
|
#define K_HOURS(h) K_MINUTES((h) * 60)
|
|
#define K_FOREVER (-1)
|
|
|
|
/**************************************MODEL****************************************/
|
|
|
|
// BLE_MESH_MODEL_OP
|
|
#define OP_APP_KEY_ADD BLE_MESH_MODEL_OP_1(0x00)
|
|
#define OP_APP_KEY_UPDATE BLE_MESH_MODEL_OP_1(0x01)
|
|
#define OP_DEV_COMP_DATA_STATUS BLE_MESH_MODEL_OP_1(0x02)
|
|
#define OP_MOD_PUB_SET BLE_MESH_MODEL_OP_1(0x03)
|
|
#define OP_HEALTH_CURRENT_STATUS BLE_MESH_MODEL_OP_1(0x04)
|
|
#define OP_HEALTH_FAULT_STATUS BLE_MESH_MODEL_OP_1(0x05)
|
|
#define OP_HEARTBEAT_PUB_STATUS BLE_MESH_MODEL_OP_1(0x06)
|
|
#define OP_APP_KEY_DEL BLE_MESH_MODEL_OP_2(0x80, 0x00)
|
|
#define OP_APP_KEY_GET BLE_MESH_MODEL_OP_2(0x80, 0x01)
|
|
#define OP_APP_KEY_LIST BLE_MESH_MODEL_OP_2(0x80, 0x02)
|
|
#define OP_APP_KEY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x03)
|
|
#define OP_ATTENTION_GET BLE_MESH_MODEL_OP_2(0x80, 0x04)
|
|
#define OP_ATTENTION_SET BLE_MESH_MODEL_OP_2(0x80, 0x05)
|
|
#define OP_ATTENTION_SET_UNREL BLE_MESH_MODEL_OP_2(0x80, 0x06)
|
|
#define OP_ATTENTION_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x07)
|
|
#define OP_DEV_COMP_DATA_GET BLE_MESH_MODEL_OP_2(0x80, 0x08)
|
|
#define OP_BEACON_GET BLE_MESH_MODEL_OP_2(0x80, 0x09)
|
|
#define OP_BEACON_SET BLE_MESH_MODEL_OP_2(0x80, 0x0a)
|
|
#define OP_BEACON_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x0b)
|
|
#define OP_DEFAULT_TTL_GET BLE_MESH_MODEL_OP_2(0x80, 0x0c)
|
|
#define OP_DEFAULT_TTL_SET BLE_MESH_MODEL_OP_2(0x80, 0x0d)
|
|
#define OP_DEFAULT_TTL_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x0e)
|
|
#define OP_FRIEND_GET BLE_MESH_MODEL_OP_2(0x80, 0x0f)
|
|
#define OP_FRIEND_SET BLE_MESH_MODEL_OP_2(0x80, 0x10)
|
|
#define OP_FRIEND_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x11)
|
|
#define OP_GATT_PROXY_GET BLE_MESH_MODEL_OP_2(0x80, 0x12)
|
|
#define OP_GATT_PROXY_SET BLE_MESH_MODEL_OP_2(0x80, 0x13)
|
|
#define OP_GATT_PROXY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x14)
|
|
#define OP_KRP_GET BLE_MESH_MODEL_OP_2(0x80, 0x15)
|
|
#define OP_KRP_SET BLE_MESH_MODEL_OP_2(0x80, 0x16)
|
|
#define OP_KRP_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x17)
|
|
#define OP_MOD_PUB_GET BLE_MESH_MODEL_OP_2(0x80, 0x18)
|
|
#define OP_MOD_PUB_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x19)
|
|
#define OP_MOD_PUB_VA_SET BLE_MESH_MODEL_OP_2(0x80, 0x1a)
|
|
#define OP_MOD_SUB_ADD BLE_MESH_MODEL_OP_2(0x80, 0x1b)
|
|
#define OP_MOD_SUB_DEL BLE_MESH_MODEL_OP_2(0x80, 0x1c)
|
|
#define OP_MOD_SUB_DEL_ALL BLE_MESH_MODEL_OP_2(0x80, 0x1d)
|
|
#define OP_MOD_SUB_OVERWRITE BLE_MESH_MODEL_OP_2(0x80, 0x1e)
|
|
#define OP_MOD_SUB_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x1f)
|
|
#define OP_MOD_SUB_VA_ADD BLE_MESH_MODEL_OP_2(0x80, 0x20)
|
|
#define OP_MOD_SUB_VA_DEL BLE_MESH_MODEL_OP_2(0x80, 0x21)
|
|
#define OP_MOD_SUB_VA_OVERWRITE BLE_MESH_MODEL_OP_2(0x80, 0x22)
|
|
#define OP_NET_TRANSMIT_GET BLE_MESH_MODEL_OP_2(0x80, 0x23)
|
|
#define OP_NET_TRANSMIT_SET BLE_MESH_MODEL_OP_2(0x80, 0x24)
|
|
#define OP_NET_TRANSMIT_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x25)
|
|
#define OP_RELAY_GET BLE_MESH_MODEL_OP_2(0x80, 0x26)
|
|
#define OP_RELAY_SET BLE_MESH_MODEL_OP_2(0x80, 0x27)
|
|
#define OP_RELAY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x28)
|
|
#define OP_MOD_SUB_GET BLE_MESH_MODEL_OP_2(0x80, 0x29)
|
|
#define OP_MOD_SUB_LIST BLE_MESH_MODEL_OP_2(0x80, 0x2a)
|
|
#define OP_MOD_SUB_GET_VND BLE_MESH_MODEL_OP_2(0x80, 0x2b)
|
|
#define OP_MOD_SUB_LIST_VND BLE_MESH_MODEL_OP_2(0x80, 0x2c)
|
|
#define OP_LPN_TIMEOUT_GET BLE_MESH_MODEL_OP_2(0x80, 0x2d)
|
|
#define OP_LPN_TIMEOUT_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x2e)
|
|
#define OP_HEALTH_FAULT_CLEAR BLE_MESH_MODEL_OP_2(0x80, 0x2f)
|
|
#define OP_HEALTH_FAULT_CLEAR_UNREL BLE_MESH_MODEL_OP_2(0x80, 0x30)
|
|
#define OP_HEALTH_FAULT_GET BLE_MESH_MODEL_OP_2(0x80, 0x31)
|
|
#define OP_HEALTH_FAULT_TEST BLE_MESH_MODEL_OP_2(0x80, 0x32)
|
|
#define OP_HEALTH_FAULT_TEST_UNREL BLE_MESH_MODEL_OP_2(0x80, 0x33)
|
|
#define OP_HEALTH_PERIOD_GET BLE_MESH_MODEL_OP_2(0x80, 0x34)
|
|
#define OP_HEALTH_PERIOD_SET BLE_MESH_MODEL_OP_2(0x80, 0x35)
|
|
#define OP_HEALTH_PERIOD_SET_UNREL BLE_MESH_MODEL_OP_2(0x80, 0x36)
|
|
#define OP_HEALTH_PERIOD_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x37)
|
|
#define OP_HEARTBEAT_PUB_GET BLE_MESH_MODEL_OP_2(0x80, 0x38)
|
|
#define OP_HEARTBEAT_PUB_SET BLE_MESH_MODEL_OP_2(0x80, 0x39)
|
|
#define OP_HEARTBEAT_SUB_GET BLE_MESH_MODEL_OP_2(0x80, 0x3a)
|
|
#define OP_HEARTBEAT_SUB_SET BLE_MESH_MODEL_OP_2(0x80, 0x3b)
|
|
#define OP_HEARTBEAT_SUB_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x3c)
|
|
#define OP_MOD_APP_BIND BLE_MESH_MODEL_OP_2(0x80, 0x3d)
|
|
#define OP_MOD_APP_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x3e)
|
|
#define OP_MOD_APP_UNBIND BLE_MESH_MODEL_OP_2(0x80, 0x3f)
|
|
#define OP_NET_KEY_ADD BLE_MESH_MODEL_OP_2(0x80, 0x40)
|
|
#define OP_NET_KEY_DEL BLE_MESH_MODEL_OP_2(0x80, 0x41)
|
|
#define OP_NET_KEY_GET BLE_MESH_MODEL_OP_2(0x80, 0x42)
|
|
#define OP_NET_KEY_LIST BLE_MESH_MODEL_OP_2(0x80, 0x43)
|
|
#define OP_NET_KEY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x44)
|
|
#define OP_NET_KEY_UPDATE BLE_MESH_MODEL_OP_2(0x80, 0x45)
|
|
#define OP_NODE_IDENTITY_GET BLE_MESH_MODEL_OP_2(0x80, 0x46)
|
|
#define OP_NODE_IDENTITY_SET BLE_MESH_MODEL_OP_2(0x80, 0x47)
|
|
#define OP_NODE_IDENTITY_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x48)
|
|
#define OP_NODE_RESET BLE_MESH_MODEL_OP_2(0x80, 0x49)
|
|
#define OP_NODE_RESET_STATUS BLE_MESH_MODEL_OP_2(0x80, 0x4a)
|
|
#define OP_SIG_MOD_APP_GET BLE_MESH_MODEL_OP_2(0x80, 0x4b)
|
|
#define OP_SIG_MOD_APP_LIST BLE_MESH_MODEL_OP_2(0x80, 0x4c)
|
|
#define OP_VND_MOD_APP_GET BLE_MESH_MODEL_OP_2(0x80, 0x4d)
|
|
#define OP_VND_MOD_APP_LIST BLE_MESH_MODEL_OP_2(0x80, 0x4e)
|
|
|
|
/* Generic OnOff Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_GEN_ONOFF_GET BLE_MESH_MODEL_OP_2(0x82, 0x01)
|
|
#define BLE_MESH_MODEL_OP_GEN_ONOFF_SET BLE_MESH_MODEL_OP_2(0x82, 0x02)
|
|
#define BLE_MESH_MODEL_OP_GEN_ONOFF_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x03)
|
|
#define BLE_MESH_MODEL_OP_GEN_ONOFF_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x04)
|
|
|
|
/* Generic Level Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_GEN_LEVEL_GET BLE_MESH_MODEL_OP_2(0x82, 0x05)
|
|
#define BLE_MESH_MODEL_OP_GEN_LEVEL_SET BLE_MESH_MODEL_OP_2(0x82, 0x06)
|
|
#define BLE_MESH_MODEL_OP_GEN_LEVEL_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x07)
|
|
#define BLE_MESH_MODEL_OP_GEN_LEVEL_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x08)
|
|
#define BLE_MESH_MODEL_OP_GEN_DELTA_SET BLE_MESH_MODEL_OP_2(0x82, 0x09)
|
|
#define BLE_MESH_MODEL_OP_GEN_DELTA_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x0A)
|
|
#define BLE_MESH_MODEL_OP_GEN_MOVE_SET BLE_MESH_MODEL_OP_2(0x82, 0x0B)
|
|
#define BLE_MESH_MODEL_OP_GEN_MOVE_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x0C)
|
|
|
|
/* Generic Default Transition Time Message Opcode*/
|
|
#define BLE_MESH_MODEL_OP_GEN_DEF_TRANS_TIME_GET BLE_MESH_MODEL_OP_2(0x82, 0x0D)
|
|
#define BLE_MESH_MODEL_OP_GEN_DEF_TRANS_TIME_SET BLE_MESH_MODEL_OP_2(0x82, 0x0E)
|
|
#define BLE_MESH_MODEL_OP_GEN_DEF_TRANS_TIME_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x0F)
|
|
#define BLE_MESH_MODEL_OP_GEN_DEF_TRANS_TIME_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x10)
|
|
|
|
/* Generic Power OnOff Message Opcode*/
|
|
#define BLE_MESH_MODEL_OP_GEN_ONPOWERUP_GET BLE_MESH_MODEL_OP_2(0x82, 0x11)
|
|
#define BLE_MESH_MODEL_OP_GEN_ONPOWERUP_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x12)
|
|
|
|
/* Generic Power OnOff Setup Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_GEN_ONPOWERUP_SET BLE_MESH_MODEL_OP_2(0x82, 0x13)
|
|
#define BLE_MESH_MODEL_OP_GEN_ONPOWERUP_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x14)
|
|
|
|
/* Generic Power Level Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_LEVEL_GET BLE_MESH_MODEL_OP_2(0x82, 0x15)
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_LEVEL_SET BLE_MESH_MODEL_OP_2(0x82, 0x16)
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_LEVEL_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x17)
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_LEVEL_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x18)
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_LAST_GET BLE_MESH_MODEL_OP_2(0x82, 0x19)
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_LAST_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x1A)
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_DEFAULT_GET BLE_MESH_MODEL_OP_2(0x82, 0x1B)
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_DEFAULT_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x1C)
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_RANGE_GET BLE_MESH_MODEL_OP_2(0x82, 0x1D)
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_RANGE_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x1E)
|
|
|
|
/* Generic Power Level Setup Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_DEFAULT_SET BLE_MESH_MODEL_OP_2(0x82, 0x1F)
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_DEFAULT_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x20)
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_RANGE_SET BLE_MESH_MODEL_OP_2(0x82, 0x21)
|
|
#define BLE_MESH_MODEL_OP_GEN_POWER_RANGE_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x22)
|
|
|
|
/* Generic Battery Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_GEN_BATTERY_GET BLE_MESH_MODEL_OP_2(0x82, 0x23)
|
|
#define BLE_MESH_MODEL_OP_GEN_BATTERY_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x24)
|
|
|
|
/* Generic Location Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_GEN_LOC_GLOBAL_GET BLE_MESH_MODEL_OP_2(0x82, 0x25)
|
|
#define BLE_MESH_MODEL_OP_GEN_LOC_GLOBAL_STATUS BLE_MESH_MODEL_OP_1(0x40)
|
|
#define BLE_MESH_MODEL_OP_GEN_LOC_LOCAL_GET BLE_MESH_MODEL_OP_2(0x82, 0x26)
|
|
#define BLE_MESH_MODEL_OP_GEN_LOC_LOCAL_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x27)
|
|
|
|
/* Generic Location Setup Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_GEN_LOC_GLOBAL_SET BLE_MESH_MODEL_OP_1(0x41)
|
|
#define BLE_MESH_MODEL_OP_GEN_LOC_GLOBAL_SET_UNACK BLE_MESH_MODEL_OP_1(0x42)
|
|
#define BLE_MESH_MODEL_OP_GEN_LOC_LOCAL_SET BLE_MESH_MODEL_OP_2(0x82, 0x28)
|
|
#define BLE_MESH_MODEL_OP_GEN_LOC_LOCAL_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x29)
|
|
|
|
/* Generic Manufacturer Property Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_GEN_MANU_PROPERTIES_GET BLE_MESH_MODEL_OP_2(0x82, 0x2A)
|
|
#define BLE_MESH_MODEL_OP_GEN_MANU_PROPERTIES_STATUS BLE_MESH_MODEL_OP_1(0x43)
|
|
#define BLE_MESH_MODEL_OP_GEN_MANU_PROPERTY_GET BLE_MESH_MODEL_OP_2(0x82, 0x2B)
|
|
#define BLE_MESH_MODEL_OP_GEN_MANU_PROPERTY_SET BLE_MESH_MODEL_OP_1(0x44)
|
|
#define BLE_MESH_MODEL_OP_GEN_MANU_PROPERTY_SET_UNACK BLE_MESH_MODEL_OP_1(0x45)
|
|
#define BLE_MESH_MODEL_OP_GEN_MANU_PROPERTY_STATUS BLE_MESH_MODEL_OP_1(0x46)
|
|
|
|
/* Generic Admin Property Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_GEN_ADMIN_PROPERTIES_GET BLE_MESH_MODEL_OP_2(0x82, 0x2C)
|
|
#define BLE_MESH_MODEL_OP_GEN_ADMIN_PROPERTIES_STATUS BLE_MESH_MODEL_OP_1(0x47)
|
|
#define BLE_MESH_MODEL_OP_GEN_ADMIN_PROPERTY_GET BLE_MESH_MODEL_OP_2(0x82, 0x2D)
|
|
#define BLE_MESH_MODEL_OP_GEN_ADMIN_PROPERTY_SET BLE_MESH_MODEL_OP_1(0x48)
|
|
#define BLE_MESH_MODEL_OP_GEN_ADMIN_PROPERTY_SET_UNACK BLE_MESH_MODEL_OP_1(0x49)
|
|
#define BLE_MESH_MODEL_OP_GEN_ADMIN_PROPERTY_STATUS BLE_MESH_MODEL_OP_1(0x4A)
|
|
|
|
/* Generic User Property Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_GEN_USER_PROPERTIES_GET BLE_MESH_MODEL_OP_2(0x82, 0x2E)
|
|
#define BLE_MESH_MODEL_OP_GEN_USER_PROPERTIES_STATUS BLE_MESH_MODEL_OP_1(0x4B)
|
|
#define BLE_MESH_MODEL_OP_GEN_USER_PROPERTY_GET BLE_MESH_MODEL_OP_2(0x82, 0x2F)
|
|
#define BLE_MESH_MODEL_OP_GEN_USER_PROPERTY_SET BLE_MESH_MODEL_OP_1(0x4C)
|
|
#define BLE_MESH_MODEL_OP_GEN_USER_PROPERTY_SET_UNACK BLE_MESH_MODEL_OP_1(0x4D)
|
|
#define BLE_MESH_MODEL_OP_GEN_USER_PROPERTY_STATUS BLE_MESH_MODEL_OP_1(0x4E)
|
|
|
|
/* Generic Client Property Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_GEN_CLIENT_PROPERTIES_GET BLE_MESH_MODEL_OP_1(0x4F)
|
|
#define BLE_MESH_MODEL_OP_GEN_CLIENT_PROPERTIES_STATUS BLE_MESH_MODEL_OP_1(0x50)
|
|
|
|
/* Sensor Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_SENSOR_DESCRIPTOR_GET BLE_MESH_MODEL_OP_2(0x82, 0x30)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_DESCRIPTOR_STATUS BLE_MESH_MODEL_OP_1(0x51)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_GET BLE_MESH_MODEL_OP_2(0x82, 0x31)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_STATUS BLE_MESH_MODEL_OP_1(0x52)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_COLUMN_GET BLE_MESH_MODEL_OP_2(0x82, 0x32)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_COLUMN_STATUS BLE_MESH_MODEL_OP_1(0x53)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_SERIES_GET BLE_MESH_MODEL_OP_2(0x82, 0x33)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_SERIES_STATUS BLE_MESH_MODEL_OP_1(0x54)
|
|
|
|
/* Sensor Setup Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_SENSOR_CADENCE_GET BLE_MESH_MODEL_OP_2(0x82, 0x34)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_CADENCE_SET BLE_MESH_MODEL_OP_1(0x55)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_CADENCE_SET_UNACK BLE_MESH_MODEL_OP_1(0x56)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_CADENCE_STATUS BLE_MESH_MODEL_OP_1(0x57)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_SETTINGS_GET BLE_MESH_MODEL_OP_2(0x82, 0x35)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_SETTINGS_STATUS BLE_MESH_MODEL_OP_1(0x58)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_SETTING_GET BLE_MESH_MODEL_OP_2(0x82, 0x36)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_SETTING_SET BLE_MESH_MODEL_OP_1(0x59)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_SETTING_SET_UNACK BLE_MESH_MODEL_OP_1(0x5A)
|
|
#define BLE_MESH_MODEL_OP_SENSOR_SETTING_STATUS BLE_MESH_MODEL_OP_1(0x5B)
|
|
|
|
/* Time Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_TIME_GET BLE_MESH_MODEL_OP_2(0x82, 0x37)
|
|
#define BLE_MESH_MODEL_OP_TIME_SET BLE_MESH_MODEL_OP_1(0x5C)
|
|
#define BLE_MESH_MODEL_OP_TIME_STATUS BLE_MESH_MODEL_OP_1(0x5D)
|
|
#define BLE_MESH_MODEL_OP_TIME_ROLE_GET BLE_MESH_MODEL_OP_2(0x82, 0x38)
|
|
#define BLE_MESH_MODEL_OP_TIME_ROLE_SET BLE_MESH_MODEL_OP_2(0x82, 0x39)
|
|
#define BLE_MESH_MODEL_OP_TIME_ROLE_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x3A)
|
|
#define BLE_MESH_MODEL_OP_TIME_ZONE_GET BLE_MESH_MODEL_OP_2(0x82, 0x3B)
|
|
#define BLE_MESH_MODEL_OP_TIME_ZONE_SET BLE_MESH_MODEL_OP_2(0x82, 0x3C)
|
|
#define BLE_MESH_MODEL_OP_TIME_ZONE_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x3D)
|
|
#define BLE_MESH_MODEL_OP_TAI_UTC_DELTA_GET BLE_MESH_MODEL_OP_2(0x82, 0x3E)
|
|
#define BLE_MESH_MODEL_OP_TAI_UTC_DELTA_SET BLE_MESH_MODEL_OP_2(0x82, 0x3F)
|
|
#define BLE_MESH_MODEL_OP_TAI_UTC_DELTA_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x40)
|
|
|
|
/* Scene Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_SCENE_GET BLE_MESH_MODEL_OP_2(0x82, 0x41)
|
|
#define BLE_MESH_MODEL_OP_SCENE_RECALL BLE_MESH_MODEL_OP_2(0x82, 0x42)
|
|
#define BLE_MESH_MODEL_OP_SCENE_RECALL_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x43)
|
|
#define BLE_MESH_MODEL_OP_SCENE_STATUS BLE_MESH_MODEL_OP_1(0x5E)
|
|
#define BLE_MESH_MODEL_OP_SCENE_REGISTER_GET BLE_MESH_MODEL_OP_2(0x82, 0x44)
|
|
#define BLE_MESH_MODEL_OP_SCENE_REGISTER_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x45)
|
|
|
|
/* Scene Setup Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_SCENE_STORE BLE_MESH_MODEL_OP_2(0x82, 0x46)
|
|
#define BLE_MESH_MODEL_OP_SCENE_STORE_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x47)
|
|
#define BLE_MESH_MODEL_OP_SCENE_DELETE BLE_MESH_MODEL_OP_2(0x82, 0x9E)
|
|
#define BLE_MESH_MODEL_OP_SCENE_DELETE_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x9F)
|
|
|
|
/* Scheduler Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_SCHEDULER_ACT_GET BLE_MESH_MODEL_OP_2(0x82, 0x48)
|
|
#define BLE_MESH_MODEL_OP_SCHEDULER_ACT_STATUS BLE_MESH_MODEL_OP_1(0x5F)
|
|
#define BLE_MESH_MODEL_OP_SCHEDULER_GET BLE_MESH_MODEL_OP_2(0x82, 0x49)
|
|
#define BLE_MESH_MODEL_OP_SCHEDULER_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x4A)
|
|
|
|
/* Scheduler Setup Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_SCHEDULER_ACT_SET BLE_MESH_MODEL_OP_1(0x60)
|
|
#define BLE_MESH_MODEL_OP_SCHEDULER_ACT_SET_UNACK BLE_MESH_MODEL_OP_1(0x61)
|
|
|
|
/* Light Lightness Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_GET BLE_MESH_MODEL_OP_2(0x82, 0x4B)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_SET BLE_MESH_MODEL_OP_2(0x82, 0x4C)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x4D)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x4E)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_LINEAR_GET BLE_MESH_MODEL_OP_2(0x82, 0x4F)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_LINEAR_SET BLE_MESH_MODEL_OP_2(0x82, 0x50)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_LINEAR_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x51)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_LINEAR_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x52)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_LAST_GET BLE_MESH_MODEL_OP_2(0x82, 0x53)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_LAST_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x54)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_DEFAULT_GET BLE_MESH_MODEL_OP_2(0x82, 0x55)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_DEFAULT_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x56)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_RANGE_GET BLE_MESH_MODEL_OP_2(0x82, 0x57)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_RANGE_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x58)
|
|
|
|
/* Light Lightness Setup Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_DEFAULT_SET BLE_MESH_MODEL_OP_2(0x82, 0x59)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_DEFAULT_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x5A)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_RANGE_SET BLE_MESH_MODEL_OP_2(0x82, 0x5B)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LIGHTNESS_RANGE_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x5C)
|
|
|
|
/* Light CTL Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_GET BLE_MESH_MODEL_OP_2(0x82, 0x5D)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_SET BLE_MESH_MODEL_OP_2(0x82, 0x5E)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x5F)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x60)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_TEMPERATURE_GET BLE_MESH_MODEL_OP_2(0x82, 0x61)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_TEMPERATURE_RANGE_GET BLE_MESH_MODEL_OP_2(0x82, 0x62)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_TEMPERATURE_RANGE_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x63)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_TEMPERATURE_SET BLE_MESH_MODEL_OP_2(0x82, 0x64)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_TEMPERATURE_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x65)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_TEMPERATURE_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x66)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_DEFAULT_GET BLE_MESH_MODEL_OP_2(0x82, 0x67)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_DEFAULT_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x68)
|
|
|
|
/* Light CTL Setup Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_DEFAULT_SET BLE_MESH_MODEL_OP_2(0x82, 0x69)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_DEFAULT_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x6A)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_TEMPERATURE_RANGE_SET BLE_MESH_MODEL_OP_2(0x82, 0x6B)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_CTL_TEMPERATURE_RANGE_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x6C)
|
|
|
|
/* Light HSL Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_GET BLE_MESH_MODEL_OP_2(0x82, 0x6D)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_HUE_GET BLE_MESH_MODEL_OP_2(0x82, 0x6E)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_HUE_SET BLE_MESH_MODEL_OP_2(0x82, 0x6F)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_HUE_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x70)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_HUE_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x71)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_SATURATION_GET BLE_MESH_MODEL_OP_2(0x82, 0x72)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_SATURATION_SET BLE_MESH_MODEL_OP_2(0x82, 0x73)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_SATURATION_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x74)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_SATURATION_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x75)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_SET BLE_MESH_MODEL_OP_2(0x82, 0x76)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x77)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x78)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_TARGET_GET BLE_MESH_MODEL_OP_2(0x82, 0x79)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_TARGET_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x7A)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_DEFAULT_GET BLE_MESH_MODEL_OP_2(0x82, 0x7B)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_DEFAULT_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x7C)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_RANGE_GET BLE_MESH_MODEL_OP_2(0x82, 0x7D)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_RANGE_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x7E)
|
|
|
|
/* Light HSL Setup Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_DEFAULT_SET BLE_MESH_MODEL_OP_2(0x82, 0x7F)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_DEFAULT_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x80)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_RANGE_SET BLE_MESH_MODEL_OP_2(0x82, 0x81)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_HSL_RANGE_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x82) /* Model spec is wrong */
|
|
|
|
/* Light xyL Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_GET BLE_MESH_MODEL_OP_2(0x82, 0x83)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_SET BLE_MESH_MODEL_OP_2(0x82, 0x84)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x85)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x86)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_TARGET_GET BLE_MESH_MODEL_OP_2(0x82, 0x87)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_TARGET_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x88)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_DEFAULT_GET BLE_MESH_MODEL_OP_2(0x82, 0x89)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_DEFAULT_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x8A)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_RANGE_GET BLE_MESH_MODEL_OP_2(0x82, 0x8B)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_RANGE_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x8C)
|
|
|
|
/* Light xyL Setup Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_DEFAULT_SET BLE_MESH_MODEL_OP_2(0x82, 0x8D)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_DEFAULT_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x8E)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_RANGE_SET BLE_MESH_MODEL_OP_2(0x82, 0x8F)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_XYL_RANGE_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x90)
|
|
|
|
/* Light Control Message Opcode */
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_MODE_GET BLE_MESH_MODEL_OP_2(0x82, 0x91)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_MODE_SET BLE_MESH_MODEL_OP_2(0x82, 0x92)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_MODE_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x93)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_MODE_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x94)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_OM_GET BLE_MESH_MODEL_OP_2(0x82, 0x95)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_OM_SET BLE_MESH_MODEL_OP_2(0x82, 0x96)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_OM_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x97)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_OM_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x98)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_LIGHT_ONOFF_GET BLE_MESH_MODEL_OP_2(0x82, 0x99)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_LIGHT_ONOFF_SET BLE_MESH_MODEL_OP_2(0x82, 0x9A)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_LIGHT_ONOFF_SET_UNACK BLE_MESH_MODEL_OP_2(0x82, 0x9B)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_LIGHT_ONOFF_STATUS BLE_MESH_MODEL_OP_2(0x82, 0x9C)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_PROPERTY_GET BLE_MESH_MODEL_OP_2(0x82, 0x9D)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_PROPERTY_SET BLE_MESH_MODEL_OP_1(0x62)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_PROPERTY_SET_UNACK BLE_MESH_MODEL_OP_1(0x63)
|
|
#define BLE_MESH_MODEL_OP_LIGHT_LC_PROPERTY_STATUS BLE_MESH_MODEL_OP_1(0x64)
|
|
|
|
/* Statue_Error_Code */
|
|
#define STATUS_SUCCESS 0x00
|
|
#define STATUS_INVALID_ADDRESS 0x01
|
|
#define STATUS_INVALID_MODEL 0x02
|
|
#define STATUS_INVALID_APPKEY 0x03
|
|
#define STATUS_INVALID_NETKEY 0x04
|
|
#define STATUS_INSUFF_RESOURCES 0x05
|
|
#define STATUS_IDX_ALREADY_STORED 0x06
|
|
#define STATUS_NVAL_PUB_PARAM 0x07
|
|
#define STATUS_NOT_SUB_MOD 0x08
|
|
#define STATUS_STORAGE_FAIL 0x09
|
|
#define STATUS_FEAT_NOT_SUPP 0x0a
|
|
#define STATUS_CANNOT_UPDATE 0x0b
|
|
#define STATUS_CANNOT_REMOVE 0x0c
|
|
#define STATUS_CANNOT_BIND 0x0d
|
|
#define STATUS_TEMP_STATE_CHG_FAIL 0x0e
|
|
#define STATUS_CANNOT_SET 0x0f
|
|
#define STATUS_UNSPECIFIED 0x10
|
|
#define STATUS_INVALID_BINDING 0x11
|
|
|
|
/* Foundation Models */
|
|
#define BLE_MESH_MODEL_ID_CFG_SRV 0x0000
|
|
#define BLE_MESH_MODEL_ID_CFG_CLI 0x0001
|
|
#define BLE_MESH_MODEL_ID_HEALTH_SRV 0x0002
|
|
#define BLE_MESH_MODEL_ID_HEALTH_CLI 0x0003
|
|
|
|
/* Models from the Mesh Model Specification */
|
|
#define BLE_MESH_MODEL_ID_GEN_ONOFF_SRV 0x1000
|
|
#define BLE_MESH_MODEL_ID_GEN_ONOFF_CLI 0x1001
|
|
#define BLE_MESH_MODEL_ID_GEN_LEVEL_SRV 0x1002
|
|
#define BLE_MESH_MODEL_ID_GEN_LEVEL_CLI 0x1003
|
|
#define BLE_MESH_MODEL_ID_GEN_DEF_TRANS_TIME_SRV 0x1004
|
|
#define BLE_MESH_MODEL_ID_GEN_DEF_TRANS_TIME_CLI 0x1005
|
|
#define BLE_MESH_MODEL_ID_GEN_POWER_ONOFF_SRV 0x1006
|
|
#define BLE_MESH_MODEL_ID_GEN_POWER_ONOFF_SETUP_SRV 0x1007
|
|
#define BLE_MESH_MODEL_ID_GEN_POWER_ONOFF_CLI 0x1008
|
|
#define BLE_MESH_MODEL_ID_GEN_POWER_LEVEL_SRV 0x1009
|
|
#define BLE_MESH_MODEL_ID_GEN_POWER_LEVEL_SETUP_SRV 0x100a
|
|
#define BLE_MESH_MODEL_ID_GEN_POWER_LEVEL_CLI 0x100b
|
|
#define BLE_MESH_MODEL_ID_GEN_BATTERY_SRV 0x100c
|
|
#define BLE_MESH_MODEL_ID_GEN_BATTERY_CLI 0x100d
|
|
#define BLE_MESH_MODEL_ID_GEN_LOCATION_SRV 0x100e
|
|
#define BLE_MESH_MODEL_ID_GEN_LOCATION_SETUPSRV 0x100f
|
|
#define BLE_MESH_MODEL_ID_GEN_LOCATION_CLI 0x1010
|
|
#define BLE_MESH_MODEL_ID_GEN_ADMIN_PROP_SRV 0x1011
|
|
#define BLE_MESH_MODEL_ID_GEN_MANUFACTURER_PROP_SRV 0x1012
|
|
#define BLE_MESH_MODEL_ID_GEN_USER_PROP_SRV 0x1013
|
|
#define BLE_MESH_MODEL_ID_GEN_CLIENT_PROP_SRV 0x1014
|
|
#define BLE_MESH_MODEL_ID_GEN_PROP_CLI 0x1015
|
|
#define BLE_MESH_MODEL_ID_SENSOR_SRV 0x1100
|
|
#define BLE_MESH_MODEL_ID_SENSOR_SETUP_SRV 0x1101
|
|
#define BLE_MESH_MODEL_ID_SENSOR_CLI 0x1102
|
|
#define BLE_MESH_MODEL_ID_TIME_SRV 0x1200
|
|
#define BLE_MESH_MODEL_ID_TIME_SETUP_SRV 0x1201
|
|
#define BLE_MESH_MODEL_ID_TIME_CLI 0x1202
|
|
#define BLE_MESH_MODEL_ID_SCENE_SRV 0x1203
|
|
#define BLE_MESH_MODEL_ID_SCENE_SETUP_SRV 0x1204
|
|
#define BLE_MESH_MODEL_ID_SCENE_CLI 0x1205
|
|
#define BLE_MESH_MODEL_ID_SCHEDULER_SRV 0x1206
|
|
#define BLE_MESH_MODEL_ID_SCHEDULER_SETUP_SRV 0x1207
|
|
#define BLE_MESH_MODEL_ID_SCHEDULER_CLI 0x1208
|
|
#define BLE_MESH_MODEL_ID_LIGHT_LIGHTNESS_SRV 0x1300
|
|
#define BLE_MESH_MODEL_ID_LIGHT_LIGHTNESS_SETUP_SRV 0x1301
|
|
#define BLE_MESH_MODEL_ID_LIGHT_LIGHTNESS_CLI 0x1302
|
|
#define BLE_MESH_MODEL_ID_LIGHT_CTL_SRV 0x1303
|
|
#define BLE_MESH_MODEL_ID_LIGHT_CTL_SETUP_SRV 0x1304
|
|
#define BLE_MESH_MODEL_ID_LIGHT_CTL_CLI 0x1305
|
|
#define BLE_MESH_MODEL_ID_LIGHT_CTL_TEMP_SRV 0x1306
|
|
#define BLE_MESH_MODEL_ID_LIGHT_HSL_SRV 0x1307
|
|
#define BLE_MESH_MODEL_ID_LIGHT_HSL_SETUP_SRV 0x1308
|
|
#define BLE_MESH_MODEL_ID_LIGHT_HSL_CLI 0x1309
|
|
#define BLE_MESH_MODEL_ID_LIGHT_HSL_HUE_SRV 0x130a
|
|
#define BLE_MESH_MODEL_ID_LIGHT_HSL_SAT_SRV 0x130b
|
|
#define BLE_MESH_MODEL_ID_LIGHT_XYL_SRV 0x130c
|
|
#define BLE_MESH_MODEL_ID_LIGHT_XYL_SETUP_SRV 0x130d
|
|
#define BLE_MESH_MODEL_ID_LIGHT_XYL_CLI 0x130e
|
|
#define BLE_MESH_MODEL_ID_LIGHT_LC_SRV 0x130f
|
|
#define BLE_MESH_MODEL_ID_LIGHT_LC_SETUPSRV 0x1310
|
|
#define BLE_MESH_MODEL_ID_LIGHT_LC_CLI 0x1311
|
|
|
|
// link close reason
|
|
#define CLOSE_REASON_SUCCESS 0x00
|
|
#define CLOSE_REASON_NVAL_PDU 0x01
|
|
#define CLOSE_REASON_NVAL_FMT 0x02
|
|
#define CLOSE_REASON_UNEXP_PDU 0x03
|
|
#define CLOSE_REASON_CFM_FAILED 0x04
|
|
#define CLOSE_REASON_RESOURCES 0x05
|
|
#define CLOSE_REASON_DECRYPT 0x06
|
|
#define CLOSE_REASON_UNEXP_ERR 0x07
|
|
#define CLOSE_REASON_ADDR 0x08
|
|
#define CLOSE_REASON_TIMEOUT 0x09
|
|
|
|
/** Special TTL value to request using configured default TTL */
|
|
#define BLE_MESH_TTL_DEFAULT 0xff
|
|
|
|
/** Maximum allowed TTL value */
|
|
#define BLE_MESH_TTL_MAX 0x7f
|
|
|
|
/** @def BLE_MESH_MODEL_CB
|
|
*
|
|
* @brief Composition data SIG model entry with callback functions.
|
|
*
|
|
* @param _id Model ID.
|
|
* @param _op Array of model opcode handlers.
|
|
* @param _pub Model publish parameters.
|
|
* @param _user_data User data for the model.
|
|
* @param _cb Callback structure, or NULL to keep no callbacks.
|
|
*/
|
|
#define BLE_MESH_MODEL_CB(_id, _op, _pub, _keys, _groups, _user_data, _cb) \
|
|
{ \
|
|
.id = (_id), \
|
|
.op = _op, \
|
|
.keys = _keys, \
|
|
.pub = _pub, \
|
|
.groups = _groups, \
|
|
.user_data = _user_data, \
|
|
.cb = _cb, \
|
|
}
|
|
|
|
/** @def BLE_MESH_MODEL_VND_CB
|
|
*
|
|
* @brief Composition data vendor model entry with callback functions.
|
|
*
|
|
* @param _company Company ID.
|
|
* @param _id Model ID.
|
|
* @param _op Array of model opcode handlers.
|
|
* @param _pub Model publish parameters.
|
|
* @param _user_data User data for the model.
|
|
* @param _cb Callback structure, or NULL to keep no callbacks.
|
|
*/
|
|
#define BLE_MESH_MODEL_VND_CB(_company, _id, _op, _pub, _keys, _groups, _user_data, _cb) \
|
|
{ \
|
|
.vnd.company = (_company), \
|
|
.vnd.id = (_id), \
|
|
.op = _op, \
|
|
.pub = _pub, \
|
|
.keys = _keys, \
|
|
.groups = _groups, \
|
|
.user_data = _user_data, \
|
|
.cb = _cb, \
|
|
}
|
|
|
|
/** @def BLE_MESH_MODEL
|
|
*
|
|
* @brief Composition data SIG model entry.
|
|
*
|
|
* @param _id Model ID.
|
|
* @param _op Array of model opcode handlers.
|
|
* @param _pub Model publish parameters.
|
|
* @param _user_data User data for the model.
|
|
*/
|
|
#define BLE_MESH_MODEL(_id, _op, _pub, _keys, _group, _user_data) \
|
|
BLE_MESH_MODEL_CB(_id, _op, _pub, _keys, _group, _user_data, NULL)
|
|
|
|
/** @def BLE_MESH_MODEL_VND
|
|
*
|
|
* @brief Composition data vendor model entry.
|
|
*
|
|
* @param _company Company ID.
|
|
* @param _id Model ID.
|
|
* @param _op Array of model opcode handlers.
|
|
* @param _pub Model publish parameters.
|
|
* @param _user_data User data for the model.
|
|
*/
|
|
#define BLE_MESH_MODEL_VND(_company, _id, _op, _pub, _keys, _group, _user_data) \
|
|
BLE_MESH_MODEL_VND_CB(_company, _id, _op, _pub, _keys, _group, _user_data, NULL)
|
|
|
|
/** @def BLE_MESH_TRANSMIT
|
|
*
|
|
* @brief Encode transmission count & interval steps.
|
|
*
|
|
* @param count Number of retransmissions (first transmission is excluded).
|
|
* @param int_ms Interval steps in milliseconds. Must be greater than 0
|
|
* and a multiple of 10.
|
|
*
|
|
* @return Mesh transmit value that can be used e.g. for the default
|
|
* values of the configuration model data.
|
|
*/
|
|
#define BLE_MESH_TRANSMIT(count, int_ms) ((count) | (((int_ms / 10) - 1) << 3))
|
|
|
|
/** @def BLE_MESH_TRANSMIT_COUNT
|
|
*
|
|
* @brief Decode transmit count from a transmit value.
|
|
*
|
|
* @param transmit Encoded transmit count & interval value.
|
|
*
|
|
* @return Transmission count (actual transmissions is N + 1).
|
|
*/
|
|
#define BLE_MESH_TRANSMIT_COUNT(transmit) (((transmit) & (uint8_t)BIT_MASK(3)))
|
|
|
|
/** @def BLE_MESH_TRANSMIT_INT
|
|
*
|
|
* @brief Decode transmit interval from a transmit value.
|
|
*
|
|
* @param transmit Encoded transmit count & interval value.
|
|
*
|
|
* @return Transmission interval in milliseconds.
|
|
*/
|
|
#define BLE_MESH_TRANSMIT_INT(transmit) ((((transmit) >> 3) + 1) * 10)
|
|
|
|
/** @def BLE_MESH_PUB_TRANSMIT
|
|
*
|
|
* @brief Encode Publish Retransmit count & interval steps.
|
|
*
|
|
* @param count Number of retransmissions (first transmission is excluded).
|
|
* @param int_ms Interval steps in milliseconds. Must be greater than 0
|
|
* and a multiple of 50.
|
|
*
|
|
* @return Mesh transmit value that can be used e.g. for the default
|
|
* values of the configuration model data.
|
|
*/
|
|
#define BLE_MESH_PUB_TRANSMIT(count, int_ms) BLE_MESH_TRANSMIT(count, (int_ms) / 5)
|
|
|
|
/** @def BLE_MESH_PUB_TRANSMIT_COUNT
|
|
*
|
|
* @brief Decode Pubhlish Retransmit count from a given value.
|
|
*
|
|
* @param transmit Encoded Publish Retransmit count & interval value.
|
|
*
|
|
* @return Retransmission count (actual transmissions is N + 1).
|
|
*/
|
|
#define BLE_MESH_PUB_TRANSMIT_COUNT(transmit) BLE_MESH_TRANSMIT_COUNT(transmit)
|
|
|
|
/** @def BLE_MESH_PUB_TRANSMIT_INT
|
|
*
|
|
* @brief Decode Publish Retransmit interval from a given value.
|
|
*
|
|
* @param transmit Encoded Publish Retransmit count & interval value.
|
|
*
|
|
* @return Transmission interval in milliseconds.
|
|
*/
|
|
#define BLE_MESH_PUB_TRANSMIT_INT(transmit) ((((transmit) >> 3) + 1) * 50)
|
|
|
|
/**************************************foundation****************************************/
|
|
|
|
#ifndef BIT
|
|
#define BIT(n) (1UL << (n))
|
|
#endif
|
|
|
|
#ifndef BIT_MASK
|
|
#define BIT_MASK(n) (BIT(n) - 1)
|
|
#endif
|
|
|
|
#define ARRAY_SIZE(array) \
|
|
((unsigned long)((sizeof(array) / sizeof((array)[0]))))
|
|
|
|
#define ALIGN_TYPE(_type) ((size_t) & ((struct {uint8_t _1; _type _2; } *)NULL)->_2)
|
|
|
|
/**************************************MODEL****************************************/
|
|
|
|
#define BLE_MESH_MODEL_OP_1(b0) (b0)
|
|
#define BLE_MESH_MODEL_OP_2(b0, b1) (((b0) << 8) | (b1))
|
|
#define BLE_MESH_MODEL_OP_3(b0, cid) ((((b0) << 16) | 0xc00000) | (cid))
|
|
|
|
#define BLE_MESH_MODEL_OP_END { 0, 0, NULL }
|
|
#define BLE_MESH_MODEL_NO_OPS ((struct bt_mesh_model_op []) \
|
|
{ BLE_MESH_MODEL_OP_END })
|
|
|
|
/**************************************SHA256****************************************/
|
|
|
|
#define TC_SHA256_BLOCK_SIZE (64)
|
|
#define TC_SHA256_DIGEST_SIZE (32)
|
|
#define TC_SHA256_STATE_BLOCKS (TC_SHA256_DIGEST_SIZE/4)
|
|
|
|
#define TC_CRYPTO_SUCCESS 1
|
|
#define TC_CRYPTO_FAIL 0
|
|
|
|
struct tc_sha256_state_struct
|
|
{
|
|
unsigned int iv[TC_SHA256_STATE_BLOCKS];
|
|
uint64_t bits_hashed;
|
|
uint8_t leftover[TC_SHA256_BLOCK_SIZE];
|
|
size_t leftover_offset;
|
|
};
|
|
|
|
typedef struct tc_sha256_state_struct *TCSha256State_t;
|
|
|
|
/***************************************mesh_cfg***************************************/
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t * base_addr;
|
|
uint32_t mem_len;
|
|
} mem_info_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t adv_buf_count;
|
|
uint8_t rpl_count;
|
|
uint8_t allow_rpl_cycle;
|
|
uint8_t ivu_divider;
|
|
uint8_t allow_same_addr;
|
|
uint8_t mod_key_count;
|
|
uint8_t mod_group_count;
|
|
} ble_mesh_common_cfg_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t pxyfilter_count;
|
|
} ble_mesh_proxy_cfg_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t msgcache_count;
|
|
|
|
uint8_t subnet_count;
|
|
uint8_t appkey_count;
|
|
|
|
uint8_t unseg_length;
|
|
uint8_t txseg_max;
|
|
uint8_t txseg_count;
|
|
|
|
uint8_t rxseg_count;
|
|
uint16_t rxsdu_max;
|
|
|
|
uint8_t label_count;
|
|
} ble_mesh_net_cfg_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t seq_store_rate;
|
|
uint16_t rpl_store_rate;
|
|
uint16_t store_rate;
|
|
} ble_mesh_store_cfg_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t frndseg_rx;
|
|
uint8_t frndsub_size;
|
|
uint8_t frndlpn_count;
|
|
uint8_t frndqueue_size;
|
|
uint16_t frndrecv_win;
|
|
} ble_mesh_friend_cfg_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t lpnmin_size;
|
|
uint8_t lpnrssi_factor;
|
|
uint8_t lpnrecv_factor;
|
|
uint32_t lpnpoll_interval;
|
|
uint32_t lpnpoll_timeout;
|
|
uint16_t lpnrecv_delay;
|
|
uint16_t lpnretry_timeout;
|
|
} ble_mesh_lpn_cfg_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t node_count;
|
|
} ble_mesh_prov_cfg_t;
|
|
|
|
typedef struct
|
|
{
|
|
const uint32_t rf_accessAddress;
|
|
const uint8_t rf_channel_37;
|
|
const uint8_t rf_channel_38;
|
|
const uint8_t rf_channel_39;
|
|
} ble_mesh_rf_cfg_t;
|
|
|
|
typedef struct
|
|
{
|
|
ble_mesh_common_cfg_t common_cfg;
|
|
ble_mesh_proxy_cfg_t proxy_cfg;
|
|
ble_mesh_net_cfg_t net_cfg;
|
|
ble_mesh_store_cfg_t store_cfg;
|
|
ble_mesh_friend_cfg_t friend_cfg;
|
|
ble_mesh_lpn_cfg_t lpn_cfg;
|
|
ble_mesh_prov_cfg_t prov_cfg;
|
|
ble_mesh_rf_cfg_t rf_cfg;
|
|
} ble_mesh_cfg_t;
|
|
|
|
/************************************k_work******************************************/
|
|
|
|
struct k_work;
|
|
typedef void (*k_work_handler_t)( struct k_work *work );
|
|
|
|
struct _snode
|
|
{
|
|
struct _snode *next;
|
|
};
|
|
typedef struct _snode sys_snode_t;
|
|
|
|
struct k_work
|
|
{
|
|
sys_snode_t node;
|
|
k_work_handler_t handler;
|
|
bt_mesh_atomic_t flags[1];
|
|
};
|
|
|
|
struct _dnode
|
|
{
|
|
union
|
|
{
|
|
struct _dnode *head; /* ptr to head of list (sys_dlist_t) */
|
|
struct _dnode *next; /* ptr to next node (sys_dnode_t) */
|
|
};
|
|
union
|
|
{
|
|
struct _dnode *tail; /* ptr to tail of list (sys_dlist_t) */
|
|
struct _dnode *prev; /* ptr to previous node (sys_dnode_t) */
|
|
};
|
|
};
|
|
|
|
typedef struct _dnode sys_dlist_t;
|
|
typedef struct _dnode sys_dnode_t;
|
|
|
|
struct _timeout
|
|
{
|
|
sys_dnode_t node;
|
|
int32_t dticks;
|
|
};
|
|
|
|
struct k_delayed_work
|
|
{
|
|
struct k_work work;
|
|
struct _timeout timeout;
|
|
struct k_work_q *work_q;
|
|
};
|
|
|
|
/************************************net******************************************/
|
|
|
|
// APP key
|
|
struct bt_mesh_app_key
|
|
{
|
|
uint16_t net_idx;
|
|
uint16_t app_idx;
|
|
uint8_t updated;
|
|
struct bt_mesh_app_keys
|
|
{
|
|
uint8_t id;
|
|
uint8_t val[16];
|
|
} keys[2];
|
|
};
|
|
|
|
// reply
|
|
struct bt_mesh_rpl {
|
|
u16_t src;
|
|
BOOL old_iv;
|
|
BOOL store;
|
|
u32_t seq;
|
|
};
|
|
|
|
/************************************model******************************************/
|
|
|
|
struct bt_mesh_model;
|
|
|
|
/** Model publication context. */
|
|
struct bt_mesh_model_pub
|
|
{
|
|
/** The model the context belongs to. Initialized by the stack. */
|
|
struct bt_mesh_model *mod;
|
|
|
|
uint16_t addr; /**< Publish Address. */
|
|
uint16_t key :12, /**< Publish AppKey Index. */
|
|
cred :1, /**< Friendship Credentials Flag. */
|
|
send_rel :1; /**< Force reliable sending (segment acks) */
|
|
|
|
uint8_t ttl; /**< Publish Time to Live. */
|
|
uint8_t retransmit; /**< Retransmit Count & Interval Steps. */
|
|
uint8_t period; /**< Publish Period. */
|
|
uint16_t period_div :4, /**< Divisor for the Period. */
|
|
fast_period :1, /**< Use FastPeriodDivisor */
|
|
count :3; /**< Retransmissions left. */
|
|
|
|
uint32_t period_start; /**< Start of the current period. */
|
|
|
|
/** @brief Publication buffer, containing the publication message.
|
|
*
|
|
* This will get correctly created when the publication context
|
|
* has been defined using the BLE_MESH_MODEL_PUB_DEFINE macro.
|
|
*
|
|
* BLE_MESH_MODEL_PUB_DEFINE(name, update, size);
|
|
*/
|
|
struct net_buf_simple *msg;
|
|
|
|
/** @brief Callback for updating the publication buffer.
|
|
*
|
|
* When set to NULL, the model is assumed not to support
|
|
* periodic publishing. When set to non-NULL the callback
|
|
* will be called periodically and is expected to update
|
|
* @ref bt_mesh_model_pub.msg with a valid publication
|
|
* message.
|
|
*
|
|
* @param mod The Model the Publication Context belogs to.
|
|
*
|
|
* @return Zero on success or (negative) error code otherwise.
|
|
*/
|
|
int (*update)( struct bt_mesh_model *mod );
|
|
|
|
/** Publish Period Timer. Only for stack-internal use. */
|
|
struct k_delayed_work timer;
|
|
};
|
|
|
|
/** Message sending context. */
|
|
struct bt_mesh_msg_ctx
|
|
{
|
|
/** NetKey Index of the subnet to send the message on. */
|
|
uint16_t net_idx;
|
|
|
|
/** AppKey Index to encrypt the message with. */
|
|
uint16_t app_idx;
|
|
|
|
/** Remote address. */
|
|
uint16_t addr;
|
|
|
|
/** Destination address of a received message. Not used for sending. */
|
|
uint16_t recv_dst;
|
|
|
|
/** RSSI of received packet. Not used for sending. */
|
|
int8_t recv_rssi;
|
|
|
|
/** Received TTL value. Not used for sending. */
|
|
uint8_t recv_ttl :7;
|
|
|
|
/** Force sending reliably by using segment acknowledgement */
|
|
uint8_t send_rel :1;
|
|
|
|
/** TTL, or BLE_MESH_TTL_DEFAULT for default TTL. */
|
|
uint8_t send_ttl;
|
|
};
|
|
|
|
struct bt_mesh_model_op
|
|
{
|
|
/* OpCode encoded using the BLE_MESH_MODEL_OP_* macros */
|
|
const uint32_t opcode;
|
|
|
|
/* Minimum required message length */
|
|
const size_t min_len;
|
|
|
|
/* Message handler for the opcode */
|
|
void (* const func)( struct bt_mesh_model *model,
|
|
struct bt_mesh_msg_ctx *ctx, struct net_buf_simple *buf );
|
|
};
|
|
|
|
typedef ssize_t (*settings_read_cb)( void *cb_arg, void *data, size_t len );
|
|
|
|
/** Model callback functions. */
|
|
struct bt_mesh_model_cb
|
|
{
|
|
/** @brief Set value handler of user data tied to the model.
|
|
*
|
|
* @sa settings_handler::h_set
|
|
*
|
|
* @param model Model to set the persistent data of.
|
|
* @param len_rd The size of the data found in the backend.
|
|
* @param read_cb Function provided to read the data from the backend.
|
|
* @param cb_arg Arguments for the read function provided by the
|
|
* backend.
|
|
*
|
|
* @return 0 on success, error otherwise.
|
|
*/
|
|
int (* const settings_set)( struct bt_mesh_model *model, size_t len_rd,
|
|
settings_read_cb read_cb, void *cb_arg );
|
|
|
|
/** @brief Callback called when the mesh is started.
|
|
*
|
|
* This handler gets called after the node has been provisioned, or
|
|
* after all mesh data has been loaded from persistent storage.
|
|
*
|
|
* When this callback fires, the mesh model may start its behavior,
|
|
* and all Access APIs are ready for use.
|
|
*
|
|
* @param model Model this callback belongs to.
|
|
* @param first_time Flag indicating whether this is the first time the
|
|
* node is started. If false, provisioning data was
|
|
* loaded from persistent storage.
|
|
*/
|
|
int (* const start)( struct bt_mesh_model *model, uint8_t first_time );
|
|
|
|
/** @brief Model init callback.
|
|
*
|
|
* Called on every model instance during mesh initialization.
|
|
*
|
|
* @param model Model to be initialized.
|
|
*
|
|
* @return 0 on success, error otherwise.
|
|
*/
|
|
int (* const init)( struct bt_mesh_model *model );
|
|
|
|
/** @brief Model reset callback.
|
|
*
|
|
* Called when the mesh node is reset. All model data is deleted on
|
|
* reset, and the model should clear its state.
|
|
*
|
|
* @param model Model this callback belongs to.
|
|
*/
|
|
void (* const reset)( struct bt_mesh_model *model );
|
|
};
|
|
|
|
/** Abstraction that describes a Mesh Model instance */
|
|
struct bt_mesh_model
|
|
{
|
|
union
|
|
{
|
|
const uint16_t id;
|
|
struct
|
|
{
|
|
uint16_t id;
|
|
uint16_t company;
|
|
} vnd;
|
|
};
|
|
|
|
/* Internal information, mainly for persistent storage */
|
|
uint8_t elem_idx; /* Belongs to Nth element */
|
|
uint8_t model_idx; /* Is the Nth model in the element */
|
|
uint16_t flags; /* Information about what has changed */
|
|
|
|
/* Model Publication */
|
|
struct bt_mesh_model_pub * const pub;
|
|
|
|
/* AppKey List */
|
|
uint16_t *keys;
|
|
|
|
/* Subscription List (group or virtual addresses) */
|
|
uint16_t *groups;
|
|
|
|
const struct bt_mesh_model_op * op;
|
|
|
|
/* Model callback structure. */
|
|
const struct bt_mesh_model_cb * cb;
|
|
|
|
/* Model-specific user data */
|
|
void *user_data;
|
|
};
|
|
|
|
struct bt_mesh_send_cb
|
|
{
|
|
void (*start)( uint16_t duration, int err, void *cb_data );
|
|
void (*end)( int err, void *cb_data );
|
|
};
|
|
|
|
typedef void (*elem_unkonw_op_cb_t)( uint32_t opcode, struct bt_mesh_model *model,
|
|
struct bt_mesh_msg_ctx *ctx, struct net_buf_simple *buf );
|
|
|
|
/************************************elem******************************************/
|
|
|
|
/** Abstraction that describes a Mesh Element */
|
|
struct bt_mesh_elem
|
|
{
|
|
/* Unicast Address. Set at runtime during provisioning. */
|
|
uint16_t addr;
|
|
|
|
/* Location Descriptor (GATT Bluetooth Namespace Descriptors) */
|
|
const uint16_t loc;
|
|
|
|
const uint8_t model_count;
|
|
const uint8_t vnd_model_count;
|
|
|
|
struct bt_mesh_model * const models;
|
|
struct bt_mesh_model * const vnd_models;
|
|
};
|
|
|
|
/** Node Composition */
|
|
struct bt_mesh_comp
|
|
{
|
|
uint16_t cid;
|
|
uint16_t pid;
|
|
uint16_t vid;
|
|
|
|
size_t elem_count;
|
|
struct bt_mesh_elem *elem;
|
|
};
|
|
|
|
typedef enum
|
|
{
|
|
BLE_MESH_PROV_OOB_OTHER = BIT( 0 ),
|
|
BLE_MESH_PROV_OOB_URI = BIT( 1 ),
|
|
BLE_MESH_PROV_OOB_2D_CODE = BIT( 2 ),
|
|
BLE_MESH_PROV_OOB_BAR_CODE = BIT( 3 ),
|
|
BLE_MESH_PROV_OOB_NFC = BIT( 4 ),
|
|
BLE_MESH_PROV_OOB_NUMBER = BIT( 5 ),
|
|
BLE_MESH_PROV_OOB_STRING = BIT( 6 ),
|
|
/* 7 - 10 are reserved */
|
|
BLE_MESH_PROV_OOB_ON_BOX = BIT( 11 ),
|
|
BLE_MESH_PROV_OOB_IN_BOX = BIT( 12 ),
|
|
BLE_MESH_PROV_OOB_ON_PAPER = BIT( 13 ),
|
|
BLE_MESH_PROV_OOB_IN_MANUAL = BIT( 14 ),
|
|
BLE_MESH_PROV_OOB_ON_DEV = BIT( 15 ),
|
|
} bt_mesh_prov_oob_info_t;
|
|
|
|
typedef enum
|
|
{
|
|
BLE_MESH_NO_OUTPUT = 0,
|
|
BLE_MESH_BLINK = BIT( 0 ),
|
|
BLE_MESH_BEEP = BIT( 1 ),
|
|
BLE_MESH_VIBRATE = BIT( 2 ),
|
|
BLE_MESH_DISPLAY_NUMBER = BIT( 3 ),
|
|
BLE_MESH_DISPLAY_STRING = BIT( 4 ),
|
|
} bt_mesh_output_action_t;
|
|
|
|
typedef enum
|
|
{
|
|
BLE_MESH_NO_INPUT = 0,
|
|
BLE_MESH_PUSH = BIT( 0 ),
|
|
BLE_MESH_TWIST = BIT( 1 ),
|
|
BLE_MESH_ENTER_NUMBER = BIT( 2 ),
|
|
BLE_MESH_ENTER_STRING = BIT( 3 ),
|
|
} bt_mesh_input_action_t;
|
|
|
|
typedef enum
|
|
{
|
|
BLE_MESH_PROV_ADV = BIT( 0 ),
|
|
BLE_MESH_PROV_GATT = BIT( 1 ),
|
|
} bt_mesh_prov_bearer_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t type;
|
|
uint8_t val[6];
|
|
} bt_mesh_addr_t;
|
|
|
|
typedef union
|
|
{
|
|
struct pb_adv
|
|
{
|
|
const uint32_t *uri_hash;
|
|
} adv;
|
|
|
|
struct pb_gatt
|
|
{
|
|
const bt_mesh_addr_t *addr;
|
|
} gatt;
|
|
} unprivison_info_t;
|
|
|
|
/** Provisioning properties & capabilities. */
|
|
struct bt_mesh_prov
|
|
{
|
|
const uint8_t *uuid; /** The UUID that's used when advertising as unprovisioned */
|
|
|
|
/** Optional URI. This will be advertised separately from the
|
|
* unprovisioned beacon, however the unprovisioned beacon will
|
|
* contain a hash of it so the two can be associated by the
|
|
* provisioner.
|
|
*/
|
|
const char *uri;
|
|
bt_mesh_prov_oob_info_t oob_info; /** Out of Band information field. */
|
|
uint8_t oob_pub_key; /** Flag indicates whether unprovisioned devices support OOB public key */
|
|
|
|
/** @brief Set device OOB public key.
|
|
*
|
|
* This callback notifies the application to
|
|
* set OOB public key & private key pair.
|
|
*/
|
|
void (*oob_pub_key_cb)( void );
|
|
const uint8_t *static_val; /** Static OOB value */
|
|
uint8_t static_val_len; /** Static OOB value length */
|
|
uint8_t output_size; /** Maximum size of Output OOB supported */
|
|
uint16_t output_actions; /** Supported Output OOB Actions */
|
|
uint8_t input_size; /** Maximum size of Input OOB supported */
|
|
uint16_t input_actions; /** Supported Input OOB Actions */
|
|
|
|
/** @brief Output of a number is requested.
|
|
*
|
|
* This callback notifies the application to
|
|
* output the given number using the given action.
|
|
*
|
|
* @param act Action for outputting the number.
|
|
* @param num Number to be out-put.
|
|
*
|
|
* @return Zero on success or negative error code otherwise
|
|
*/
|
|
int (*output_number)( bt_mesh_output_action_t act, uint32_t num );
|
|
|
|
/** @brief Output of a string is requested.
|
|
*
|
|
* This callback notifies the application to
|
|
* display the given string to the user.
|
|
*
|
|
* @param str String to be displayed.
|
|
*
|
|
* @return Zero on success or negative error code otherwise
|
|
*/
|
|
int (*output_string)( const char *str );
|
|
|
|
/** @brief Input is requested.
|
|
*
|
|
* This callback notifies the application to request
|
|
* input from the user using the given action. The
|
|
* requested input will either be a string or a number, and
|
|
* the application needs to consequently call the
|
|
* bt_mesh_input_string() or bt_mesh_input_number() functions
|
|
* once the data has been acquired from the user.
|
|
*
|
|
* @param act Action for inputting data.
|
|
* @param num Maximum size of the in-put data.
|
|
*
|
|
* @return Zero on success or negative error code otherwise
|
|
*/
|
|
int (*input)( bt_mesh_input_action_t act, uint8_t size );
|
|
|
|
/** @brief Unprovisioned beacon has been received.
|
|
*
|
|
* This callback notifies the application that an unprovisioned
|
|
* beacon has been received.
|
|
*
|
|
* @param uuid UUID
|
|
* @param oob_info OOB Information
|
|
* @param uri_hash Pointer to URI Hash value. NULL if no hash was
|
|
* present in the beacon.
|
|
*/
|
|
void (*unprovisioned_beacon)( bt_mesh_prov_bearer_t bearer,
|
|
const uint8_t uuid[16], bt_mesh_prov_oob_info_t oob_info,
|
|
const unprivison_info_t *info );
|
|
|
|
void (*pear_oob_pub_key)( void );
|
|
|
|
/** @brief Provisioning link has been opened.
|
|
*
|
|
* This callback notifies the application that a provisioning
|
|
* link has been opened on the given provisioning bearer.
|
|
*
|
|
* @param bearer Provisioning bearer.
|
|
*/
|
|
void (*link_open)( bt_mesh_prov_bearer_t bearer );
|
|
|
|
/** @brief Provisioning link has been closed.
|
|
*
|
|
* This callback notifies the application that a provisioning
|
|
* link has been closed on the given provisioning bearer.
|
|
*
|
|
* @param bearer Provisioning bearer.
|
|
*/
|
|
void (*link_close)( bt_mesh_prov_bearer_t bearer, uint8_t reason );
|
|
|
|
/** @brief Provisioning is complete.
|
|
*
|
|
* This callback notifies the application that provisioning has
|
|
* been successfully completed, and that the local node has been
|
|
* assigned the specified NetKeyIndex and primary element address.
|
|
*
|
|
* @param net_idx NetKeyIndex given during provisioning.
|
|
* @param addr Primary element address.
|
|
* @param flags Key Refresh & IV Update flags
|
|
* @param iv_index IV Index.
|
|
*/
|
|
void (*complete)( uint16_t net_idx, uint16_t addr, uint8_t flags, uint32_t iv_index );
|
|
|
|
/** @brief A new node has been added to the provisioning database.
|
|
*
|
|
* This callback notifies the application that provisioning has
|
|
* been successfully completed, and that a node has been assigned
|
|
* the specified NetKeyIndex and primary element address.
|
|
*
|
|
* @param net_idx NetKeyIndex given during provisioning.
|
|
* @param addr Primary element address.
|
|
* @param num_elem Number of elements that this node has.
|
|
*/
|
|
void (*node_added)( uint16_t net_idx, uint16_t addr, uint8_t num_elem );
|
|
|
|
/** @brief Node has been reset.
|
|
*
|
|
* This callback notifies the application that the local node
|
|
* has been reset and needs to be reprovisioned. The node will
|
|
* not automatically advertise as unprovisioned, rather needs
|
|
* to enable unprovisioned advertising on one or more
|
|
* provisioning bearers.
|
|
*/
|
|
void (*reset)( void );
|
|
};
|
|
|
|
struct bt_mesh_conn
|
|
{
|
|
uint16_t handle;
|
|
bt_mesh_atomic_t ref;
|
|
};
|
|
|
|
/** Proxy Client. */
|
|
struct bt_mesh_proxy_cli
|
|
{
|
|
void (*connected)( struct bt_mesh_conn *conn );
|
|
|
|
void (*disconnected)( struct bt_mesh_conn *conn, uint8_t reason );
|
|
|
|
void (*net_id_recv)( const bt_mesh_addr_t *addr, uint16_t net_idx );
|
|
|
|
void (*node_id_recv)( const bt_mesh_addr_t *bt_addr, uint16_t net_idx,
|
|
uint16_t addr );
|
|
};
|
|
|
|
extern const struct bt_mesh_model_op bt_mesh_cfg_srv_op[];
|
|
extern const struct bt_mesh_model_cb bt_mesh_cfg_srv_cb;
|
|
|
|
#define BLE_MESH_MODEL_CFG_SRV(_keys, _groups, srv_data) \
|
|
BLE_MESH_MODEL_CB(BLE_MESH_MODEL_ID_CFG_SRV, bt_mesh_cfg_srv_op, NULL, \
|
|
_keys, _groups, srv_data, &bt_mesh_cfg_srv_cb)
|
|
#define BLE_MESH_MODEL_CFG_CLI(_keys, _groups, cli_data) \
|
|
BLE_MESH_MODEL_CB(BLE_MESH_MODEL_ID_CFG_CLI, NULL, NULL, _keys, _groups, cli_data, NULL)
|
|
|
|
extern const struct bt_mesh_model_op bt_mesh_health_srv_op[];
|
|
extern const struct bt_mesh_model_cb bt_mesh_health_mod_srv_cb;
|
|
|
|
#define BLE_MESH_MODEL_HEALTH_SRV(_keys, _groups, srv, pub) \
|
|
BLE_MESH_MODEL_CB(BLE_MESH_MODEL_ID_HEALTH_SRV, bt_mesh_health_srv_op, \
|
|
pub, _keys, _groups, srv, &bt_mesh_health_mod_srv_cb)
|
|
|
|
/*****************************************buf*************************************/
|
|
|
|
#define BLE_MESH_NET_BUF_USER_DATA_SIZE 1
|
|
|
|
struct net_buf_simple
|
|
{
|
|
/** Pointer to the start of data in the buffer. */
|
|
uint8_t *data;
|
|
|
|
/** Length of the data behind the data pointer. */
|
|
uint16_t len;
|
|
|
|
/** Amount of data that this buffer can store. */
|
|
uint16_t size;
|
|
|
|
/** Start of the data storage. Not to be accessed directly
|
|
* (the data pointer should be used instead).
|
|
*/
|
|
uint8_t *__buf;
|
|
};
|
|
|
|
struct net_buf
|
|
{
|
|
union
|
|
{
|
|
/** Allow placing the buffer into sys_slist_t */
|
|
sys_snode_t node;
|
|
|
|
/** Fragments associated with this buffer. */
|
|
struct net_buf *frags;
|
|
};
|
|
|
|
/** Reference count. */
|
|
uint8_t ref;
|
|
|
|
/** Bit-field of buffer flags. */
|
|
uint8_t flags;
|
|
|
|
/** Where the buffer should go when freed up. */
|
|
struct net_buf_pool *pool;
|
|
|
|
/* Union for convenience access to the net_buf_simple members, also
|
|
* preserving the old API.
|
|
*/
|
|
union
|
|
{
|
|
/* The ABI of this struct must match net_buf_simple */
|
|
struct
|
|
{
|
|
/** Pointer to the start of data in the buffer. */
|
|
uint8_t *data;
|
|
|
|
/** Length of the data behind the data pointer. */
|
|
uint16_t len;
|
|
|
|
/** Amount of data that this buffer can store. */
|
|
uint16_t size;
|
|
|
|
/** Start of the data storage. Not to be accessed
|
|
* directly (the data pointer should be used
|
|
* instead).
|
|
*/
|
|
uint8_t *__buf;
|
|
};
|
|
|
|
struct net_buf_simple b;
|
|
};
|
|
|
|
/** System metadata for this buffer. */
|
|
uint32_t user_data[BLE_MESH_NET_BUF_USER_DATA_SIZE];
|
|
};
|
|
|
|
// Define a net_buf_simple stack variable.
|
|
#define NET_BUF_SIMPLE_DEFINE(_name, _size) \
|
|
uint8_t net_buf_data_##_name[_size]; \
|
|
struct net_buf_simple _name = { \
|
|
.data = net_buf_data_##_name, \
|
|
.len = 0, \
|
|
.size = _size, \
|
|
.__buf = net_buf_data_##_name, \
|
|
}
|
|
|
|
// Define a static net_buf_simple variable.
|
|
#define NET_BUF_SIMPLE_DEFINE_STATIC(_name, _size) \
|
|
static uint8_t net_buf_data_##_name[_size]; \
|
|
static struct net_buf_simple _name = { \
|
|
.data = net_buf_data_##_name, \
|
|
.len = 0, \
|
|
.size = _size, \
|
|
.__buf = net_buf_data_##_name, \
|
|
}
|
|
|
|
// Define a model publication context.
|
|
#define BLE_MESH_MODEL_PUB_DEFINE(_name, _update, _msg_len) \
|
|
NET_BUF_SIMPLE_DEFINE_STATIC(bt_mesh_pub_msg_##_name, _msg_len); \
|
|
static struct bt_mesh_model_pub _name = { \
|
|
.update = _update, \
|
|
.msg = &bt_mesh_pub_msg_##_name, \
|
|
}
|
|
|
|
// A helper to define a health publication context
|
|
#define BLE_MESH_HEALTH_PUB_DEFINE(_name, _max_faults) \
|
|
BLE_MESH_MODEL_PUB_DEFINE(_name, NULL, (1 + 3 + (_max_faults)))
|
|
|
|
#define CONTAINER_OF(ptr, type, field) \
|
|
((type *)(((char *)(ptr)) - offsetof(type, field)))
|
|
|
|
/*****************************************list*************************************/
|
|
|
|
typedef struct
|
|
{
|
|
sys_snode_t *head;
|
|
sys_snode_t *tail;
|
|
} sys_slist_t;
|
|
|
|
/*****************************************NVS*************************************/
|
|
|
|
typedef int (*flash_api_read)( int offset, void *data, unsigned int len );
|
|
typedef int (*flash_api_write)( int offset, const void *data, unsigned int len );
|
|
typedef int (*flash_api_erase)( int offset, unsigned int len );
|
|
typedef int (*flash_api_write_protection)( uint8_t enable );
|
|
|
|
struct flash_config_info
|
|
{
|
|
uint8_t nvs_sector_cnt;
|
|
uint8_t nvs_write_size;
|
|
uint16_t nvs_sector_size;
|
|
uint32_t nvs_store_baddr;
|
|
};
|
|
|
|
struct flash_driver_api
|
|
{
|
|
flash_api_read read;
|
|
flash_api_write write;
|
|
flash_api_erase erase;
|
|
flash_api_write_protection write_protection;
|
|
};
|
|
|
|
struct device
|
|
{
|
|
struct flash_driver_api api;
|
|
struct flash_config_info info;
|
|
};
|
|
|
|
/*****************************************health_srv*************************************/
|
|
|
|
/** Mesh Health Server Model Callback */
|
|
struct bt_mesh_health_srv_cb
|
|
{
|
|
/* Fetch current faults */
|
|
int (*fault_get_cur)( struct bt_mesh_model *model, uint8_t *test_id,
|
|
uint16_t *company_id, uint8_t *faults, uint8_t *fault_count );
|
|
|
|
/* Fetch registered faults */
|
|
int (*fault_get_reg)( struct bt_mesh_model *model, uint16_t company_id,
|
|
uint8_t *test_id, uint8_t *faults, uint8_t *fault_count );
|
|
|
|
/* Clear registered faults */
|
|
int (*fault_clear)( struct bt_mesh_model *model, uint16_t company_id );
|
|
|
|
/* Run a specific test */
|
|
int (*fault_test)( struct bt_mesh_model *model, uint8_t test_id,
|
|
uint16_t company_id );
|
|
|
|
/* Attention on */
|
|
void (*attn_on)( struct bt_mesh_model *model );
|
|
|
|
/* Attention off */
|
|
void (*attn_off)( struct bt_mesh_model *model );
|
|
};
|
|
|
|
/** Mesh Health Server Model Context */
|
|
struct bt_mesh_health_srv
|
|
{
|
|
struct bt_mesh_model *model;
|
|
|
|
/* Optional callback struct */
|
|
const struct bt_mesh_health_srv_cb *cb;
|
|
|
|
/* Attention Timer state */
|
|
struct k_delayed_work attn_timer;
|
|
};
|
|
|
|
/* Heartbeat Publication */
|
|
struct bt_mesh_hb_pub
|
|
{
|
|
struct k_delayed_work timer;
|
|
|
|
uint16_t dst;
|
|
uint16_t count;
|
|
uint8_t period;
|
|
uint8_t ttl;
|
|
uint16_t feat;
|
|
uint16_t net_idx;
|
|
};
|
|
|
|
/* Heartbeat Subscription */
|
|
struct bt_mesh_hb_sub
|
|
{
|
|
int64_t expiry;
|
|
|
|
uint16_t src;
|
|
uint16_t dst;
|
|
uint16_t count;
|
|
uint8_t min_hops;
|
|
uint8_t max_hops;
|
|
|
|
/* Optional subscription tracking function */
|
|
void (*func)( uint8_t hops, uint16_t feat );
|
|
};
|
|
|
|
/*****************************************cfg_srv*************************************/
|
|
|
|
struct cfgEventHdr
|
|
{
|
|
uint8_t status;
|
|
uint32_t opcode;
|
|
};
|
|
|
|
typedef struct
|
|
{
|
|
struct cfgEventHdr cfgHdr;
|
|
struct bt_mesh_model *model;
|
|
} cfg_srv_status_t;
|
|
|
|
typedef void (*cfg_srv_rsp_handler_t)( const cfg_srv_status_t *val );
|
|
|
|
/** Mesh Configuration Server Model Context */
|
|
struct bt_mesh_cfg_srv
|
|
{
|
|
struct bt_mesh_model *model;
|
|
|
|
cfg_srv_rsp_handler_t handler;
|
|
|
|
uint8_t net_transmit; /* Network Transmit state */
|
|
uint8_t relay; /* Relay Mode state */
|
|
uint8_t relay_retransmit; /* Relay Retransmit state */
|
|
uint8_t beacon; /* Secure Network Beacon state */
|
|
uint8_t gatt_proxy; /* GATT Proxy state */
|
|
uint8_t frnd; /* Friend state */
|
|
uint8_t default_ttl; /* Default TTL */
|
|
|
|
struct bt_mesh_hb_pub hb_pub;
|
|
|
|
struct bt_mesh_hb_sub hb_sub;
|
|
};
|
|
|
|
/*****************************************cfg_cli*************************************/
|
|
|
|
struct bt_mesh_cfg_comp_data
|
|
{
|
|
struct net_buf_simple *buf;
|
|
};
|
|
|
|
struct bt_mesh_cfg_relay
|
|
{
|
|
uint8_t transmit;
|
|
};
|
|
|
|
struct bt_mesh_cfg_mod_pub
|
|
{
|
|
uint16_t addr;
|
|
uint16_t app_idx;
|
|
uint8_t cred_flag;
|
|
uint8_t ttl;
|
|
uint8_t period;
|
|
uint8_t transmit;
|
|
};
|
|
|
|
struct bt_mesh_cfg_mod_pub_va
|
|
{
|
|
uint16_t addr[16];
|
|
uint16_t app_idx;
|
|
uint8_t cred_flag;
|
|
uint8_t ttl;
|
|
uint8_t period;
|
|
uint8_t transmit;
|
|
};
|
|
|
|
struct bt_mesh_cfg_hb_sub
|
|
{
|
|
uint16_t src;
|
|
uint16_t dst;
|
|
uint8_t period;
|
|
uint8_t count;
|
|
uint8_t min;
|
|
uint8_t max;
|
|
};
|
|
|
|
struct bt_mesh_cfg_hb_pub
|
|
{
|
|
uint16_t dst;
|
|
uint8_t count;
|
|
uint8_t period;
|
|
uint8_t ttl;
|
|
uint16_t feat;
|
|
uint16_t net_idx;
|
|
};
|
|
|
|
struct bt_mesh_cfg_lpn_timeout
|
|
{
|
|
uint16_t addr;
|
|
uint32_t polltimeout;
|
|
};
|
|
|
|
struct bt_mesh_cfg_net_transmit
|
|
{
|
|
uint8_t transmit;
|
|
};
|
|
|
|
struct bt_mesh_node_id
|
|
{
|
|
uint8_t identity;
|
|
uint16_t net_idx;
|
|
};
|
|
|
|
struct bt_mesh_krp
|
|
{
|
|
uint8_t phase;
|
|
uint16_t net_idx;
|
|
};
|
|
|
|
struct bt_mesh_cfg_app_list
|
|
{
|
|
uint16_t elem_addr;
|
|
uint16_t mod_id;
|
|
uint16_t cid;
|
|
uint16_t *app_lists;
|
|
uint8_t app_count;
|
|
};
|
|
|
|
struct bt_mesh_app_key_list
|
|
{
|
|
uint16_t net_idx;
|
|
uint16_t *app_key_lists;
|
|
uint8_t app_key_count;
|
|
};
|
|
|
|
struct bt_mesh_sub_list
|
|
{
|
|
uint16_t elem_addr;
|
|
uint16_t cid;
|
|
uint16_t mod_id;
|
|
uint16_t *addr;
|
|
uint8_t addr_count;
|
|
};
|
|
|
|
union cfgEvent_t
|
|
{
|
|
struct bt_mesh_cfg_comp_data comp;
|
|
struct bt_mesh_cfg_relay relay;
|
|
struct bt_mesh_cfg_mod_pub m_pub;
|
|
struct bt_mesh_cfg_hb_pub h_pub;
|
|
struct bt_mesh_cfg_hb_sub sub;
|
|
struct bt_mesh_cfg_lpn_timeout lpn;
|
|
struct bt_mesh_cfg_net_transmit transmit;
|
|
struct bt_mesh_node_id id;
|
|
struct bt_mesh_krp krp;
|
|
struct bt_mesh_cfg_app_list aplist;
|
|
struct bt_mesh_app_key_list apklist;
|
|
struct bt_mesh_sub_list sublist;
|
|
};
|
|
|
|
typedef struct
|
|
{
|
|
struct cfgEventHdr cfgHdr;
|
|
union cfgEvent_t cfgEvent;
|
|
} cfg_cli_status_t;
|
|
|
|
typedef void (*cfg_cli_rsp_handler_t)( const cfg_cli_status_t *val );
|
|
|
|
/** Mesh Configuration Client Model Context */
|
|
struct bt_mesh_cfg_cli
|
|
{
|
|
struct bt_mesh_model *model;
|
|
|
|
cfg_cli_rsp_handler_t handler;
|
|
|
|
uint32_t op_req;
|
|
uint32_t op_pending;
|
|
|
|
struct k_delayed_work op_sync;
|
|
};
|
|
|
|
/*****************************************adapt*************************************/
|
|
typedef int (*gatts_notify_cb_t)( struct bt_mesh_conn *conn, const void *data,
|
|
uint16_t len );
|
|
|
|
/*****************************************proxy*************************************/
|
|
|
|
typedef void (*proxy_beacon_init_cb_t)( void *client );
|
|
typedef int (*proxy_prov_enable_cb_t)( void );
|
|
typedef int (*proxy_gatt_enable_cb_t)( void );
|
|
|
|
/*****************************************friend*************************************/
|
|
|
|
#define FRIEND_FRIENDSHIP_ESTABLISHED 0x01
|
|
#define FRIEND_FRIENDSHIP_TERMINATED 0x02
|
|
|
|
typedef int (*friend_init_cb_t)( void );
|
|
typedef void (*friend_state_cb_t)( uint16_t lpn_addr, uint8_t state );
|
|
|
|
/*****************************************lpn*************************************/
|
|
|
|
#define LPN_FRIENDSHIP_ESTABLISHED 0x01
|
|
#define LPN_FRIENDSHIP_TERMINATED 0x02
|
|
|
|
typedef int (*lpn_init_cb_t)( void );
|
|
typedef void (*lpn_state_cb_t)( uint16_t friend_addr, uint8_t state );
|
|
|
|
/*****************************************app_rf*************************************/
|
|
|
|
typedef void (*pfnAppRFStatusCB_t)( uint8_t sta, uint8_t rsr, uint8_t *rxBuf );
|
|
// sta - current status@ref RF_ROLE_STATUS_TYPE
|
|
// rsr - receive status: bit0- crc check result,bit1- type matching result
|
|
// rxBuf - receive data buffer
|
|
|
|
typedef struct app_tag_rf_config
|
|
{
|
|
uint8_t LLEMode; // BIT0 0=LLE_MODE_BASIC
|
|
// BIT6 0=data channel(0-39)
|
|
// 1=rf frequency (2400000kHz-2483500kHz)
|
|
// BIT7 0=the first byte of the receive buffer is rssi
|
|
// 1=the first byte of the receive buffer is package type
|
|
uint8_t Channel; // rf channel(0-39)
|
|
uint32_t Frequency; // rf frequency (2400000kHz-2483500kHz)
|
|
uint32_t accessAddress; // access address,32bit PHY address
|
|
uint32_t CRCInit; // crc initial value
|
|
pfnAppRFStatusCB_t rfStatusCB; // status call back
|
|
} app_rfConfig_t;
|
|
|
|
/*****************************************buf*************************************/
|
|
|
|
/**
|
|
* @brief Add the length of already used buffer in buffer struct.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] len length to be added
|
|
*
|
|
* @note No valid data added in buffer.
|
|
*
|
|
* @return The tail pointer for a buffer.
|
|
*/
|
|
void *net_buf_simple_add( struct net_buf_simple *buf, size_t len );
|
|
#define net_buf_add(buf, len) net_buf_simple_add(&(buf)->b, len)
|
|
|
|
/**
|
|
* @brief Add data to buffer in buffer struct.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] mem data to be added
|
|
* @param[in] len length to be added
|
|
*
|
|
* @return Null.
|
|
*/
|
|
void *net_buf_simple_add_mem( struct net_buf_simple *buf, const void *mem,
|
|
size_t len );
|
|
#define net_buf_add_mem(buf, mem, len) net_buf_simple_add_mem(&(buf)->b, mem, len)
|
|
|
|
/**
|
|
* @brief Add 8bit value to buffer in buffer struct.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] val value to be added
|
|
*
|
|
* @return Value to be added.
|
|
*/
|
|
uint8_t *net_buf_simple_add_u8( struct net_buf_simple *buf, uint8_t val );
|
|
#define net_buf_add_u8(buf, val) net_buf_simple_add_u8(&(buf)->b, val)
|
|
|
|
/**
|
|
* @brief Add little-endian 16bit value to buffer in buffer struct.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] val value to be added
|
|
*
|
|
* @return Null.
|
|
*/
|
|
void net_buf_simple_add_le16( struct net_buf_simple *buf, uint16_t val );
|
|
#define net_buf_add_le16(buf, val) net_buf_simple_add_le16(&(buf)->b, val)
|
|
|
|
/**
|
|
* @brief Add big-endian 16bit value to buffer in buffer struct.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] val value to be added
|
|
*
|
|
* @return Null.
|
|
*/
|
|
void net_buf_simple_add_be16( struct net_buf_simple *buf, uint16_t val );
|
|
#define net_buf_add_be16(buf, val) net_buf_simple_add_be16(&(buf)->b, val)
|
|
|
|
/**
|
|
* @brief Add little-endian 32bit value to buffer in buffer struct.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] val value to be added
|
|
*
|
|
* @return Null.
|
|
*/
|
|
void net_buf_simple_add_le32( struct net_buf_simple *buf, uint32_t val );
|
|
#define net_buf_add_le32(buf, val) net_buf_simple_add_le32(&(buf)->b, val)
|
|
|
|
/**
|
|
* @brief Add big-endian 32bit value to buffer in buffer struct.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] val value to be added
|
|
*
|
|
* @return Null.
|
|
*/
|
|
void net_buf_simple_add_be32( struct net_buf_simple *buf, uint32_t val );
|
|
#define net_buf_add_be32(buf, val) net_buf_simple_add_be32(&(buf)->b, val)
|
|
|
|
/**
|
|
* @brief Push the data to the start of the buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] len length to be pushed
|
|
*
|
|
* @return The start pointer for a buffer after pushed.
|
|
*/
|
|
void *net_buf_simple_push( struct net_buf_simple *buf, size_t len );
|
|
#define net_buf_push(buf, len) net_buf_simple_push(&(buf)->b, len)
|
|
|
|
/**
|
|
* @brief Push little-endian 16bit value to buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] val value to be pushed
|
|
*
|
|
* @return Null.
|
|
*/
|
|
void net_buf_simple_push_le16( struct net_buf_simple *buf, uint16_t val );
|
|
#define net_buf_push_le16(buf, val) net_buf_simple_push_le16(&(buf)->b, val)
|
|
|
|
/**
|
|
* @brief Push big-endian 16bit value to buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] val value to be pushed
|
|
*
|
|
* @return Null.
|
|
*/
|
|
void net_buf_simple_push_be16( struct net_buf_simple *buf, uint16_t val );
|
|
#define net_buf_push_be16(buf, val) net_buf_simple_push_be16(&(buf)->b, val)
|
|
|
|
/**
|
|
* @brief Push 8bit value to buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] val value to be pushed
|
|
*
|
|
* @return Null.
|
|
*/
|
|
void net_buf_simple_push_u8( struct net_buf_simple *buf, uint8_t val );
|
|
#define net_buf_push_u8(buf, val) net_buf_simple_push_u8(&(buf)->b, val)
|
|
|
|
/**
|
|
* @brief Pull the data from the start of the buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] len length to be pulled
|
|
*
|
|
* @return The start pointer for a buffer after pulled.
|
|
*/
|
|
void *net_buf_simple_pull( struct net_buf_simple *buf, size_t len );
|
|
#define net_buf_pull(buf, len) net_buf_simple_pull(&(buf)->b, len)
|
|
|
|
/**
|
|
* @brief Pull the data from the start of the buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] len length to be pulled
|
|
*
|
|
* @return The pointer for the data be pulled.
|
|
*/
|
|
void *net_buf_simple_pull_mem( struct net_buf_simple *buf, size_t len );
|
|
#define net_buf_pull_mem(buf, len) net_buf_simple_pull_mem(&(buf)->b, len)
|
|
|
|
/**
|
|
* @brief Pull 8bit value from buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
*
|
|
* @return The value be pulled.
|
|
*/
|
|
uint8_t net_buf_simple_pull_u8( struct net_buf_simple *buf );
|
|
#define net_buf_pull_u8(buf) net_buf_simple_pull_u8(&(buf)->b)
|
|
|
|
/**
|
|
* @brief Pull little-endian 16bit value from buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
*
|
|
* @return The value be pulled.
|
|
*/
|
|
uint16_t net_buf_simple_pull_le16( struct net_buf_simple *buf );
|
|
#define net_buf_pull_le16(buf) net_buf_simple_pull_le16(&(buf)->b)
|
|
|
|
/**
|
|
* @brief Pull big-endian 16bit value from buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
*
|
|
* @return The value be pulled.
|
|
*/
|
|
uint16_t net_buf_simple_pull_be16( struct net_buf_simple *buf );
|
|
#define net_buf_pull_be16(buf) net_buf_simple_pull_be16(&(buf)->b)
|
|
|
|
/**
|
|
* @brief Pull little-endian 32bit value from buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
*
|
|
* @return The value be pulled.
|
|
*/
|
|
uint32_t net_buf_simple_pull_le32( struct net_buf_simple *buf );
|
|
#define net_buf_pull_le32(buf) net_buf_simple_pull_le32(&(buf)->b)
|
|
|
|
/**
|
|
* @brief Pull big-endian 32bit value from buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
*
|
|
* @return The value be pulled.
|
|
*/
|
|
uint32_t net_buf_simple_pull_be32( struct net_buf_simple *buf );
|
|
#define net_buf_pull_be32(buf) net_buf_simple_pull_be32(&(buf)->b)
|
|
|
|
/**
|
|
* @brief Check how much free space there is at the end of the buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
*
|
|
* @return Size of free space.
|
|
*/
|
|
size_t net_buf_simple_tailroom( struct net_buf_simple *buf );
|
|
#define net_buf_tailroom(buf) net_buf_simple_tailroom(&(buf)->b)
|
|
|
|
/**
|
|
* @brief Check how much free space there is at the start of the buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
*
|
|
* @return Size of free space.
|
|
*/
|
|
size_t net_buf_simple_headroom( struct net_buf_simple *buf );
|
|
#define net_buf_headroom(buf) net_buf_simple_headroom(&(buf)->b)
|
|
|
|
/**
|
|
* @brief Reserve space at the start of the buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
* @param[in] reserve size to be reserved
|
|
*
|
|
* @return Null.
|
|
*/
|
|
void net_buf_simple_reserve( struct net_buf_simple *buf, size_t reserve );
|
|
#define net_buf_reserve(buf, reserve) net_buf_simple_reserve(&(buf)->b, reserve);
|
|
|
|
/**
|
|
* @brief Destroy the buffer.
|
|
*
|
|
* @param[in] buf buffer struct to be operated
|
|
*
|
|
* @return Null.
|
|
*/
|
|
void net_buf_unref( struct net_buf *buf );
|
|
|
|
/*****************************************sha256*************************************/
|
|
|
|
/**
|
|
* @brief Init the sha256.
|
|
*
|
|
* @param[in] s @ref tc_sha256_state_struct
|
|
*
|
|
* @return TC_CRYPTO_SUCCESS or TC_CRYPTO_FAIL.
|
|
*/
|
|
int tc_sha256_init( TCSha256State_t s );
|
|
|
|
/**
|
|
* @brief Update the sha256.
|
|
*
|
|
* @param[in] s @ref tc_sha256_state_struct
|
|
* @param[in] data data to update
|
|
* @param[in] datalen length of data
|
|
*
|
|
* @return TC_CRYPTO_SUCCESS or TC_CRYPTO_FAIL.
|
|
*/
|
|
int tc_sha256_update( TCSha256State_t s, const uint8_t *data, size_t datalen );
|
|
|
|
/**
|
|
* @brief Sha256 final.
|
|
*
|
|
* @param[in] digest sha256 output
|
|
* @param[in] s @ref tc_sha256_state_struct
|
|
*
|
|
* @return TC_CRYPTO_SUCCESS or TC_CRYPTO_FAIL.
|
|
*/
|
|
int tc_sha256_final( uint8_t *digest, TCSha256State_t s );
|
|
|
|
/*****************************************SNV*************************************/
|
|
|
|
/**
|
|
* @brief Load settings from flash.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int settings_load( void );
|
|
|
|
/**
|
|
* @brief Init NVS settings store.
|
|
*/
|
|
void bt_mesh_settings_init( void );
|
|
|
|
/*****************************************beacon*************************************/
|
|
|
|
/**
|
|
* @brief Init beacon.
|
|
*/
|
|
void bt_mesh_beacon_init( void );
|
|
|
|
/*****************************************cfg_srv*************************************/
|
|
|
|
/**
|
|
* @brief Init relay.
|
|
*/
|
|
void bt_mesh_relay_init( void );
|
|
|
|
/**
|
|
* @brief Get transmission count & interval steps of net @ref BLE_MESH_TRANSMIT.
|
|
*
|
|
* @return transmission count & interval steps.
|
|
*/
|
|
uint8_t bt_mesh_net_transmit_get( void );
|
|
|
|
/**
|
|
* @brief Is relay enable.
|
|
*
|
|
* @return @ref Function_State_Define.
|
|
*/
|
|
uint8_t bt_mesh_relay_get( void );
|
|
|
|
/**
|
|
* @brief Is friend enable.
|
|
*
|
|
* @return @ref Function_State_Define.
|
|
*/
|
|
uint8_t bt_mesh_friend_get( void );
|
|
|
|
/**
|
|
* @brief Get transmission count & interval steps of relay @ref BLE_MESH_TRANSMIT.
|
|
*
|
|
* @return transmission count & interval steps.
|
|
*/
|
|
uint8_t bt_mesh_relay_retransmit_get( void );
|
|
|
|
/**
|
|
* @brief Is beacon enable.
|
|
*
|
|
* @return @ref Function_State_Define.
|
|
*/
|
|
uint8_t bt_mesh_beacon_get( void );
|
|
|
|
/**
|
|
* @brief Is gatt proxy support.
|
|
*
|
|
* @return @ref Function_State_Define.
|
|
*/
|
|
uint8_t bt_mesh_gatt_proxy_get( void );
|
|
|
|
/**
|
|
* @brief Get default TTL.
|
|
*
|
|
* @return TTL of net.
|
|
*/
|
|
uint8_t bt_mesh_default_ttl_get( void );
|
|
|
|
/**
|
|
* @brief Get label uuid by address.
|
|
*
|
|
* @param[in] addr The address of label uuid
|
|
*
|
|
* @return 16 byte label uuid.
|
|
*/
|
|
uint8_t *bt_mesh_label_uuid_get( uint16_t addr );
|
|
|
|
/**
|
|
* @brief Set application key.
|
|
*
|
|
* @param[in] net_idx Pointer to 16 byte network key.
|
|
* @param[in] app_idx Pointer to 16 byte application key.
|
|
* @param[in] val 16 byte application key.
|
|
* @param[in] update Whether it is in the process of key update.
|
|
*
|
|
* @return @ref Statue_Error_Code.
|
|
*/
|
|
uint8_t bt_mesh_app_key_set(uint16_t net_idx, uint16_t app_idx, const uint8_t val[16],
|
|
uint8_t update);
|
|
|
|
/**
|
|
* @brief Deletes stored info by address.
|
|
*
|
|
* @param[in] addr Address of replay item.
|
|
* @param[in] num_elem Numble of node element.
|
|
*
|
|
* @return none.
|
|
*/
|
|
void bt_mesh_delete_node_info(uint16_t addr, uint8_t num_elem);
|
|
|
|
/*****************************************cfg_cli*************************************/
|
|
|
|
/**
|
|
* @brief Sends a composition data GET request.
|
|
*
|
|
* @note Request: @ref OP_DEV_COMP_DATA_GET
|
|
* @note Response: @ref OP_DEV_COMP_DATA_STATUS
|
|
*
|
|
* @param[in] page Device composition page number to be requested from the server
|
|
*
|
|
* @note Page 0x00 is the only mandatory page in Mesh 1.0.
|
|
* It is possible to read all supported Composition Data Pages by reading 0xFF first,
|
|
* and then reading one less than the returned page number until the page number is 0x00.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_comp_data_get( uint16_t net_idx, uint16_t addr, uint8_t page );
|
|
|
|
/**
|
|
* @brief Sends a secure network beacon state get request.
|
|
*
|
|
* @note Request: @ref OP_BEACON_GET
|
|
* @note Response: @ref OP_BEACON_STATUS
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_beacon_get( uint16_t net_idx, uint16_t addr );
|
|
|
|
/**
|
|
* @brief Sends a secure network beacon state set request.
|
|
*
|
|
* @note Request: @ref OP_BEACON_SET
|
|
* @note Response: @ref OP_BEACON_STATUS
|
|
*
|
|
* @param[in] state New secure network beacon state.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_beacon_set( uint16_t net_idx, uint16_t addr, uint8_t val );
|
|
|
|
/**
|
|
* @brief Sends a default TTL get request.
|
|
*
|
|
* @note Request: @ref OP_DEFAULT_TTL_GET
|
|
* @note Response: @ref OP_DEFAULT_TTL_STATUS
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_ttl_get( uint16_t net_idx, uint16_t addr );
|
|
|
|
/**
|
|
* @brief Sends a default TTL set request.
|
|
*
|
|
* @note Request: @ref OP_DEFAULT_TTL_SET
|
|
* @note Response: @ref OP_DEFAULT_TTL_STATUS
|
|
*
|
|
* @param[in] val Default TTL value. Must be less than @ref BLE_MESH_TTL_MAX.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_ttl_set( uint16_t net_idx, uint16_t addr, uint8_t val );
|
|
|
|
/**
|
|
* @brief Sends a friend state get request.
|
|
*
|
|
* @note Request: @ref OP_FRIEND_GET
|
|
* @note Response: @ref OP_FRIEND_STATUS
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_friend_get( uint16_t net_idx, uint16_t addr );
|
|
|
|
/**
|
|
* @brief Sends a friend state set request.
|
|
*
|
|
* @note Request: @ref OP_FRIEND_SET
|
|
* @note Response: @ref OP_FRIEND_STATUS
|
|
*
|
|
* @param[in] val New friend state.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_friend_set( uint16_t net_idx, uint16_t addr, uint8_t val );
|
|
|
|
/**
|
|
* @brief Sends a gatt proxy state get request.
|
|
*
|
|
* @note Request: @ref OP_GATT_PROXY_GET
|
|
* @note Response: @ref OP_GATT_PROXY_STATUS
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_gatt_proxy_get( uint16_t net_idx, uint16_t addr );
|
|
|
|
/**
|
|
* @brief Sends a gatt proxy state set request.
|
|
*
|
|
* @note Request: @ref OP_GATT_PROXY_SET
|
|
* @note Response: @ref OP_GATT_PROXY_STATUS
|
|
*
|
|
* @param[in] val New gatt proxy state.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_gatt_proxy_set( uint16_t net_idx, uint16_t addr, uint8_t val );
|
|
|
|
/**
|
|
* @brief Sends a relay state get request.
|
|
*
|
|
* @note Request: @ref OP_RELAY_GET
|
|
* @note Response: @ref OP_RELAY_STATUS
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_relay_get( uint16_t net_idx, uint16_t addr );
|
|
|
|
/**
|
|
* @brief Sends a relay state set request.
|
|
*
|
|
* @note Request: @ref OP_RELAY_SET
|
|
* @note Response: @ref OP_RELAY_STATUS
|
|
*
|
|
* @param[in] new_relay Relay state.
|
|
* @param[in] new_transmit Transmission count & interval steps @ref BLE_MESH_TRANSMIT.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_relay_set( uint16_t net_idx, uint16_t addr, uint8_t new_relay,
|
|
uint8_t new_transmit );
|
|
|
|
/**
|
|
* @brief Sends a network key(s) get request.
|
|
*
|
|
* @note Request: @ref OP_NET_KEY_GET
|
|
* @note Response: @ref OP_NET_KEY_LIST
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_net_key_get( uint16_t net_idx, uint16_t addr );
|
|
|
|
/**
|
|
* @brief Sends a network key add request.
|
|
*
|
|
* @note Request: @ref OP_NET_KEY_ADD
|
|
* @note Response: @ref OP_NET_KEY_STATUS
|
|
*
|
|
* @param[in] key_net_idx Network key index.
|
|
* @param[in] net_key Pointer to 16 byte network key.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_net_key_add( uint16_t net_idx, uint16_t addr, uint16_t key_net_idx,
|
|
const uint8_t net_key[16] );
|
|
|
|
/**
|
|
* @brief Sends a network key update request.
|
|
*
|
|
* @note Request: @ref OP_NET_KEY_UPDATE
|
|
* @note Response: @ref OP_NET_KEY_STATUS
|
|
*
|
|
* @param[in] key_net_idx Network key index.
|
|
* @param[in] net_key Pointer to 16 byte network key.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_net_key_update( uint16_t net_idx, uint16_t addr, uint16_t key_net_idx,
|
|
const uint8_t net_key[16] );
|
|
|
|
/**
|
|
* @brief Sends a network key delete request.
|
|
*
|
|
* @note Request: @ref OP_NET_KEY_DEL
|
|
* @note Response: @ref OP_NET_KEY_STATUS
|
|
*
|
|
* @param[in] key_net_idx Network key index.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_net_key_delete( uint16_t net_idx, uint16_t addr, uint16_t key_net_idx );
|
|
|
|
/**
|
|
* @brief Sends an application key add request.
|
|
*
|
|
* @note Request: @ref OP_APP_KEY_ADD
|
|
* @note Response: @ref OP_APP_KEY_STATUS
|
|
*
|
|
* @param[in] key_net_idx Network key index.
|
|
* @param[in] key_app_idx Application key index.
|
|
* @param[in] app_key Pointer to 16 byte application key.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_app_key_add( uint16_t net_idx, uint16_t addr, uint16_t key_net_idx,
|
|
uint16_t key_app_idx, const uint8_t app_key[16] );
|
|
|
|
/**
|
|
* @brief Sends an application key update request.
|
|
*
|
|
* @note Request: @ref OP_APP_KEY_UPDATE
|
|
* @note Response: @ref OP_APP_KEY_STATUS
|
|
*
|
|
* @param[in] key_net_idx Network key index.
|
|
* @param[in] key_app_idx Application key index.
|
|
* @param[in] app_key Pointer to 16 byte application key.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_app_key_update( uint16_t net_idx, uint16_t addr, uint16_t key_net_idx,
|
|
uint16_t key_app_idx, const uint8_t app_key[16] );
|
|
|
|
/**
|
|
* @brief Sends an application key delete request.
|
|
*
|
|
* @note Request: @ref OP_APP_KEY_DEL
|
|
* @note Response: @ref OP_APP_KEY_STATUS
|
|
*
|
|
* @param[in] key_net_idx Network key index.
|
|
* @param[in] key_app_idx Application key index.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_app_key_delete( uint16_t net_idx, uint16_t addr, uint16_t key_net_idx,
|
|
uint16_t key_app_idx );
|
|
|
|
/**
|
|
* @brief Sends an application bind request.
|
|
*
|
|
* @note Request: @ref OP_MOD_APP_BIND
|
|
* @note Response: @ref OP_MOD_APP_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] mod_app_idx Application key index to bind/unbind.
|
|
* @param[in] mod_id Model ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_app_bind( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_app_idx, uint16_t mod_id );
|
|
|
|
/**
|
|
* @brief Sends an vendor application bind request.
|
|
*
|
|
* @note Request: @ref OP_MOD_APP_BIND
|
|
* @note Response: @ref OP_MOD_APP_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] mod_app_idx Application key index to bind/unbind.
|
|
* @param[in] mod_id Model ID of the model.
|
|
* @param[in] cid Company ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_app_bind_vnd( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_app_idx, uint16_t mod_id, uint16_t cid );
|
|
|
|
/**
|
|
* @brief Sends an application unbind request.
|
|
*
|
|
* @note Request: @ref OP_MOD_APP_UNBIND
|
|
* @note Response: @ref OP_MOD_APP_STATUS
|
|
*
|
|
* @param[in] element_address Element address of the model.
|
|
* @param[in] appkey_index Application key index to bind/unbind.
|
|
* @param[in] model_id Model ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_app_unbind( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_app_idx, uint16_t mod_id );
|
|
|
|
/**
|
|
* @brief Sends an vendor application unbind request.
|
|
*
|
|
* @note Request: @ref OP_MOD_APP_UNBIND
|
|
* @note Response: @ref OP_MOD_APP_STATUS
|
|
*
|
|
* @param[in] element_address Element address of the model.
|
|
* @param[in] appkey_index Application key index to bind/unbind.
|
|
* @param[in] model_id Model ID of the model.
|
|
* @param[in] cid Company ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_app_unbind_vnd( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_app_idx, uint16_t mod_id, uint16_t cid );
|
|
|
|
/**
|
|
* @brief Sends a publication get request.
|
|
*
|
|
* @note Request: @ref OP_MOD_PUB_GET
|
|
* @note Response: @ref OP_MOD_PUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] mod_id Model identifier.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_pub_get( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_id );
|
|
|
|
/**
|
|
* @brief Sends an vendor publication get request.
|
|
*
|
|
* @note Request: @ref OP_MOD_PUB_GET
|
|
* @note Response: @ref OP_MOD_PUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] mod_id Model identifier.
|
|
* @param[in] cid Company ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_pub_get_vnd( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_id, uint16_t cid );
|
|
|
|
/**
|
|
* @brief Sends a model publication set request.
|
|
*
|
|
* @note Request: @ref OP_MOD_PUB_SET
|
|
* @note Response: @ref OP_MOD_PUB_STATUS
|
|
*
|
|
* @param[in] pub Publication state parameter struct pointer.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_pub_set( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_id, const struct bt_mesh_cfg_mod_pub *pub );
|
|
|
|
/**
|
|
* @brief Sends an vendor model publication set request.
|
|
*
|
|
* @note Request: @ref OP_MOD_PUB_SET
|
|
* @note Response: @ref OP_MOD_PUB_STATUS
|
|
*
|
|
* @param[in] pub Publication state parameter struct pointer.
|
|
* @param[in] cid Company ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_pub_set_vnd( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_id, uint16_t cid, const struct bt_mesh_cfg_mod_pub *pub );
|
|
|
|
/**
|
|
* @brief Sends a model virtual address publication set request.
|
|
*
|
|
* @note Request: @ref OP_MOD_PUB_VA_SET
|
|
* @note Response: @ref OP_MOD_PUB_STATUS
|
|
*
|
|
* @param[in] pub Virtual address publication state parameter struct pointer.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_pub_va_set( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_id, const struct bt_mesh_cfg_mod_pub_va *pub );
|
|
|
|
/**
|
|
* @brief Sends an vendor model virtual address publication set request.
|
|
*
|
|
* @note Request: @ref OP_MOD_PUB_VA_SET
|
|
* @note Response: @ref OP_MOD_PUB_STATUS
|
|
*
|
|
* @param[in] pub Virtual address publication state parameter struct pointer.
|
|
* @param[in] cid Company ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_pub_va_set_vnd( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_id, uint16_t cid, const struct bt_mesh_cfg_mod_pub_va *pub );
|
|
|
|
/**
|
|
* @brief Sends a subscription add request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_ADD
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] sub_addr Address to add to the subscription list.
|
|
* @param[in] mod_id Model ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_add( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t sub_addr, uint16_t mod_id );
|
|
|
|
/**
|
|
* @brief Sends an vendor subscription add request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_ADD
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] sub_addr Address to add to the subscription list.
|
|
* @param[in] mod_id Model ID of the model.
|
|
* @param[in] cid Company ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_add_vnd( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t sub_addr, uint16_t mod_id, uint16_t cid );
|
|
|
|
/**
|
|
* @brief Sends a subscription delete request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_DEL
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] sub_addr Address to add to the subscription list.
|
|
* @param[in] mod_id Model ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_del( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t sub_addr, uint16_t mod_id );
|
|
|
|
/**
|
|
* @brief Sends an vendor subscription delete request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_DEL
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] sub_addr Address to add to the subscription list.
|
|
* @param[in] mod_id Model ID of the model.
|
|
* @param[in] cid Company ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_del_vnd( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t sub_addr, uint16_t mod_id, uint16_t cid );
|
|
|
|
/**
|
|
* @brief Sends a subscription delete all request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_DEL_ALL
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] mod_id Model ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_del_all( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_id );
|
|
|
|
/**
|
|
* @brief Sends an vendor subscription delete all request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_DEL_ALL
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] mod_id Model ID of the model.
|
|
* @param[in] cid Company ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_delall_vnd( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_id, uint16_t cid );
|
|
|
|
/**
|
|
* @brief Sends a subscription overwrite request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_OVERWRITE
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @warning This will clear the subscription list of the model.
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] sub_addr Address to add to the subscription list.
|
|
* @param[in] mod_id Model ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_overwrite( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t sub_addr, uint16_t mod_id );
|
|
|
|
/**
|
|
* @brief Sends an vendor subscription overwrite request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_OVERWRITE
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @warning This will clear the subscription list of the model.
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] sub_addr Address to add to the subscription list.
|
|
* @param[in] mod_id Model ID of the model.
|
|
* @param[in] cid Company ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_overwrite_vnd( uint16_t net_idx, uint16_t addr,
|
|
uint16_t elem_addr, uint16_t sub_addr, uint16_t mod_id, uint16_t cid );
|
|
|
|
/**
|
|
* @brief Sends an virtual address subscription add request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_VA_ADD
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] label Value of the Label UUID.
|
|
* @param[in] mod_id Model ID of the model.
|
|
* @param[in] virt_addr Must be set to NULL.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_va_add( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
const uint8_t label[16], uint16_t mod_id, uint16_t virt_addr );
|
|
|
|
/**
|
|
* @brief Sends an vendor virtual address subscription add request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_VA_ADD
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] label Value of the Label UUID.
|
|
* @param[in] mod_id Model ID of the model.
|
|
* @param[in] cid Company ID of the model.
|
|
* @param[in] virt_addr Must be set to NULL.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_va_add_vnd( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
const uint8_t label[16], uint16_t mod_id, uint16_t cid, uint16_t virt_addr );
|
|
|
|
/**
|
|
* @brief Sends an virtual address subscription delete request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_VA_DEL
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] label Value of the Label UUID.
|
|
* @param[in] mod_id Model ID of the model.
|
|
* @param[in] virt_addr Must be set to NULL.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_va_del( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
const uint8_t label[16], uint16_t mod_id, uint16_t virt_addr );
|
|
|
|
/**
|
|
* @brief Sends an vendor virtual address subscription delete request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_VA_DEL
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] label Value of the Label UUID.
|
|
* @param[in] mod_id Model ID of the model.
|
|
* @param[in] cid Company ID of the model.
|
|
* @param[in] virt_addr Must be set to NULL.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_va_del_vnd( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
const uint8_t label[16], uint16_t mod_id, uint16_t cid, uint16_t virt_addr );
|
|
|
|
/**
|
|
* @brief Sends an virtual address subscription overwrite request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_VA_OVERWRITE
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] label Value of the Label UUID.
|
|
* @param[in] mod_id Model ID of the model.
|
|
* @param[in] virt_addr Must be set to NULL.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_va_overwrite( uint16_t net_idx, uint16_t addr,
|
|
uint16_t elem_addr, const uint8_t label[16], uint16_t mod_id, uint16_t virt_addr );
|
|
|
|
/**
|
|
* @brief Sends an vendor virtual address subscription overwrite request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_VA_OVERWRITE
|
|
* @note Response: @ref OP_MOD_SUB_STATUS
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] label Value of the Label UUID.
|
|
* @param[in] mod_id Model ID of the model.
|
|
* @param[in] cid Company ID of the model.
|
|
* @param[in] virt_addr Must be set to NULL.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_va_overwrite_vnd( uint16_t net_idx, uint16_t addr,
|
|
uint16_t elem_addr, const uint8_t label[16], uint16_t mod_id, uint16_t cid,
|
|
uint16_t virt_addr );
|
|
|
|
/**
|
|
* @brief Sets the heartbeat publication state value of a node.
|
|
*
|
|
* @note Request: @ref OP_HEARTBEAT_PUB_SET
|
|
* @note Response: @ref OP_HEARTBEAT_PUB_STATUS
|
|
*
|
|
* @param[in] param Pointer to the @ref bt_mesh_cfg_hb_pub structure
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_hb_pub_set( uint16_t net_idx, uint16_t addr,
|
|
const struct bt_mesh_cfg_hb_pub *param );
|
|
|
|
/**
|
|
* @brief Gets the heartbeat publication state value of a node.
|
|
*
|
|
* @note Request: @ref OP_HEARTBEAT_PUB_GET
|
|
* @note Response: @ref OP_HEARTBEAT_PUB_STATUS
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_hb_pub_get( uint16_t net_idx, uint16_t addr );
|
|
|
|
/**
|
|
* @brief Gets the lpn poll timeout of a node.
|
|
*
|
|
* @note Request: @ref OP_LPN_TIMEOUT_GET
|
|
* @note Response: @ref OP_LPN_TIMEOUT_STATUS
|
|
*
|
|
* @param[in] lpn_addr The address of lpn.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_lpn_polltimeout_get( uint16_t net_idx, uint16_t addr, uint16_t lpn_addr );
|
|
|
|
/**
|
|
* @brief Sends a network transmit get request.
|
|
*
|
|
* @note Request: @ref OP_NET_TRANSMIT_GET
|
|
* @note Response: @ref OP_NET_TRANSMIT_STATUS
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_net_transmit_get( uint16_t net_idx, uint16_t addr );
|
|
|
|
/**
|
|
* @brief Sends a network transmit set request.
|
|
*
|
|
* @note Request: @ref OP_NET_TRANSMIT_SET
|
|
* @note Response: @ref OP_NET_TRANSMIT_STATUS
|
|
*
|
|
* @param[in] val Transmission count & interval steps @ref BLE_MESH_TRANSMIT.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_net_transmit_set( uint16_t net_idx, uint16_t addr, uint8_t val );
|
|
|
|
/**
|
|
* @brief Sends a node reset request.
|
|
*
|
|
* @note Request: @ref OP_NODE_RESET
|
|
* @note Response: @ref OP_NODE_RESET_STATUS
|
|
*
|
|
* @warning This will "un-provision" the node and remove it from the network.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_node_reset( uint16_t net_idx, uint16_t addr );
|
|
|
|
/**
|
|
* @brief Sends a node identity get request.
|
|
*
|
|
* @note Request: @ref OP_NODE_IDENTITY_GET
|
|
* @note Response: @ref OP_NODE_IDENTITY_STATUS
|
|
*
|
|
* @param[in] id_net_idx Node identity index.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_node_id_get( uint16_t net_idx, uint16_t addr, uint16_t id_net_idx );
|
|
|
|
/**
|
|
* @brief Sends a node identity set request.
|
|
*
|
|
* @note Request: @ref OP_NODE_IDENTITY_SET
|
|
* @note Response: @ref OP_NODE_IDENTITY_STATUS
|
|
*
|
|
* @param[in] id_net_idx Node identity index.
|
|
* @param[in] val Value of node identity.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_node_id_set( uint16_t net_idx, uint16_t addr, uint16_t id_net_idx,
|
|
uint8_t val );
|
|
|
|
/**
|
|
* @brief Gets the current key refresh phase of a node.
|
|
*
|
|
* @note Request: @ref OP_KRP_GET
|
|
* @note Response: @ref OP_KRP_STATUS
|
|
*
|
|
* @param[in] krp_net_idx Network key index.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_krp_get( uint16_t net_idx, uint16_t addr, uint16_t krp_net_idx );
|
|
|
|
/**
|
|
* @brief Sets the current key refresh phase of a node.
|
|
*
|
|
* @note Request: @ref OP_KRP_SET
|
|
* @note Response: @ref OP_KRP_STATUS
|
|
*
|
|
* @param[in] krp_net_idx Network key index.
|
|
* @param[in] val Key refresh phase to set for the node.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_krp_set( uint16_t net_idx, uint16_t addr, uint16_t krp_net_idx,
|
|
uint8_t val );
|
|
|
|
/**
|
|
* @brief Sends a SIG models application get request.
|
|
*
|
|
* @note Request: @ref OP_SIG_MOD_APP_GET
|
|
* @note Response: @ref OP_SIG_MOD_APP_LIST
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] mod_id Model ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_app_get_sig( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_id );
|
|
|
|
/**
|
|
* @brief Sends an vendor models application get request.
|
|
*
|
|
* @note Request: @ref OP_VND_MOD_APP_GET
|
|
* @note Response: @ref OP_VND_MOD_APP_LIST
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] mod_id Model ID of the model.
|
|
* @param[in] cid Company ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_app_get_vnd( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_id, uint16_t cid );
|
|
|
|
/**
|
|
* @brief Sends an application key(s) get request.
|
|
*
|
|
* @note Request: @ref OP_APP_KEY_GET
|
|
* @note Response: @ref OP_APP_KEY_LIST
|
|
*
|
|
* @param[in] key_net_idx Network key index.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_app_key_get( uint16_t net_idx, uint16_t addr, uint16_t key_net_idx );
|
|
|
|
/**
|
|
* @brief Sends a SIG models subscription get request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_GET
|
|
* @note Response: @ref OP_MOD_SUB_LIST
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] mod_id Model ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_get( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_id );
|
|
|
|
/**
|
|
* @brief Sends an vendor models subscription get request.
|
|
*
|
|
* @note Request: @ref OP_MOD_SUB_GET_VND
|
|
* @note Response: @ref OP_MOD_SUB_LIST_VND
|
|
*
|
|
* @param[in] elem_addr Element address of the model.
|
|
* @param[in] mod_id Model ID of the model.
|
|
* @param[in] cid Company ID of the model.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_mod_sub_get_vnd( uint16_t net_idx, uint16_t addr, uint16_t elem_addr,
|
|
uint16_t mod_id, uint16_t cid );
|
|
|
|
/**
|
|
* @brief Get the client request timeout for waiting response.
|
|
*
|
|
* @return The client request timeout.
|
|
*/
|
|
int32_t bt_mesh_cfg_cli_timeout_get( void );
|
|
|
|
/**
|
|
* @brief Set the client request timeout for waiting response.
|
|
*
|
|
* @param[in] timeout The client request timeout.
|
|
*/
|
|
void bt_mesh_cfg_cli_timeout_set( int32_t timeout );
|
|
|
|
/******************************************************************************/
|
|
|
|
/**
|
|
* @brief Get the state of mesh provision.
|
|
*
|
|
* @return is mesh provisioned.
|
|
*/
|
|
uint8_t bt_mesh_is_provisioned( void );
|
|
|
|
/**
|
|
* @brief Config the mesh.
|
|
*
|
|
* @param[in] p_cfg Mesh parameter config.
|
|
* @param[in] p_dev Device flash config.
|
|
* @param[in] p_mac MAC config.
|
|
* @param[in] info Memory config.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_cfg_set( ble_mesh_cfg_t const *p_cfg, void const *p_dev,
|
|
uint8_t const * p_mac, mem_info_t *info );
|
|
|
|
/**
|
|
* @brief Provision the self.
|
|
*
|
|
* @param[in] net_key The key of net to be provisioned.
|
|
* @param[in] net_idx The index of net key.
|
|
* @param[in] flags Net key refresh flag.
|
|
* @param[in] iv_index IV Index.
|
|
* @param[in] addr The address of primary element.
|
|
* @param[in] dev_key Device key.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_provision( const uint8_t net_key[16], uint16_t net_idx, uint8_t flags,
|
|
uint32_t iv_index, uint16_t addr, const uint8_t dev_key[16] );
|
|
|
|
/**
|
|
* @brief Provisions a device on ADV bearer.
|
|
*
|
|
* @param[in] uuid Device UUID of the device that is to be provisioned.
|
|
* @param[in] net_idx The index of net key.
|
|
* @param[in] addr The address of primary element of the device.
|
|
* @param[in] attention_duration Time in seconds during which the device will identify
|
|
* itself using any means it can.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_provision_adv( const uint8_t uuid[16], uint16_t net_idx, uint16_t addr,
|
|
uint8_t attention_duration );
|
|
|
|
/**
|
|
* @brief Cancle provisions, error code in CB is timeout.
|
|
*/
|
|
void bt_mesh_provision_cancle( void );
|
|
|
|
/*****************************************adapt*************************************/
|
|
|
|
/**
|
|
* @brief Initialize GATT bearer.
|
|
*/
|
|
void bt_mesh_adapt_init( void );
|
|
|
|
/**
|
|
* @brief Initialize ADV bearer.
|
|
*/
|
|
void bt_mesh_adv_init( void );
|
|
|
|
/**
|
|
* @brief Initialize connectable advertising of GATT bearer.
|
|
*/
|
|
void bt_mesh_conn_adv_init( void );
|
|
|
|
/**
|
|
* @brief Enable scanning.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_scan_enable( void );
|
|
|
|
/**
|
|
* @brief Disable scanning.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_scan_disable( void );
|
|
|
|
/**
|
|
* @brief Enable beacon or unprovisioned advertising.
|
|
*/
|
|
void bt_mesh_beacon_enable( void );
|
|
|
|
/**
|
|
* @brief Disable beacon or unprovisioned advertising.
|
|
*/
|
|
void bt_mesh_beacon_disable( void );
|
|
|
|
/*****************************************proxy*************************************/
|
|
|
|
/**
|
|
* @brief Initialize proxy beacon, used by @fun bt_mesh_proxy_beacon_init_register.
|
|
*
|
|
* @param[in] client The client of proxy connect.
|
|
*/
|
|
void bt_mesh_proxy_beacon_init( void *client );
|
|
|
|
/**
|
|
* @brief Register proxy beacon initialize function.
|
|
*
|
|
* @param[in] client The client of proxy connect.
|
|
*/
|
|
void bt_mesh_proxy_beacon_init_register( void *cb );
|
|
|
|
/**
|
|
* @brief Send notify to the given Mesh GATT connection, used by @fun gatts_notify_register.
|
|
*
|
|
* @param[in] conn Mesh GATT connection.
|
|
* @param[in] data Data to be send.
|
|
* @param[in] len Length of data.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_gatts_notify( struct bt_mesh_conn *conn, const void *data,
|
|
uint16_t len );
|
|
|
|
/**
|
|
* @brief Register notify callback of GATT bearer.
|
|
*
|
|
* @param[in] cb Notify callback of GATT.
|
|
*/
|
|
void gatts_notify_register( gatts_notify_cb_t cb );
|
|
|
|
/**
|
|
* @brief Enable proxy GATT service function, used by @fun proxy_gatt_enable_register.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_proxy_gatt_enable( void );
|
|
|
|
/**
|
|
* @brief Register proxy GATT service enable function.
|
|
*
|
|
* @param[in] cb Function of enable proxy GATT service.
|
|
*/
|
|
void proxy_gatt_enable_register( proxy_gatt_enable_cb_t cb );
|
|
|
|
/**
|
|
* @brief Enable proxy provision function, used by @fun proxy_prov_enable_register.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_proxy_prov_enable( void );
|
|
|
|
/**
|
|
* @brief Register proxy provision service enable function.
|
|
*
|
|
* @param[in] cb Function of enable proxy provision service.
|
|
*/
|
|
void proxy_prov_enable_register( proxy_prov_enable_cb_t cb );
|
|
|
|
/**
|
|
* @brief Disable proxy provision function.
|
|
*
|
|
* @param[in] disconnect Weather disconnect proxy connect or not.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_proxy_prov_disable( uint8_t disconnect );
|
|
|
|
/**
|
|
* @brief Initialize proxy function.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_proxy_init( void );
|
|
|
|
/**
|
|
* @brief Set proxy adv response data.
|
|
*
|
|
* @param[in] data SCAN RSP data.
|
|
* @param[in] len Length of SCAN RSP data (max size = 31 bytes).
|
|
*/
|
|
void bt_mesh_proxy_set_adv_rsp(u8_t *data, u8_t len);
|
|
|
|
/**
|
|
* @brief Set proxy adv interval.
|
|
*
|
|
* @param[in] interval New adv interval in ms.
|
|
*/
|
|
void bt_mesh_proxy_set_adv_interval(u16_t interval);
|
|
|
|
/*****************************************prov*************************************/
|
|
|
|
/**
|
|
* @brief Register receive data buffer of ADV link.
|
|
*
|
|
* @param[in] buf Buffer to be registered.
|
|
*/
|
|
void adv_link_rx_buf_register( struct net_buf_simple *buf );
|
|
|
|
/**
|
|
* @brief Enable provisioner function.
|
|
*
|
|
* @param[in] bearers Only support BLE_MESH_PROV_ADV.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_provisioner_enable( bt_mesh_prov_bearer_t bearers );
|
|
|
|
/**
|
|
* @brief Disable provisioner function.
|
|
*
|
|
* @param[in] bearers Only support BLE_MESH_PROV_ADV.
|
|
* @param[in] force Weather reset link forcibly or not.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_provisioner_disable( bt_mesh_prov_bearer_t bearers, uint8_t force );
|
|
|
|
/**
|
|
* @brief Initialize provision retransmit function.
|
|
*/
|
|
void bt_mesh_prov_retransmit_init( void );
|
|
|
|
/**
|
|
* @brief Initialize provision function.
|
|
*
|
|
* @param[in] prov_info Provisioning properties & capabilities.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_prov_init( const struct bt_mesh_prov *prov_info );
|
|
|
|
/**
|
|
* @brief Delete node by address.
|
|
*
|
|
* @param[in] addr The address of primary element of the node.
|
|
*/
|
|
void bt_mesh_node_del_by_addr( uint16_t addr );
|
|
|
|
/**
|
|
* @brief Delete all node.
|
|
*/
|
|
void bt_mesh_node_clear( void );
|
|
|
|
/*****************************************tran*************************************/
|
|
|
|
/**
|
|
* @brief Initialize translate layer.
|
|
*/
|
|
void bt_mesh_trans_init( void );
|
|
|
|
/*****************************************friend*************************************/
|
|
|
|
/**
|
|
* @brief Initialize friend function, used by @fun friend_init_register.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_friend_init( void );
|
|
|
|
/**
|
|
* @brief Register friend initialize function.
|
|
*
|
|
* @param[in] cb The friend initialize function.
|
|
* @param[in] state_cb The state callback of friend.
|
|
*/
|
|
void friend_init_register( friend_init_cb_t cb, friend_state_cb_t state_cb );
|
|
|
|
/*****************************************lpn*************************************/
|
|
|
|
/**
|
|
* @brief Initialize LPN function, used by @fun lpn_init_register.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_lpn_init( void );
|
|
|
|
/**
|
|
* @brief Register LPN initialize function.
|
|
*
|
|
* @param[in] cb The LPN initialize function.
|
|
* @param[in] state_cb The state callback of LPN.
|
|
*/
|
|
void lpn_init_register( lpn_init_cb_t cb, lpn_state_cb_t state_cb );
|
|
|
|
/**
|
|
* @brief Enable or disable LPN function.
|
|
*
|
|
* @param[in] enable Weather enable LPN function or not.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_lpn_set( uint8_t enable );
|
|
|
|
/**
|
|
* @brief Add group address to LPN.
|
|
*
|
|
* @param[in] group The address of group to be added.
|
|
*/
|
|
void bt_mesh_lpn_group_add( uint16_t group );
|
|
|
|
/**
|
|
* @brief Delete group address to LPN.
|
|
*
|
|
* @param[in] groups Pointer to the address of group to be Deleted.
|
|
* @param[in] group_count Number of the address of group to be Deleted.
|
|
*/
|
|
void bt_mesh_lpn_group_del( uint16_t *groups, size_t group_count );
|
|
|
|
/*****************************************net*************************************/
|
|
|
|
/**
|
|
* @brief Initialize mesh net.
|
|
*/
|
|
void bt_mesh_net_init( void );
|
|
|
|
/**
|
|
* @brief Get app keys by net index.
|
|
*
|
|
* @param[in] net_idx Net index.
|
|
*
|
|
* @return Struct of app key @ref bt_mesh_app_key.
|
|
*/
|
|
struct bt_mesh_app_key *bt_mesh_app_keys_get( uint16_t net_idx );
|
|
|
|
/**
|
|
* @brief Find app keys by app index.
|
|
*
|
|
* @param[in] app_idx App index.
|
|
*
|
|
* @return Struct of app key @ref bt_mesh_app_key.
|
|
*/
|
|
struct bt_mesh_app_key *bt_mesh_app_key_find( uint16_t app_idx );
|
|
|
|
/*****************************************NVS*************************************/
|
|
|
|
/**
|
|
* @brief Store app keys bind of given model.
|
|
*
|
|
* @param[in] mod The model to be operated.
|
|
*/
|
|
void bt_mesh_store_mod_bind( struct bt_mesh_model *mod );
|
|
|
|
/**
|
|
* @brief Store subscription of given model.
|
|
*
|
|
* @param[in] mod The model to be operated.
|
|
*/
|
|
void bt_mesh_store_mod_sub( struct bt_mesh_model *mod );
|
|
|
|
/*****************************************access*************************************/
|
|
|
|
/**
|
|
* @brief Initialize mesh model.
|
|
*/
|
|
void bt_mesh_mod_init( void );
|
|
|
|
/**
|
|
* @brief Register node composition.
|
|
*
|
|
* @param[in] comp Node composition.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_comp_register( const struct bt_mesh_comp *comp );
|
|
|
|
/**
|
|
* @brief Get count of element.
|
|
*
|
|
* @return Count of element.
|
|
*/
|
|
uint8_t bt_mesh_elem_count( void );
|
|
|
|
/**
|
|
* @brief Get address of primary element.
|
|
*
|
|
* @return The address of primary element.
|
|
*/
|
|
uint16_t bt_mesh_primary_addr( void );
|
|
|
|
/**
|
|
* @brief Initialize the message to be send.
|
|
*
|
|
* @param[in] msg The message to initialize.
|
|
* @param[in] opcode The opcode of message.
|
|
*/
|
|
void bt_mesh_model_msg_init( struct net_buf_simple *msg, uint32_t opcode );
|
|
|
|
/**
|
|
* @brief Send a message of model.
|
|
*
|
|
* @param[in] model The model need to send message.
|
|
* @param[in] ctx Message sending context.
|
|
* @param[in] msg The message to send.
|
|
* @param[in] cb Send callback.
|
|
* @param[in] cb_data The data used by send callback.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_model_send( struct bt_mesh_model *model,
|
|
struct bt_mesh_msg_ctx *ctx, struct net_buf_simple *msg,
|
|
const struct bt_mesh_send_cb *cb, void *cb_data );
|
|
|
|
/**
|
|
* @brief Register receive unknow opcode callback of a element.
|
|
*
|
|
* @param[in] elem_unkonw_op_cb The receive unknow opcode callback.
|
|
*/
|
|
void bt_mesh_model_reg_elem_unkonw_op_cb(
|
|
elem_unkonw_op_cb_t elem_unkonw_op_cb );
|
|
|
|
/*****************************************t_timer*************************************/
|
|
|
|
/**
|
|
* @brief Initialize timer of mesh.
|
|
*/
|
|
void MeshTimer_Init( void );
|
|
|
|
/**
|
|
* @brief Initialize deamon of mesh.
|
|
*/
|
|
void MeshDeamon_Init( void );
|
|
|
|
/*****************************************rf*************************************/
|
|
|
|
/**
|
|
* @brief Initialize RF.
|
|
*/
|
|
void hal_rf_init( void );
|
|
|
|
/**
|
|
* @brief Config the RF.
|
|
*
|
|
* @param[in] app_rfConfig Paramter of RF.
|
|
*/
|
|
void app_rf_config( app_rfConfig_t *app_rfConfig );
|
|
|
|
/**
|
|
* @brief Tx data.
|
|
*
|
|
* @param[in] txBuf Tx data.
|
|
* @param[in] txLen Tx length.
|
|
* @param[in] pktTxType Tx package type
|
|
* broadcast type(0xFF):received by all matching types;
|
|
* others:only received by matching type.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int app_rf_tx( uint8_t *txBuf, uint8_t txLen, uint8_t pktTxType );
|
|
|
|
/**
|
|
* @brief Rx data.
|
|
*
|
|
* @param[in] pktTxType Rx package type
|
|
* broadcast type(0xFF):receive all matching types,
|
|
* others:receive match type or broadcast type.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int app_rf_rx( uint8_t pktRxType );
|
|
|
|
/**
|
|
* @brief Stop tx/rx mode.
|
|
*/
|
|
void app_rf_stop( void );
|
|
|
|
/*****************************************api*************************************/
|
|
|
|
/**
|
|
* @brief Reset mesh.
|
|
*/
|
|
void bt_mesh_reset( void );
|
|
|
|
/**
|
|
* @brief Initialize mesh ECC.
|
|
*/
|
|
void ble_sm_alg_ecc_init( void );
|
|
|
|
/**
|
|
* @brief Get IV index.
|
|
*
|
|
* @return IV index.
|
|
*/
|
|
uint32_t bt_mesh_iv_index_get( void );
|
|
|
|
/**
|
|
* @brief Get key refresh and IV update flag of net.
|
|
*
|
|
* @param[in] net_idx Net index
|
|
*/
|
|
uint8_t bt_mesh_net_flags_get( uint16_t net_idx );
|
|
|
|
/**
|
|
* @brief Get SEQ number.
|
|
*
|
|
* @return SEQ number.
|
|
*/
|
|
uint32_t bt_mesh_seq_get( void );
|
|
|
|
/**
|
|
* @brief Set SEQ number.
|
|
*
|
|
* @param[in] new_seq New SEQ number, shall be less than 0xb0e500 and greater than current SEQ.
|
|
*
|
|
* @return @ref Global_Error_Code.
|
|
*/
|
|
int bt_mesh_seq_set( uint32_t new_seq );
|
|
|
|
/**
|
|
* @brief Get RPL list.
|
|
*
|
|
* @param[in] rpl Buffer to copy RPL list, the size of the buffer should not be less than CONFIG_MESH_RPL_COUNT_DEF.
|
|
*
|
|
* @return RPL list struct.
|
|
*/
|
|
struct bt_mesh_rpl* bt_mesh_rpl_list_get( struct bt_mesh_rpl *rpl );
|
|
|
|
/******************************************************************************/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|