remove rds2

This commit is contained in:
2025-03-22 20:13:16 +01:00
parent 2af1485bf2
commit 8ace0112a7
5 changed files with 9 additions and 57 deletions
+3 -9
View File
@@ -78,13 +78,13 @@ void init_rds_modulator(RDSModulator* rdsMod, RDSEncoder* enc) {
} }
} }
float get_rds_sample(RDSModulator* rdsMod, bool rds2) { float get_rds_sample(RDSModulator* rdsMod) {
uint16_t idx; uint16_t idx;
float *cur_waveform; float *cur_waveform;
float sample; float sample;
if (rdsMod->sample_count == SAMPLES_PER_BIT) { if (rdsMod->sample_count == SAMPLES_PER_BIT) {
if (rdsMod->bit_pos == BITS_PER_GROUP) { if (rdsMod->bit_pos == BITS_PER_GROUP) {
get_rds_bits(rdsMod->enc, rdsMod->bit_buffer, rds2); get_rds_bits(rdsMod->enc, rdsMod->bit_buffer);
rdsMod->bit_pos = 0; rdsMod->bit_pos = 0;
} }
@@ -112,11 +112,5 @@ float get_rds_sample(RDSModulator* rdsMod, bool rds2) {
rdsMod->sample_buffer[rdsMod->out_sample_index++] = 0; rdsMod->sample_buffer[rdsMod->out_sample_index++] = 0;
if (rdsMod->out_sample_index == SAMPLE_BUFFER_SIZE) if (rdsMod->out_sample_index == SAMPLE_BUFFER_SIZE)
rdsMod->out_sample_index = 0; rdsMod->out_sample_index = 0;
float out = sample*rdsMod->params.level; return sample*rdsMod->params.level*rdsMod->params.rdsgen;
if (rdsMod->params.rdsgen == 0) {
out = 0;
} else if (rdsMod->params.rdsgen == 1 && rds2) {
out = 0;
}
return out;
} }
+1 -1
View File
@@ -29,4 +29,4 @@ void Modulator_saveToFile(RDSModulatorParameters *emp, const char *option);
void Modulator_loadFromFile(RDSModulatorParameters *emp); void Modulator_loadFromFile(RDSModulatorParameters *emp);
int modulatorsaved(); int modulatorsaved();
void init_rds_modulator(RDSModulator* rdsMod, RDSEncoder* enc); void init_rds_modulator(RDSModulator* rdsMod, RDSEncoder* enc);
float get_rds_sample(RDSModulator* rdsMod, bool rds2); float get_rds_sample(RDSModulator* rdsMod);
+3 -9
View File
@@ -546,14 +546,8 @@ static uint8_t get_rds_custom_groups(RDSEncoder* enc, uint16_t *blocks) {
return 0; return 0;
} }
static void get_rds_group(RDSEncoder* enc, uint16_t *blocks, bool rds2) { static void get_rds_group(RDSEncoder* enc, uint16_t *blocks) {
blocks[0] = enc->data[enc->program].pi; blocks[0] = enc->data[enc->program].pi;
if(rds2) blocks[0] = 0; // tunneling
// if(rds2 && !enc->encoder_data.rds2_mode) blocks[0] = 0; // tunneling
// else if(rds2 && enc->encoder_data.rds2_mode) {
// // TODO: add rds2 only stuff
// goto group_coded;
// }
blocks[1] = 0; blocks[1] = 0;
blocks[2] = 0; blocks[2] = 0;
blocks[3] = 0; blocks[3] = 0;
@@ -732,9 +726,9 @@ group_coded:
} }
} }
void get_rds_bits(RDSEncoder* enc, uint8_t *bits, bool rds2) { void get_rds_bits(RDSEncoder* enc, uint8_t *bits) {
static uint16_t out_blocks[GROUP_LENGTH]; static uint16_t out_blocks[GROUP_LENGTH];
get_rds_group(enc, out_blocks, rds2); get_rds_group(enc, out_blocks);
add_checkwords(out_blocks, bits); add_checkwords(out_blocks, bits);
} }
+1 -1
View File
@@ -333,7 +333,7 @@ int rdssaved();
void reset_rds_state(RDSEncoder* enc, uint8_t program); void reset_rds_state(RDSEncoder* enc, uint8_t program);
void set_rds_defaults(RDSEncoder* enc, uint8_t program); void set_rds_defaults(RDSEncoder* enc, uint8_t program);
void init_rds_encoder(RDSEncoder* enc); void init_rds_encoder(RDSEncoder* enc);
void get_rds_bits(RDSEncoder* enc, uint8_t *bits, bool rds2); void get_rds_bits(RDSEncoder* enc, uint8_t *bits);
void set_rds_rt1(RDSEncoder* enc, char *rt1); void set_rds_rt1(RDSEncoder* enc, char *rt1);
void set_rds_rt2(RDSEncoder* enc, char *rt2); void set_rds_rt2(RDSEncoder* enc, char *rt2);
void set_rds_dps1(RDSEncoder* enc, char *dps1); void set_rds_dps1(RDSEncoder* enc, char *dps1);
+1 -37
View File
@@ -12,7 +12,6 @@
#include "ascii_cmd.h" #include "ascii_cmd.h"
#define RDS_DEVICE "RDS" #define RDS_DEVICE "RDS"
#define RDS2_DEVICE "RDS2"
#define NUM_MPX_FRAMES 512 #define NUM_MPX_FRAMES 512
@@ -56,9 +55,6 @@ int main(int argc, char **argv) {
char control_pipe[51] = "\0"; char control_pipe[51] = "\0";
pa_simple *rds1_device; pa_simple *rds1_device;
#ifdef RDS2_DEVICE
pa_simple *rds2_device = NULL;
#endif
pa_sample_spec format; pa_sample_spec format;
pa_buffer_attr buffer; pa_buffer_attr buffer;
@@ -117,23 +113,6 @@ int main(int argc, char **argv) {
fprintf(stderr, "Error: cannot open sound device.\n"); fprintf(stderr, "Error: cannot open sound device.\n");
goto exit; goto exit;
} }
#ifdef RDS2_DEVICE
rds2_device = pa_simple_new(
NULL,
"rds95",
PA_STREAM_PLAYBACK,
RDS2_DEVICE,
"RDS2 Generator",
&format,
NULL,
&buffer,
NULL
);
if(rds2_device == NULL) {
fprintf(stderr, "Error: cannot open RDS2 sound device.\n");
goto exit;
}
#endif
RDSEncoder rdsEncoder; RDSEncoder rdsEncoder;
RDSModulator rdsModulator; RDSModulator rdsModulator;
@@ -161,28 +140,16 @@ int main(int argc, char **argv) {
int pulse_error; int pulse_error;
float rds1_buffer[NUM_MPX_FRAMES]; float rds1_buffer[NUM_MPX_FRAMES];
#ifdef RDS2_DEVICE
float rds2_buffer[NUM_MPX_FRAMES];
#endif
while(!stop_rds) { while(!stop_rds) {
for (uint16_t i = 0; i < NUM_MPX_FRAMES; i++) { for (uint16_t i = 0; i < NUM_MPX_FRAMES; i++) {
rds1_buffer[i] = get_rds_sample(&rdsModulator, false); rds1_buffer[i] = get_rds_sample(&rdsModulator);
#ifdef RDS2_DEVICE
rds2_buffer[i] = get_rds_sample(&rdsModulator, true);
#endif
} }
if (pa_simple_write(rds1_device, rds1_buffer, sizeof(rds1_buffer), &pulse_error) != 0) { if (pa_simple_write(rds1_device, rds1_buffer, sizeof(rds1_buffer), &pulse_error) != 0) {
fprintf(stderr, "Error: could not play audio. (%s : %d)\n", pa_strerror(pulse_error), pulse_error); fprintf(stderr, "Error: could not play audio. (%s : %d)\n", pa_strerror(pulse_error), pulse_error);
break; break;
} }
#ifdef RDS2_DEVICE
if (pa_simple_write(rds2_device, rds2_buffer, sizeof(rds2_buffer), &pulse_error) != 0) {
fprintf(stderr, "Error: could not play audio. RDS2 (%s : %d)\n", pa_strerror(pulse_error), pulse_error);
break;
}
#endif
} }
exit: exit:
@@ -193,9 +160,6 @@ exit:
pthread_attr_destroy(&attr); pthread_attr_destroy(&attr);
pa_simple_free(rds1_device); pa_simple_free(rds1_device);
#ifdef RDS2_DEVICE
pa_simple_free(rds2_device);
#endif
return 0; return 0;
} }