diff --git a/BF_companion b/BF_companion index 4112af0..45b53ac 100755 Binary files a/BF_companion and b/BF_companion differ diff --git a/build/main.o b/build/main.o index 644d7f0..c323d52 100644 Binary files a/build/main.o and b/build/main.o differ diff --git a/main.c b/main.c index 615fb53..a8f5515 100644 --- a/main.c +++ b/main.c @@ -154,9 +154,16 @@ typedef enum { BF_MODE_AVG = 1 } bf_mode_t; +typedef enum { + BFMODE_TRANSPARENT = 0, + BFMODE_AVG = 1, + BFMODE_FFT = 2 +} blackfin_mode_t; + typedef struct main_state_typedef{ run_mode_t run_mode; // TEST, FINITE_RUN, INF_RUN bf_mode_t BF_mode; // TRANSPARENT, AVG + blackfin_mode_t BlackFin_mode; // TRANSPARENT, AVG, FFT 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 @@ -166,6 +173,7 @@ typedef struct main_state_typedef{ static void main_state_set_defaults(main_state* st) { st->run_mode = RUN_MODE_TEST; st->BF_mode = BF_MODE_TRANSPARENT; + st->BlackFin_mode = BFMODE_TRANSPARENT; st->run_length = 1000; st->run_I = 0; st->runs_N = 1; @@ -218,6 +226,16 @@ static void parse_cmd_file(const char* filename, main_state* st) { } else { st->BF_mode = BF_MODE_TRANSPARENT; // default on mismatch } + } else if (strcmp(field, "BlackFin_mode") == 0) { + if (strcmp(value, "TRANSPARENT") == 0) { + st->BlackFin_mode = BFMODE_TRANSPARENT; + } else if (strcmp(value, "AVG") == 0) { + st->BlackFin_mode = BFMODE_AVG; + } else if (strcmp(value, "FFT") == 0) { + st->BlackFin_mode = BFMODE_FFT; + } else { + st->BlackFin_mode = BFMODE_TRANSPARENT; // default on mismatch + } } else if (strcmp(field, "run_length") == 0) { char* endp = NULL; unsigned long v = strtoul(value, &endp, 0); @@ -675,7 +693,11 @@ void insert_marker_to_file(char* logfilename, char* marker_text){ void receive_to_file(t_x502_hnd hnd, char* logfilename, uint32_t* inp_buff, uint32_t max_total_words, uint32_t timeout){ - FILE* logfile_ptr = fopen(logfilename, "a"); + char logfilename_tmp[300]; + snprintf(logfilename_tmp, sizeof(logfilename_tmp), "%s.tmp", logfilename); + printf("tmp file: %s ",logfilename_tmp); + FILE* logfile_ptr = fopen(logfilename_tmp, "a"); + // fprintf(logfile_ptr, "0xFF00000 \n"); // fprintf(logfile_ptr, "0xFFFFFFF \n"); @@ -695,6 +717,7 @@ void receive_to_file(t_x502_hnd hnd, char* logfilename, uint32_t* inp_buff, uint printf("receive error: %d\n======================\n", recv_Err_code); } fclose(logfile_ptr); + rename(logfilename_tmp, logfilename); } @@ -726,8 +749,9 @@ 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, data_path=%s\n", - (int)state.run_mode, (int)state.BF_mode, state.run_length, state.runs_N, state.run_I, state.data_path); + printf("Parsed state: run_mode=%d, BF_mode=%d, BlackFin_mode=%d, run_length=%u, runs_N=%u, run_I=%u, data_path=%s\n", + (int)state.run_mode, (int)state.BF_mode, (int)state.BlackFin_mode, + state.run_length, state.runs_N, state.run_I, state.data_path); /* Removed unused temporary buffers and FFT/LFSM placeholders */