XfcTransportProtocol/Inc/XfcArray.h

48 lines
1.1 KiB
C

//
// Created by CFIF on 20.04.2022.
//
#ifndef XfcArray_H
#define XfcArray_H
#include "stdint.h"
#include "stdbool.h"
typedef struct {
uint8_t *data;
uint16_t begin;
uint16_t end;
uint16_t limit;
} tXfcArray;
#define XfcArrayCreateStatic(NAME, LENGTH) \
uint8_t NAME##_Data[LENGTH]; \
XfcArray NAME = { .data = NAME##_Data, .begin= 0, .end = 0, .limit = sizeof(NAME##_Data)};
void XfcArrayInit(tXfcArray *array, uint8_t *memAlloc, uint16_t limit);
#define XfcArrayInitStatic(ENV, MEM) XfcArrayInit(ENV,MEM,sizeof(MEM))
void XfcArrayClear(tXfcArray *array);
bool XfcArrayNotFull(tXfcArray *array);
uint16_t XfcArrayGetDataSize(tXfcArray *array);
uint8_t *XfcGetTail(tXfcArray *array);
bool XfcArrayAddByte(tXfcArray *array, uint8_t value);
uint16_t XfcArrayAddBytes(tXfcArray *array, uint8_t *bytes, uint16_t length);
uint16_t XfcArrayAddLength(tXfcArray *array, uint16_t length);
uint16_t XfcArrayGetSpace(tXfcArray *array);
uint16_t XfcArrayGetBytesFront(tXfcArray *array, uint8_t *bytes, uint16_t length);
void XfcArrayRemoveBytesFront(tXfcArray *env, uint16_t count);
#endif //XfcArray_H