RocketLogger  1.1.5
rl_file.h
Go to the documentation of this file.
1 
32 #ifndef RL_FILE_H_
33 #define RL_FILE_H_
34 
35 #include <stdint.h>
36 
37 #include "types.h"
38 #include "util.h"
39 
40 // Defines
41 
45 #define RL_SCALE_PICO -12
46 #define RL_SCALE_TEN_PICO -11
47 #define RL_SCALE_NANO -9
48 #define RL_SCALE_TEN_NANO -8
49 #define RL_SCALE_MICRO -6
50 #define RL_SCALE_MILLI -3
51 #define RL_SCALE_NONE 0
52 #define RL_SCALE_KILO 3
53 #define RL_SCALE_MEGA 6
54 #define RL_SCALE_GIGA 9
55 #define RL_SCALE_TERA 12
56 
57 // Constants
58 
60 #define RL_FILE_MAGIC 0x444C5225 // const uint32_t RL_FILE_MAGIC = 0x25524C42;
61 
63 #define RL_FILE_VERSION 0x03 // const uint8_t RL_FILE_VERSION = 0x01;
64 
66 #define RL_FILE_CHANNEL_NAME_LENGTH \
67  16 // const uint8_t RL_FILE_CHANNEL_NAME_LENGTH = 16;
68 
70 #define NO_VALID_DATA 0xFFFF // const uint16_t NO_VALID_DATA = 0xFFFF;
71 
73 #define RL_FILE_COMMENT "This is a comment"
74 
76 #define RL_FILE_COMMENT_ALIGNMENT_BYTES sizeof(uint32_t)
77 
78 // Types
79 
83 typedef enum unit {
94  RL_UNIT_UNDEFINED = 0xffffffff,
95 } rl_unit;
96 
102  uint32_t magic; // = RL_FILE_MAGIC;
103 
105  uint16_t file_version; // = RL_FILE_VERSION;
106 
108  uint16_t header_length; // = 0;
109 
111  uint32_t data_block_size; // = 0;
112 
114  uint32_t data_block_count; // = 0;
115 
117  uint64_t sample_count; // = 0;
118 
120  uint16_t sample_rate; // = 0;
121 
124 
126  struct time_stamp start_time; // = 0;
127 
129  uint32_t comment_length; // = 0;
130 
132  uint16_t channel_bin_count; // = 0;
133 
135  uint16_t channel_count; // = 0;
136 };
137 
142 
144  rl_unit unit; // = RL_UNIT_UNDEFINED;
145 
147  int32_t channel_scale; // = RL_SCALE_NONE;
148 
150  uint16_t data_size; // = 0;
151 
153  uint16_t valid_data_channel; // = NO_VALID_DATA;
154 
157 };
158 
163 
165  struct rl_file_lead_in lead_in;
166 
168  char* comment; // = NULL;
169 
171  struct rl_file_channel* channel; // = NULL;
172 };
173 
174 #endif /* RL_FILE_H_ */
uint16_t data_size
Datum size in bytes (for voltage and current)
Definition: rl_file.h:150
uint16_t header_length
Total size of the header in bytes.
Definition: rl_file.h:108
struct time_stamp start_time
Start time of the measurement in UNIX time, UTC.
Definition: rl_file.h:126
Degree celcius (temperature)
Definition: rl_file.h:90
enum unit rl_unit
#define MAC_ADDRESS_LENGTH
MAC address length in bytes.
Definition: util.h:40
Percent (numeric, humidity)
Definition: rl_file.h:92
Unitless.
Definition: rl_file.h:84
struct rl_file_channel * channel
Channels definitions (binary and normal)
Definition: rl_file.h:171
unit
Definition: rl_file.h:83
uint64_t sample_count
Total sample count.
Definition: rl_file.h:117
uint16_t channel_bin_count
Binary channel count.
Definition: rl_file.h:132
uint16_t file_version
File version number.
Definition: rl_file.h:105
rl_unit unit
Channel unit.
Definition: rl_file.h:144
Range valid information.
Definition: rl_file.h:88
char * comment
Comment field.
Definition: rl_file.h:168
Pascal (preasure)
Definition: rl_file.h:93
uint16_t channel_count
Analog channel count.
Definition: rl_file.h:135
uint32_t comment_length
Comment length.
Definition: rl_file.h:129
uint32_t magic
File magic constant.
Definition: rl_file.h:102
uint32_t data_block_size
Size of the data blocks in the file in rows.
Definition: rl_file.h:111
uint16_t sample_rate
Sampling rate of the measurement.
Definition: rl_file.h:120
Undefined unit.
Definition: rl_file.h:94
Voltage (electric)
Definition: rl_file.h:85
int32_t channel_scale
Channel scale (in power of ten, for voltage and current)
Definition: rl_file.h:147
Integer channel (numeric)
Definition: rl_file.h:91
uint16_t valid_data_channel
Link to channel valid data (for low-range current channels)
Definition: rl_file.h:153
Lux (illuminance)
Definition: rl_file.h:89
Current (electric)
Definition: rl_file.h:86
uint32_t data_block_count
Number of data blocks stored in the file.
Definition: rl_file.h:114
Binary signal.
Definition: rl_file.h:87
uint8_t mac_address[MAC_ADDRESS_LENGTH]
Instrument ID (mac address)
Definition: rl_file.h:123
#define RL_FILE_CHANNEL_NAME_LENGTH
Maximum channel description length.
Definition: rl_file.h:66