Skip to content

Commit

Permalink
Split RDS decoding functionality off to its own library (RDSDecoder).
Browse files Browse the repository at this point in the history
  • Loading branch information
csdexter committed Mar 29, 2015
1 parent 589bdb3 commit bf41b6e
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 987 deletions.
3 changes: 2 additions & 1 deletion README
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ is hereby released under the LGPL version 3.
To the furthest extent that this is legally enforceable, the copyright remains
with the authors listed above.

See the example sketches to learn how to use the library in your code.
See the example sketches to learn how to use the library in your code. Note
that the RDS decoding functionality has moved to the RDSDecoder library.

HARDWARE NOTES:
* The Si4735 is a 3.3V I/O chip whereas the Arduino Uno/Mega are 5V I/O. This
Expand Down
103 changes: 0 additions & 103 deletions Si4735-private.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,107 +24,4 @@
#define SI4735_I2C_ADDR_L (0x22 >> 1)
#define SI4735_I2C_ADDR_H (0xC6 >> 1)

//Define RDS block B decoding masks
#define SI4735_RDS_TYPE_MASK 0xF800
#define SI4735_RDS_TYPE_SHR 11
#define SI4735_RDS_TP 0x0400
#define SI4735_RDS_PTY_MASK 0x03E0
#define SI4735_RDS_PTY_SHR 5
#define SI4735_RDS_TA word(0x0010)
#define SI4735_RDS_MS word(0x0008)
#define SI4735_RDS_DI word(0x0004)
#define SI4735_RDS_DIPS_ADDRESS word(0x0003)
#define SI4735_RDS_TEXTAB word(0x0010)
#define SI4735_RDS_TEXT_ADDRESS word(0x000F)
#define SI4735_RDS_PTYNAB word(0x0010)
#define SI4735_RDS_PTYN_ADDRESS word(0x0001)

//Define RDS SL (group 1A) decoding values
#define SI4735_RDS_SLABEL_TYPE_PAGINGECC 0x00
#define SI4735_RDS_SLABEL_TYPE_TMCID 0x01
#define SI4735_RDS_SLABEL_TYPE_PAGINGID 0x02
#define SI4735_RDS_SLABEL_TYPE_LANGUAGE 0x03
#define SI4735_RDS_SLABEL_TYPE_INHOUSE 0x06
#define SI4735_RDS_SLABEL_TYPE_EWSID 0x07
#define SI4735_RDS_SLABEL_LA 0x8000
#define SI4735_RDS_SLABEL_MASK 0x7000
#define SI4735_RDS_SLABEL_SHR 12
#define SI4735_RDS_SLABEL_VALUE_MASK 0x0FFF

//Define RDS ODA (group 3A) values and decoding masks
#define SI4735_RDS_AID_DEFAULT 0x0000
#define SI4735_RDS_AID_ERT 0x6552
#define SI4735_RDS_AID_RTPLUS 0x4BD7
#define SI4735_RDS_AID_IRDS 0xC563
#define SI4735_RDS_AID_TMC 0xCD46 // 0xCD45 and 0xCD47 also seen in the wild
#define SI4735_RDS_ODA_GROUP_MASK 0x1F

//Define RDS CT (group 4A) decoding masks
#define SI4735_RDS_TIME_TZ_MASK 0x0000001FUL
#define SI4735_RDS_TIME_TZ_SIGN 0x00000020UL
#define SI4735_RDS_TIME_MINUTE_MASK 0x00000FC0UL
#define SI4735_RDS_TIME_MINUTE_SHR 6
#define SI4735_RDS_TIME_HOUR_MASK 0x0001F000UL
#define SI4735_RDS_TIME_HOUR_SHR 12
#define SI4735_RDS_TIME_MJD2_MASK 0xFFFE0000UL
#define SI4735_RDS_TIME_MJD2_SHR 17
#define SI4735_RDS_TIME_MJD1_MASK word(0x0003)
#define SI4735_RDS_TIME_MJD1_SHL 15

//Define RDS EON (group 14A) decoding masks
#define SI4735_RDS_EON_TP word(0x0010)
#define SI4735_RDS_EON_MASK word(0x000F)
#define SI4735_RDS_EON_PTY_MASK 0xF800
#define SI4735_RDS_EON_PTY_SHR 11
#define SI4735_RDS_EON_TA_A word(0x0001)
#define SI4735_RDS_EON_TA_B word(0x0008)
#define SI4735_RDS_EON_TYPE_PS_SA0 0x00
#define SI4735_RDS_EON_TYPE_PS_SA1 0x01
#define SI4735_RDS_EON_TYPE_PS_SA2 0x02
#define SI4735_RDS_EON_TYPE_PS_SA3 0x03
#define SI4735_RDS_EON_TYPE_AF 0x04
#define SI4735_RDS_EON_TYPE_MF_FM0 0x05
#define SI4735_RDS_EON_TYPE_MF_FM1 0x06
#define SI4735_RDS_EON_TYPE_MF_FM2 0x07
#define SI4735_RDS_EON_TYPE_MF_FM3 0x08
#define SI4735_RDS_EON_TYPE_MF_AM 0x09
#define SI4735_RDS_EON_TYPE_LINKAGE 0x0C
#define SI4735_RDS_EON_TYPE_PTYTA 0x0D
#define SI4735_RDS_EON_TYPE_PIN 0x0E
#define SI4735_RDS_EON_TYPE_INHOUSE 0x0F

//Define RDS group types
#define SI4735_GROUP_0A 0x00
#define SI4735_GROUP_0B 0x01
#define SI4735_GROUP_1A 0x02
#define SI4735_GROUP_1B 0x03
#define SI4735_GROUP_2A 0x04
#define SI4735_GROUP_2B 0x05
#define SI4735_GROUP_3A 0x06
#define SI4735_GROUP_3B 0x07
#define SI4735_GROUP_4A 0x08
#define SI4735_GROUP_4B 0x09
#define SI4735_GROUP_5A 0x0A
#define SI4735_GROUP_5B 0x0B
#define SI4735_GROUP_6A 0x0C
#define SI4735_GROUP_6B 0x0D
#define SI4735_GROUP_7A 0x0E
#define SI4735_GROUP_7B 0x0F
#define SI4735_GROUP_8A 0x10
#define SI4735_GROUP_8B 0x11
#define SI4735_GROUP_9A 0x12
#define SI4735_GROUP_9B 0x13
#define SI4735_GROUP_10A 0x14
#define SI4735_GROUP_10B 0x15
#define SI4735_GROUP_11A 0x16
#define SI4735_GROUP_11B 0x17
#define SI4735_GROUP_12A 0x18
#define SI4735_GROUP_12B 0x19
#define SI4735_GROUP_13A 0x1A
#define SI4735_GROUP_13B 0x1B
#define SI4735_GROUP_14A 0x1C
#define SI4735_GROUP_14B 0x1D
#define SI4735_GROUP_15A 0x1E
#define SI4735_GROUP_15B 0x1F

#endif
Loading

0 comments on commit bf41b6e

Please sign in to comment.