implemented BF mode switching

This commit is contained in:
2025-11-14 00:18:15 +03:00
parent 6b2beafc86
commit f0f8e4e6e6
3 changed files with 46 additions and 4 deletions

Binary file not shown.

Binary file not shown.

50
main.c
View File

@ -151,7 +151,8 @@ typedef enum {
typedef enum { typedef enum {
BF_MODE_TRANSPARENT = 0, BF_MODE_TRANSPARENT = 0,
BF_MODE_AVG = 1 BF_MODE_AVG = 1,
BF_MODE_FFT = 2
} bf_mode_t; } bf_mode_t;
typedef enum { typedef enum {
@ -222,7 +223,9 @@ static void parse_cmd_file(const char* filename, main_state* st) {
if (strcmp(value, "TRANSPARENT") == 0) { if (strcmp(value, "TRANSPARENT") == 0) {
st->BF_mode = BF_MODE_TRANSPARENT; st->BF_mode = BF_MODE_TRANSPARENT;
} else if (strcmp(value, "AVG") == 0) { } else if (strcmp(value, "AVG") == 0) {
st->BF_mode = BF_MODE_AVG; st->BF_mode = BF_MODE_AVG;
} else if (strcmp(value, "FFT") == 0) {
st->BF_mode = BF_MODE_FFT;
} else { } else {
st->BF_mode = BF_MODE_TRANSPARENT; // default on mismatch st->BF_mode = BF_MODE_TRANSPARENT; // default on mismatch
} }
@ -837,7 +840,25 @@ int main(int argc, char** argv) {
printf("Streams start err: %d \n", streams_start_Err); printf("Streams start err: %d \n", streams_start_Err);
if (state.run_mode == RUN_MODE_FINITE){ if (state.run_mode == RUN_MODE_FINITE){
if (state.BF_mode == BF_MODE_TRANSPARENT){
printf("\nStart transparent mode\n");
BF_exec_cmd_simple(hnd, 0x8007, 10, 1); //start transparent
}else if(state.BF_mode == BF_MODE_FFT){
printf("\nStart FFt mode\n");
BF_exec_cmd_simple(hnd, 0x8008, 2, 1); //start averaging
}else if(state.BF_mode == BF_MODE_AVG){
printf("\nStart AVG mode\n");
BF_exec_cmd_simple(hnd, 0x8009, 2, 1); //start averaging
}
X502_StreamsStop(hnd);
X502_StreamsStart(hnd);
// for(uint32_t wait_i = 1e6; wait_i; --wait_i){;}
printf("\nFlushed from receiving buff: %d\n", X502_FlushRcv_buff(hnd));
state.run_I = 0; state.run_I = 0;
char tmp_data_filename[256]; char tmp_data_filename[256];
struct timespec ts; struct timespec ts;
@ -851,7 +872,9 @@ int main(int argc, char** argv) {
//sprintf(&logfilename, "data/received_data_%ld.csv", seconds); //sprintf(&logfilename, "data/received_data_%ld.csv", seconds);
snprintf(tmp_data_filename, sizeof(tmp_data_filename), "%s/received_data_%ld.%ld.csv", state.data_path, 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);
X502_StreamsStop(hnd);
X502_StreamsStart(hnd);
state.run_I++; state.run_I++;
} }
@ -862,6 +885,25 @@ int main(int argc, char** argv) {
return 0; return 0;
}else if (state.run_mode == RUN_MODE_INF){ }else if (state.run_mode == RUN_MODE_INF){
if (state.BF_mode == BF_MODE_TRANSPARENT){
printf("\nStart transparent mode\n");
BF_exec_cmd_simple(hnd, 0x8007, 10, 1); //start transparent
}else if(state.BF_mode == BF_MODE_FFT){
printf("\nStart FFt mode\n");
BF_exec_cmd_simple(hnd, 0x8008, 2, 1); //start averaging
}else if(state.BF_mode == BF_MODE_AVG){
printf("\nStart AVG mode\n");
BF_exec_cmd_simple(hnd, 0x8009, 2, 1); //start averaging
}
X502_StreamsStop(hnd);
X502_StreamsStart(hnd);
// for(uint32_t wait_i = 1e6; wait_i; --wait_i){;}
printf("\nFlushed from receiving buff: %d\n", X502_FlushRcv_buff(hnd));
state.run_I = 0; state.run_I = 0;
char tmp_data_filename[256]; char tmp_data_filename[256];
struct timespec ts; struct timespec ts;