-
Notifications
You must be signed in to change notification settings - Fork 38
Supported RDS features
Redsea outputs newline-delimited JSON, which means every line is a valid JSON object containing one or several of the properties below.
The line-per-group design has some limitations; for instance, multi-group data like radiotext is not displayed immediately unless --show-partial
is specified.
The schema.json is an attempt at being an up-to-date version of the data types.
These fields are locally generated descriptions of the group or stream.
Name | Type | Description |
---|---|---|
bler |
integer | Block error rate, or the percentage of blocks that had errors before error correction, when --bler is specified. Averaged over the last 12 groups. For hex input, this is the percentage of missing blocks. |
channel |
integer | For multi-channel MPX input, the number of the channel this group was received on (zero-based). |
raw_data |
string | Raw group data in hexadecimal format (enable with -R or --show-raw ). |
rx_time |
string | Time at decoder (enable with --timestamp ) – see Time and timestamps. |
Name | Type | Description |
---|---|---|
alt_frequencies_a |
array of integers | Alternative frequencies for this program (kHz, method A). |
alt_frequencies_b. tuned_frequency
|
integer | Tuned frequency (kHz) that this alternative frequency list is for. |
alt_frequencies_b. same_programme
|
array of integers | These stations broadcast the same programme. |
alt_frequencies_b. regional_variants
|
array of integers | A regional variant is running on these frequencies. |
callsign |
string | (USA/RBDS only) The station's call sign letters, back-calculated from the PI code. |
callsign_uncertain |
string | (USA/RBDS only) Call sign letters that may be incorrect due to incompatibility with RDS-TMC (all stations with a PI code where the first nybble is a 1). |
clock_time |
string | Date and time at the transmitter, formatted to RFC 3339. If present, this field is sent once at every minute edge, +/- 0.1 sec. See Time and timestamps. |
country |
string | ISO 3166-1 country code for this program. |
enhanced_radiotext |
string | A RadioText-like text channel with UTF-8 support. Trailing whitespaces are trimmed. |
group |
string | Group type for this group. |
has_linkage |
boolean | This station is currently broadcasting a common program with other stations identified by EON PI. (This is the Linkage Actuator bit.) |
in_house_data |
array of uint16_t | The contents of these bits are defined by the operator. |
is_music |
boolean | Music/speech flag; true if music is currently playing. |
language |
string | Language of this program, in English. |
long_ps |
string | Longer alternative to PS with UTF-8 support. Trailing whitespaces are trimmed. |
partial_alt_kilohertz |
array of integers | When --show-partial is specified, the currently accumulated list of alternative frequencies is printed whenever more AFs are received. |
partial_long_ps |
string | When --show-partial is specified, the value of the internal Long PS variable is printed for every 15A group. |
partial_ps |
string | When --show-partial is specified, the value of the internal Program Service name variable is printed for every 0A group. |
partial_radiotext |
string | When --show-partial is specified, the value of the internal RadioText variable is printed for every 2A group. |
pi |
string | The station's 16-bit Program Identification code as a hexadecimal number (0xABCD ). This is often, but not always, the Block 1 or Block 3 of the group. If a spurious error corrupts the PI code a cached version will be used. Use --show-raw to see the original data. |
prog_item_number |
integer | A numeric identifier for the currently running program. |
prog_item_started |
object | The Program Item number decoded as its starting time with day of the month (day ) and 24-hour time of day (time ). |
prog_type |
string | Type of programming running at the moment on this station. |
ps |
string | Program Service name; an 8-character identifier for this station. |
pty_name |
string | Program type name: A description for the PTY sent as text. |
radiotext |
string | A RadioText message of up to 64 characters. Trailing whitespaces are trimmed. |
ta |
boolean | Traffic Announcement flag. If this and tp are both true, a traffic announcement is currently being broadcast on this program. If only ta is true, this program specifies a traffic information frequency via EON. |
tp |
boolean | Traffic Program flag - true if this station broadcasts traffic announcements. |
Some stations transmit information about programmes on other channels. This will be under the other_network
object in group 14A.
Name | Type | Description |
---|---|---|
other_network. alt_frequencies
|
array of integers | Alternative frequencies for the program, often including the current carrier frequency. |
other_network. broadcaster_data
|
string | Broadcaster-defined freeform data. |
other_network. has_linkage
|
boolean | The other station is currently broadcasting a common program with other stations identified by EON PI. (This is the Linkage Actuator bit.) |
other_network. kilohertz
|
integer | Carrier frequency for the other station. |
other_network. linkage_set
|
integer | When has_linkage is true, this station is currently transmitting common audio with other stations having the same linkage_set number and country code. |
other_network. pi
|
string | The other station's 16-bit Program Identification code as a hexadecimal number ("0x12AB"). |
other_network. prog_item_number
|
integer | A numeric identifier for the currently running program. |
other_network. prog_item_started
|
object | The Program Item number decoded as its starting time with day of the month (day ) and 24-hour time of day (time ). |
other_network. prog_type
|
string | Type of programming running at the moment on the other station. |
other_network. ps
|
string | Program Service name; an 8-character identifier for the other station. |
other_network. ta
|
boolean | Traffic Announcement flag. A traffic announcement is currently being broadcast on the other station. |
These will be under the open_data_app
object.
Name | Type | Description |
---|---|---|
open_data_app. oda_group
|
string | The group type that carries this Open Data Application. |
open_data_app. app_name
|
string | A human-readable name for this Open Data Application. |
open_data_app. message
|
array of uint16_t | Application-specific data. |
In case of an unsupported ODA app, raw data is printed in the unknown_oda
object:
Name | Type | Description |
---|---|---|
unknown_oda. app_name
|
string | A human-readable name for this Open Data Application. |
unknown_oda. raw_data
|
string | Hex-encoded raw data, grouped by spaces. Bad data is replaced with dashes. |
RadioText+ (radiotext_plus
) is broadcast by some stations to tag substrings of RadioText, like artist names and song titles.
Name | Type | Description |
---|---|---|
radiotext_plus. item_running
|
boolean | True if the item this RT+ is referring to is currently running. |
radiotext_plus. item_toggle
|
integer | Alternates between 0 and 1 to indicate that the item changed. |
radiotext_plus. tags
|
array of objects | One or more substrings tagged with content-types (see below). |
tags
is an array of objects like so:
Name | Type | Description |
---|---|---|
content-type |
string | One of many available RT+ content-types for this substring, such as programme.homepage , item.composer , or info.news . |
data |
string | RadioText content tagged with the content-type. |
Some stations broadcast traffic messages via TMC. An appropriate location database is required to make sense of the location codes. Additionally, the location codes may be encrypted.
Redsea does not have a safety classification of any kind and should never be used for navigation or relied upon for emergency information. See the license.
Name | Type | Description |
---|---|---|
tmc.system_info. activity_time
|
integer | (TMC enhanced mode) Position of the start of the activity/window sequence, referenced from the minute's edge, in seconds. |
tmc.system_info. delay_time
|
integer | (TMC enhanced mode) The time in a time slot during which 8A groups may be transmitted (seconds). |
tmc.system_info. encryption_id
|
integer | Encryption ID for an encrypted service. |
tmc.system_info. gap
|
integer | Number of groups between successive 8A groups; for battery saving purposes. |
tmc.system_info. is_encrypted
|
boolean | True if the location information of messages is encrypted. |
tmc.system_info. is_on_alt_freq
|
boolean | True if alternative frequencies carry TMC. |
tmc.system_info. scope
|
array of string | One or more of inter-road, national, regional, urban. |
tmc.system_info. service_id
|
integer | Identifies this TMC service. |
tmc.system_info. window_time
|
integer | (TMC enhanced mode) The time in a time slot during which transmission of 8A groups is suspended (seconds). |
Name | Type | Description |
---|---|---|
tmc.message. coordinates
|
array of objects | List of coordinate pairs along the affected route. A coordinate pair has a North latitude (lat ) and East longitude (lon ) as floating-point numbers. (requires location database) |
tmc.message. description
|
string | Human-readable description of the event. |
tmc.message. direction
|
string | Whether this event affects only one direction (single or both ). |
tmc.message. encrypted_location
|
uint16_t | Location code in its encrypted form. |
tmc.message. event_codes
|
array of integers | List of event codes, or references to the event code list. |
tmc.message. extent
|
string | The event affects this many points from the point location. This is represented as a string to allow for negative-direction zero-extent events (-0 ). |
tmc.message. location
|
integer | Location code, or reference to the location database. |
tmc.message. road_number
|
string | Human-readable road number for the event (requires location database). |
tmc.message. span_from
|
string | Human-readable starting point for the event, for instance an intersection on a highway (requires location database). |
tmc.message. span_to
|
string | Human-readable end point for the event, for instance an intersection on a highway (requires location database). |
tmc.message. update_class
|
integer | Message replaces previous messages of this class. |
tmc.message. urgency
|
string | Message urgency: normal (none ), urgent (U ), extremely urgent (X ). |
Name | Type | Description |
---|---|---|
dab. ensemble_id
|
string (0xABCD ) |
|
dab. channel
|
string | |
dab. kilohertz
|
integer | |
dab. mode
|
string |
Transparent data channels can be used to send any kind of freeform data. Some stations appear to treat the "channels" as addresses to a long string of text, so this interpretation is used here, too.
Name | Type | Description |
---|---|---|
transparent_data. address
|
integer | Address of this channel (0–31). |
transparent_data. as_text
|
string | The data in this group as text. |
transparent_data. raw
|
string | The data in this group as hexadecimal. |
transparent_data. full_raw
|
string | When 128 bytes are received contiguously, the channels will be concatenated and printed here. |
transparent_data. full_text
|
string | When 128 bytes are received contiguously, the channels be concatenated and printed here (interpreted as radiotext). |