PU2CLR Si4735 Arduino Library  1.1.9
Arduino Library for Si47XX Devices - By Ricardo Lima Caratti
RDS Data types

Data Structures

union  si47x_rqs_status
 Radio Signal Quality data representation. More...
 
struct  si47x_rqs_status.resp
 
union  si47x_rds_command
 Data type for RDS Status command and response information. More...
 
struct  si47x_rds_command.arg
 
union  si47x_rds_status
 Response data type for current channel and reads an entry from the RDS FIFO. More...
 
struct  si47x_rds_status.resp
 
union  si47x_rds_int_source
 FM_RDS_INT_SOURCE property data type. More...
 
struct  si47x_rds_int_source.refined
 
union  si47x_rds_config
 Data type for FM_RDS_CONFIG Property. More...
 
struct  si47x_rds_config.arg
 
union  si47x_rds_blocka
 Block A data type. More...
 
struct  si47x_rds_blocka.refined
 
struct  si47x_rds_blocka.raw
 
union  si47x_rds_blockb
 Block B data type. More...
 
struct  si47x_rds_blockb.group0
 
struct  si47x_rds_blockb.group2
 
struct  si47x_rds_blockb.refined
 
struct  si47x_rds_blockb.raw
 
union  si47x_rds_date_time
 
struct  si47x_rds_date_time.refined
 

Detailed Description


Data Structure Documentation

◆ si47x_rqs_status

union si47x_rqs_status

Radio Signal Quality data representation.

RDS Data types

Data type for status information about the received signal quality (FM_RSQ_STATUS and AM_RSQ_STATUS)

See also
Si47XX PROGRAMMING GUIDE; AN332; pages 75 and
Data Fields
struct si47x_rqs_status resp
uint8_t raw[8]

◆ si47x_rqs_status.resp

struct si47x_rqs_status.resp
Data Fields
uint8_t STCINT: 1
uint8_t DUMMY1: 1
uint8_t RDSINT: 1
uint8_t RSQINT: 1
uint8_t DUMMY2: 2
uint8_t ERR: 1
uint8_t CTS: 1
uint8_t RSSIILINT: 1 RSSI Detect Low.
uint8_t RSSIHINT: 1 RSSI Detect High.
uint8_t SNRLINT: 1 SNR Detect Low.
uint8_t SNRHINT: 1 SNR Detect High.
uint8_t MULTLINT: 1 Multipath Detect Low.
uint8_t MULTHINT: 1 Multipath Detect High.
uint8_t DUMMY3: 1
uint8_t BLENDINT: 1 Blend Detect Interrupt.
uint8_t VALID: 1 Valid Channel.
uint8_t AFCRL: 1 AFC Rail Indicator.
uint8_t DUMMY4: 1
uint8_t SMUTE: 1 Soft Mute Indicator. Indicates soft mute is engaged.
uint8_t DUMMY5: 4
uint8_t STBLEND: 7 Indicates amount of stereo blend in% (100 = full stereo, 0 = full mono).
uint8_t PILOT: 1 Indicates stereo pilot presence.
uint8_t RSSI RESP4 - Contains the current receive signal strength (0–127 dBμV).
uint8_t SNR RESP5 - Contains the current SNR metric (0–127 dB).
uint8_t MULT RESP6 - Contains the current multipath metric. (0 = no multipath; 100 = full multipath)
uint8_t FREQOFF RESP7 - Signed frequency offset (kHz).

◆ si47x_rds_command

union si47x_rds_command

Data type for RDS Status command and response information.

See also
Si47XX PROGRAMMING GUIDE; AN332; pages 77 and 78
Also https://en.wikipedia.org/wiki/Radio_Data_System
Data Fields
struct si47x_rds_command arg
uint8_t raw

◆ si47x_rds_command.arg

struct si47x_rds_command.arg
Data Fields
uint8_t INTACK: 1
uint8_t MTFIFO: 1
uint8_t STATUSONLY: 1
uint8_t dummy: 5

◆ si47x_rds_status

union si47x_rds_status

Response data type for current channel and reads an entry from the RDS FIFO.

See also
Si47XX PROGRAMMING GUIDE; AN332; pages 77 and 78
Data Fields
struct si47x_rds_status resp
uint8_t raw[13]

◆ si47x_rds_status.resp

struct si47x_rds_status.resp
Data Fields
uint8_t STCINT: 1
uint8_t DUMMY1: 1
uint8_t RDSINT: 1
uint8_t RSQINT: 1
uint8_t DUMMY2: 2
uint8_t ERR: 1
uint8_t CTS: 1
uint8_t RDSRECV: 1 RDS Received; 1 = FIFO filled to minimum number of groups set by RDSFIFOCNT.
uint8_t RDSSYNCLOST: 1 RDS Sync Lost; 1 = Lost RDS synchronization.
uint8_t RDSSYNCFOUND: 1 RDS Sync Found; 1 = Found RDS synchronization.
uint8_t DUMMY3: 1
uint8_t RDSNEWBLOCKA: 1 RDS New Block A; 1 = Valid Block A data has been received.
uint8_t RDSNEWBLOCKB: 1 RDS New Block B; 1 = Valid Block B data has been received.
uint8_t DUMMY4: 2
uint8_t RDSSYNC: 1 RDS Sync; 1 = RDS currently synchronized.
uint8_t DUMMY5: 1
uint8_t GRPLOST: 1 Group Lost; 1 = One or more RDS groups discarded due to FIFO overrun.
uint8_t DUMMY6: 5
uint8_t RDSFIFOUSED RESP3 - RDS FIFO Used; Number of groups remaining in the RDS FIFO (0 if empty).
uint8_t BLOCKAH RESP4 - RDS Block A; HIGH byte.
uint8_t BLOCKAL RESP5 - RDS Block A; LOW byte.
uint8_t BLOCKBH RESP6 - RDS Block B; HIGH byte.
uint8_t BLOCKBL RESP7 - RDS Block B; LOW byte.
uint8_t BLOCKCH RESP8 - RDS Block C; HIGH byte.
uint8_t BLOCKCL RESP9 - RDS Block C; LOW byte.
uint8_t BLOCKDH RESP10 - RDS Block D; HIGH byte.
uint8_t BLOCKDL RESP11 - RDS Block D; LOW byte.
uint8_t BLED: 2
uint8_t BLEC: 2
uint8_t BLEB: 2
uint8_t BLEA: 2

◆ si47x_rds_int_source

union si47x_rds_int_source

FM_RDS_INT_SOURCE property data type.

See also
Si47XX PROGRAMMING GUIDE; AN332; page 103
also https://en.wikipedia.org/wiki/Radio_Data_System
Data Fields
struct si47x_rds_int_source refined
uint8_t raw[2]

◆ si47x_rds_int_source.refined

struct si47x_rds_int_source.refined
Data Fields
uint8_t RDSRECV: 1 If set, generate RDSINT when RDS FIFO has at least FM_RDS_INT_FIFO_COUNT entries.
uint8_t RDSSYNCLOST: 1 If set, generate RDSINT when RDS loses synchronization.
uint8_t RDSSYNCFOUND: 1 f set, generate RDSINT when RDS gains synchronization.
uint8_t DUMMY1: 1 Always write to 0.
uint8_t RDSNEWBLOCKA: 1 If set, generate an interrupt when Block A data is found or subsequently changed.
uint8_t RDSNEWBLOCKB: 1 If set, generate an interrupt when Block B data is found or subsequently changed.
uint8_t DUMMY2: 5 Reserved - Always write to 0.
uint8_t DUMMY3: 5 Reserved - Always write to 0.

◆ si47x_rds_config

union si47x_rds_config

Data type for FM_RDS_CONFIG Property.

IMPORTANT: all block errors must be less than or equal the associated block error threshold for the group to be stored in the RDS FIFO. 0 = No errors; 1 = 1–2 bit errors detected and corrected; 2 = 3–5 bit errors detected and corrected; 3 = Uncorrectable. Recommended Block Error Threshold options: 2,2,2,2 = No group stored if any errors are uncorrected. 3,3,3,3 = Group stored regardless of errors. 0,0,0,0 = No group stored containing corrected or uncorrected errors. 3,2,3,3 = Group stored with corrected errors on B, regardless of errors on A, C, or D.

