Embedded SDK
Embedded SDK
Loading...
Searching...
No Matches
buffer.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdint.h> // uint*_t
4#include <stddef.h> // size_t
5#include <stdbool.h> // bool
6
7#include "macros.h"
8#include "bip32.h"
9
13typedef enum {
15 LE
17
21typedef struct {
22 uint8_t *ptr;
23 size_t size;
24 size_t offset;
25} buffer_t;
26
38bool buffer_can_read(const buffer_t *buffer, size_t n);
39
51bool buffer_seek_set(buffer_t *buffer, size_t offset);
52
64bool buffer_seek_cur(buffer_t *buffer, size_t offset);
65
77bool buffer_seek_end(buffer_t *buffer, size_t offset);
78
90bool buffer_read_u8(buffer_t *buffer, uint8_t *value);
91
105bool buffer_read_u16(buffer_t *buffer, uint16_t *value, endianness_t endianness);
106
120bool buffer_read_u32(buffer_t *buffer, uint32_t *value, endianness_t endianness);
121
135bool buffer_read_u64(buffer_t *buffer, uint64_t *value, endianness_t endianness);
136
150bool buffer_read_varint(buffer_t *buffer, uint64_t *value);
151
165bool buffer_read_bip32_path(buffer_t *buffer, uint32_t *out, size_t out_len);
166
178bool buffer_get_path_bip32(buffer_t *buffer, path_bip32_t *bip32);
179
193bool buffer_copy(const buffer_t *buffer, uint8_t *out, size_t out_len);
194
208bool buffer_move(buffer_t *buffer, uint8_t *out, size_t out_len);
209
219static inline uint8_t *buffer_get_cur(const buffer_t *buffer)
220{
221 return (uint8_t *) (buffer->ptr + buffer->offset);
222}
223
236bool buffer_peek(const buffer_t *buffer, uint8_t *value);
237
252bool buffer_peek_n(const buffer_t *buffer, size_t n, uint8_t *value);
253
268WEAK bool buffer_read_bytes(buffer_t *buffer, uint8_t *out, size_t n);
269
281bool buffer_write_u8(buffer_t *buffer, uint8_t value);
282
296bool buffer_write_u16(buffer_t *buffer, uint16_t value, endianness_t endianness);
297
311bool buffer_write_u32(buffer_t *buffer, uint32_t value, endianness_t endianness);
312
326bool buffer_write_u64(buffer_t *buffer, uint64_t value, endianness_t endianness);
327
341bool buffer_write_bytes(buffer_t *buffer, const uint8_t *data, size_t n);
342
354static inline buffer_t buffer_create(void *ptr, size_t size)
355{
356 return (buffer_t){.ptr = ptr, .size = size, .offset = 0};
357}
bool buffer_read_varint(buffer_t *buffer, uint64_t *value)
Definition buffer.c:130
bool buffer_seek_end(buffer_t *buffer, size_t offset)
Definition buffer.c:57
bool buffer_read_u16(buffer_t *buffer, uint16_t *value, endianness_t endianness)
Definition buffer.c:82
bool buffer_write_u16(buffer_t *buffer, uint16_t value, endianness_t endianness)
Definition buffer.c:242
bool buffer_copy(const buffer_t *buffer, uint8_t *out, size_t out_len)
Definition buffer.c:180
bool buffer_seek_cur(buffer_t *buffer, size_t offset)
Definition buffer.c:45
bool buffer_read_bip32_path(buffer_t *buffer, uint32_t *out, size_t out_len)
Definition buffer.c:143
bool buffer_write_bytes(buffer_t *buffer, const uint8_t *data, size_t n)
Definition buffer.c:294
bool buffer_get_path_bip32(buffer_t *buffer, path_bip32_t *bip32)
Definition buffer.c:155
bool buffer_seek_set(buffer_t *buffer, size_t offset)
Definition buffer.c:34
bool buffer_can_read(const buffer_t *buffer, size_t n)
Definition buffer.c:27
bool buffer_write_u64(buffer_t *buffer, uint64_t value, endianness_t endianness)
Definition buffer.c:276
bool buffer_peek(const buffer_t *buffer, uint8_t *value)
Definition buffer.c:202
bool buffer_write_u32(buffer_t *buffer, uint32_t value, endianness_t endianness)
Definition buffer.c:259
endianness_t
Definition buffer.h:13
@ LE
Big Endian.
Definition buffer.h:15
@ BE
Definition buffer.h:14
bool buffer_write_u8(buffer_t *buffer, uint8_t value)
Definition buffer.c:230
bool buffer_read_u64(buffer_t *buffer, uint64_t *value, endianness_t endianness)
Definition buffer.c:114
WEAK bool buffer_read_bytes(buffer_t *buffer, uint8_t *out, size_t n)
Definition buffer.c:218
bool buffer_peek_n(const buffer_t *buffer, size_t n, uint8_t *value)
Definition buffer.c:207
bool buffer_move(buffer_t *buffer, uint8_t *out, size_t out_len)
Definition buffer.c:191
bool buffer_read_u32(buffer_t *buffer, uint32_t *value, endianness_t endianness)
Definition buffer.c:98
bool buffer_read_u8(buffer_t *buffer, uint8_t *value)
Definition buffer.c:68
#define WEAK
Definition macros.h:8
uint8_t * ptr
Definition buffer.h:22
size_t size
Pointer to byte buffer.
Definition buffer.h:23
size_t offset
Size of byte buffer.
Definition buffer.h:24