now path to data storage is configurable by .cmd file
This commit is contained in:
24
main.c
24
main.c
@ -160,6 +160,7 @@ typedef struct main_state_typedef{
|
|||||||
uint32_t run_length; // in ms. Used as timeout for receive_to_file
|
uint32_t run_length; // in ms. Used as timeout for receive_to_file
|
||||||
uint32_t run_I; // № current run
|
uint32_t run_I; // № current run
|
||||||
uint32_t runs_N; // total number of runs
|
uint32_t runs_N; // total number of runs
|
||||||
|
char data_path[200]; // base directory for data files
|
||||||
} main_state;
|
} main_state;
|
||||||
|
|
||||||
static void main_state_set_defaults(main_state* st) {
|
static void main_state_set_defaults(main_state* st) {
|
||||||
@ -168,6 +169,8 @@ static void main_state_set_defaults(main_state* st) {
|
|||||||
st->run_length = 1000;
|
st->run_length = 1000;
|
||||||
st->run_I = 0;
|
st->run_I = 0;
|
||||||
st->runs_N = 1;
|
st->runs_N = 1;
|
||||||
|
strncpy(st->data_path, "data", sizeof(st->data_path));
|
||||||
|
st->data_path[sizeof(st->data_path)-1] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
static char* f_trim(char* s) {
|
static char* f_trim(char* s) {
|
||||||
@ -227,6 +230,9 @@ static void parse_cmd_file(const char* filename, main_state* st) {
|
|||||||
char* endp = NULL;
|
char* endp = NULL;
|
||||||
unsigned long v = strtoul(value, &endp, 0);
|
unsigned long v = strtoul(value, &endp, 0);
|
||||||
if (endp != value) st->run_I = (uint32_t)v;
|
if (endp != value) st->run_I = (uint32_t)v;
|
||||||
|
} else if (strcmp(field, "data_path") == 0) {
|
||||||
|
strncpy(st->data_path, value, sizeof(st->data_path));
|
||||||
|
st->data_path[sizeof(st->data_path)-1] = '\0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
@ -720,8 +726,8 @@ int main(int argc, char** argv) {
|
|||||||
main_state_set_defaults(&state);
|
main_state_set_defaults(&state);
|
||||||
parse_cmd_file(cmd_filename, &state);
|
parse_cmd_file(cmd_filename, &state);
|
||||||
// отладочный вывод принятых значений
|
// отладочный вывод принятых значений
|
||||||
printf("Parsed state: run_mode=%d, BF_mode=%d, run_length=%u, runs_N=%u, run_I=%u\n",
|
printf("Parsed state: run_mode=%d, BF_mode=%d, run_length=%u, runs_N=%u, run_I=%u, data_path=%s\n",
|
||||||
(int)state.run_mode, (int)state.BF_mode, state.run_length, state.runs_N, state.run_I);
|
(int)state.run_mode, (int)state.BF_mode, state.run_length, state.runs_N, state.run_I, state.data_path);
|
||||||
|
|
||||||
/* Removed unused temporary buffers and FFT/LFSM placeholders */
|
/* Removed unused temporary buffers and FFT/LFSM placeholders */
|
||||||
|
|
||||||
@ -809,9 +815,9 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
if (state.run_mode == RUN_MODE_FINITE){
|
if (state.run_mode == RUN_MODE_FINITE){
|
||||||
state.run_I = 0;
|
state.run_I = 0;
|
||||||
char tmp_data_filename[] = " ";
|
char tmp_data_filename[256];
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
uint32_t max_total_words = 0;
|
uint32_t max_total_words = 1000000;
|
||||||
uint32_t *inp_buff = malloc(1024*100*1024*2*4);
|
uint32_t *inp_buff = malloc(1024*100*1024*2*4);
|
||||||
while(state.run_I < state.runs_N){
|
while(state.run_I < state.runs_N){
|
||||||
max_total_words = 10000000;
|
max_total_words = 10000000;
|
||||||
@ -819,7 +825,7 @@ int main(int argc, char** argv) {
|
|||||||
// sprintf(&tmp_data_filename, "tmp/received_data_%ld.%ld.csv", ts.tv_sec, ts.tv_nsec);
|
// sprintf(&tmp_data_filename, "tmp/received_data_%ld.%ld.csv", ts.tv_sec, ts.tv_nsec);
|
||||||
// sprintf(&logfilename, "tmp/received_data_%ld.%ld.csv", ts.tv_sec, ts.tv_nsec);
|
// sprintf(&logfilename, "tmp/received_data_%ld.%ld.csv", ts.tv_sec, ts.tv_nsec);
|
||||||
//sprintf(&logfilename, "data/received_data_%ld.csv", seconds);
|
//sprintf(&logfilename, "data/received_data_%ld.csv", seconds);
|
||||||
snprintf(tmp_data_filename, sizeof(tmp_data_filename), "tmp/received_data_%ld.%ld.csv", ts.tv_sec, ts.tv_nsec);
|
snprintf(tmp_data_filename, sizeof(tmp_data_filename), "%s/received_data_%ld.%ld.csv", state.data_path, ts.tv_sec, ts.tv_nsec);
|
||||||
printf("%u/%u dumping to file: %s\n", (unsigned)state.run_I, (unsigned)state.runs_N, tmp_data_filename);
|
printf("%u/%u dumping to file: %s\n", (unsigned)state.run_I, (unsigned)state.runs_N, tmp_data_filename);
|
||||||
receive_to_file(hnd, tmp_data_filename, inp_buff, max_total_words, state.run_length);
|
receive_to_file(hnd, tmp_data_filename, inp_buff, max_total_words, state.run_length);
|
||||||
|
|
||||||
@ -833,7 +839,7 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
}else if (state.run_mode == RUN_MODE_INF){
|
}else if (state.run_mode == RUN_MODE_INF){
|
||||||
state.run_I = 0;
|
state.run_I = 0;
|
||||||
char tmp_data_filename[] = " ";
|
char tmp_data_filename[256];
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
uint32_t max_total_words = 0;
|
uint32_t max_total_words = 0;
|
||||||
uint32_t *inp_buff = malloc(1024*100*1024*2*4);
|
uint32_t *inp_buff = malloc(1024*100*1024*2*4);
|
||||||
@ -844,7 +850,7 @@ int main(int argc, char** argv) {
|
|||||||
// sprintf(&tmp_data_filename, "tmp/received_data_%ld.%ld.csv", ts.tv_sec, ts.tv_nsec);
|
// sprintf(&tmp_data_filename, "tmp/received_data_%ld.%ld.csv", ts.tv_sec, ts.tv_nsec);
|
||||||
// sprintf(&logfilename, "tmp/received_data_%ld.%ld.csv", ts.tv_sec, ts.tv_nsec);
|
// sprintf(&logfilename, "tmp/received_data_%ld.%ld.csv", ts.tv_sec, ts.tv_nsec);
|
||||||
//sprintf(&logfilename, "data/received_data_%ld.csv", seconds);
|
//sprintf(&logfilename, "data/received_data_%ld.csv", seconds);
|
||||||
snprintf(tmp_data_filename, sizeof(tmp_data_filename), "tmp/received_data_%ld.%ld.csv", ts.tv_sec, ts.tv_nsec);
|
snprintf(tmp_data_filename, sizeof(tmp_data_filename), "%s/received_data_%ld.%ld.csv", state.data_path, ts.tv_sec, ts.tv_nsec);
|
||||||
printf("%u dumping to file: %s\n", (unsigned)state.run_I, tmp_data_filename);
|
printf("%u dumping to file: %s\n", (unsigned)state.run_I, tmp_data_filename);
|
||||||
receive_to_file(hnd, tmp_data_filename, inp_buff, max_total_words, state.run_length);
|
receive_to_file(hnd, tmp_data_filename, inp_buff, max_total_words, state.run_length);
|
||||||
state.run_I++;
|
state.run_I++;
|
||||||
@ -862,8 +868,8 @@ int main(int argc, char** argv) {
|
|||||||
|
|
||||||
time_t seconds;
|
time_t seconds;
|
||||||
time(&seconds);
|
time(&seconds);
|
||||||
char logfilename[] = " ";
|
char logfilename[256];
|
||||||
sprintf(&logfilename, "data/received_data_%ld.csv", seconds);
|
snprintf(logfilename, sizeof(logfilename), "%s/received_data_%ld.csv", state.data_path, (long)seconds);
|
||||||
//logfile_ptr = fopen(logfilename, "w");
|
//logfile_ptr = fopen(logfilename, "w");
|
||||||
FILE *logfile_ptr;
|
FILE *logfile_ptr;
|
||||||
logfile_ptr = fopen(logfilename, "a");
|
logfile_ptr = fopen(logfilename, "a");
|
||||||
|
|||||||
Reference in New Issue
Block a user