NinjaFlight
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
buf_writer.h
Go to the documentation of this file.
1 /*
2  * This file is part of Ninjaflight.
3  *
4  * Ninjaflight is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * Ninjaflight is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with Ninjaflight. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #pragma once
19 
20 // Called to flush the buffer.
21 typedef void (*bufWrite_t)(void *arg, void *data, int count);
22 
23 typedef struct bufWriter_s {
25  void *arg;
26  uint8_t capacity;
27  uint8_t at;
28  uint8_t data[];
29 } bufWriter_t;
30 
31 // Initialise a block of memory as a buffered writer.
32 //
33 // b should be sizeof(bufWriter_t) + the number of bytes to buffer.
34 // total_size should be the total size of b.
35 //
36 bufWriter_t *bufWriterInit(uint8_t *b, int total_size, bufWrite_t writer, void *p);
37 void bufWriterAppend(bufWriter_t *b, uint8_t ch);
uint8_t data[]
Definition: buf_writer.h:28
void bufWriterFlush(bufWriter_t *b)
Definition: buf_writer.c:41
uint8_t capacity
Definition: buf_writer.h:26
bufWrite_t writer
Definition: buf_writer.h:24
void bufWriterAppend(bufWriter_t *b, uint8_t ch)
Definition: buf_writer.c:33
Definition: buf_writer.h:23
void * arg
Definition: buf_writer.h:25
void(* bufWrite_t)(void *arg, void *data, int count)
Definition: buf_writer.h:21
uint8_t at
Definition: buf_writer.h:27
struct bufWriter_s bufWriter_t
bufWriter_t * bufWriterInit(uint8_t *b, int total_size, bufWrite_t writer, void *p)
Definition: buf_writer.c:22
uint16_t data
Definition: config.c:91