]> git.karo-electronics.de Git - rdstmc.git/blob - decoder/rds.h
Add radio tuning test app
[rdstmc.git] / decoder / rds.h
1 /*
2  * Copyright (C) 2009, 2010 by Nils Faerber <nils.faerber@kernelconcepts.de>
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version
7  * 2 of the License, or (at your option) any later version.
8  *
9  */
10
11 #define RDS_RECEIVE_INDICATOR   1 << 0
12 #define RDS_OUTPUT_STATION_ID   1 << 1
13 #define RDS_OUTPUT_RADIO_TEXT   1 << 2
14 #define RDS_OUTPUT_TMC          1 << 3
15 #define RDS_OUTPUT_DATETIME     1 << 4
16 #define RDS_OUTPUT_RDSINFO      1 << 5
17 #define RDS_OUTPUT_EON          1 << 6
18 #define RDS_OUTPUT_UNKNGRP      1 << 7
19
20 extern int OutputFlags;
21
22 /* defined in rds_consts.h */
23 extern const char *PTY_text[];
24 extern const char *ECC_text[];
25 extern const char *ptype_stext[];
26 extern const char *ptype_ltext[];
27
28 struct rds_info_s {
29         struct tm dtime;
30         char sname[9];
31         char rtext[65];
32         unsigned short AID;
33         char LTN; /* location table number */
34         unsigned char AFI;
35         unsigned char M;
36         unsigned char I;
37         unsigned char N;
38         unsigned char R;
39         unsigned char U;
40         unsigned char G;
41         unsigned char SID;
42         unsigned char Ta;
43         unsigned char Tw;
44         unsigned char Td;
45         unsigned char PTY;
46         unsigned char TPTN;
47         unsigned char TPON;
48         unsigned char PS[9];
49         unsigned short PI;
50         unsigned char ccode, ptype, pref;
51         unsigned char ECC;
52         unsigned char lang_code;
53         unsigned char MS;
54         unsigned char TP;
55         unsigned char TA;
56 };
57
58 int rds_receive_group(int rds_fd, unsigned short *rdsgroup);
59 void rds_radio_retuned(void);
60 void rds_decode_group(unsigned short *rdsgroup);
61
62 void rds_init(void);
63
64 /* with every group but only once reported when PI changes */
65 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);
66
67 /* group 0A */
68 void rds_set_sname_cb(void (*rds_sname_cb)(char *sname, void *user_data), void *user_data);
69 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);
70 void rds_set_afinfo_cb(void (*rds_afinfo_cb)(unsigned char cnt, double *AF, void *user_data), void *user_data);
71 /* group 2A/B */
72 void rds_set_radiotext_cb(void (*rds_radiotext_cb)(char *radio_text, void *user_data), void *user_data);
73 /* group 3A */
74
75 /* group 4A */
76 void rds_set_date_time_cb(void (*rds_date_time_cb)(struct tm *rds_time, void *user_data), void *user_data);
77
78