asrt
Automated System Runtime Testing library
Loading...
Searching...
No Matches
util.h
1
11#ifndef ASRT_UTIL_H
12#define ASRT_UTIL_H
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18#include "./span.h"
19#include "status.h"
20
21#include <stdint.h>
22#include <string.h>
23
25static inline void asrt_u16_to_u8d2( uint16_t val, uint8_t* data )
26{
27 data[0] = ( val >> 8 ) & 0xFF;
28 data[1] = val & 0xFF;
29}
31static inline void asrt_u32_to_u8d4( uint32_t val, uint8_t* data )
32{
33 data[0] = ( val >> 8 * 3 ) & 0xFF;
34 data[1] = ( val >> 8 * 2 ) & 0xFF;
35 data[2] = ( val >> 8 * 1 ) & 0xFF;
36 data[3] = ( val >> 8 * 0 ) & 0xFF;
37}
39static inline void asrt_u8d2_to_u16( uint8_t const* data, uint16_t* val )
40{
41 *val = ( data[0] << 8 ) + data[1];
42}
44static inline void asrt_u8d4_to_u32( uint8_t const* data, uint32_t* val )
45{
46 *val = ( (uint32_t) data[0] << 8 * 3 ) + ( (uint32_t) data[1] << 8 * 2 ) +
47 ( (uint32_t) data[2] << 8 * 1 ) + ( (uint32_t) data[3] << 8 * 0 );
48}
49
51static inline void asrt_cut_u16( uint8_t** data, uint16_t* val )
52{
53 asrt_u8d2_to_u16( *data, val );
54 *data += 2;
55}
57static inline void asrt_cut_u32( uint8_t** data, uint32_t* val )
58{
59 asrt_u8d4_to_u32( *data, val );
60 *data += 4;
61}
63static inline void asrt_add_u16( uint8_t** data, uint16_t val )
64{
65 asrt_u16_to_u8d2( val, *data );
66 *data += 2;
67}
69static inline void asrt_add_u32( uint8_t** data, uint32_t val )
70{
71 asrt_u32_to_u8d4( val, *data );
72 *data += 4;
73}
76static inline void asrt_cut_i32( uint8_t** data, int32_t* val )
77{
78 uint32_t bits;
79 asrt_u8d4_to_u32( *data, &bits );
80 memcpy( val, &bits, sizeof bits );
81 *data += 4;
82}
85static inline void asrt_add_i32( uint8_t** data, int32_t val )
86{
87 uint32_t bits;
88 memcpy( &bits, &val, sizeof bits );
89 asrt_u32_to_u8d4( bits, *data );
90 *data += 4;
91}
92
95void asrt_fill_buffer( uint8_t const* from, uint32_t from_size, struct asrt_span* buff );
96
97
98#ifdef __cplusplus
99}
100#endif
101
102#endif // ASRT_UTIL_H
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee ...
Definition: span.h:23