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) {
|
||||
uint16_t ids[2];
|
||||
int count = sscanf(arg, "%4hu,%4hu", &ids[0], &ids[1]);
|
||||
if(count == 1) {
|
||||
mod->enc->encoder_data.site_addr[0] = ids[0];
|
||||
} else if(count == 2) {
|
||||
if(count == 1) mod->enc->encoder_data.site_addr[0] = ids[0];
|
||||
else if(count == 2) {
|
||||
mod->enc->encoder_data.site_addr[0] = ids[0];
|
||||
mod->enc->encoder_data.site_addr[1] = ids[1];
|
||||
} 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[2] = blocks[1];
|
||||
mod->enc->state[mod->enc->program].custom_group[3] = blocks[2];
|
||||
strcpy(output, "+");
|
||||
} else if(count == 4) {
|
||||
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[2] = blocks[1];
|
||||
mod->enc->state[mod->enc->program].custom_group2[3] = blocks[2];
|
||||
mod->enc->state[mod->enc->program].custom_group2[4] = blocks[3];
|
||||
strcpy(output, "+");
|
||||
} else strcpy(output, "-");
|
||||
strcpy(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;
|
||||
memset(&new_af, 0, sizeof(RDSAFs));
|
||||
|
||||
while (arg_count-- != 0) {
|
||||
add_rds_af(&new_af, *af_iter++);
|
||||
}
|
||||
while (arg_count-- != 0) 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));
|
||||
strcpy(output, "+\0");
|
||||
@@ -628,9 +624,6 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
||||
|
||||
char *cmd, *arg;
|
||||
|
||||
char output[255];
|
||||
memset(output, 0, sizeof(output));
|
||||
|
||||
char upper_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] = ' ';
|
||||
@@ -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++) {
|
||||
const command_handler_t *handler = &commands_exact[i];
|
||||
if (cmd_len == handler->cmd_length && strcmp(upper_str, handler->cmd) == 0) {
|
||||
handler->handler(NULL, mod, output);
|
||||
handler->handler(NULL, mod, cmd_output);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -667,7 +660,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
||||
cmd = upper_str;
|
||||
cmd[equals_pos - upper_str] = 0;
|
||||
arg = equals_pos + 1;
|
||||
process_pattern_commands(cmd, arg, output, mod);
|
||||
process_pattern_commands(cmd, arg, cmd_output, mod);
|
||||
}
|
||||
|
||||
uint8_t cmd_reached = 0;
|
||||
@@ -676,7 +669,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
||||
cmd = upper_str;
|
||||
cmd[1] = 0;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -684,7 +677,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
||||
cmd = upper_str;
|
||||
cmd[2] = 0;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -692,7 +685,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
||||
cmd = upper_str;
|
||||
cmd[3] = 0;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -700,7 +693,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
||||
cmd = upper_str;
|
||||
cmd[4] = 0;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -708,7 +701,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
||||
cmd = upper_str;
|
||||
cmd[5] = 0;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -716,7 +709,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
||||
cmd = upper_str;
|
||||
cmd[6] = 0;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -724,10 +717,9 @@ void process_ascii_cmd(RDSModulator* mod, char *str, char *cmd_output) {
|
||||
cmd = upper_str;
|
||||
cmd[7] = 0;
|
||||
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;
|
||||
}
|
||||
|
||||
if (cmd_output != NULL && cmd_reached) strcpy(cmd_output, output);
|
||||
if (!cmd_reached) strcpy(cmd_output, "?\0");
|
||||
}
|
||||
@@ -84,12 +84,18 @@ void init_rds_modulator(RDSModulator* rdsMod, RDSEncoder* enc) {
|
||||
|
||||
rdsMod->enc = enc;
|
||||
|
||||
if(STREAMS > 0) rdsMod->data[1].symbol_shift = M_PI;
|
||||
if(modulatorsaved()) {
|
||||
Modulator_loadFromFile(&rdsMod->params);
|
||||
} else {
|
||||
Modulator_saveToFile(&rdsMod->params, "ALL");
|
||||
}
|
||||
#if STREAMS > 1
|
||||
rdsMod->data[1].symbol_shift = M_PI/2;
|
||||
#if STREAMS > 2
|
||||
rdsMod->data[2].symbol_shift = M_PI;
|
||||
#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) {
|
||||
|
||||
Reference in New Issue
Block a user