RocketLogger  1.1.5
rocketlogger.c
Go to the documentation of this file.
1 
32 #include <stdio.h>
33 #include <stdlib.h>
34 
35 #include "rl_lib.h"
36 #include "rl_util.h"
37 
47 int main(int argc, char* argv[]) {
48 
49  struct rl_conf conf;
50  int set_as_default;
51  char* file_comment;
52 
53  // get default config
54  read_default_config(&conf);
55 
56  // parse arguments
57  if (parse_args(argc, argv, &conf, &set_as_default, &file_comment) ==
58  FAILURE) {
59  print_usage();
60  exit(EXIT_FAILURE);
61  }
62 
63  // store config as default
64  if (set_as_default == 1) {
65  write_default_config(&conf);
66  }
67 
68  switch (conf.mode) {
69  case LIMIT:
70  if (rl_get_status() == RL_RUNNING) {
71  rl_log(ERROR,
72  "RocketLogger already running\n Run: rocketlogger stop\n");
73  exit(EXIT_FAILURE);
74  }
75  print_config(&conf);
76  printf("Start sampling ...\n");
77  break;
78 
79  case CONTINUOUS:
80  if (rl_get_status() == RL_RUNNING) {
81  rl_log(ERROR,
82  "RocketLogger already running\n Run: rocketlogger stop\n");
83  exit(EXIT_FAILURE);
84  }
85  print_config(&conf);
86  printf("Data acquisition running in background ...\n Stop with: "
87  "rocketlogger stop\n\n");
88  break;
89 
90  case METER:
91  if (rl_get_status() == RL_RUNNING) {
92  rl_log(ERROR,
93  "RocketLogger already running\n Run: rocketlogger stop\n");
94  exit(EXIT_FAILURE);
95  }
96  break;
97 
98  case STATUS: {
99  struct rl_status status;
100  rl_read_status(&status);
101  rl_print_status(&status);
102  return status.state;
103  }
104 
105  case STOPPED:
106  if (rl_get_status() != RL_RUNNING) {
107  rl_log(ERROR, "RocketLogger not running");
108  exit(EXIT_FAILURE);
109  }
110  printf("Stopping RocketLogger ...\n");
111  rl_stop();
112  exit(EXIT_SUCCESS);
113 
114  case SET_DEFAULT:
115  write_default_config(&conf);
116  if (rl_get_status() == RL_RUNNING) {
117  printf("\n");
118  rl_log(WARNING, "change will not affect current measurement");
119  }
120  print_config(&conf);
121  exit(EXIT_SUCCESS);
122 
123  case PRINT_DEFAULT:
124  print_config(&conf);
125  exit(EXIT_SUCCESS);
126 
127  case PRINT_VERSION:
129  exit(EXIT_SUCCESS);
130 
131  case HELP:
132  print_usage();
133  exit(EXIT_SUCCESS);
134 
135  default:
136  print_usage();
137  exit(EXIT_FAILURE);
138  }
139 
140  // start the sampling
141  rl_start(&conf, file_comment);
142 
143  exit(EXIT_SUCCESS);
144 }
void rl_print_status(struct rl_status *status)
Definition: rl_util.c:103
Limited sampling mode (limited by number of samples to take)
Definition: types.h:158
Print default configuration.
Definition: types.h:164
Get current status of RocketLogger.
Definition: types.h:161
rl_mode mode
Sampling mode.
Definition: types.h:251
Stop continuous sampling.
Definition: types.h:162
Continuous sampling mode (in background)
Definition: types.h:159
void rl_print_version(void)
Definition: rl_util.c:124
#define FAILURE
Definition: types.h:78
int parse_args(int argc, char *argv[], struct rl_conf *conf, int *set_as_default, char **file_comment)
Definition: rl_util.c:252
int write_default_config(struct rl_conf *conf)
Definition: rl_util.c:722
void rl_log(rl_log_type type, const char *format,...)
Definition: log.c:39
Show help.
Definition: types.h:166
rl_state state
State.
Definition: types.h:285
int read_default_config(struct rl_conf *conf)
Definition: rl_util.c:683
Definition: types.h:247
int main(int argc, char *argv[])
Definition: rocketlogger.c:47
Warning.
Definition: types.h:201
void print_usage(void)
Definition: rl_util.c:568
Running.
Definition: types.h:142
Set default configuration.
Definition: types.h:163
Print the RocketLogger Software Stack version.
Definition: types.h:165
int rl_start(struct rl_conf *conf, char *file_comment)
Definition: rl_lib.c:91
Error.
Definition: types.h:200
int rl_stop(void)
Definition: rl_lib.c:180
rl_state rl_get_status(void)
Definition: rl_lib.c:38
void print_config(struct rl_conf *conf)
Definition: rl_util.c:643
Meter mode (display current values in terminal)
Definition: types.h:160
int rl_read_status(struct rl_status *status)
Definition: rl_lib.c:60