mirror of
https://github.com/radio95-rnt/rds95.git
synced 2026-02-26 20:33:53 +01:00
reduce branching and a bit clean up
This commit is contained in:
@@ -206,9 +206,8 @@ static void handle_adr(char *arg, RDSModulator* mod, char* output) {
|
|||||||
static void handle_site(char *arg, RDSModulator* mod, char* output) {
|
static void handle_site(char *arg, RDSModulator* mod, char* output) {
|
||||||
uint16_t ids[2];
|
uint16_t ids[2];
|
||||||
int count = sscanf(arg, "%4hu,%4hu", &ids[0], &ids[1]);
|
int count = sscanf(arg, "%4hu,%4hu", &ids[0], &ids[1]);
|
||||||
if(count == 1) {
|
if(count == 1) mod->enc->encoder_data.site_addr[0] = ids[0];
|
||||||
mod->enc->encoder_data.site_addr[0] = ids[0];
|
else if(count == 2) {
|
||||||
} else if(count == 2) {
|
|
||||||
mod->enc->encoder_data.site_addr[0] = ids[0];
|
mod->enc->encoder_data.site_addr[0] = ids[0];
|
||||||
mod->enc->encoder_data.site_addr[1] = ids[1];
|
mod->enc->encoder_data.site_addr[1] = ids[1];
|
||||||
} else {
|
} else {
|
||||||
@@ -226,15 +225,14 @@ static void handle_g(char *arg, RDSModulator* mod, char* output) {
|
|||||||
mod->enc->state[mod->enc->program].custom_group[1] = blocks[0];
|
mod->enc->state[mod->enc->program].custom_group[1] = blocks[0];
|
||||||
mod->enc->state[mod->enc->program].custom_group[2] = blocks[1];
|
mod->enc->state[mod->enc->program].custom_group[2] = blocks[1];
|
||||||
mod->enc->state[mod->enc->program].custom_group[3] = blocks[2];
|
mod->enc->state[mod->enc->program].custom_group[3] = blocks[2];
|
||||||
strcpy(output, "+");
|
|
||||||
} else if(count == 4) {
|
} else if(count == 4) {
|
||||||
mod->enc->state[mod->enc->program].custom_group2[0] = 1;
|
mod->enc->state[mod->enc->program].custom_group2[0] = 1;
|
||||||
mod->enc->state[mod->enc->program].custom_group2[1] = blocks[0];
|
mod->enc->state[mod->enc->program].custom_group2[1] = blocks[0];
|
||||||
mod->enc->state[mod->enc->program].custom_group2[2] = blocks[1];
|
mod->enc->state[mod->enc->program].custom_group2[2] = blocks[1];
|
||||||
mod->enc->state[mod->enc->program].custom_group2[3] = blocks[2];
|
mod->enc->state[mod->enc->program].custom_group2[3] = blocks[2];
|
||||||
mod->enc->state[mod->enc->program].custom_group2[4] = blocks[3];
|
mod->enc->state[mod->enc->program].custom_group2[4] = blocks[3];
|
||||||
strcpy(output, "+");
|
|
||||||
} else strcpy(output, "-");
|
} else strcpy(output, "-");
|
||||||
|
strcpy(output, "+");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handle_rt1en(char *arg, RDSModulator* mod, char* output) {
|
static void handle_rt1en(char *arg, RDSModulator* mod, char* output) {
|
||||||
@@ -483,9 +481,7 @@ static void handle_eonaf(char *arg, char *pattern, RDSModulator* mod, char* outp
|
|||||||
af_iter = af;
|
af_iter = af;
|
||||||
memset(&new_af, 0, sizeof(RDSAFs));
|
memset(&new_af, 0, sizeof(RDSAFs));
|
||||||
|
|
||||||
while (arg_count-- != 0) {
|
while (arg_count-- != 0) add_rds_af(&new_af, *af_iter++);
|
||||||
add_rds_af(&new_af, *af_iter++);
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(&(mod->enc->data[mod->enc->program].eon[atoi(pattern)-1].af), &new_af, sizeof(mod->enc->data[mod->enc->program].eon[atoi(pattern)-1].af));
|
memcpy(&(mod->enc->data[mod->enc->program].eon[atoi(pattern)-1].af), &new_af, sizeof(mod->enc->data[mod->enc->program].eon[atoi(pattern)-1].af));
|
||||||
strcpy(output, "+\0");
|
strcpy(output, "+\0");
|
||||||
@@ -628,9 +624,6 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
|||||||
|
|
||||||
char *cmd, *arg;
|
char *cmd, *arg;
|
||||||
|
|
||||||
char output[255];
|
|
||||||
memset(output, 0, sizeof(output));
|
|
||||||
|
|
||||||
char upper_str[CTL_BUFFER_SIZE];
|
char upper_str[CTL_BUFFER_SIZE];
|
||||||
uint16_t cmd_len = _strnlen((const char*)str, CTL_BUFFER_SIZE);
|
uint16_t cmd_len = _strnlen((const char*)str, CTL_BUFFER_SIZE);
|
||||||
for(uint16_t i = 0; i < cmd_len; i++) if(str[i] == '\t') str[i] = ' ';
|
for(uint16_t i = 0; i < cmd_len; i++) if(str[i] == '\t') str[i] = ' ';
|
||||||
@@ -645,7 +638,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
|||||||
for (size_t i = 0; i < sizeof(commands_exact) / sizeof(command_handler_t); i++) {
|
for (size_t i = 0; i < sizeof(commands_exact) / sizeof(command_handler_t); i++) {
|
||||||
const command_handler_t *handler = &commands_exact[i];
|
const command_handler_t *handler = &commands_exact[i];
|
||||||
if (cmd_len == handler->cmd_length && strcmp(upper_str, handler->cmd) == 0) {
|
if (cmd_len == handler->cmd_length && strcmp(upper_str, handler->cmd) == 0) {
|
||||||
handler->handler(NULL, mod, output);
|
handler->handler(NULL, mod, cmd_output);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -667,7 +660,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
|||||||
cmd = upper_str;
|
cmd = upper_str;
|
||||||
cmd[equals_pos - upper_str] = 0;
|
cmd[equals_pos - upper_str] = 0;
|
||||||
arg = equals_pos + 1;
|
arg = equals_pos + 1;
|
||||||
process_pattern_commands(cmd, arg, output, mod);
|
process_pattern_commands(cmd, arg, cmd_output, mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t cmd_reached = 0;
|
uint8_t cmd_reached = 0;
|
||||||
@@ -676,7 +669,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
|||||||
cmd = upper_str;
|
cmd = upper_str;
|
||||||
cmd[1] = 0;
|
cmd[1] = 0;
|
||||||
arg = str + 2;
|
arg = str + 2;
|
||||||
process_command_table(commands_eq2, sizeof(commands_eq2) / sizeof(command_handler_t), cmd, arg, output, mod);
|
process_command_table(commands_eq2, sizeof(commands_eq2) / sizeof(command_handler_t), cmd, arg, cmd_output, mod);
|
||||||
cmd_reached = 1;
|
cmd_reached = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -684,7 +677,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
|||||||
cmd = upper_str;
|
cmd = upper_str;
|
||||||
cmd[2] = 0;
|
cmd[2] = 0;
|
||||||
arg = str + 3;
|
arg = str + 3;
|
||||||
process_command_table(commands_eq3, sizeof(commands_eq3) / sizeof(command_handler_t), cmd, arg, output, mod);
|
process_command_table(commands_eq3, sizeof(commands_eq3) / sizeof(command_handler_t), cmd, arg, cmd_output, mod);
|
||||||
cmd_reached = 1;
|
cmd_reached = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -692,7 +685,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
|||||||
cmd = upper_str;
|
cmd = upper_str;
|
||||||
cmd[3] = 0;
|
cmd[3] = 0;
|
||||||
arg = str + 4;
|
arg = str + 4;
|
||||||
process_command_table(commands_eq4, sizeof(commands_eq4) / sizeof(command_handler_t), cmd, arg, output, mod);
|
process_command_table(commands_eq4, sizeof(commands_eq4) / sizeof(command_handler_t), cmd, arg, cmd_output, mod);
|
||||||
cmd_reached = 1;
|
cmd_reached = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -700,7 +693,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
|||||||
cmd = upper_str;
|
cmd = upper_str;
|
||||||
cmd[4] = 0;
|
cmd[4] = 0;
|
||||||
arg = str + 5;
|
arg = str + 5;
|
||||||
process_command_table(commands_eq5, sizeof(commands_eq5) / sizeof(command_handler_t), cmd, arg, output, mod);
|
process_command_table(commands_eq5, sizeof(commands_eq5) / sizeof(command_handler_t), cmd, arg, cmd_output, mod);
|
||||||
cmd_reached = 1;
|
cmd_reached = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -708,7 +701,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
|||||||
cmd = upper_str;
|
cmd = upper_str;
|
||||||
cmd[5] = 0;
|
cmd[5] = 0;
|
||||||
arg = str + 6;
|
arg = str + 6;
|
||||||
process_command_table(commands_eq6, sizeof(commands_eq6) / sizeof(command_handler_t), cmd, arg, output, mod);
|
process_command_table(commands_eq6, sizeof(commands_eq6) / sizeof(command_handler_t), cmd, arg, cmd_output, mod);
|
||||||
cmd_reached = 1;
|
cmd_reached = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -716,7 +709,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
|||||||
cmd = upper_str;
|
cmd = upper_str;
|
||||||
cmd[6] = 0;
|
cmd[6] = 0;
|
||||||
arg = str + 7;
|
arg = str + 7;
|
||||||
process_command_table(commands_eq7, sizeof(commands_eq7) / sizeof(command_handler_t), cmd, arg, output, mod);
|
process_command_table(commands_eq7, sizeof(commands_eq7) / sizeof(command_handler_t), cmd, arg, cmd_output, mod);
|
||||||
cmd_reached = 1;
|
cmd_reached = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -724,10 +717,9 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
|||||||
cmd = upper_str;
|
cmd = upper_str;
|
||||||
cmd[7] = 0;
|
cmd[7] = 0;
|
||||||
arg = str + 8;
|
arg = str + 8;
|
||||||
process_command_table(commands_eq8, sizeof(commands_eq8) / sizeof(command_handler_t), cmd, arg, output, mod);
|
process_command_table(commands_eq8, sizeof(commands_eq8) / sizeof(command_handler_t), cmd, arg, cmd_output, mod);
|
||||||
cmd_reached = 1;
|
cmd_reached = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd_output != NULL && cmd_reached) strcpy(cmd_output, output);
|
|
||||||
if (!cmd_reached) strcpy(cmd_output, "?\0");
|
if (!cmd_reached) strcpy(cmd_output, "?\0");
|
||||||
}
|
}
|
||||||
@@ -84,12 +84,18 @@ void init_rds_modulator(RDSModulator* rdsMod, RDSEncoder* enc) {
|
|||||||
|
|
||||||
rdsMod->enc = enc;
|
rdsMod->enc = enc;
|
||||||
|
|
||||||
if(STREAMS > 0) rdsMod->data[1].symbol_shift = M_PI;
|
#if STREAMS > 1
|
||||||
if(modulatorsaved()) {
|
rdsMod->data[1].symbol_shift = M_PI/2;
|
||||||
Modulator_loadFromFile(&rdsMod->params);
|
#if STREAMS > 2
|
||||||
} else {
|
rdsMod->data[2].symbol_shift = M_PI;
|
||||||
Modulator_saveToFile(&rdsMod->params, "ALL");
|
#if STREAMS > 3
|
||||||
}
|
rdsMod->data[3].symbol_shift = 3*M_PI/2;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if(modulatorsaved()) Modulator_loadFromFile(&rdsMod->params);
|
||||||
|
else Modulator_saveToFile(&rdsMod->params, "ALL");
|
||||||
}
|
}
|
||||||
|
|
||||||
float get_rds_sample(RDSModulator* rdsMod, uint8_t stream) {
|
float get_rds_sample(RDSModulator* rdsMod, uint8_t stream) {
|
||||||
|
|||||||
Reference in New Issue
Block a user