]> git.kernelconcepts.de Git - rdstmc.git/blob - decoder/rds.h
Add license file
[rdstmc.git] / decoder / rds.h
1 #define RDS_RECEIVE_INDICATOR   1 << 0
2 #define RDS_OUTPUT_STATION_ID   1 << 1
3 #define RDS_OUTPUT_RADIO_TEXT   1 << 2
4 #define RDS_OUTPUT_TMC          1 << 3
5 #define RDS_OUTPUT_DATETIME     1 << 4
6 #define RDS_OUTPUT_RDSINFO      1 << 5
7 #define RDS_OUTPUT_EON          1 << 6
8 #define RDS_OUTPUT_UNKNGRP      1 << 7
9
10 extern int OutputFlags;
11
12 /* defined in rds_consts.h */
13 extern const char *PTY_text[];
14 extern const char *ECC_text[];
15 extern const char *ptype_stext[];
16 extern const char *ptype_ltext[];
17
18 struct rds_info_s {
19         struct tm dtime;
20         char sname[9];
21         char rtext[65];
22         unsigned short AID;
23         char LTN; /* location table number */
24         unsigned char AFI;
25         unsigned char M;
26         unsigned char I;
27         unsigned char N;
28         unsigned char R;
29         unsigned char U;
30         unsigned char G;
31         unsigned char SID;
32         unsigned char Ta;
33         unsigned char Tw;
34         unsigned char Td;
35         unsigned char PTY;
36         unsigned char TPTN;
37         unsigned char TPON;
38         unsigned char PS[9];
39         unsigned short PI;
40         unsigned char ccode, ptype, pref;
41         unsigned char ECC;
42         unsigned char lang_code;
43         unsigned char MS;
44         unsigned char TP;
45         unsigned char TA;
46 };
47
48 int rds_receive_group(int rds_fd, unsigned short *rdsgroup);
49 void rds_decode_group(unsigned short *rdsgroup);
50
51 void rds_init(void);
52
53 /* with every group but only once reported when PI changes */
54 void rds_set_PI_cb(void (*rds_PI_cb)(unsigned short PI, unsigned char ccode, unsigned char ptype, unsigned char pref, void *user_data), void *user_data);
55
56 /* group 0A */
57 void rds_set_sname_cb(void (*rds_sname_cb)(char *sname, void *user_data), void *user_data);
58 void rds_set_sinfo_cb(void (*rds_sinfo_cb)(unsigned char TP, unsigned char TA, unsigned char MS, unsigned char PTY, void *user_data), void *user_data);
59 void rds_set_afinfo_cb(void (*rds_afinfo_cb)(unsigned char cnt, double *AF, void *user_data), void *user_data);
60 /* group 2A/B */
61 void rds_set_radiotext_cb(void (*rds_radiotext_cb)(char *radio_text, void *user_data), void *user_data);
62 /* group 3A */
63
64 /* group 4A */
65 void rds_set_date_time_cb(void (*rds_date_time_cb)(struct tm *rds_time, void *user_data), void *user_data);
66
67