hamnet70/impl/src/results.h
Thomas Kolb 48f061e334 Handle sequence numbers
This should enable basic retransmission handling.
2024-07-18 23:26:57 +02:00

46 lines
1.3 KiB
C

#ifndef RESULTS_H
#define RESULTS_H
#include "logger.h"
typedef enum {
OK,
ERR_INVALID_STATE,
ERR_INVALID_PARAM, // invalid / nonsense parameters given
ERR_NO_MEM, // not enough memory or allocation error
ERR_SIZE, // a given size is invalid
ERR_LIQUID, // an error occurred in the LiquidDSP library.
ERR_SYSCALL, // a syscall failed. Use errno to determine the cause.
ERR_SOAPY, // an error occurred in the SoapySDR library.
ERR_SDR, // an error occurred in the SDR interface.
ERR_INTEGRITY, // an integrity check failed (e.g. CRC of received packet is wrong)
ERR_SEQUENCE, // an unexpected packet was received
} result_t;
#ifdef DEBUG_LIQUID
#include <liquid/liquid.h>
#define ERR_CHECK_LIQUID(call) \
do { \
liquid_error_code lq_result; \
if((lq_result = (call)) != LIQUID_OK) { \
LOG(LVL_ERR, "Liquid call failed in %s:%d: %s", __FILE__, __LINE__, liquid_error_info(lq_result)); \
return ERR_LIQUID; \
} \
} while(0);
#else
# define ERR_CHECK_LIQUID(call) if((call) != LIQUID_OK) { return ERR_LIQUID; }
#endif
#define ERR_CHECK(call) \
do { \
result_t err_check_result = call; \
if(err_check_result != OK) { \
LOG(LVL_ERR, "Error detected at %s:%d: %d", __FILE__, __LINE__, err_check_result); \
return err_check_result; \
} \
} while(0);
#endif // RESULTS_H