RMW desert 1.0
Loading...
Searching...
No Matches
base.h
1/*
2 * SPDX-FileCopyrightText: 2021 Kyunghwan Kwon <k@mononn.com>
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7#ifndef CBOR_BASE_H
8#define CBOR_BASE_H
9
10#if defined(__cplusplus)
11extern "C" {
12#endif
13
14#include <stddef.h>
15#include <stdint.h>
16
17#if !defined(CBOR_RECURSION_MAX_LEVEL)
18#define CBOR_RECURSION_MAX_LEVEL 8
19#endif
20
21#define CBOR_INDEFINITE_VALUE (-1)
22#define CBOR_RESERVED_VALUE (-2)
23
24#define CBOR_ADDITIONAL_INFO_MASK 0x1fu /* the low-order 5 bits */
25#define get_cbor_major_type(data_item) ((data_item) >> 5)
26#define get_cbor_additional_info(major_type) \
27 ((major_type) & CBOR_ADDITIONAL_INFO_MASK)
28
29typedef enum {
30 CBOR_SUCCESS,
31 CBOR_ILLEGAL,
32 CBOR_INVALID,
33 CBOR_OVERRUN,
34 CBOR_BREAK,
35 CBOR_EXCESSIVE,
36} cbor_error_t;
37
38typedef enum {
39 CBOR_ITEM_UNKNOWN,
40 CBOR_ITEM_INTEGER,
41 CBOR_ITEM_STRING,
42 CBOR_ITEM_ARRAY,
43 CBOR_ITEM_MAP,
44 CBOR_ITEM_FLOAT,
45 CBOR_ITEM_SIMPLE_VALUE,
46} cbor_item_data_t;
47
48typedef struct {
49 cbor_item_data_t type;
50 size_t offset;
51 size_t size;
54
55typedef struct {
56 uint8_t const *msg;
57 size_t msgsize;
58 size_t msgidx;
59
60 cbor_item_t *items;
61 size_t itemidx;
62 size_t maxitems;
64
65typedef struct {
66 uint8_t *buf;
67 size_t bufsize;
68 size_t bufidx;
70
78void cbor_reader_init(cbor_reader_t *reader, cbor_item_t *items, size_t maxitems);
79void cbor_writer_init(cbor_writer_t *writer, void *buf, size_t bufsize);
80size_t cbor_writer_len(cbor_writer_t const *writer);
81uint8_t const *cbor_writer_get_encoded(cbor_writer_t const *writer);
82
83cbor_item_data_t cbor_get_item_type(cbor_item_t const *item);
84size_t cbor_get_item_size(cbor_item_t const *item);
85
86uint8_t cbor_get_following_bytes(uint8_t additional_info);
87
88size_t cbor_copy(uint8_t *dst, uint8_t const *src, size_t len);
89size_t cbor_copy_be(uint8_t *dst, uint8_t const *src, size_t len);
90
91#if defined(__cplusplus)
92}
93#endif
94
95#endif /* CBOR_BASE_H */
Definition base.h:48
size_t size
Definition base.h:51
Definition base.h:55
Definition base.h:65