34 #include <sys/statvfs.h> 43 #define MAX_STRING_LENGTH 150 45 #define MAX_STRING_VALUE 20 47 #define TIME_MARGIN 10 87 return (uint64_t)stat.f_bavail * (uint64_t)stat.f_bsize;
99 sprintf(str,
"[\"%d\"", data[0]);
100 for (i = 1; i < length; i++) {
101 sprintf(val,
",\"%d\"", data[i]);
117 sprintf(str,
"[\"%lld\"", data[0]);
118 for (i = 1; i < length; i++) {
119 sprintf(val,
",\"%lld\"", data[i]);
175 if (buffer_count > buffer_available) {
176 buffer_count = buffer_available;
195 printf(
"%d\n", buffer_count);
196 printf(
"%d\n", buffer_size);
205 for (i = 0; i < buffer_count; i++) {
211 "In print_data: memcpy is trying to copy to much data.");
214 memcpy(&data[i][0][0], shm_data,
221 for (i = buffer_count - 1; i >= 0; i--) {
223 for (j = 0; j < buffer_size; j++) {
241 int main(
int argc,
char* argv[]) {
245 rl_log(
ERROR,
"in rl_server: not enough arguments");
283 uint8_t data_read = 0;
284 while (data_read == 0) {
311 if (data_read == 0) {
int force_high_channels[NUM_I_CHANNELS]
Current channels to force to high range.
int open_sem(key_t key, int num_sems)
struct ringbuffer buffer[WEB_RING_BUFFER_COUNT]
Array of ring buffers for different time scales.
struct rl_status status
Current status of RocketLogger.
struct web_shm * web_open_shm(void)
int main(int argc, char *argv[])
#define BUFFER1_SIZE
Size of 1s/div buffer.
#define NUM_SEMS
Number of semaphores in set.
uint8_t get_data
1: data requested, 0: no data requested
void rl_log(rl_log_type type, const char *format,...)
#define SEM_KEY
Semaphore key (used for set creation)
#define BUFFER10_SIZE
Size of 10s/div buffer.
int set_sem(int sem_id, int sem_num, int val)
uint32_t num_channels
Number of channels sampled.
int wait_sem(int sem_id, int sem_num, int time_out)
int digital_inputs
En-/disable digital inputs.
#define MAX_PATH_LENGTH
Maximum path length in characters.
int enable_web_server
En-/disable plots on web interface.
rl_use_cal calibration
Use/ignore existing calibration.
int sem_id
ID of semaphore set.
#define MAX_STRING_VALUE
Maximum string value length.
#define DATA_SEM
Number of data semaphore in set (manages access to shared memory data)
#define TIME_MARGIN
Time margin for buffer number (in ms)
uint64_t samples_taken
Number of samples taken.
int read_default_config(struct rl_conf *conf)
struct web_shm * web_data
Pointer to shared memory data.
#define NUM_I_CHANNELS
Maximum number of RocketLogger current channels.
uint32_t t_scale
Requested time scale.
uint32_t filled
Number of elements in buffer.
#define NUM_CHANNELS
Maximum number of RocketLogger channels.
int64_t curr_time
Time stamp of last buffer stored to shared memory.
#define BUFFER100_SIZE
Size of 100s/div buffer.
char file_name[MAX_PATH_LENGTH]
Data file name.
int channels[NUM_CHANNELS]
Channels to sample.
uint64_t time
Time stamp of calibration run.
int64_t time
Time stamp of most recent datum (in UNIX time, UTC)
uint64_t calibration_time
Time stamp of last calibration run.
int64_t last_time
Last client time stamp.
int64_t get_free_space(char *path)
#define SEM_TIME_OUT
Time out time in seconds, waiting on semaphore read.
void rl_read_calibration(struct rl_calibration *calibration_ptr, struct rl_conf *conf)
rl_file_format file_format
File format.
#define WEB_RING_BUFFER_COUNT
Number of ring buffers in shared memory.
int update_rate
Data update rate.
struct rl_conf conf
Current configuration.
uint32_t element_size
Size of buffer element.
int sample_rate
Sampling rate.
#define ARG_COUNT
Number of input arguments required.
uint32_t id
Client request id.
int buffer_sizes[WEB_RING_BUFFER_COUNT]
Buffer sizes for different time scales.
uint64_t max_file_size
Maximum data file size.
rl_sampling sampling
Sampling state.
int64_t * web_buffer_get(struct ringbuffer *buffer, int num)
int8_t num_channels
Number of channels sampled.
void print_json_32(int32_t data[], int length)
void print_json_64(int64_t data[], int length)
int rl_read_status(struct rl_status *status)
#define MAX_STRING_LENGTH
Maximum string line length.