mirror of
https://github.com/radio95-rnt/rds95.git
synced 2026-02-27 04:43:52 +01:00
add some cmds
This commit is contained in:
2
.vscode/.server-controller-port.log
vendored
2
.vscode/.server-controller-port.log
vendored
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"port": 13452,
|
"port": 13452,
|
||||||
"time": 1742632427298,
|
"time": 1742639833627,
|
||||||
"version": "0.0.3"
|
"version": "0.0.3"
|
||||||
}
|
}
|
||||||
@@ -459,6 +459,89 @@ static void handle_eontp(char *arg, char *pattern, RDSModulator* mod, char* outp
|
|||||||
strcpy(output, "+\0");
|
strcpy(output, "+\0");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void handle_psn(char *arg, char *pattern, RDSModulator* mod, char* output) {
|
||||||
|
mod->enc->data[atoi(pattern)-1].psn = atoi(arg);
|
||||||
|
strcpy(output, "+\0");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void handle_dsn(char *arg, char *pattern, RDSModulator* mod, char* output) {
|
||||||
|
mod->enc->data[atoi(pattern)-1].dsn = atoi(arg);
|
||||||
|
strcpy(output, "+\0");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void handle_eonaf(char *arg, char *pattern, RDSModulator* mod, char* output) {
|
||||||
|
if (arg[0] == '\0') {
|
||||||
|
memset(&(mod->enc->data[mod->enc->program].eon[atoi(pattern)-1].af), 0, sizeof(mod->enc->data[mod->enc->program].eon[atoi(pattern)-1].af));
|
||||||
|
strcpy(output, "+\0");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(&(mod->enc->data[mod->enc->program].eon[atoi(pattern)-1].af), 0, sizeof(mod->enc->data[mod->enc->program].eon[atoi(pattern)-1].af));
|
||||||
|
uint8_t arg_count;
|
||||||
|
RDSAFs new_af;
|
||||||
|
float af[MAX_AFS], *af_iter;
|
||||||
|
|
||||||
|
arg_count = sscanf((char *)arg,
|
||||||
|
"%f,%f,%f,%f,%f,"
|
||||||
|
"%f,%f,%f,%f,%f,"
|
||||||
|
"%f,%f,%f,%f,%f,"
|
||||||
|
"%f,%f,%f,%f,%f,"
|
||||||
|
"%f,%f,%f,%f,%f",
|
||||||
|
&af[0], &af[1], &af[2], &af[3], &af[4],
|
||||||
|
&af[5], &af[6], &af[7], &af[8], &af[9],
|
||||||
|
&af[10], &af[11], &af[12], &af[13], &af[14],
|
||||||
|
&af[15], &af[16], &af[17], &af[18], &af[19],
|
||||||
|
&af[20], &af[21], &af[22], &af[23], &af[24]);
|
||||||
|
|
||||||
|
af_iter = af;
|
||||||
|
memset(&new_af, 0, sizeof(RDSAFs));
|
||||||
|
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void handle_eonafch(char *arg, char *pattern, RDSModulator* mod, char* output) {
|
||||||
|
if (arg[0] == '\0') {
|
||||||
|
memset(&(mod->enc->data[mod->enc->program].eon[atoi(pattern)-1].af), 0, sizeof(mod->enc->data[mod->enc->program].eon[atoi(pattern)-1].af));
|
||||||
|
strcpy(output, "+\0");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(&(mod->enc->data[mod->enc->program].eon[atoi(pattern)-1].af), 0, sizeof(mod->enc->data[mod->enc->program].eon[atoi(pattern)-1].af));
|
||||||
|
uint8_t arg_count;
|
||||||
|
RDSAFs new_af;
|
||||||
|
uint8_t af[MAX_AFS], *af_iter;
|
||||||
|
|
||||||
|
arg_count = sscanf((char *)arg,
|
||||||
|
"%hhx,%hhx,%hhx,%hhx,%hhx,"
|
||||||
|
"%hhx,%hhx,%hhx,%hhx,%hhx,"
|
||||||
|
"%hhx,%hhx,%hhx,%hhx,%hhx,"
|
||||||
|
"%hhx,%hhx,%hhx,%hhx,%hhx,"
|
||||||
|
"%hhx,%hhx,%hhx,%hhx,%hhx",
|
||||||
|
&af[0], &af[1], &af[2], &af[3], &af[4],
|
||||||
|
&af[5], &af[6], &af[7], &af[8], &af[9],
|
||||||
|
&af[10], &af[11], &af[12], &af[13], &af[14],
|
||||||
|
&af[15], &af[16], &af[17], &af[18], &af[19],
|
||||||
|
&af[20], &af[21], &af[22], &af[23], &af[24]);
|
||||||
|
|
||||||
|
af_iter = af;
|
||||||
|
memset(&new_af, 0, sizeof(RDSAFs));
|
||||||
|
|
||||||
|
while (arg_count-- != 0) {
|
||||||
|
uint8_t current_value = *af_iter;
|
||||||
|
float frequency = (875.0 + current_value) / 10.0;
|
||||||
|
add_rds_af(&new_af, frequency);
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
|
||||||
static const command_handler_t commands_eq3[] = {
|
static const command_handler_t commands_eq3[] = {
|
||||||
{"MS", handle_ms, 2},
|
{"MS", handle_ms, 2},
|
||||||
{"PS", handle_ps, 2},
|
{"PS", handle_ps, 2},
|
||||||
@@ -538,6 +621,10 @@ static const pattern_command_handler_t pattern_commands[] = {
|
|||||||
{"EON", "PTY", handle_eonpty},
|
{"EON", "PTY", handle_eonpty},
|
||||||
{"EON", "TA", handle_eonta},
|
{"EON", "TA", handle_eonta},
|
||||||
{"EON", "TP", handle_eontp},
|
{"EON", "TP", handle_eontp},
|
||||||
|
{"EON", "AF", handle_eonaf},
|
||||||
|
{"EON", "AFCH", handle_eonafch},
|
||||||
|
{"PSN", "", handle_psn},
|
||||||
|
{"DSN", "", handle_dsn},
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool process_command_table(const command_handler_t *table, int table_size,
|
static bool process_command_table(const command_handler_t *table, int table_size,
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ TPS
|
|||||||
INIT
|
INIT
|
||||||
ALL
|
ALL
|
||||||
- HELP
|
- HELP
|
||||||
- EON*
|
EON*
|
||||||
- MSG*
|
- MSG*
|
||||||
- DPS2MSG
|
- DPS2MSG
|
||||||
- RT2MSG
|
- RT2MSG
|
||||||
@@ -57,10 +57,10 @@ RDSGEN
|
|||||||
(SPEED)
|
(SPEED)
|
||||||
- STATUS, ??
|
- STATUS, ??
|
||||||
(TIME)
|
(TIME)
|
||||||
- VER
|
VER
|
||||||
- ADR *ADR
|
- ADR *ADR
|
||||||
- CC
|
- CC
|
||||||
- DSN*
|
DSN*
|
||||||
ECCEN
|
ECCEN
|
||||||
G
|
G
|
||||||
GRPSEQ
|
GRPSEQ
|
||||||
@@ -69,7 +69,7 @@ LIC
|
|||||||
PIN
|
PIN
|
||||||
PINEN
|
PINEN
|
||||||
PROGRAM
|
PROGRAM
|
||||||
- PSN*
|
PSN*
|
||||||
(PSW)
|
(PSW)
|
||||||
RTP
|
RTP
|
||||||
RTPRUN
|
RTPRUN
|
||||||
@@ -78,91 +78,4 @@ SHORTRT
|
|||||||
- SITE *SITE
|
- SITE *SITE
|
||||||
UDG1
|
UDG1
|
||||||
UDG2
|
UDG2
|
||||||
- UECP
|
- UECP
|
||||||
|
|
||||||
Magic RDS 4 Pages for PIRA32:
|
|
||||||
- Device Setup:
|
|
||||||
- Communication:
|
|
||||||
- Port Speed (will not be added)
|
|
||||||
- UECP (TODO:):
|
|
||||||
- General Enable
|
|
||||||
- Address List
|
|
||||||
- Site List
|
|
||||||
- Analog Control:
|
|
||||||
- RDS Output
|
|
||||||
- Subcarrier:
|
|
||||||
- Refrence (will not be added)
|
|
||||||
- Phase (will not be added)
|
|
||||||
- Date and Time (will not be added)
|
|
||||||
- Special:
|
|
||||||
- Reset (will not be added)
|
|
||||||
- Store ALL
|
|
||||||
- Initialize
|
|
||||||
- No Header off (TODO: find out what this means)
|
|
||||||
- Text messages: TODO:
|
|
||||||
- Internal Scheduler TODO:
|
|
||||||
- RDS Content:
|
|
||||||
- Program:
|
|
||||||
- PS
|
|
||||||
- PI
|
|
||||||
- TP
|
|
||||||
- MS
|
|
||||||
- PTY
|
|
||||||
- PTYN
|
|
||||||
- Radiotext:
|
|
||||||
- RT1:
|
|
||||||
- Text
|
|
||||||
- Default RT (save to memory)
|
|
||||||
- Default RT Timeout (TODO: DTTMOUT)
|
|
||||||
- RT2 (TODO:):
|
|
||||||
- Text
|
|
||||||
- Source (TODO: RT2MSG)
|
|
||||||
- Setup:
|
|
||||||
- RT1 Enabled
|
|
||||||
- RT2 Enabled (TODO:)
|
|
||||||
- Radiotext Type Bit (TODO: RTTYPE)
|
|
||||||
- Dynamic PS:
|
|
||||||
- DPS1 Text
|
|
||||||
- DPS1 Setup:
|
|
||||||
- DPS1 Enabled (Default: 0)
|
|
||||||
- DPS1 Mode (Default: 1) (TODO: 2 and 3)
|
|
||||||
- DPS1 Number of repeats (Default: 0, options: CLEAR) (TODO:)
|
|
||||||
- DPS2 (TODO:):
|
|
||||||
- DPS2 Text
|
|
||||||
- DPS2 Source (Default: 0, manual)
|
|
||||||
- DPS Setup (TODO:):
|
|
||||||
- DPS2 Enabled (Default: 0)
|
|
||||||
- DPS2 Mode (Default: 2)
|
|
||||||
- DPS2 Number of repeats (Default: 0)
|
|
||||||
- Common settings:
|
|
||||||
- Static PS period (Default: 16)
|
|
||||||
- DPS String Period (LABPER, Default: 0)
|
|
||||||
- Scrolling Speed (modes 0-3 Default: low)
|
|
||||||
- Restart DPS on change (options: Only if it's running, Always | first is Default) (TODO:)
|
|
||||||
- Alternative Frequency:
|
|
||||||
- AF Method (TODO: AF=A, AF=B)
|
|
||||||
; A:
|
|
||||||
(list of freqs from 87,6 to 107,9)
|
|
||||||
Sets mode via `AF=A` and sets the af via AFCH
|
|
||||||
; B:
|
|
||||||
entry for tuned freq
|
|
||||||
same programme AF
|
|
||||||
regional variant AF
|
|
||||||
Sets the AF to A then sets AFCH to tf and pairs, sends these? `*AF=1` `AFCH=` `*AF=2` `AF=B` (no clue)
|
|
||||||
- EON (TODO:):
|
|
||||||
- Other Network X:
|
|
||||||
- Enabled
|
|
||||||
- PI
|
|
||||||
- PS
|
|
||||||
- TP
|
|
||||||
- PTY
|
|
||||||
- AF Freqs (Mode A only)
|
|
||||||
- System:
|
|
||||||
- Group sequence
|
|
||||||
- Misc:
|
|
||||||
- DI
|
|
||||||
- ECC, LIC
|
|
||||||
- CT
|
|
||||||
- RT1=DPS1 (TODO: EQTEXT1)
|
|
||||||
- TPS
|
|
||||||
- TA Timeout (will not be added), TA external control (will not be added)
|
|
||||||
Reference in New Issue
Block a user