RocketLogger  1.0
rocketlogger.c
Go to the documentation of this file.
1 
5 #include <stdio.h>
6 #include <stdlib.h>
7 
8 #include "rl_lib.h"
9 #include "rl_util.h"
10 
11 
21 int main(int argc, char* argv[]) {
22 
23  struct rl_conf conf;
24  int set_as_default;
25 
26  // get default config
27  read_default_config(&conf);
28 
29  // parse arguments
30  if (parse_args(argc, argv, &conf, &set_as_default) == FAILURE) {
31  print_usage();
32  exit(EXIT_FAILURE);
33  }
34 
35  // store config as default
36  if(set_as_default == 1) {
37  write_default_config(&conf);
38  }
39 
40  switch (conf.mode) {
41  case LIMIT:
42  if(rl_get_status() == RL_RUNNING) {
43  rl_log(ERROR, "RocketLogger already running\n Run: rocketlogger stop\n");
44  exit(EXIT_FAILURE);
45  }
46  print_config(&conf);
47  printf("Start sampling ...\n");
48  break;
49 
50  case CONTINUOUS:
51  if(rl_get_status() == RL_RUNNING) {
52  rl_log(ERROR, "RocketLogger already running\n Run: rocketlogger stop\n");
53  exit(EXIT_FAILURE);
54  }
55  print_config(&conf);
56  printf("Data acquisition running in background ...\n Stop with: rocketlogger stop\n\n");
57  break;
58 
59  case METER:
60  if(rl_get_status() == RL_RUNNING) {
61  rl_log(ERROR, "RocketLogger already running\n Run: rocketlogger stop\n");
62  exit(EXIT_FAILURE);
63  }
64  break;
65 
66  case STATUS: {
67  struct rl_status status;
68  rl_read_status(&status);
69  rl_print_status(&status);
70  return status.state;
71  }
72 
73  case STOPPED:
74  if(rl_get_status() != RL_RUNNING) {
75  rl_log(ERROR, "RocketLogger not running");
76  exit(EXIT_FAILURE);
77  }
78  printf("Stopping RocketLogger ...\n");
79  rl_stop();
80  exit(EXIT_SUCCESS);
81 
82  case SET_DEFAULT:
83  write_default_config(&conf);
84  if(rl_get_status() == RL_RUNNING) {
85  printf("\n");
86  rl_log(WARNING, "change will not affect current measurement");
87  }
88  print_config(&conf);
89  exit(EXIT_SUCCESS);
90 
91  case PRINT_DEFAULT:
92  print_config(&conf);
93  exit(EXIT_SUCCESS);
94 
95  case PRINT_VERSION:
97  exit(EXIT_SUCCESS);
98 
99  case HELP:
100  print_usage();
101  exit(EXIT_SUCCESS);
102 
103  default:
104  print_usage();
105  exit(EXIT_FAILURE);
106  }
107 
108  // start the sampling
109  rl_start(&conf);
110 
111  exit(EXIT_SUCCESS);
112 }
void rl_print_status(struct rl_status *status)
Definition: rl_util.c:53
Limited sampling mode (limited by number of samples to take)
Definition: types.h:134
Print default configuration.
Definition: types.h:140
Get current status of RocketLogger.
Definition: types.h:137
rl_mode mode
Sampling mode.
Definition: types.h:204
Stop continuous sampling.
Definition: types.h:138
Continuous sampling mode (in background)
Definition: types.h:135
void rl_print_version(void)
Definition: rl_util.c:74
#define FAILURE
Definition: types.h:53
int write_default_config(struct rl_conf *conf)
Definition: rl_util.c:566
void rl_log(rl_log_type type, const char *format,...)
Definition: log.c:12
int parse_args(int argc, char *argv[], struct rl_conf *conf, int *set_as_default)
Definition: rl_util.c:201
Show help.
Definition: types.h:142
rl_state state
State.
Definition: types.h:234
int read_default_config(struct rl_conf *conf)
Definition: rl_util.c:536
Definition: types.h:202
int main(int argc, char *argv[])
Definition: rocketlogger.c:21
Warning.
Definition: types.h:168
int rl_start(struct rl_conf *conf)
Definition: rl_lib.c:62
void print_usage(void)
Definition: rl_util.c:447
Running.
Definition: types.h:118
Set default configuration.
Definition: types.h:139
Print the RocketLogger Software Stack version.
Definition: types.h:141
Error.
Definition: types.h:167
int rl_stop(void)
Definition: rl_lib.c:137
rl_state rl_get_status(void)
Definition: rl_lib.c:11
void print_config(struct rl_conf *conf)
Definition: rl_util.c:499
Meter mode (display current values in terminal)
Definition: types.h:136
int rl_read_status(struct rl_status *status)
Definition: rl_lib.c:33