XfcTransportProtocol/Inc/XfcProtProcessorUtilDefines.h

50 lines
1.8 KiB
C

//
// Created by xemon on 21.04.2022.
//
#ifndef XFCTRANSPORTPROTOCOLPROCESSORDEFINES_H
#define XFCTRANSPORTPROTOCOLPROCESSORDEFINES_H
#include <XfcProtResponseCodes.h>
#include "XfcProtProcessor.h"
#include <XfcProtTable.h>
#include "stddef.h"
////Defines for read/write operations inside Packet Processor
//#define XFC_CMD_TX_SET_CODE(CODE) *response->fields.id = CODE;
#define XFC_CMD_TX_OVERFLOW() return XFC_TRANSPORT_PROTOCOL_RESPONSE_RESULT_CMD_OVERFLOW;
#define XFC_CMD_RX_CUTOFF() return XFC_TRANSPORT_PROTOCOL_REQUEST_UNEXPECTEDLY_SHORT;
#define XFC_CMD_TX_ADD_WITH_OVERFLOW_CHECK(DATA, LEN) \
if(XfcArrayAddBytes(response,DATA, LEN)!=LEN){ XFC_CMD_TX_OVERFLOW()};
#define XFC_CMD_RX_GET_WITH_CUTOFF_CHECK(DATA, LEN) \
if(XfcArrayGetBytesFront(request,DATA, LEN)!=LEN){ XFC_CMD_RX_CUTOFF()};
#define XFC_CMD_TX_ADD_STR(str) XFC_CMD_TX_ADD_WITH_OVERFLOW_CHECK((uint8_t*)str, sizeof(str)-1)
#define XFC_CMD_TX_ADD_STROBJ(str) XFC_CMD_TX_ADD_WITH_OVERFLOW_CHECK(str->data, str->length)
#define XFC_CMD_TX_ADD_RAW(obj) XFC_CMD_TX_ADD_WITH_OVERFLOW_CHECK((uint8_t*)&obj, sizeof(obj))
#define XFC_CMD_TX_ADD_ARR(arr, len) XFC_CMD_TX_ADD_WITH_OVERFLOW_CHECK((uint8_t*)arr, len)
#define XFC_CMD_TX_ADD_STRLINK(str) XFC_CMD_TX_ADD_RAW( *(str).length) XFC_CMD_TX_ADD_ARR((str).data, *(str).length)
#define XFC_CMD_TX_ADD_PSTR(str) {uint8_t len = sizeof(str)-1; XFC_CMD_TX_ADD_RAW(len); XFC_CMD_TX_ADD_STR(str);}
#define XFC_CMD_RX_GET_STR(str) XFC_CMD_RX_GET_WITH_CUTOFF_CHECK((uint8_t*)str, sizeof(str))
#define XFC_CMD_RX_GET_RAW(obj) XFC_CMD_RX_GET_WITH_CUTOFF_CHECK((uint8_t*)&obj, sizeof(obj))
#define XFC_CMD_RX_GET_ARR(arr, len) XFC_CMD_RX_GET_WITH_CUTOFF_CHECK((uint8_t*)arr, len)
//XFC_REQUEST_PROCESSOR_DIRECT
#define XFC_REQPROC_DIR(CODE, METHOD) [CODE]={.id=CODE, .process=METHOD}
#endif //XFCTRANSPORTPROTOCOLPROCESSORDEFINES_H