Bluetooth: Mesh: Add model callback structure
Adds a structure of callbacks for each model instance. This allows for more flexible model implementations, that can interact with the Mesh stack without going through the application. For now, only an init callback is added, replacing the init mechanism in the foundation models. The init callback does not provide the primary flag that used to be in the foundation model callbacks, but replaces this with an inline function in access.h. Signed-off-by: Trond Einar Snekvik <Trond.Einar.Snekvik@nordicsemi.no>
This commit is contained in:
parent
9608a8e64e
commit
c2c05c916a
11 changed files with 147 additions and 73 deletions
|
@ -3233,10 +3233,15 @@ static bool conf_is_valid(struct bt_mesh_cfg_srv *cfg)
|
|||
return true;
|
||||
}
|
||||
|
||||
int bt_mesh_cfg_srv_init(struct bt_mesh_model *model, bool primary)
|
||||
static int cfg_srv_init(struct bt_mesh_model *model)
|
||||
{
|
||||
struct bt_mesh_cfg_srv *cfg = model->user_data;
|
||||
|
||||
if (!bt_mesh_model_in_primary(model)) {
|
||||
BT_ERR("Configuration Server only allowed in primary element");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!cfg) {
|
||||
BT_ERR("No Configuration Server context provided");
|
||||
return -EINVAL;
|
||||
|
@ -3273,6 +3278,10 @@ int bt_mesh_cfg_srv_init(struct bt_mesh_model *model, bool primary)
|
|||
return 0;
|
||||
}
|
||||
|
||||
const struct bt_mesh_model_cb bt_mesh_cfg_srv_cb = {
|
||||
.init = cfg_srv_init,
|
||||
};
|
||||
|
||||
static void mod_reset(struct bt_mesh_model *mod, struct bt_mesh_elem *elem,
|
||||
bool vnd, bool primary, void *user_data)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue