Zephyr API Documentation 4.3.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
smp_client.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2023 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef H_SMP_CLIENT_
8#define H_SMP_CLIENT_
9
10#include <zephyr/kernel.h>
11#include <zephyr/net_buf.h>
12#include <mgmt/mcumgr/transport/smp_internal.h>
15
22
38
39#ifdef __cplusplus
40extern "C" {
41#endif
42
52int smp_client_object_init(struct smp_client_object *smp_client, int smp_type);
53
60static inline void smp_client_object_set_data(struct smp_client_object *smp_client, void *data)
61{
62 smp_client->priv = data;
63}
64
70static inline void *smp_client_object_get_data(struct smp_client_object *smp_client)
71{
72 return smp_client->priv;
73}
74
84typedef int (*smp_client_res_fn)(struct net_buf *nb, void *user_data);
85
95int smp_client_single_response(struct net_buf *nb, const struct smp_hdr *res_hdr);
96
110 uint8_t command_id, uint8_t op,
111 enum smp_mcumgr_version_t version);
118
132int smp_client_send_cmd(struct smp_client_object *smp_client, struct net_buf *nb,
133 smp_client_res_fn cb, void *user_data, int timeout_in_sec);
134
138
139#ifdef __cplusplus
140}
141#endif
142
143#endif /* H_SMP_CLIENT_ */
int smp_client_object_init(struct smp_client_object *smp_client, int smp_type)
Initialize a SMP client object.
int smp_client_single_response(struct net_buf *nb, const struct smp_hdr *res_hdr)
SMP client response handler.
struct net_buf * smp_client_buf_allocation(struct smp_client_object *smp_client, uint16_t group, uint8_t command_id, uint8_t op, enum smp_mcumgr_version_t version)
Allocate buffer and initialize with SMP header.
static void * smp_client_object_get_data(struct smp_client_object *smp_client)
Get private data for SMP transport.
Definition smp_client.h:70
void smp_client_buf_free(struct net_buf *nb)
Free a SMP client buffer.
int(* smp_client_res_fn)(struct net_buf *nb, void *user_data)
Response callback for SMP send.
Definition smp_client.h:84
int smp_client_send_cmd(struct smp_client_object *smp_client, struct net_buf *nb, smp_client_res_fn cb, void *user_data, int timeout_in_sec)
SMP client data send request.
static void smp_client_object_set_data(struct smp_client_object *smp_client, void *data)
Set private data for SMP transport.
Definition smp_client.h:60
Public kernel APIs.
SMP - Simple Management Protocol.
smp_mcumgr_version_t
SMP MCUmgr protocol version, part of the SMP header.
Definition smp.h:39
Buffer management.
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Group structure.
Definition grp.h:18
Definition kernel.h:2806
A structure used to submit work.
Definition kernel.h:4437
Network buffer representation.
Definition net_buf.h:1006
uint8_t user_data[]
System metadata for this buffer.
Definition net_buf.h:1053
SMP client object.
Definition smp_client.h:26
struct smp_transport * smpt
SMP transport object.
Definition smp_client.h:32
uint8_t smp_seq
SMP SEQ.
Definition smp_client.h:34
struct k_fifo tx_fifo
FIFO for client TX queue.
Definition smp_client.h:30
void * priv
SMP transport data.
Definition smp_client.h:36
struct k_work work
Must be the first member.
Definition smp_client.h:28
SMP transport object for sending SMP responses.
Definition smp.h:131