blob: d83228917ec2bca7a56dfddcc822c09f003c0a6c [file] [log] [blame]
/*
* Copyright Runtime.io 2018. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <string.h>
#include <zephyr/sys/byteorder.h>
#include <zephyr/net/buf.h>
#include <zephyr/mgmt/mcumgr/buf.h>
#include <mgmt/mgmt.h>
#include <zcbor_common.h>
#include <zcbor_decode.h>
#include <zcbor_encode.h>
NET_BUF_POOL_DEFINE(pkt_pool, CONFIG_MCUMGR_BUF_COUNT, CONFIG_MCUMGR_BUF_SIZE,
CONFIG_MCUMGR_BUF_USER_DATA_SIZE, NULL);
struct net_buf *
mcumgr_buf_alloc(void)
{
return net_buf_alloc(&pkt_pool, K_NO_WAIT);
}
void
mcumgr_buf_free(struct net_buf *nb)
{
net_buf_unref(nb);
}
void
cbor_nb_reader_init(struct cbor_nb_reader *cnr,
struct net_buf *nb)
{
/* Skip the mgmt_hdr */
void *new_ptr = net_buf_pull(nb, sizeof(struct mgmt_hdr));
cnr->nb = nb;
zcbor_new_decode_state(cnr->zs, ARRAY_SIZE(cnr->zs), new_ptr,
cnr->nb->len, 1);
}
void
cbor_nb_writer_init(struct cbor_nb_writer *cnw, struct net_buf *nb)
{
net_buf_reset(nb);
cnw->nb = nb;
cnw->nb->len = sizeof(struct mgmt_hdr);
zcbor_new_encode_state(cnw->zs, 2, nb->data + sizeof(struct mgmt_hdr),
net_buf_tailroom(nb), 0);
}