Zephyr API Documentation 4.1.99
A Scalable Open Source RTOS
 4.1.99
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
cobs.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2024 Kelly Helmut Lord
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_DATA_COBS_H_
8#define ZEPHYR_INCLUDE_DATA_COBS_H_
9
10#include <stddef.h>
11#include <sys/types.h>
12#include <zephyr/sys/util.h>
13#include <zephyr/net_buf.h>
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
19#define COBS_DEFAULT_DELIMITER 0x00
20
24#define COBS_FLAG_TRAILING_DELIMITER BIT(8)
25
31#define COBS_FLAG_CUSTOM_DELIMITER(x) ((x) & 0xff)
32
53static inline size_t cobs_max_encoded_len(size_t decoded_size, uint32_t flags)
54{
56 return decoded_size + decoded_size / 254 + 1 + 1;
57 } else {
58 return decoded_size + decoded_size / 254 + 1;
59 }
60}
61
74int cobs_encode(struct net_buf *src, struct net_buf *dst, uint32_t flags);
75
87int cobs_decode(struct net_buf *src, struct net_buf *dst, uint32_t flags);
88
91#ifdef __cplusplus
92}
93#endif
94
95#endif /* ZEPHYR_INCLUDE_DATA_COBS_H_ */
#define COBS_FLAG_TRAILING_DELIMITER
Flag indicating that encode and decode should include an implicit end delimiter.
Definition cobs.h:24
static size_t cobs_max_encoded_len(size_t decoded_size, uint32_t flags)
Calculate maximum encoded buffer size.
Definition cobs.h:53
int cobs_decode(struct net_buf *src, struct net_buf *dst, uint32_t flags)
Standard COBS decoding.
int cobs_encode(struct net_buf *src, struct net_buf *dst, uint32_t flags)
Standard COBS encoding.
Buffer management.
flags
Definition parser.h:97
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
Network buffer representation.
Definition net_buf.h:1006
Misc utilities.