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