From 87954d40d9de510cc12512e4f53e8a37a545810e Mon Sep 17 00:00:00 2001 From: Theodor Chikin Date: Thu, 13 Nov 2025 22:30:17 +0300 Subject: [PATCH] now path to data storage is configurable by .cmd file --- main.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/main.c b/main.c index 6d4e18f..615fb53 100644 --- a/main.c +++ b/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_I; // № current run uint32_t runs_N; // total number of runs + char data_path[200]; // base directory for data files } main_state; 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_I = 0; 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) { @@ -227,6 +230,9 @@ static void parse_cmd_file(const char* filename, main_state* st) { char* endp = NULL; unsigned long v = strtoul(value, &endp, 0); 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); @@ -720,8 +726,8 @@ int main(int argc, char** argv) { main_state_set_defaults(&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", - (int)state.run_mode, (int)state.BF_mode, state.run_length, state.runs_N, state.run_I); + 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, state.data_path); /* 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){ state.run_I = 0; - char tmp_data_filename[] = " "; + char tmp_data_filename[256]; 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); while(state.run_I < state.runs_N){ 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(&logfilename, "tmp/received_data_%ld.%ld.csv", ts.tv_sec, ts.tv_nsec); //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); 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){ state.run_I = 0; - char tmp_data_filename[] = " "; + char tmp_data_filename[256]; struct timespec ts; uint32_t max_total_words = 0; 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(&logfilename, "tmp/received_data_%ld.%ld.csv", ts.tv_sec, ts.tv_nsec); //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); receive_to_file(hnd, tmp_data_filename, inp_buff, max_total_words, state.run_length); state.run_I++; @@ -862,8 +868,8 @@ int main(int argc, char** argv) { time_t seconds; time(&seconds); - char logfilename[] = " "; - sprintf(&logfilename, "data/received_data_%ld.csv", seconds); + char logfilename[256]; + snprintf(logfilename, sizeof(logfilename), "%s/received_data_%ld.csv", state.data_path, (long)seconds); //logfile_ptr = fopen(logfilename, "w"); FILE *logfile_ptr; logfile_ptr = fopen(logfilename, "a");