See also
Si47XX PROGRAMMING GUIDE; AN332; pages 58 and 104
Data Fields
struct si47x_rds_config arg
uint8_t raw[2]

◆ si47x_rds_config.arg

struct si47x_rds_config.arg
Data Fields
uint8_t RDSEN: 1 1 = RDS Processing Enable.
uint8_t DUMMY1: 7
uint8_t BLETHD: 2 Block Error Threshold BLOCKD.
uint8_t BLETHC: 2 Block Error Threshold BLOCKC.
uint8_t BLETHB: 2 Block Error Threshold BLOCKB.
uint8_t BLETHA: 2 Block Error Threshold BLOCKA.

◆ si47x_rds_blocka

union si47x_rds_blocka

Block A data type.

Data Fields
struct si47x_rds_blocka refined
struct si47x_rds_blocka raw

◆ si47x_rds_blocka.refined

struct si47x_rds_blocka.refined
Data Fields
uint16_t pi

◆ si47x_rds_blocka.raw

struct si47x_rds_blocka.raw
Data Fields
uint8_t highValue
uint8_t lowValue

◆ si47x_rds_blockb

union si47x_rds_blockb

Block B data type.

For GCC on System-V ABI on 386-compatible (32-bit processors), the following stands:

1) Bit-fields are allocated from right to left (least to most significant). 2) A bit-field must entirely reside in a storage unit appropriate for its declared type. Thus a bit-field never crosses its unit boundary. 3) Bit-fields may share a storage unit with other struct/union members, including members that are not bit-fields. Of course, struct members occupy different parts of the storage unit. 4) Unnamed bit-fields' types do not affect the alignment of a structure or union, although individual bit-fields' member offsets obey the alignment constraints.

See also
also Si47XX PROGRAMMING GUIDE; AN332; pages 78 and 79
also https://en.wikipedia.org/wiki/Radio_Data_System
Data Fields
struct si47x_rds_blockb group0
struct si47x_rds_blockb group2
struct si47x_rds_blockb refined
struct si47x_rds_blockb raw

◆ si47x_rds_blockb.group0

struct si47x_rds_blockb.group0
Data Fields
uint16_t address: 2
uint16_t DI: 1
uint16_t MS: 1
uint16_t TA: 1
uint16_t programType: 5
uint16_t trafficProgramCode: 1
uint16_t versionCode: 1
uint16_t groupType: 4

◆ si47x_rds_blockb.group2

struct si47x_rds_blockb.group2
Data Fields
uint16_t address: 4
uint16_t textABFlag: 1
uint16_t programType: 5
uint16_t trafficProgramCode: 1
uint16_t versionCode: 1
uint16_t groupType: 4

◆ si47x_rds_blockb.refined

struct si47x_rds_blockb.refined
Data Fields
uint16_t content: 4
uint16_t textABFlag: 1
uint16_t programType: 5
uint16_t trafficProgramCode: 1
uint16_t versionCode: 1
uint16_t groupType: 4

◆ si47x_rds_blockb.raw

struct si47x_rds_blockb.raw
Data Fields
uint8_t lowValue
uint8_t highValue

◆ si47x_rds_date_time

union si47x_rds_date_time

Group type 4A ( RDS Date and Time) When group type 4A is used by the station, it shall be transmitted every minute according to EN 50067. This Structure uses blocks 2,3 and 5 (B,C,D)

ATTENTION: To make it compatible with 8, 16 and 32 bits platforms and avoid Crosses boundary, it was necessary to split minute and hour representation.

Data Fields
struct si47x_rds_date_time refined
uint8_t raw[6]

◆ si47x_rds_date_time.refined

struct si47x_rds_date_time.refined
Data Fields
uint8_t offset: 5
uint8_t offset_sense: 1
uint8_t minute1: 2
uint8_t minute2: 4
uint8_t hour1: 4
uint8_t hour2: 1
uint32_t mjd: 17