基于nrf52840 的ble mesh接入层的接口函数

1接入层的职责

接入层的主要功能是处理从网络层接收到的 Mesh 消息,将其映射到具体的模型操作,同时负责对模型层生成的消息进行封装并传输给网络层。

2.函数解释:

1.模型添加与订阅

      uint32_t access_model_add(const access_model_add_params_t * p_model_params,   access_model_handle_t * p_model_handle)

函数功能 :将模型参数加入到模型池指定的模型中

函数参数:p_model_params  要添加的模型参数      p_model_handle用来存储新模型的句柄。

返回值:uint32_t  0表示添加模型参数成功

uint32_t access_model_subscription_list_alloc(access_model_handle_t handle)

函数功能:用于为给定的模型句柄分配订阅列表

函数参数:handle  指定句柄

返回值:0表示分配订阅列表成功

static inline access_model_handle_t find_available_model(void)

函数功能:寻找有效的模型(通过判断模型内部状态)

static void increment_model_count(uint16_t element_index, uint16_t model_company_id)

函数功能:根据模型公司id统计模型个数(sig和vendor)

static bool element_has_model_id(uint16_t element_index, access_model_id_t model_id, access_model_handle_t * p_model_handle)

函数功能:轮询判断指定元素下是否有指定模型

函数参数:element_index 元素索引  model_id 模型id  p_model_handle 将指定的模型句柄存储起来

static access_opcode_t opcode_get(const uint8_t * p_buffer)

函数功能:得到操作码

static void opcode_set(access_opcode_t opcode, uint8_t * p_buffer)

函数功能:设置操作码

2.发送

uint32_t access_model_publish(access_model_handle_t handle, const access_message_tx_t * p_message)

函数功能:模型层发送的接口函数,通过packet_alloc_and_tx函数继续发送,

重发机制。p_message待发送的信息结构体(接入层)。

函数参数:handle 发送模型的句柄

返回值:0表示信息发布成功

uint32_t access_model_reply(access_model_handle_t handle,

                            const access_message_rx_t * p_message,

                            const access_message_tx_t * p_reply)

函数功能:将模型的回复消息发送到适当的接收方,负责处理消息的准备、发送及状态码的返回,函数体内通过packet_alloc_and_tx继续发送。

函数参数:handle 用于标识当前的模型实例。这告诉系统哪个模型需要处理该回复 p_message 指向接收到的消息的结构体,包含了收到的消息的详细信息

p_reply  指向要发送的回复消息的结构体

返回值:  NRF_SUCCESS: 回复消息成功发送。

               NRF_ERROR_INVALID_PARAM: 参数无效,例如 p_message 或 p_reply 为空。

               NRF_ERROR_NO_MEM: 内存不足,无法处理消息。

static uint32_t packet_alloc_and_tx(access_model_handle_t handle, const access_message_tx_t * p_tx_message, const access_message_rx_t * p_rx_message,uint8_t **pp_access_payload, uint16_t *p_access_payload_len)

函数功能:用于为传输的消息(将操作码和发送数据结合成发送载荷)分配内存,通过packet_tx函数将消息(p_payload)发送出去。

函数参数:handle 模型的句柄   p_tx_message 指向要发送的消息的指针 p_rx_message  指向接收消息的指针  pp_access_payload 指向分配的消息载荷缓冲区 p_access_payload_len 指向用于存储消息载荷长度的指针

返回值:NRF_SUCCESS: 操作成功,消息已成功发送

static uint32_t packet_tx(access_model_handle_t handle,

                          const access_message_tx_t * p_tx_message,

                          const access_message_rx_t * p_rx_message,

                          const uint8_t *p_access_payload,

                          uint16_t access_payload_len)

函数功能:将函数封装成传输层需要的结构体,发送至传输层

函数参数:handle 用于指定要发送消息的模型实例 p_tx_message 要发送的消息的结构体 p_rx_message 需要响应的消息信息 p_access_payload 指向包含消息载荷的内存区域  access_payload_len 消息载荷的长度

返回值:NRF_SUCCESS: 消息发送成功

3.接收

static void mesh_evt_cb(const nrf_mesh_evt_t * p_evt)

函数功能:处理来自 Mesh 堆栈的各种事件

case:NRF_MESH_EVT_MESSAGE_RECEIVED

mesh_msg_handle(&p_evt->params.message);

函数参数:p_evt    mesh事件结构体

static void mesh_msg_handle(const nrf_mesh_evt_message_t * p_evt)

函数功能:构建适合内部处理的消息结构体,将消息传递给处理函数 access_incoming_handle,进一步处理消息内容。

void access_incoming_handle(const access_message_rx_t * p_message)

函数功能:检查消息是否与模型匹配,包括地址、模型分配状态、应用密钥绑定和操作码。 如果所有条件满足,则调用模型的操作码处理程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值