RocketLogger 2.1.3
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#include <stdio.h>
37
38#include "pru.h"
39#include "rl.h"
40#include "util.h"
41
43#define RL_FILE_MAGIC 0x444C5225
44
46#define RL_FILE_VERSION 0x04
47
49#define RL_FILE_CHANNEL_NAME_LENGTH 16
50
52#define RL_FILE_CHANNEL_NO_LINK (UINT16_MAX)
53
55#define RL_FILE_COMMENT_ALIGNMENT_BYTES sizeof(uint32_t)
56
58#define RL_FILE_CSV_DELIMITER ","
59
61#define RL_FILE_AMBIENT_SUFFIX "-ambient"
62
64#define RL_FILE_AMBIENT_DATA_BLOCK_SIZE 1
65
69#define RL_SCALE_PICO -12
70#define RL_SCALE_TEN_PICO -11
71#define RL_SCALE_NANO -9
72#define RL_SCALE_TEN_NANO -8
73#define RL_SCALE_MICRO -6
74#define RL_SCALE_MILLI -3
75#define RL_SCALE_UNIT 0
76#define RL_SCALE_KILO 3
77#define RL_SCALE_MEGA 6
78#define RL_SCALE_GIGA 9
79#define RL_SCALE_TERA 12
80
98
102typedef enum rl_unit rl_unit_t;
103
133
138
154
159
171
176
183char *rl_unit_to_string(rl_unit_t unit);
184
191char *rl_file_get_ambient_file_name(char const *const data_file_name);
192
200 rl_config_t const *const config);
201
209 rl_config_t const *const config);
210
217void rl_file_setup_data_header(rl_file_header_t *const file_header,
218 rl_config_t const *const config);
219
226void rl_file_setup_ambient_header(rl_file_header_t *const file_header,
227 rl_config_t const *const config);
228
235void rl_file_store_header_bin(FILE *file_handle,
236 rl_file_header_t *const file_header);
237
244void rl_file_store_header_csv(FILE *file_handle,
245 rl_file_header_t const *const file_header);
246
254void rl_file_update_header_bin(FILE *file_handle,
255 rl_file_header_t const *const file_header);
256
264void rl_file_update_header_csv(FILE *file_handle,
265 rl_file_header_t const *const file_header);
266
280int rl_file_add_data_block(FILE *data_file, int32_t const *analog_buffer,
281 uint32_t const *digital_buffer, size_t buffer_size,
282 rl_timestamp_t const *const timestamp_realtime,
283 rl_timestamp_t const *const timestamp_monotonic,
284 rl_config_t const *const config);
285
298int rl_file_add_ambient_block(FILE *ambient_file, int32_t const *ambient_buffer,
299 size_t buffer_size,
300 rl_timestamp_t const *const timestamp_realtime,
301 rl_timestamp_t const *const timestamp_monotonic,
302 rl_config_t const *const config);
303
304#endif /* RL_FILE_H_ */
char * rl_unit_to_string(rl_unit_t unit)
Definition rl_file.c:85
rl_unit
Definition rl_file.h:84
@ RL_UNIT_VOLT
Voltage (electric)
Definition rl_file.h:86
@ RL_UNIT_UNDEFINED
Undefined unit.
Definition rl_file.h:96
@ RL_UNIT_LUX
Lux (illuminance)
Definition rl_file.h:90
@ RL_UNIT_AMPERE
Current (electric)
Definition rl_file.h:87
@ RL_UNIT_INTEGER
Integer channel (numeric)
Definition rl_file.h:92
@ RL_UNIT_BINARY
Binary signal.
Definition rl_file.h:88
@ RL_UNIT_PASCAL
Pascal (pressure)
Definition rl_file.h:94
@ RL_UNIT_RANGE_VALID
Range valid information.
Definition rl_file.h:89
@ RL_UNIT_PERCENT
Percent (numeric, humidity)
Definition rl_file.h:93
@ RL_UNIT_SECOND
Second (time delta)
Definition rl_file.h:95
@ RL_UNIT_UNITLESS
Unitless.
Definition rl_file.h:85
@ RL_UNIT_DEG_C
Degree celsius (temperature)
Definition rl_file.h:91
void rl_file_setup_ambient_header(rl_file_header_t *const file_header, rl_config_t const *const config)
Definition rl_file.c:206
enum rl_unit rl_unit_t
Definition rl_file.h:102
void rl_file_store_header_bin(FILE *file_handle, rl_file_header_t *const file_header)
Definition rl_file.c:217
void rl_file_update_header_bin(FILE *file_handle, rl_file_header_t const *const file_header)
Definition rl_file.c:324
int rl_file_add_data_block(FILE *data_file, int32_t const *analog_buffer, uint32_t const *digital_buffer, size_t buffer_size, rl_timestamp_t const *const timestamp_realtime, rl_timestamp_t const *const timestamp_monotonic, rl_config_t const *const config)
Definition rl_file.c:350
void rl_file_store_header_csv(FILE *file_handle, rl_file_header_t const *const file_header)
Definition rl_file.c:254
void rl_file_setup_ambient_lead_in(rl_file_lead_in_t *const lead_in, rl_config_t const *const config)
Definition rl_file.c:160
void rl_file_setup_data_header(rl_file_header_t *const file_header, rl_config_t const *const config)
Definition rl_file.c:195
void rl_file_update_header_csv(FILE *file_handle, rl_file_header_t const *const file_header)
Definition rl_file.c:334
int rl_file_add_ambient_block(FILE *ambient_file, int32_t const *ambient_buffer, size_t buffer_size, rl_timestamp_t const *const timestamp_realtime, rl_timestamp_t const *const timestamp_monotonic, rl_config_t const *const config)
Definition rl_file.c:520
#define RL_FILE_CHANNEL_NAME_LENGTH
Maximum channel description length.
Definition rl_file.h:49
char * rl_file_get_ambient_file_name(char const *const data_file_name)
Definition rl_file.c:94
void rl_file_setup_data_lead_in(rl_file_lead_in_t *const lead_in, rl_config_t const *const config)
Definition rl_file.c:118
char name[RL_FILE_CHANNEL_NAME_LENGTH]
Channel name/description.
Definition rl_file.h:152
uint16_t data_size
Datum size in bytes (for voltage and current)
Definition rl_file.h:148
rl_unit_t unit
Channel unit.
Definition rl_file.h:144
int32_t channel_scale
Channel scale (in power of ten, for voltage and current)
Definition rl_file.h:146
uint16_t valid_data_channel
Link to channel valid data (for low-range current channels)
Definition rl_file.h:150
rl_file_channel_t * channel
Channels definitions (binary and normal)
Definition rl_file.h:169
rl_file_lead_in_t lead_in
File header lead in (constant size)
Definition rl_file.h:165
char const * comment
Comment field.
Definition rl_file.h:167
uint32_t comment_length
Comment length.
Definition rl_file.h:127
uint16_t sample_rate
Sampling rate of the measurement.
Definition rl_file.h:121
uint16_t file_version
File version number.
Definition rl_file.h:111
rl_timestamp_t start_time
Start time of the measurement in UNIX time, UTC.
Definition rl_file.h:125
uint64_t sample_count
Total sample count.
Definition rl_file.h:119
uint8_t mac_address[MAC_ADDRESS_LENGTH]
Instrument ID (mac address)
Definition rl_file.h:123
uint16_t channel_count
Analog channel count.
Definition rl_file.h:131
uint32_t data_block_count
Number of data blocks stored in the file.
Definition rl_file.h:117
uint32_t data_block_size
Size of the data blocks in the file in rows.
Definition rl_file.h:115
uint16_t header_length
Total size of the header in bytes.
Definition rl_file.h:113
uint32_t file_magic
File magic constant.
Definition rl_file.h:109
uint16_t channel_bin_count
Binary channel count.
Definition rl_file.h:129
#define MAC_ADDRESS_LENGTH
MAC address length in bytes.
Definition util.h:41