RocketLogger  1.1
rl_file.h
Go to the documentation of this file.
1 
31 #ifndef RL_FILE_H_
32 #define RL_FILE_H_
33 
34 #include <stdint.h>
35 
36 #include "types.h"
37 #include "util.h"
38 
39 // Defines
40 
44 #define RL_SCALE_PICO -12
45 #define RL_SCALE_TEN_PICO -11
46 #define RL_SCALE_NANO -9
47 #define RL_SCALE_TEN_NANO -8
48 #define RL_SCALE_MICRO -6
49 #define RL_SCALE_MILLI -3
50 #define RL_SCALE_NONE 0
51 #define RL_SCALE_KILO 3
52 #define RL_SCALE_MEGA 6
53 #define RL_SCALE_GIGA 9
54 #define RL_SCALE_TERA 12
55 
56 // Constants
57 
59 #define RL_FILE_MAGIC 0x444C5225 // const uint32_t RL_FILE_MAGIC = 0x25524C42;
60 
62 #define RL_FILE_VERSION 0x03 // const uint8_t RL_FILE_VERSION = 0x01;
63 
65 #define RL_FILE_CHANNEL_NAME_LENGTH \
66  16 // const uint8_t RL_FILE_CHANNEL_NAME_LENGTH = 16;
67 
69 #define NO_VALID_DATA 0xFFFF // const uint16_t NO_VALID_DATA = 0xFFFF;
70 
72 #define RL_FILE_COMMENT "This is a comment"
73 
75 #define RL_FILE_COMMENT_ALIGNMENT_BYTES sizeof(uint32_t)
76 
77 // Types
78 
82 typedef enum unit {
93  RL_UNIT_UNDEFINED = 0xffffffff,
94 } rl_unit;
95 
101  uint32_t magic; // = RL_FILE_MAGIC;
102 
104  uint16_t file_version; // = RL_FILE_VERSION;
105 
107  uint16_t header_length; // = 0;
108 
110  uint32_t data_block_size; // = 0;
111 
113  uint32_t data_block_count; // = 0;
114 
116  uint64_t sample_count; // = 0;
117 
119  uint16_t sample_rate; // = 0;
120 
123 
125  struct time_stamp start_time; // = 0;
126 
128  uint32_t comment_length; // = 0;
129 
131  uint16_t channel_bin_count; // = 0;
132 
134  uint16_t channel_count; // = 0;
135 };
136 
141 
143  rl_unit unit; // = RL_UNIT_UNDEFINED;
144 
146  int32_t channel_scale; // = RL_SCALE_NONE;
147 
149  uint16_t data_size; // = 0;
150 
152  uint16_t valid_data_channel; // = NO_VALID_DATA;
153 
156 };
157 
162 
164  struct rl_file_lead_in lead_in;
165 
167  char* comment; // = NULL;
168 
170  struct rl_file_channel* channel; // = NULL;
171 };
172 
173 #endif /* RL_FILE_H_ */
uint16_t data_size
Datum size in bytes (for voltage and current)
Definition: rl_file.h:149
uint16_t header_length
Total size of the header in bytes.
Definition: rl_file.h:107
struct time_stamp start_time
Start time of the measurement in UNIX time, UTC.
Definition: rl_file.h:125
Degree celcius (temperature)
Definition: rl_file.h:89
enum unit rl_unit
#define MAC_ADDRESS_LENGTH
MAC address length in bytes.
Definition: util.h:39
Percent (numeric, humidity)
Definition: rl_file.h:91
Unitless.
Definition: rl_file.h:83
struct rl_file_channel * channel
Channels definitions (binary and normal)
Definition: rl_file.h:170
unit
Definition: rl_file.h:82
uint64_t sample_count
Total sample count.
Definition: rl_file.h:116
uint16_t channel_bin_count
Binary channel count.
Definition: rl_file.h:131
uint16_t file_version
File version number.
Definition: rl_file.h:104
rl_unit unit
Channel unit.
Definition: rl_file.h:143
Range valid information.
Definition: rl_file.h:87
char * comment
Comment field.
Definition: rl_file.h:167
Pascal (preasure)
Definition: rl_file.h:92
uint16_t channel_count
Analog channel count.
Definition: rl_file.h:134
uint32_t comment_length
Comment length.
Definition: rl_file.h:128
uint32_t magic
File magic constant.
Definition: rl_file.h:101
uint32_t data_block_size
Size of the data blocks in the file in rows.
Definition: rl_file.h:110
uint16_t sample_rate
Sampling rate of the measurement.
Definition: rl_file.h:119
Undefined unit.
Definition: rl_file.h:93
Voltage (electric)
Definition: rl_file.h:84
int32_t channel_scale
Channel scale (in power of ten, for voltage and current)
Definition: rl_file.h:146
Integer channel (numeric)
Definition: rl_file.h:90
uint16_t valid_data_channel
Link to channel valid data (for low-range current channels)
Definition: rl_file.h:152
Lux (illuminance)
Definition: rl_file.h:88
Current (electric)
Definition: rl_file.h:85
uint32_t data_block_count
Number of data blocks stored in the file.
Definition: rl_file.h:113
Binary signal.
Definition: rl_file.h:86
uint8_t mac_address[MAC_ADDRESS_LENGTH]
Instrument ID (mac address)
Definition: rl_file.h:122
#define RL_FILE_CHANNEL_NAME_LENGTH
Maximum channel description length.
Definition: rl_file.h:65