50 #define PKTHEAD_PROTOVERS_SIZE (sizeof(PKTHEAD_PROTOVERS_TYPE)) 51 #define PKTHEAD_TOTLEN_SIZE (sizeof(PKTHEAD_TOTLEN_TYPE)) 52 #define PKTHEAD_CMD_SIZE (sizeof(PKTHEAD_CMD_TYPE)) 53 #define PKTHEAD_NPARAMS_SIZE (sizeof(PKTHEAD_NPARAMS_TYPE)) 54 #define PKTHEAD_TOTALSIZE (PKTHEAD_PROTOVERS_SIZE + PKTHEAD_TOTLEN_SIZE + PKTHEAD_CMD_SIZE + PKTHEAD_NPARAMS_SIZE) 57 uint8_t *datapointer = header;
62 const uint8_t* datapointer = header;
130 if (allocatedSize == NULL)
142 *allocatedSize = (size_t)totlen;
165 uint8_t *buffer = NULL;
194 if (buffersize > 0) {
196 if (buffer == NULL) {
200 recvsize =
c_recv(sckt, buffer, buffersize);
266 if (buffer == NULL || *allocSize == 0) {
274 buffer =
c_realloc(buffer, *allocSize + sizeToAdd);
278 uint8_t *ptr = buffer + *allocSize;
289 for (uint32_t i = 0; i < num; i++) {
290 int8_t value = src[i];
294 *allocSize += sizeToAdd;
302 uint32_t len = (uint32_t)strnlen(src, (
size_t)num);
309 if (buffer == NULL || *allocSize == 0) {
317 buffer =
c_realloc(buffer, *allocSize + sizeToAdd);
321 uint8_t *ptr = buffer + *allocSize;
331 for (uint32_t i = 0; i < num; i++) {
332 uint8_t value = src[i];
336 *allocSize += sizeToAdd;
347 if (buffer == NULL || *allocSize == 0) {
355 buffer =
c_realloc(buffer, *allocSize + sizeToAdd);
359 uint8_t *ptr = buffer + *allocSize;
369 for (uint32_t i = 0; i < num; i++) {
374 *allocSize += sizeToAdd;
385 if (buffer == NULL || *allocSize == 0) {
393 buffer =
c_realloc(buffer, *allocSize + sizeToAdd);
397 uint8_t *ptr = buffer + *allocSize;
407 for (uint32_t i = 0; i < num; i++) {
412 *allocSize += sizeToAdd;
423 if (buffer == NULL || *allocSize == 0) {
431 buffer =
c_realloc(buffer, *allocSize + sizeToAdd);
435 uint8_t *ptr = buffer + *allocSize;
445 for (uint32_t i = 0; i < num; i++) {
450 *allocSize += sizeToAdd;
461 if (buffer == NULL || *allocSize == 0) {
469 buffer =
c_realloc(buffer, *allocSize + sizeToAdd);
473 uint8_t *ptr = buffer + *allocSize;
483 for (uint32_t i = 0; i < num; i++) {
488 *allocSize += sizeToAdd;
499 if (buffer == NULL || *allocSize == 0) {
507 buffer =
c_realloc(buffer, *allocSize + sizeToAdd);
511 uint8_t *ptr = buffer + *allocSize;
521 for (uint32_t i = 0; i < num; i++) {
526 *allocSize += sizeToAdd;
537 if (buffer == NULL || *allocSize == 0) {
545 buffer =
c_realloc(buffer, *allocSize + sizeToAdd);
549 uint8_t *ptr = buffer + *allocSize;
559 for (uint32_t i = 0; i < num; i++) {
564 *allocSize += sizeToAdd;
576 int64_t *mantissa =
c_malloc(num *
sizeof(*mantissa));
577 int16_t *exponent =
c_malloc(num *
sizeof(*exponent));
578 int8_t *classification =
c_malloc(num *
sizeof(*classification));
580 if (mantissa == NULL || exponent == NULL || classification == NULL) {
586 for (uint32_t i = 0; i < num; i++)
587 mantissa[i] =
c_frexp(src[i], &exponent[i], &classification[i]);
629 c_memcpy(dest, buffer, num * pSize);
630 buffer += num * pSize;
662 c_memcpy(dest, buffer, gNum * pSize);
663 buffer += gNum * pSize;
701 c_memcpy(dest, buffer, num * pSize);
702 buffer += num * pSize;
734 c_memcpy(dest, buffer, gNum * pSize);
735 buffer += gNum * pSize;
762 for (uint32_t i = 0; i < num; i++) {
794 for (uint32_t i = 0; i < gNum; i++) {
825 for (uint32_t i = 0; i < num; i++) {
857 for (uint32_t i = 0; i < gNum; i++) {
888 for (uint32_t i = 0; i < num; i++) {
920 for (uint32_t i = 0; i < gNum; i++) {
951 for (uint32_t i = 0; i < num; i++) {
983 for (uint32_t i = 0; i < gNum; i++) {
1014 for (uint32_t i = 0; i < num; i++) {
1046 for (uint32_t i = 0; i < gNum; i++) {
1077 for (uint32_t i = 0; i < num; i++) {
1109 for (uint32_t i = 0; i < gNum; i++) {
1126 int64_t *mantissa =
c_malloc(num *
sizeof(*mantissa));
1127 int16_t *exponent =
c_malloc(num *
sizeof(*exponent));
1128 int8_t *classification =
c_malloc(num *
sizeof(*classification));
1130 if (mantissa == NULL || exponent == NULL || classification == NULL) {
1141 for (uint32_t i = 0; i < num; i++)
1142 dest[i] =
c_ldexp(mantissa[i], exponent[i], classification[i]);
1153 int64_t *mantissa =
c_malloc(maxnum *
sizeof(*mantissa));
1154 int16_t *exponent =
c_malloc(maxnum *
sizeof(*exponent));
1155 int8_t *classification =
c_malloc(maxnum *
sizeof(*classification));
1157 if (mantissa == NULL || exponent == NULL || classification == NULL) {
1168 for (uint32_t i = 0; i < *num; i++)
1169 dest[i] =
c_ldexp(mantissa[i], exponent[i], classification[i]);
uint8_t * deserialize_float_array(float *dest, uint32_t maxnum, uint32_t *num, uint8_t *buffer)
uint8_t * deserialize_double(double *dest, uint32_t num, uint8_t *buffer)
uint8_t * deserialize_uint8_t_array(uint8_t *dest, uint32_t maxnum, uint32_t *num, uint8_t *buffer)
static PKTHEAD_NPARAMS_TYPE * getParamsNumPtr(uint8_t *header)
c_mutex_t mutex
A mutex, use by some functions.
static uint64_t c_hton64(uint64_t x)
uint8_t * deserialize_int8_t(int8_t *dest, uint32_t num, uint8_t *buffer)
static const PKTHEAD_PROTOVERS_TYPE * getProtoVersConstPtr(const uint8_t *header)
static void * c_memcpy(void *__restrict dest, const void *__restrict src, size_t size)
Wrapper to memcpy(dest, src, size), with check for NULL arguments.
PKTHEAD_CMD_TYPE c_getcmd(const uint8_t *buffer)
uint8_t * deserialize_double_array(double *dest, uint32_t maxnum, uint32_t *num, uint8_t *buffer)
static PKTHEAD_PROTOVERS_TYPE * getProtoVersPtr(uint8_t *header)
static uint32_t c_ntoh32(uint32_t x)
uint8_t * deserialize_int64_t_array(int64_t *dest, uint32_t maxnum, uint32_t *num, uint8_t *buffer)
uint8_t * deserialize_int8_t_array(int8_t *dest, uint32_t maxnum, uint32_t *num, uint8_t *buffer)
static size_t getSizeOfType(c_type_t t)
uint8_t * deserialize_uint64_t(uint64_t *dest, uint32_t num, uint8_t *buffer)
static PKTHEAD_TOTLEN_TYPE * setSizeToHeader(uint8_t *header, PKTHEAD_TOTLEN_TYPE size)
uint8_t * deserialize_uint32_t(uint32_t *dest, uint32_t num, uint8_t *buffer)
#define PKTHEAD_PROTOVERS_SIZE
uint8_t * deserialize_uint16_t_array(uint16_t *dest, uint32_t maxnum, uint32_t *num, uint8_t *buffer)
uint8_t * c_createheader(uint16_t version, PKTHEAD_CMD_TYPE cmd, size_t *allocatedSize)
uint8_t * deserialize_uint32_t_array(uint32_t *dest, uint32_t maxnum, uint32_t *num, uint8_t *buffer)
uint8_t * c_recv_packet(const c_socket_t *sckt, PKTHEAD_CMD_TYPE *cmd, PKTHEAD_TOTLEN_TYPE *totSize, PKTHEAD_NPARAMS_TYPE *totParams)
uint8_t * serialize_int32_t(const int32_t *src, uint32_t num, uint8_t *buffer, size_t *allocSize)
uint8_t * deserialize_int32_t_array(int32_t *dest, uint32_t maxnum, uint32_t *num, uint8_t *buffer)
uint16_t PKTHEAD_NPARAMS_TYPE
uint8_t * serialize_uint64_t(const uint64_t *src, uint32_t num, uint8_t *buffer, size_t *allocSize)
uint8_t * deserialize_char(char *dest, uint32_t maxnum, uint8_t *buffer)
static c_type_t toggleSigned(c_type_t type)
static PARAMNUM_TYPE ntopnum(PARAMNUM_TYPE type)
#define CMD_INVALID_LOCAL
The only commang code defined here, as used as return value in case of error. MUST be 0xFFFF...
uint8_t * deserialize_int16_t(int16_t *dest, uint32_t num, uint8_t *buffer)
uint16_t PKTHEAD_PROTOVERS_TYPE
uint8_t * deserialize_uint16_t(uint16_t *dest, uint32_t num, uint8_t *buffer)
uint8_t * deserialize_int16_t_array(int16_t *dest, uint32_t maxnum, uint32_t *num, uint8_t *buffer)
#define CAEN_PKT_VERSION(_VER)
static uint16_t c_hton16(uint16_t x)
Functions to handle threads, inspired to C11 threads.h.
void * c_malloc(size_t size)
static bool checkProtoVersPtr(const uint8_t *header, uint8_t version)
double c_ldexp(int64_t mantissa, int16_t exponent, int8_t classification)
Generic wrappers to platform-dependent functions.
#define INIT_C_LOGGER(fname, mname)
uint8_t * deserialize_float(float *dest, uint32_t num, uint8_t *buffer)
static uint32_t c_hton32(uint32_t x)
ssize_t c_ssize_t
Return type of send() and recv().
#define PKTHEAD_TOTLEN_SIZE
uint8_t * serialize_char(const char *src, uint32_t num, uint8_t *buffer, size_t *allocSize)
uint8_t * deserialize_uint8_t(uint8_t *dest, uint32_t num, uint8_t *buffer)
static PKTHEAD_TOTLEN_TYPE * getSizePtr(uint8_t *header)
uint8_t * serialize_uint16_t(const uint16_t *src, uint32_t num, uint8_t *buffer, size_t *allocSize)
static PARAMTYPE_TYPE ptypeton(PARAMTYPE_TYPE type)
uint8_t * serialize_int8_t(const int8_t *src, uint32_t num, uint8_t *buffer, size_t *allocSize)
static uint64_t c_ntoh64(uint64_t x)
uint8_t * deserialize_int64_t(int64_t *dest, uint32_t num, uint8_t *buffer)
uint8_t * serialize_uint8_t(const uint8_t *src, uint32_t num, uint8_t *buffer, size_t *allocSize)
uint8_t * serialize_int64_t(const int64_t *src, uint32_t num, uint8_t *buffer, size_t *allocSize)
uint8_t * deserialize_uint64_t_array(uint64_t *dest, uint32_t maxnum, uint32_t *num, uint8_t *buffer)
uint8_t * serialize_float(const float *src, uint32_t num, uint8_t *buffer, size_t *allocSize)
#define c_use_decl_annotations
uint8_t * serialize_double(const double *src, uint32_t num, uint8_t *buffer, size_t *allocSize)
int64_t c_frexp(double value, int16_t *exponent, int8_t *classification)
c_ssize_t c_recv(const c_socket_t *sckt, void *buffer, size_t totSize)
uint8_t * deserialize_int32_t(int32_t *dest, uint32_t num, uint8_t *buffer)
static uint16_t c_ntoh16(uint16_t x)
static PKTHEAD_NPARAMS_TYPE * incrHeaderParamsNum(uint8_t *header)
int32_t c_mutex_unlock(c_mutex_t *m)
uint16_t PKTHEAD_CMD_TYPE
uint32_t PKTHEAD_TOTLEN_TYPE
void * c_realloc(void *ptr, size_t size)
static PKTHEAD_CMD_TYPE * getCmdPtr(uint8_t *header)
uint8_t * c_recv_packet_unlock(c_socket_t *sckt, PKTHEAD_CMD_TYPE *cmd, PKTHEAD_TOTLEN_TYPE *totSize, PKTHEAD_NPARAMS_TYPE *totParams)
static PARAMTYPE_TYPE ntoptype(PARAMTYPE_TYPE type)
uint8_t * serialize_uint32_t(const uint32_t *src, uint32_t num, uint8_t *buffer, size_t *allocSize)
static PARAMNUM_TYPE pnumton(PARAMNUM_TYPE type)
uint8_t * serialize_int16_t(const int16_t *src, uint32_t num, uint8_t *buffer, size_t *allocSize)
static const PKTHEAD_CMD_TYPE * getCmdConstPtr(const uint8_t *header)
#define PKTHEAD_TOTALSIZE
static void * c_zeromem(void *dest, size_t size)
Wrapper to memset(dest, 0, size), with check for NULL arguments.
#define PKTHEAD_NPARAMS_SIZE