RocketLogger  1.0
rl_file.h
Go to the documentation of this file.
1 
5 #ifndef RL_FILE_H
6 #define RL_FILE_H
7 
8 #include <stdint.h>
9 
10 #include "types.h"
11 
12 
13 // Defines
14 
16 #define MAC_ADDRESS_LENGTH 6
17 
21 #define RL_SCALE_PICO -12
22 #define RL_SCALE_TEN_PICO -11
23 #define RL_SCALE_NANO -9
24 #define RL_SCALE_TEN_NANO -8
25 #define RL_SCALE_MICRO -6
26 #define RL_SCALE_MILLI -3
27 #define RL_SCALE_NONE 0
28 #define RL_SCALE_KILO 3
29 #define RL_SCALE_MEGA 6
30 #define RL_SCALE_GIGA 9
31 #define RL_SCALE_TERA 12
32 
33 
34 // Constants
35 
37 #define RL_FILE_MAGIC 0x444C5225 //const uint32_t RL_FILE_MAGIC = 0x25524C42;
38 
40 #define RL_FILE_VERSION 0x02 //const uint8_t RL_FILE_VERSION = 0x01;
41 
43 #define RL_FILE_CHANNEL_NAME_LENGTH 16 //const uint8_t RL_FILE_CHANNEL_NAME_LENGTH = 16;
44 
46 #define NO_VALID_DATA 0xFFFF //const uint16_t NO_VALID_DATA = 0xFFFF;
47 
49 #define RL_FILE_COMMENT "This is a comment"
50 
52 #define RL_FILE_COMMENT_ALIGNMENT_BYTES sizeof(uint32_t)
53 
54 
55 // Types
56 
60 typedef enum unit {
66 } rl_unit;
67 
71 struct time_stamp {
73  int64_t sec;
75  int64_t nsec;
76 };
77 
78 
79 
80 
86  uint32_t magic; // = RL_FILE_MAGIC;
87 
89  uint16_t file_version; // = RL_FILE_VERSION;
90 
92  uint16_t header_length; // = 0;
93 
95  uint32_t data_block_size; // = 0;
96 
98  uint32_t data_block_count; // = 0;
99 
101  uint64_t sample_count; // = 0;
102 
104  uint16_t sample_rate; // = 0;
105 
107  uint8_t mac_address[MAC_ADDRESS_LENGTH];
108 
110  struct time_stamp start_time; // = 0;
111 
113  uint32_t comment_length; // = 0;
114 
116  uint16_t channel_bin_count; // = 0;
117 
119  uint16_t channel_count; // = 0;
120 
121 };
122 
123 
128 
130  rl_unit unit; // = RL_UNIT_UNDEFINED;
131 
133  int32_t channel_scale; // = RL_SCALE_NONE;
134 
136  uint16_t data_size; // = 0;
137 
139  uint16_t valid_data_channel; // = NO_VALID_DATA;
140 
143 };
144 
149 
151  struct rl_file_lead_in lead_in;
152 
154  char* comment; // = NULL;
155 
157  struct rl_file_channel* channel; // = NULL;
158 };
159 
160 #endif /* RL_FILE_H */
uint16_t data_size
Datum size in bytes (for voltage and current)
Definition: rl_file.h:136
uint16_t header_length
Total size of the header in bytes.
Definition: rl_file.h:92
enum unit rl_unit
int64_t sec
Seconds in UNIX time (UTC)
Definition: rl_file.h:73
struct rl_file_channel * channel
Channels definitions (binary and normal)
Definition: rl_file.h:157
unit
Definition: rl_file.h:60
uint64_t sample_count
Total sample count.
Definition: rl_file.h:101
uint16_t channel_bin_count
Binary channel count.
Definition: rl_file.h:116
uint16_t file_version
File version number.
Definition: rl_file.h:89
rl_unit unit
Channel unit.
Definition: rl_file.h:130
Range valid information.
Definition: rl_file.h:65
char * comment
Comment field.
Definition: rl_file.h:154
uint16_t channel_count
Analog channel count.
Definition: rl_file.h:119
#define MAC_ADDRESS_LENGTH
MAC address length in bytes.
Definition: rl_file.h:16
uint32_t comment_length
Comment length.
Definition: rl_file.h:113
uint32_t magic
File magic constant.
Definition: rl_file.h:86
uint32_t data_block_size
Size of the data blocks in the file in rows.
Definition: rl_file.h:95
uint16_t sample_rate
Sampling rate of the measurement.
Definition: rl_file.h:104
int64_t nsec
Nanoseconds.
Definition: rl_file.h:75
Undefined unit.
Definition: rl_file.h:61
Voltage.
Definition: rl_file.h:62
int32_t channel_scale
Channel scale (in power of ten, for voltage and current)
Definition: rl_file.h:133
uint16_t valid_data_channel
Link to channel valid data (for low-range current channels)
Definition: rl_file.h:139
Current.
Definition: rl_file.h:63
uint32_t data_block_count
Number of data blocks stored in the file.
Definition: rl_file.h:98
Binary signal.
Definition: rl_file.h:64
#define RL_FILE_CHANNEL_NAME_LENGTH
Maximum channel description length.
Definition: rl_file.h:43