diff --git a/src/pifmrds/control_pipe.c b/src/pifmrds/control_pipe.c index decd821..999da52 100644 --- a/src/pifmrds/control_pipe.c +++ b/src/pifmrds/control_pipe.c @@ -139,6 +139,9 @@ ResultAndArg poll_control_pipe() { if(rds) printf("OFF\n"); else printf("ON\n"); resarg.res = CONTROL_PIPE_RDS_SET; resarg.arg = (char)rds; + } else if(fifo[0] == 'D' && fifo[1] == 'E' && fifo[2] == 'V') { + resarg.res = CONTROL_PIPE_DEVIATION_SET; + resarg.arg = atoi(arg); } } return resarg; diff --git a/src/pifmrds/control_pipe.h b/src/pifmrds/control_pipe.h index d92d876..358d77b 100644 --- a/src/pifmrds/control_pipe.h +++ b/src/pifmrds/control_pipe.h @@ -15,6 +15,7 @@ #define CONTROL_PIPE_PI_SET 8 #define CONTROL_PIPE_PWR_SET 9 #define CONTROL_PIPE_RDS_SET 10 +#define CONTROL_PIPE_DEVIATION_SET 11 typedef struct { int res; diff --git a/src/pifmrds/pi_fm_rds.cpp b/src/pifmrds/pi_fm_rds.cpp index 0526dc7..d6908f8 100644 --- a/src/pifmrds/pi_fm_rds.cpp +++ b/src/pifmrds/pi_fm_rds.cpp @@ -192,6 +192,9 @@ int tx(uint32_t carrier_freq, char *audio_file, uint16_t pi, char *ps, char *rt, } else if(pollResult.res == CONTROL_PIPE_PWR_SET) { pad_reg[GPIO_PAD_0_27] = 0x5a000018 + (int)pollResult.arg; pad_reg[GPIO_PAD_28_45] = 0x5a000018 + (int)pollResult.arg; + } else if(pollResult.res == CONTROL_PIPE_DEVIATION_SET) { + deviation = pollResult.arg; + deviation_scale_factor= 0.1 * (deviation ); } }