summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--radioaudio.c3370
1 files changed, 1922 insertions, 1448 deletions
diff --git a/radioaudio.c b/radioaudio.c
index b5e934c..2c374b7 100644
--- a/radioaudio.c
+++ b/radioaudio.c
@@ -4,7 +4,7 @@
* See the README file for copyright information and how to reach the author.
*
*/
-
+
#include <vdr/remote.h>
#include <vdr/status.h>
#include <vdr/plugin.h>
@@ -37,7 +37,6 @@
#include "symbols/bok.xpm"
#include "symbols/pageE.xpm"
-
// Radiotext
int RTP_ItemToggle = 1, RTP_TToggle = 0;
bool RT_MsgShow = false, RT_PlusShow = false;
@@ -58,7 +57,7 @@ int Rass_Archiv = -1; // -1=Off, 0=Index, 1000-9990=Slidenr.
bool Rass_Flags[11][4]; // Slides+Gallery existent
// ... Gallery (1..999)
#define RASS_GALMAX 999
-bool Rass_Gallery[RASS_GALMAX+1];
+bool Rass_Gallery[RASS_GALMAX + 1];
int Rass_GalStart, Rass_GalEnd, Rass_GalCount, Rass_SlideFoto;
cRadioImage *RadioImage;
@@ -66,79 +65,88 @@ cRDSReceiver *RDSReceiver;
cRadioAudio *RadioAudio;
cRadioTextOsd *RadioTextOsd;
-
// RDS-Chartranslation: 0x80..0xff
-unsigned char rds_addchar[128] = {
- 0xe1, 0xe0, 0xe9, 0xe8, 0xed, 0xec, 0xf3, 0xf2,
- 0xfa, 0xf9, 0xd1, 0xc7, 0x8c, 0xdf, 0x8e, 0x8f,
- 0xe2, 0xe4, 0xea, 0xeb, 0xee, 0xef, 0xf4, 0xf6,
- 0xfb, 0xfc, 0xf1, 0xe7, 0x9c, 0x9d, 0x9e, 0x9f,
- 0xaa, 0xa1, 0xa9, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
- 0xa8, 0xa9, 0xa3, 0xab, 0xac, 0xad, 0xae, 0xaf,
- 0xba, 0xb9, 0xb2, 0xb3, 0xb1, 0xa1, 0xb6, 0xb7,
- 0xb5, 0xbf, 0xf7, 0xb0, 0xbc, 0xbd, 0xbe, 0xa7,
- 0xc1, 0xc0, 0xc9, 0xc8, 0xcd, 0xcc, 0xd3, 0xd2,
- 0xda, 0xd9, 0xca, 0xcb, 0xcc, 0xcd, 0xd0, 0xcf,
- 0xc2, 0xc4, 0xca, 0xcb, 0xce, 0xcf, 0xd4, 0xd6,
- 0xdb, 0xdc, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
- 0xc3, 0xc5, 0xc6, 0xe3, 0xe4, 0xdd, 0xd5, 0xd8,
- 0xde, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xf0,
- 0xe3, 0xe5, 0xe6, 0xf3, 0xf4, 0xfd, 0xf5, 0xf8,
- 0xfe, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
-};
-
-const char* ptynr2string(int nr)
-{
+unsigned char rds_addchar[128] = { 0xe1, 0xe0, 0xe9, 0xe8, 0xed, 0xec, 0xf3,
+ 0xf2, 0xfa, 0xf9, 0xd1, 0xc7, 0x8c, 0xdf, 0x8e, 0x8f, 0xe2, 0xe4, 0xea,
+ 0xeb, 0xee, 0xef, 0xf4, 0xf6, 0xfb, 0xfc, 0xf1, 0xe7, 0x9c, 0x9d, 0x9e,
+ 0x9f, 0xaa, 0xa1, 0xa9, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xa3,
+ 0xab, 0xac, 0xad, 0xae, 0xaf, 0xba, 0xb9, 0xb2, 0xb3, 0xb1, 0xa1, 0xb6,
+ 0xb7, 0xb5, 0xbf, 0xf7, 0xb0, 0xbc, 0xbd, 0xbe, 0xa7, 0xc1, 0xc0, 0xc9,
+ 0xc8, 0xcd, 0xcc, 0xd3, 0xd2, 0xda, 0xd9, 0xca, 0xcb, 0xcc, 0xcd, 0xd0,
+ 0xcf, 0xc2, 0xc4, 0xca, 0xcb, 0xce, 0xcf, 0xd4, 0xd6, 0xdb, 0xdc, 0xda,
+ 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xc3, 0xc5, 0xc6, 0xe3, 0xe4, 0xdd, 0xd5,
+ 0xd8, 0xde, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xf0, 0xe3, 0xe5, 0xe6,
+ 0xf3, 0xf4, 0xfd, 0xf5, 0xf8, 0xfe, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe,
+ 0xff };
+
+const char* ptynr2string(int nr) {
switch (nr) {
- // Source: http://www.ebu.ch/trev_255-beale.pdf
- case 0: return tr("unknown program type");
- case 1: return tr("News");
- case 2: return tr("Current affairs");
- case 3: return tr("Information");
- case 4: return tr("Sport");
- case 5: return tr("Education");
- case 6: return tr("Drama");
- case 7: return tr("Culture");
- case 8: return tr("Science");
- case 9: return tr("Varied");
- case 10: return tr("Pop music");
- case 11: return tr("Rock music");
- case 12: return tr("M.O.R. music");
- case 13: return tr("Light classical");
- case 14: return tr("Serious classical");
- case 15: return tr("Other music");
+ // Source: http://www.ebu.ch/trev_255-beale.pdf
+ case 0:
+ return tr("unknown program type");
+ case 1:
+ return tr("News");
+ case 2:
+ return tr("Current affairs");
+ case 3:
+ return tr("Information");
+ case 4:
+ return tr("Sport");
+ case 5:
+ return tr("Education");
+ case 6:
+ return tr("Drama");
+ case 7:
+ return tr("Culture");
+ case 8:
+ return tr("Science");
+ case 9:
+ return tr("Varied");
+ case 10:
+ return tr("Pop music");
+ case 11:
+ return tr("Rock music");
+ case 12:
+ return tr("M.O.R. music");
+ case 13:
+ return tr("Light classical");
+ case 14:
+ return tr("Serious classical");
+ case 15:
+ return tr("Other music");
// 16-30 "Spares"
- case 31: return tr("Alarm");
- default: return "?";
- }
+ case 31:
+ return tr("Alarm");
+ default:
+ return "?";
+ }
}
// announce text/items for lcdproc & other
-void radioStatusMsg(void)
-{
+void radioStatusMsg(void) {
if (!RT_MsgShow || S_RtMsgItems <= 0)
return;
-
+
if (S_RtMsgItems >= 2) {
char temp[100];
int ind = (RT_Index == 0) ? S_RtOsdRows - 1 : RT_Index - 1;
strcpy(temp, RT_Text[ind]);
cStatus::MsgOsdTextItem(rtrim(temp), false);
- }
+ }
- if ((S_RtMsgItems == 1 || S_RtMsgItems >= 3) && ((S_RtOsdTags == 1 && RT_PlusShow) || S_RtOsdTags >= 2)) {
+ if ((S_RtMsgItems == 1 || S_RtMsgItems >= 3)
+ && ((S_RtOsdTags == 1 && RT_PlusShow) || S_RtOsdTags >= 2)) {
struct tm tm_store;
struct tm *ts = localtime_r(&RTP_Starttime, &tm_store);
- cStatus::MsgOsdProgramme(mktime(ts), RTP_Title, RTP_Artist, 0, NULL, NULL);
- }
+ cStatus::MsgOsdProgramme(mktime(ts), RTP_Title, RTP_Artist, 0, NULL,
+ NULL);
+ }
}
-
// --- cRadioImage -------------------------------------------------------
-cRadioImage::cRadioImage(void)
- : cThread("radioimage")
-{
+cRadioImage::cRadioImage(void) :
+ cThread("radioimage") {
imagepath = 0;
imageShown = false;
RadioImage = this;
@@ -158,60 +166,56 @@ void cRadioImage::Exit(void) {
if (RadioImage != NULL) {
RadioImage->Stop();
DELETENULL(RadioImage);
- }
+ }
}
void cRadioImage::Stop(void) {
Cancel(2);
}
-void cRadioImage::Action(void)
-{
+void cRadioImage::Action(void) {
if ((S_Verbose & 0x0f) >= 2)
printf("vdr-radio: image-showing starts\n");
while (Running()) {
cCondWait::SleepMs(333);
- if ((IsRadioOrReplay == 1) && imagepath && !imageShown) { // only live $20090905
+ if ((IsRadioOrReplay == 1) && imagepath && !imageShown) { // only live $20090905
imageShown = true;
Show(imagepath);
- }
}
+ }
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("vdr-radio: image-showing ends\n");
+ }
}
-void cRadioImage::Show(const char *file)
-{
+void cRadioImage::Show(const char *file) {
uchar *buffer;
int fd;
struct stat st;
struct video_still_picture sp;
- if ((fd = open (file, O_RDONLY)) >= 0) {
- fstat (fd, &st);
- sp.iFrame = (char *) malloc (st.st_size);
+ if ((fd = open(file, O_RDONLY)) >= 0) {
+ fstat(fd, &st);
+ sp.iFrame = (char *) malloc(st.st_size);
if (sp.iFrame) {
sp.size = st.st_size;
- if (read (fd, sp.iFrame, sp.size) > 0) {
- buffer = (uchar *) sp.iFrame;
+ if (read(fd, sp.iFrame, sp.size) > 0) {
+ buffer = (uchar *) sp.iFrame;
if (S_StillPic > 0)
cDevice::PrimaryDevice()->StillPicture(buffer, sp.size);
else {
for (int i = 1; i <= 25; i++)
- send_pes_packet (buffer, sp.size, i);
- }
+ send_pes_packet(buffer, sp.size, i);
}
- free (sp.iFrame);
}
- else {}
- close (fd);
+ free(sp.iFrame);
}
- else {}
+ close(fd);
+ }
}
-void cRadioImage::send_pes_packet(unsigned char *data, int len, int timestamp)
-{
+void cRadioImage::send_pes_packet(unsigned char *data, int len, int timestamp) {
#define PES_MAX_SIZE 2048
int ptslen = timestamp ? 5 : 1;
static unsigned char pes_header[PES_MAX_SIZE];
@@ -219,13 +223,14 @@ void cRadioImage::send_pes_packet(unsigned char *data, int len, int timestamp)
pes_header[2] = 1;
pes_header[3] = 0xe0;
- while(len > 0) {
+ while (len > 0) {
int payload_size = len;
- if(6 + ptslen + payload_size > PES_MAX_SIZE)
+ if (6 + ptslen + payload_size > PES_MAX_SIZE) {
payload_size = PES_MAX_SIZE - (6 + ptslen);
+ }
pes_header[4] = (ptslen + payload_size) >> 8;
pes_header[5] = (ptslen + payload_size) & 255;
- if (ptslen == 5) {
+ if (ptslen == 5) {
int x;
x = (0x02 << 4) | (((timestamp >> 30) & 0x07) << 1) | 1;
pes_header[8] = x;
@@ -235,229 +240,258 @@ void cRadioImage::send_pes_packet(unsigned char *data, int len, int timestamp)
x = ((((timestamp) & 0x7fff) < 1) | 1);
pes_header[9] = x >> 8;
pes_header[10] = x & 255;
- }
- else
+ } else {
pes_header[6] = 0x0f;
+ }
memcpy(&pes_header[6 + ptslen], data, payload_size);
- cDevice::PrimaryDevice()->PlayPes(pes_header, 6 + ptslen + payload_size);
+ cDevice::PrimaryDevice()->PlayPes(pes_header,
+ 6 + ptslen + payload_size);
len -= payload_size;
data += payload_size;
ptslen = 1;
- }
+ }
}
-void cRadioImage::SetBackgroundImage(const char *Image)
-{
+void cRadioImage::SetBackgroundImage(const char *Image) {
free(imagepath);
imagepath = 0;
if (Image) {
imageShown = false;
asprintf(&imagepath, "%s", Image);
- }
+ }
}
-
// --- cRDSReceiver ------------------------------------------------------------
-cRDSReceiver::cRDSReceiver(int Pid)
-{
+cRDSReceiver::cRDSReceiver(int Pid) {
dsyslog("radio: additional RDS-Receiver starts on Pid=%d", Pid);
pid = Pid;
rt_start = rt_bstuff = false;
}
-cRDSReceiver::~cRDSReceiver()
-{
+cRDSReceiver::~cRDSReceiver() {
dsyslog("radio: additional RDS-Receiver stopped");
}
#if VDRVERSNUM >= 20300
void cRDSReceiver::Receive(const uchar *Data, int Length)
#else
-void cRDSReceiver::Receive(uchar *Data, int Length)
+ void cRDSReceiver::Receive(uchar *Data, int Length)
#endif
-{
- const int mframel = 263; // max. 255(MSG)+4(ADD/SQC/MFL)+2(CRC)+2(Start/Stop) of RDS-data
- static unsigned char mtext[mframel+1];
+ {
+ const int mframel = 263; // max. 255(MSG)+4(ADD/SQC/MFL)+2(CRC)+2(Start/Stop) of RDS-data
+ static unsigned char mtext[mframel + 1];
static int index;
static int mec = 0;
-
+
// check TS-Size, -Sync, PID, Payload
- if (Length != TS_SIZE || Data[0] != 0x47 || pid != ((Data[1] & 0x1f)<<8)+Data[2] || !(Data[3] & 0x10))
+ if (Length != TS_SIZE || Data[0] != 0x47
+ || pid != ((Data[1] & 0x1f) << 8) + Data[2] || !(Data[3] & 0x10)) {
return;
+ }
int offset;
- if (Data[1] & 0x40) { // 1.TS-Frame, payload-unit-start
- offset = (Data[3] & 0x20) ? Data[4] + 11 : 10; // Header + ADFL + 6 byte: PES-Startcode, -StreamID, -PacketLength
- if (Data[offset-3] == 0xbd) { // StreamID = Private stream 1 (for rds)
- offset += 3; // 3 byte: Extension + Headerlength
- offset += Data[offset-1];
- }
- else
+ if (Data[1] & 0x40) { // 1.TS-Frame, payload-unit-start
+ offset = (Data[3] & 0x20) ? Data[4] + 11 : 10; // Header + ADFL + 6 byte: PES-Startcode, -StreamID, -PacketLength
+ if (Data[offset - 3] == 0xbd) { // StreamID = Private stream 1 (for rds)
+ offset += 3; // 3 byte: Extension + Headerlength
+ offset += Data[offset - 1];
+ } else {
return;
}
- else
+ } else {
offset = (Data[3] & 0x20) ? Data[4] + 5 : 4; // Header + ADFL
+ }
- if (TS_SIZE-offset <= 0)
+ if ((TS_SIZE - offset) <= 0) {
return;
-
+ }
// print TS-RawData with RDS
- if ((S_Verbose & 0x0f) >= 3) {
- printf("\n\nTS-Data(%d): ", Length);
- for (int a=0; a<Length; a++)
+ if ((S_Verbose & 0x02) == 0x02) {
+ printf("\n\nTS-Data(%d):\n", Length);
+ int cnt = 0;
+ for (int a = 0; a < Length; a++) {
printf("%02x ", Data[a]);
- printf("(End)\n\n");
+ cnt++;
+ if (cnt > 15) {
+ cnt = 0;
+ printf("\n");
+ }
}
+ printf("(End)\n");
+ }
- for (int i = 0, val = 0; i < (TS_SIZE-offset); i++) {
- val = Data[offset+i];
+ for (int i = 0, val = 0; i < (TS_SIZE - offset); i++) {
+ val = Data[offset + i];
if (val == 0xfe) { // Start
index = -1;
rt_start = true;
rt_bstuff = false;
mec = 0;
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("\nRDS-Start: ");
}
+ }
if (rt_start) {
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("%02x ", val);
+ }
// byte-stuffing reverse: 0xfd00->0xfd, 0xfd01->0xfe, 0xfd02->0xff
if (rt_bstuff) {
switch (val) {
- case 0x00: mtext[index] = 0xfd; break;
- case 0x01: mtext[index] = 0xfe; break;
- case 0x02: mtext[index] = 0xff; break;
- default: mtext[++index] = val; // should never be
- }
+ case 0x00:
+ mtext[index] = 0xfd;
+ break;
+ case 0x01:
+ mtext[index] = 0xfe;
+ break;
+ case 0x02:
+ mtext[index] = 0xff;
+ break;
+ default:
+ mtext[++index] = val; // should never be
+ }
rt_bstuff = false;
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("(Bytestuffing -> %02x) ", mtext[index]);
}
- else
+ } else {
mtext[++index] = val;
- if (val == 0xfd && index > 0) // stuffing found
+ }
+ if (val == 0xfd && index > 0) { // stuffing found
rt_bstuff = true;
-
+ }
// early check for used MEC
if (index == 5) {
//mec = val;
switch (val) {
- case 0x0a: // RT
- case 0x46: // ODA-Data
- case 0x07: // PTY
- case 0x3e: // PTYN
- case 0x30: // TMC
- case 0x02: mec = val; // PS
- RdsLogo = true;
- break;
- default: rt_start = false;
- if ((S_Verbose & 0x0f) >= 2)
- printf("[RDS-MEC '%02x' not used -> End]\n", val);
+ case 0x0a: // RT
+ case 0x46: // ODA-Data
+ case 0x07: // PTY
+ case 0x3e: // PTYN
+ case 0x30: // TMC
+ case 0x02:
+ mec = val; // PS
+ RdsLogo = true;
+ break;
+ default:
+ rt_start = false;
+ if ((S_Verbose & 0x0f) >= 2) {
+ printf("[RDS-MEC '%02x' not used -> End]\n", val);
}
}
+ }
if (index >= mframel) { // max. rdslength, garbage ?
rt_start = false;
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("(RDS-Error: too long, garbage ?)\n");
}
}
+ }
if (rt_start && val == 0xff) { // End
rt_start = false;
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("(RDS-End)\n");
+ }
if (index < 9) { // min. rdslength, garbage ?
- if ((S_Verbose & 0x0f) >= 1)
+ if ((S_Verbose & 0x0f) >= 1) {
printf("RDS-Error: too short -> garbage ?\n");
}
- else {
+ } else {
// crc16-check
- unsigned short crc16 = crc16_ccitt(mtext, index-3, true);
- if (crc16 != (mtext[index-2]<<8)+mtext[index-1]) {
- if ((S_Verbose & 0x0f) >= 1)
- printf("RDS-Error: wrong CRC # calc = %04x <> transmit = %02x%02x\n", crc16, mtext[index-2], mtext[index-1]);
+ unsigned short crc16 = crc16_ccitt(mtext, index - 3, true);
+ if (crc16 != (mtext[index - 2] << 8) + mtext[index - 1]) {
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf(
+ "RDS-Error: wrong CRC # calc = %04x <> transmit = %02x%02x\n",
+ crc16, mtext[index - 2], mtext[index - 1]);
}
- else {
+ } else {
switch (mec) {
- case 0x0a: RadioAudio->RadiotextDecode(mtext, index); // Radiotext
- break;
- case 0x46: switch ((mtext[7]<<8)+mtext[8]) { // ODA-ID
- case 0x4bd7: RadioAudio->RadiotextDecode(mtext, index); // RT+
- break;
- case 0x0d45:
- case 0xcd46: if ((S_Verbose & 0x20) > 0) {
- unsigned char tmc[6]; // TMC Alert-C
- int i;
- for (i=9; i<=(index-3); i++) {
- tmc[i-9] = mtext[i];
- tmc_parser(tmc, i-8);
- }
- }
- break;
- default: if ((S_Verbose & 0x0f) >= 2)
- printf("[RDS-ODA AID '%02x%02x' not used -> End]\n", mtext[7], mtext[8]);
- }
- break;
- case 0x07: RT_PTY = mtext[8]; // PTY
- if ((S_Verbose & 0x0f) >= 1)
- printf("RDS-PTY set to '%s'\n", ptynr2string(RT_PTY));
- break;
- case 0x3e: RadioAudio->RDS_PsPtynDecode(true, mtext, index); // PTYN
- break;
- case 0x02: RadioAudio->RDS_PsPtynDecode(false, mtext, index); // PS
- break;
- case 0x30: if ((S_Verbose & 0x20) > 0) { // TMC Alert-C
- unsigned char tmc[6];
- int i;
- for (i=7; i<=(index-3); i++)
- tmc[i-7] = mtext[i];
- tmc_parser(tmc, i-6);
- }
- break;
+ case 0x0a:
+ RadioAudio->RadiotextDecode(mtext, index); // Radiotext
+ break;
+ case 0x46:
+ switch ((mtext[7] << 8) + mtext[8]) { // ODA-ID
+ case 0x4bd7:
+ RadioAudio->RadiotextDecode(mtext, index); // RT+
+ break;
+ case 0x0d45:
+ case 0xcd46:
+ if ((S_Verbose & 0x20) > 0) {
+ unsigned char tmc[6]; // TMC Alert-C
+ int i;
+ for (i = 9; i <= (index - 3); i++) {
+ tmc[i - 9] = mtext[i];
+ tmc_parser(tmc, i - 8);
+ }
+ }
+ break;
+ default:
+ if ((S_Verbose & 0x0f) >= 2) {
+ printf(
+ "[RDS-ODA AID '%02x%02x' not used -> End]\n",
+ mtext[7], mtext[8]);
+ }
}
+ break;
+ case 0x07:
+ RT_PTY = mtext[8]; // PTY
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf("RDS-PTY set to '%s'\n",
+ ptynr2string(RT_PTY));
+ }
+ break;
+ case 0x3e:
+ RadioAudio->RDS_PsPtynDecode(true, mtext, index); // PTYN
+ break;
+ case 0x02:
+ RadioAudio->RDS_PsPtynDecode(false, mtext, index); // PS
+ break;
+ case 0x30:
+ if ((S_Verbose & 0x20) > 0) { // TMC Alert-C
+ unsigned char tmc[6];
+ int i;
+ for (i = 7; i <= (index - 3); i++) {
+ tmc[i - 7] = mtext[i];
+ }
+ tmc_parser(tmc, i - 6);
+ }
+ break;
}
}
}
-
}
+ }
}
-
// --- cRadioAudio -------------------------------------------------------------
-cRadioAudio::cRadioAudio()
- : cAudio()
- , enabled(false)
- , first_packets(0)
- , audiopid(0)
- , bratefound(false)
- , rdsdevice(NULL)
- , bitrate(NULL)
-{
+cRadioAudio::cRadioAudio() :
+ cAudio(), enabled(false), first_packets(0), audiopid(0), bratefound(
+ false), rdsdevice(NULL), bitrate(NULL) {
RadioAudio = this;
dsyslog("radio: new cRadioAudio");
}
-cRadioAudio::~cRadioAudio()
-{
+cRadioAudio::~cRadioAudio() {
dsyslog("radio: delete cRadioAudio");
}
/* for old pes-recordings */
-void cRadioAudio::Play(const uchar *Data, int Length, uchar Id)
-{
- if (!enabled)
+void cRadioAudio::Play(const uchar *Data, int Length, uchar Id) {
+ if (!enabled) {
return;
-
- if (Id < 0xc0 || Id > 0xdf)
+ }
+ if (Id < 0xc0 || Id > 0xdf) {
return;
+ }
// Rass-Images Slideshow
if (S_RassText > 0 && Rass_Archiv == -1 && Rass_Show == 1) {
@@ -466,28 +500,31 @@ void cRadioAudio::Play(const uchar *Data, int Length, uchar Id)
asprintf(&image, "%s/Rass_show.mpg", DataDir);
RadioImage->SetBackgroundImage(image);
free(image);
- }
+ }
// check Audo-Bitrate
- if (S_RtFunc < 1)
+ if (S_RtFunc < 1) {
return;
+ }
if (first_packets < 3) {
first_packets++;
- if (first_packets == 3)
+ if (first_packets == 3) {
bitrate = audiobitrate(Data);
- return;
}
+ return;
+ }
// check Radiotext-PES
- if (Radio_CA == 0)
+ if (Radio_CA == 0) {
RadiotextCheckPES(Data, Length);
+ }
}
-void cRadioAudio::PlayTs(const uchar *Data, int Length)
-{
- if (!enabled)
+void cRadioAudio::PlayTs(const uchar *Data, int Length) {
+ if (!enabled) {
return;
-
+ }
+
// Rass-Images Slideshow
if (S_RassText > 0 && Rass_Archiv == -1 && Rass_Show == 1) {
Rass_Show = 0;
@@ -495,353 +532,439 @@ void cRadioAudio::PlayTs(const uchar *Data, int Length)
asprintf(&image, "%s/Rass_show.mpg", DataDir);
RadioImage->SetBackgroundImage(image);
free(image);
- }
+ }
- if (S_RtFunc < 1)
+ if (S_RtFunc < 1) {
return;
+ }
if (first_packets < 99) {
first_packets++;
return;
- }
+ }
// check Radiotext-TS
- if (Radio_CA == 0)
+ if (Radio_CA == 0) {
RadiotextCheckTS(Data, Length);
+ }
}
/* for old pes-recordings */
-void cRadioAudio::RadiotextCheckPES(const uchar *data, int len)
-{
- const int mframel = 263; // max. 255(MSG)+4(ADD/SQC/MFL)+2(CRC)+2(Start/Stop) of RDS-data
- static unsigned char mtext[mframel+1];
- static bool rt_start = false, rt_bstuff=false;
+void cRadioAudio::RadiotextCheckPES(const uchar *data, int len) {
+ const int mframel = 263; // max. 255(MSG)+4(ADD/SQC/MFL)+2(CRC)+2(Start/Stop) of RDS-data
+ static unsigned char mtext[mframel + 1];
+ static bool rt_start = false, rt_bstuff = false;
static int index;
static int mec = 0;
int offset = 0;
while (true) {
- int pesl = (offset+5 < len) ? (data[offset+4] << 8) + data[offset+5] + 6 : -1;
- if (pesl <= 0 || offset+pesl > len)
+ int pesl =
+ (offset + 5 < len) ?
+ (data[offset + 4] << 8) + data[offset + 5] + 6 : -1;
+ if ((pesl <= 0) || ((offset + pesl) > len)) {
return;
+ }
offset += pesl;
- int rdsl = data[offset-2]; // RDS DataFieldLength
+ int rdsl = data[offset - 2]; // RDS DataFieldLength
// RDS DataSync = 0xfd @ end
- if (data[offset-1] == 0xfd && rdsl > 0) {
+ if ((data[offset - 1] == 0xfd) && (rdsl > 0)) {
// print RawData with RDS-Info
if ((S_Verbose & 0x0f) >= 3) {
printf("\n\nPES-Data(%d/%d): ", pesl, len);
- for (int a=offset-pesl; a<offset; a++)
+ for (int a = offset - pesl; a < offset; a++) {
printf("%02x ", data[a]);
- printf("(End)\n\n");
}
-
- for (int i = offset-3, val; i > offset-3-rdsl; i--) { // <-- data reverse, from end to start
+ printf("(End)\n\n");
+ }
+
+ for (int i = offset - 3, val; i > offset - 3 - rdsl; i--) { // <-- data reverse, from end to start
val = data[i];
if (val == 0xfe) { // Start
index = -1;
rt_start = true;
rt_bstuff = false;
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("\nRDS-Start: ");
}
+ }
if (rt_start) {
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("%02x ", val);
+ }
// byte-stuffing reverse: 0xfd00->0xfd, 0xfd01->0xfe, 0xfd02->0xff
if (rt_bstuff) {
switch (val) {
- case 0x00: mtext[index] = 0xfd; break;
- case 0x01: mtext[index] = 0xfe; break;
- case 0x02: mtext[index] = 0xff; break;
- default: mtext[++index] = val; // should never be
- }
+ case 0x00:
+ mtext[index] = 0xfd;
+ break;
+ case 0x01:
+ mtext[index] = 0xfe;
+ break;
+ case 0x02:
+ mtext[index] = 0xff;
+ break;
+ default:
+ mtext[++index] = val; // should never be
+ }
rt_bstuff = false;
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("(Bytestuffing -> %02x) ", mtext[index]);
}
- else
+ } else {
mtext[++index] = val;
- if (val == 0xfd && index > 0) // stuffing found
+ }
+ if (val == 0xfd && index > 0) { // stuffing found
rt_bstuff = true;
+ }
// early check for used MEC
if (index == 5) {
//mec = val;
switch (val) {
- case 0x0a: // RT
- case 0x46: // ODA-Data
- case 0xda: // Rass
- case 0x07: // PTY
- case 0x3e: // PTYN
- case 0x30: // TMC
- case 0x02: mec = val; // PS
- RdsLogo = true;
- break;
- default: rt_start = false;
- if ((S_Verbose & 0x0f) >= 2)
- printf("[RDS-MEC '%02x' not used -> End]\n", val);
+ case 0x0a: // RT
+ case 0x46: // ODA-Data
+ case 0xda: // Rass
+ case 0x07: // PTY
+ case 0x3e: // PTYN
+ case 0x30: // TMC
+ case 0x02:
+ mec = val; // PS
+ RdsLogo = true;
+ break;
+ default:
+ rt_start = false;
+ if ((S_Verbose & 0x0f) >= 2) {
+ printf("[RDS-MEC '%02x' not used -> End]\n",
+ val);
}
}
+ }
if (index >= mframel) { // max. rdslength, garbage ?
- if ((S_Verbose & 0x0f) >= 1)
+ if ((S_Verbose & 0x0f) >= 1) {
printf("RDS-Error(PES): too long, garbage ?\n");
- rt_start = false;
}
+ rt_start = false;
}
+ }
if (rt_start && val == 0xff) { // End
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("(RDS-End)\n");
+ }
rt_start = false;
if (index < 9) { // min. rdslength, garbage ?
- if ((S_Verbose & 0x0f) >= 1)
+ if ((S_Verbose & 0x0f) >= 1) {
printf("RDS-Error(PES): too short -> garbage ?\n");
}
- else {
+ } else {
// crc16-check
- unsigned short crc16 = crc16_ccitt(mtext, index-3, true);
- if (crc16 != (mtext[index-2]<<8)+mtext[index-1]) {
- if ((S_Verbose & 0x0f) >= 1)
- printf("RDS-Error(PES): wrong CRC # calc = %04x <> transmit = %02x%02x\n", crc16, mtext[index-2], mtext[index-1]);
+ unsigned short crc16 = crc16_ccitt(mtext, index - 3,
+ true);
+ if (crc16
+ != (mtext[index - 2] << 8) + mtext[index - 1]) {
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf(
+ "RDS-Error(PES): wrong CRC # calc = %04x <> transmit = %02x%02x\n",
+ crc16, mtext[index - 2],
+ mtext[index - 1]);
}
- else {
+ } else {
switch (mec) {
- case 0x0a: RadiotextDecode(mtext, index); // Radiotext
- break;
- case 0x46: switch ((mtext[7]<<8)+mtext[8]) { // ODA-ID
- case 0x4bd7: RadioAudio->RadiotextDecode(mtext, index); // RT+
- break;
- case 0x0d45:
- case 0xcd46: if ((S_Verbose & 0x20) > 0) {
- unsigned char tmc[6]; // TMC Alert-C
- int i;
- for (i=9; i<=(index-3); i++)
- tmc[i-9] = mtext[i];
- tmc_parser(tmc, i-8);
- }
- break;
- default: if ((S_Verbose & 0x0f) >= 2)
- printf("[RDS-ODA AID '%02x%02x' not used -> End]\n", mtext[7], mtext[8]);
- }
- break;
- case 0x07: RT_PTY = mtext[8]; // PTY
- if ((S_Verbose & 0x0f) >= 1)
- printf("RDS-PTY set to '%s'\n", ptynr2string(RT_PTY));
- break;
- case 0x3e: RDS_PsPtynDecode(true, mtext, index); // PTYN
- break;
- case 0x02: RDS_PsPtynDecode(false, mtext, index); // PS
- break;
- case 0xda: RassDecode(mtext, index); // Rass
- break;
- case 0x30: if ((S_Verbose & 0x20) > 0) { // TMC Alert-C
- unsigned char tmc[6];
- int i;
- for (i=7; i<=(index-3); i++)
- tmc[i-7] = mtext[i];
- tmc_parser(tmc, i-6);
- }
- break;
+ case 0x0a:
+ RadiotextDecode(mtext, index); // Radiotext
+ break;
+ case 0x46:
+ switch ((mtext[7] << 8) + mtext[8]) { // ODA-ID
+ case 0x4bd7:
+ RadioAudio->RadiotextDecode(mtext, index); // RT+
+ break;
+ case 0x0d45:
+ case 0xcd46:
+ if ((S_Verbose & 0x20) > 0) {
+ unsigned char tmc[6]; // TMC Alert-C
+ int i;
+ for (i = 9; i <= (index - 3); i++)
+ tmc[i - 9] = mtext[i];
+ tmc_parser(tmc, i - 8);
+ }
+ break;
+ default:
+ if ((S_Verbose & 0x0f) >= 2) {
+ printf(
+ "[RDS-ODA AID '%02x%02x' not used -> End]\n",
+ mtext[7], mtext[8]);
+ }
+ }
+ break;
+ case 0x07:
+ RT_PTY = mtext[8]; // PTY
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf("RDS-PTY set to '%s'\n",
+ ptynr2string(RT_PTY));
+ }
+ break;
+ case 0x3e:
+ RDS_PsPtynDecode(true, mtext, index); // PTYN
+ break;
+ case 0x02:
+ RDS_PsPtynDecode(false, mtext, index); // PS
+ break;
+ case 0xda:
+ RassDecode(mtext, index); // Rass
+ break;
+ case 0x30:
+ if ((S_Verbose & 0x20) > 0) { // TMC Alert-C
+ unsigned char tmc[6];
+ int i;
+ for (i = 7; i <= (index - 3); i++) {
+ tmc[i - 7] = mtext[i];
+ }
+ tmc_parser(tmc, i - 6);
}
+ break;
}
}
}
-
}
}
}
+ }
}
-void cRadioAudio::RadiotextCheckTS(const uchar *data, int len)
-{
+void cRadioAudio::RadiotextCheckTS(const uchar *data, int len) {
static int pesfound = 0;
- const int mframel = 263; // max. 255(MSG)+4(ADD/SQC/MFL)+2(CRC)+2(Start/Stop) of RDS-data
- static unsigned char mtext[mframel+1], lastframe[TS_SIZE-4];
+ const int mframel = 263; // max. 255(MSG)+4(ADD/SQC/MFL)+2(CRC)+2(Start/Stop) of RDS-data
+ static unsigned char mtext[mframel + 1], lastframe[TS_SIZE - 4];
static int rt_start = 0, rt_bstuff = 0;
static int index;
static int mec = 0;
int i, ii, val;
/* TS-Frame && Payload, correct AudioPID ? */
- if (data[0] != 0x47 || !(data[3] & 0x10)) {// || audiopid != ((data[1] & 0x1f)<<8) + data[2])) {
+ if ((data[0] != 0x47) || !(data[3] & 0x10)) { // || audiopid != ((data[1] & 0x1f)<<8) + data[2])) {
pesfound = 0;
return;
- }
+ }
- if ((S_Verbose & 0x0f) >= 3) {
- printf("\n\nTS-Data: ");
- for (int a=0; a<len; a++)
+ if ((S_Verbose & 0x02) == 0x02) {
+ printf("\nTS-Data(%d):\n", len);
+ int cnt = 0;
+ for (int a = 0; a < len; a++) {
printf("%02x ", data[a]);
- printf("(TS-End)\n\n");
+ cnt++;
+ if (cnt > 15) {
+ printf("\n");
+ cnt = 0;
+ }
}
+ printf("(TS-End)\n");
+ }
int offset = TS_SIZE - 1;
int rdsl = 0, afdl = 0;
- if ((data[1] & 0x40) == 0x40) { // 1.TS-Frame
- offset = ((data[3] & 0x20)>>4) ? data[4] + 5 : 4; // Header+ADFL
- if (data[offset] == 0x00 && data[offset+1] == 0x00 && data[offset+2] == 0x01 && // PES-Startcode
- data[offset+3] >= 0xc0 && data[offset+3] <= 0xdf) { // PES-Audiostream MP1/2
+ if ((data[1] & 0x40) == 0x40) { // 1.TS-Frame
+ offset = ((data[3] & 0x20) >> 4) ? data[4] + 5 : 4; // Header+ADFL
+ if (data[offset] == 0x00 && data[offset + 1] == 0x00
+ && data[offset + 2] == 0x01 && // PES-Startcode
+ data[offset + 3] >= 0xc0 && data[offset + 3] <= 0xdf) { // PES-Audiostream MP1/2
pesfound = 1;
if (!bratefound) {
- bitrate = audiobitrate(data+offset);
+ bitrate = audiobitrate(data + offset);
bratefound = true;
- }
- return;
}
+ return;
}
+ }
// RDS DataSync = 0xfd @ audio-end
- else if (pesfound && data[3] == 0x3f && data[offset] == 0xfd) { // last TS-Frame
- rdsl = data[offset-1];
+ else if (pesfound && data[3] == 0x3f && data[offset] == 0xfd) { // last TS-Frame
+ rdsl = data[offset - 1];
pesfound = 0;
- }
- else if (pesfound) { // TS-Frames between
- afdl = ((data[3] & 0x20)>>4) ? data[4] + 1 : 0; // AdaptationField-Length
+ } else if (pesfound) { // TS-Frames between
+ afdl = ((data[3] & 0x20) >> 4) ? data[4] + 1 : 0; // AdaptationField-Length
// search for PES-Change
- for (i = afdl+3; i < TS_SIZE-4; i++) {
- if (data[i] == 0xfd && data[i+1] == 0xff && ((data[i+2] & 0xf0) == 0xf0) && ((data[i+3] & 0x04) == 0x04)) {
- // && ((data[i+4] & 0x0f) != 0x0f))
+ for (i = afdl + 3; i < TS_SIZE - 4; i++) {
+ if (data[i] == 0xfd && data[i + 1] == 0xff
+ && ((data[i + 2] & 0xf0) == 0xf0)
+ && ((data[i + 3] & 0x04) == 0x04)) {
+ // && ((data[i+4] & 0x0f) != 0x0f))
offset = i;
- rdsl = data[offset-1];
+ rdsl = data[offset - 1];
break;
- }
}
}
- else /* no PES-Audio MPEG-1/2 found */
+ } else {
+ /* no PES-Audio MPEG-1/2 found */
return;
+ }
if (rdsl <= 0) { // save payload of last frame with no PES-Change
- for (i = TS_SIZE-1, ii = 0; i > 3; i--)
+ for (i = TS_SIZE - 1, ii = 0; i > 3; i--) {
lastframe[ii++] = data[i];
- return;
}
+ return;
+ }
// RDS data
- for (i = offset-2, ii = 0; i > offset-2-rdsl; i--) { // <-- data reverse, from end to start
- if (i > afdl+3)
+ for (i = offset - 2, ii = 0; i > offset - 2 - rdsl; i--) { // <-- data reverse, from end to start
+ if (i > afdl + 3) {
val = data[i];
- else if (ii < TS_SIZE-5)
+ } else if (ii < TS_SIZE - 5) {
val = lastframe[ii++];
- else
+ } else {
return;
+ }
if (val == 0xfe) { // Start
index = -1;
rt_start = 1;
rt_bstuff = 0;
mec = 0;
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("\nRDS-Start: ");
}
+ }
if (rt_start == 1) {
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("%02x ", val);
+ }
// byte-stuffing reverse: 0xfd00->0xfd, 0xfd01->0xfe, 0xfd02->0xff
if (rt_bstuff == 1) {
switch (val) {
- case 0x00: mtext[index] = 0xfd; break;
- case 0x01: mtext[index] = 0xfe; break;
- case 0x02: mtext[index] = 0xff; break;
- default: mtext[++index] = val; // should never be
- }
+ case 0x00:
+ mtext[index] = 0xfd;
+ break;
+ case 0x01:
+ mtext[index] = 0xfe;
+ break;
+ case 0x02:
+ mtext[index] = 0xff;
+ break;
+ default:
+ mtext[++index] = val; // should never be
+ }
rt_bstuff = 0;
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("(Bytestuffing -> %02x) ", mtext[index]);
}
- else
+ } else {
mtext[++index] = val;
- if (val == 0xfd && index > 0) // stuffing found
+ }
+ if (val == 0xfd && index > 0) { // stuffing found
rt_bstuff = 1;
+ }
// early check for used mec
if (index == 5) {
switch (val) {
- case 0x0a: // RT
- case 0x46: // ODA-Data
- case 0xda: // Rass
- case 0x07: // PTY
- case 0x3e: // PTYN
- case 0x30: // TMC
- case 0x02: mec = val; // PS
- RdsLogo = true;
- break;
- default: rt_start = 0;
- if ((S_Verbose & 0x0f) >= 2)
- printf("[RDS-MEC '%02x' not used -> End]\n", val);
+ case 0x0a: // RT
+ case 0x46: // ODA-Data
+ case 0xda: // Rass
+ case 0x07: // PTY
+ case 0x3e: // PTYN
+ case 0x30: // TMC
+ case 0x02:
+ mec = val; // PS
+ RdsLogo = true;
+ break;
+ default:
+ rt_start = 0;
+ if ((S_Verbose & 0x0f) >= 2) {
+ printf("[RDS-MEC '%02x' not used -> End]\n", val);
}
}
+ }
if (index >= mframel) { // max. rdslength, garbage ?
- if ((S_Verbose & 0x0f) >= 1)
+ if ((S_Verbose & 0x0f) >= 1) {
printf("RDS-Error(TS): too long, garbage ?\n");
- rt_start = 0;
}
+ rt_start = 0;
}
+ }
if (rt_start == 1 && val == 0xff) { // End
- if ((S_Verbose & 0x0f) >= 2)
+ if ((S_Verbose & 0x0f) >= 2) {
printf("(RDS-End)\n");
- rt_start = 0;
- if (index < 9) { // min. rdslength, garbage ?
- if ((S_Verbose & 0x0f) >= 1)
+ }
+ rt_start = 0;
+ if (index < 9) { // min. rdslength, garbage ?
+ if ((S_Verbose & 0x0f) >= 1) {
printf("RDS-Error(TS): too short -> garbage ?\n");
- }
- else {
- // crc16-check
- unsigned short crc16 = crc16_ccitt(mtext, index-3, 1);
- if (crc16 != (mtext[index-2]<<8)+mtext[index-1]) {
- if ((S_Verbose & 0x0f) >= 1)
- printf("RDS-Error(TS): wrong CRC # calc = %04x <> transmit = %02x%02x\n", crc16, mtext[index-2], mtext[index-1]);
- }
- else {
- switch (mec) {
- case 0x0a: RadiotextDecode(mtext, index); // Radiotext
- break;
- case 0x46: switch ((mtext[7]<<8)+mtext[8]) { // ODA-ID
- case 0x4bd7: RadiotextDecode(mtext, index); // RT+
- break;
- case 0x0d45:
- case 0xcd46: if ((S_Verbose & 0x20) > 0) {
- unsigned char tmc[6]; // TMC Alert-C
- int i;
- for (i=9; i<=(index-3); i++)
- tmc[i-9] = mtext[i];
- tmc_parser(tmc, i-8);
- }
- break;
- default: if ((S_Verbose & 0x0f) >= 2)
- printf("[RDS-ODA AID '%02x%02x' not used -> End]\n", mtext[7], mtext[8]);
- }
- break;
- case 0x07: RT_PTY = mtext[8]; // PTY
- if ((S_Verbose & 0x0f) >= 1)
- printf("RDS-PTY set to '%s'\n", ptynr2string(RT_PTY));
- break;
- case 0x3e: RDS_PsPtynDecode(1, mtext, index); // PTYN
- break;
- case 0x02: RDS_PsPtynDecode(0, mtext, index); // PS
- break;
- case 0xda: RassDecode(mtext, index); // Rass
- break;
- case 0x30: if ((S_Verbose & 0x20) > 0) { // TMC Alert-C
- unsigned char tmc[6];
- int i;
- for (i=7; i<=(index-3); i++)
- tmc[i-7] = mtext[i];
- tmc_parser(tmc, i-6);
- }
- }
- }
- }
- }
- }
+ }
+ } else {
+ // crc16-check
+ unsigned short crc16 = crc16_ccitt(mtext, index - 3, 1);
+ if (crc16 != (mtext[index - 2] << 8) + mtext[index - 1]) {
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf(
+ "RDS-Error(TS): wrong CRC # calc = %04x <> transmit = %02x%02x\n",
+ crc16, mtext[index - 2], mtext[index - 1]);
+ }
+ } else {
+ switch (mec) {
+ case 0x0a:
+ RadiotextDecode(mtext, index); // Radiotext
+ break;
+ case 0x46:
+ switch ((mtext[7] << 8) + mtext[8]) { // ODA-ID
+ case 0x4bd7:
+ RadiotextDecode(mtext, index); // RT+
+ break;
+ case 0x0d45:
+ case 0xcd46:
+ if ((S_Verbose & 0x20) > 0) {
+ unsigned char tmc[6]; // TMC Alert-C
+ int i;
+ for (i = 9; i <= (index - 3); i++)
+ tmc[i - 9] = mtext[i];
+ tmc_parser(tmc, i - 8);
+ }
+ break;
+ default:
+ if ((S_Verbose & 0x0f) >= 2) {
+ printf(
+ "[RDS-ODA AID '%02x%02x' not used -> End]\n",
+ mtext[7], mtext[8]);
+ }
+ }
+ break;
+ case 0x07:
+ RT_PTY = mtext[8]; // PTY
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf("RDS-PTY set to '%s'\n",
+ ptynr2string(RT_PTY));
+ }
+ break;
+ case 0x3e:
+ RDS_PsPtynDecode(1, mtext, index); // PTYN
+ break;
+ case 0x02:
+ RDS_PsPtynDecode(0, mtext, index); // PS
+ break;
+ case 0xda:
+ RassDecode(mtext, index); // Rass
+ break;
+ case 0x30:
+ if ((S_Verbose & 0x20) > 0) { // TMC Alert-C
+ unsigned char tmc[6];
+ int i;
+ for (i = 7; i <= (index - 3); i++) {
+ tmc[i - 7] = mtext[i];
+ }
+ tmc_parser(tmc, i - 6);
+ }
+ }
+ }
+ }
+ }
+ }
}
-void cRadioAudio::RadiotextDecode(unsigned char *mtext, int len)
-{
+void cRadioAudio::RadiotextDecode(unsigned char *mtext, int len) {
static bool rtp_itoggle = false;
static int rtp_idiffs = 0;
static cTimeMs rtp_itime;
@@ -850,231 +973,298 @@ void cRadioAudio::RadiotextDecode(unsigned char *mtext, int len)
// byte 1+2 = ADD (10bit SiteAdress + 6bit EncoderAdress)
// byte 3 = SQC (Sequence Counter 0x00 = not used)
int leninfo = mtext[4]; // byte 4 = MFL (Message Field Length)
- if (len >= leninfo+7) { // check complete length
+ if (len >= leninfo + 7) { // check complete length
- // byte 5 = MEC (Message Element Code, 0x0a for RT, 0x46 for RTplus)
+ // byte 5 = MEC (Message Element Code, 0x0a for RT, 0x46 for RTplus)
if (mtext[5] == 0x0a) {
// byte 6+7 = DSN+PSN (DataSetNumber+ProgramServiceNumber,
// ignore here, always 0x00 ?)
// byte 8 = MEL (MessageElementLength, max. 64+1 byte @ RT)
- if (mtext[8] == 0 || mtext[8] > RT_MEL || mtext[8] > leninfo-4) {
- if ((S_Verbose & 0x0f) >= 1)
- printf("RT-Error: Length=0 or not correct (MFL= %d, MEL= %d)\n", mtext[4], mtext[8]);
- return;
+ if (mtext[8] == 0 || mtext[8] > RT_MEL || mtext[8] > leninfo - 4) {
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf(
+ "RT-Error: Length=0 or not correct (MFL= %d, MEL= %d)\n",
+ mtext[4], mtext[8]);
}
+ return;
+ }
// byte 9 = RT-Status bitcodet (0=AB-flagcontrol, 1-4=Transmission-Number, 5+6=Buffer-Config,
- // ingnored, always 0x01 ?)
+ // ignored, always 0x01 ?)
char temptext[RT_MEL];
- memset(temptext, 0x20, RT_MEL-1);
+ memset(temptext, 0x20, RT_MEL - 1);
for (int i = 1, ii = 0; i < mtext[8]; i++) {
- if (mtext[9+i] <= 0xfe)
+ if (mtext[9 + i] <= 0xfe) {
// additional rds-character, see RBDS-Standard, Annex E
- temptext[ii++] = (mtext[9+i] >= 0x80) ? rds_addchar[mtext[9+i]-0x80] : mtext[9+i];
+ temptext[ii++] =
+ (mtext[9 + i] >= 0x80) ?
+ rds_addchar[mtext[9 + i] - 0x80] :
+ mtext[9 + i];
}
- memcpy(plustext, temptext, RT_MEL-1);
+ }
+ memcpy(plustext, temptext, RT_MEL - 1);
rds_entitychar(temptext);
// check repeats
bool repeat = false;
for (int ind = 0; ind < S_RtOsdRows; ind++) {
- if (memcmp(RT_Text[ind], temptext, RT_MEL-1) == 0) {
+ if (memcmp(RT_Text[ind], temptext, RT_MEL - 1) == 0) {
repeat = true;
- if ((S_Verbose & 0x0f) >= 1)
+ if ((S_Verbose & 0x0f) >= 1) {
printf("RText-Rep[%d]: %s\n", ind, RT_Text[ind]);
}
}
+ }
if (!repeat) {
- memcpy(RT_Text[RT_Index], temptext, RT_MEL-1);
+ memcpy(RT_Text[RT_Index], temptext, RT_MEL - 1);
// +Memory
char *temp;
asprintf(&temp, "%s", RT_Text[RT_Index]);
- if (++rtp_content.rt_Index >= 2*MAX_RTPC)
+ if (++rtp_content.rt_Index >= 2 * MAX_RTPC) {
rtp_content.rt_Index = 0;
- asprintf(&rtp_content.radiotext[rtp_content.rt_Index], "%s", rtrim(temp));
+ }
+ asprintf(&rtp_content.radiotext[rtp_content.rt_Index], "%s",
+ rtrim(temp));
free(temp);
- if ((S_Verbose & 0x0f) >= 1)
+ if ((S_Verbose & 0x0f) >= 1) {
printf("Radiotext[%d]: %s\n", RT_Index, RT_Text[RT_Index]);
- RT_Index +=1; if (RT_Index >= S_RtOsdRows) RT_Index = 0;
}
+ RT_Index += 1;
+ if (RT_Index >= S_RtOsdRows) {
+ RT_Index = 0;
+ }
+ }
RTP_TToggle = 0x03; // Bit 0/1 = Title/Artist
RT_MsgShow = true;
(RT_Info > 0) ? : RT_Info = 1;
radioStatusMsg();
- }
+ }
- else if (RTP_TToggle > 0 && mtext[5] == 0x46 && S_RtFunc >= 2) { // RTplus tags V2.1, only if RT
- if (mtext[6] > leninfo-2 || mtext[6] != 8) { // byte 6 = MEL, only 8 byte for 2 tags
- if ((S_Verbose & 0x0f) >= 1)
- printf("RTp-Error: Length not correct (MEL= %d)\n", mtext[6]);
- return;
+ else if (RTP_TToggle > 0 && mtext[5] == 0x46 && S_RtFunc >= 2) { // RTplus tags V2.1, only if RT
+ if (mtext[6] > leninfo - 2 || mtext[6] != 8) { // byte 6 = MEL, only 8 byte for 2 tags
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf("RTp-Error: Length not correct (MEL= %d)\n",
+ mtext[6]);
}
+ return;
+ }
uint rtp_typ[2], rtp_start[2], rtp_len[2];
// byte 7+8 = ApplicationID, always 0x4bd7
// byte 9 = Applicationgroup Typecode / PTY ?
// bit 10#4 = Item Togglebit
// bit 10#3 = Item Runningbit
// Tag1: bit 10#2..11#5 = Contenttype, 11#4..12#7 = Startmarker, 12#6..12#1 = Length
- rtp_typ[0] = (0x38 & mtext[10]<<3) | mtext[11]>>5;
- rtp_start[0] = (0x3e & mtext[11]<<1) | mtext[12]>>7;
- rtp_len[0] = 0x3f & mtext[12]>>1;
+ rtp_typ[0] = (0x38 & mtext[10] << 3) | mtext[11] >> 5;
+ rtp_start[0] = (0x3e & mtext[11] << 1) | mtext[12] >> 7;
+ rtp_len[0] = 0x3f & mtext[12] >> 1;
// Tag2: bit 12#0..13#3 = Contenttype, 13#2..14#5 = Startmarker, 14#4..14#0 = Length(5bit)
- rtp_typ[1] = (0x20 & mtext[12]<<5) | mtext[13]>>3;
- rtp_start[1] = (0x38 & mtext[13]<<3) | mtext[14]>>5;
- rtp_len[1] = 0x1f & mtext[14];
- if ((S_Verbose & 0x0f) >= 2)
- printf("RTplus (tag=Typ/Start/Len): Toggle/Run = %d/%d, tag#1 = %d/%d/%d, tag#2 = %d/%d/%d\n",
- (mtext[10]&0x10)>0, (mtext[10]&0x08)>0, rtp_typ[0], rtp_start[0], rtp_len[0], rtp_typ[1], rtp_start[1], rtp_len[1]);
+ rtp_typ[1] = (0x20 & mtext[12] << 5) | mtext[13] >> 3;
+ rtp_start[1] = (0x38 & mtext[13] << 3) | mtext[14] >> 5;
+ rtp_len[1] = 0x1f & mtext[14];
+ if ((S_Verbose & 0x0f) >= 2) {
+ printf(
+ "RTplus (tag=Typ/Start/Len): Toggle/Run = %d/%d, tag#1 = %d/%d/%d, tag#2 = %d/%d/%d\n",
+ (mtext[10] & 0x10) > 0, (mtext[10] & 0x08) > 0,
+ rtp_typ[0], rtp_start[0], rtp_len[0], rtp_typ[1],
+ rtp_start[1], rtp_len[1]);
+ }
// save info
for (int i = 0; i < 2; i++) {
- if (rtp_start[i]+rtp_len[i]+1 >= RT_MEL) { // length-error
- if ((S_Verbose & 0x0f) >= 1)
- printf("RTp-Error (tag#%d = Typ/Start/Len): %d/%d/%d (Start+Length > 'RT-MEL' !)\n",
- i+1, rtp_typ[i], rtp_start[i], rtp_len[i]);
+ if (rtp_start[i] + rtp_len[i] + 1 >= RT_MEL) { // length-error
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf(
+ "RTp-Error (tag#%d = Typ/Start/Len): %d/%d/%d (Start+Length > 'RT-MEL' !)\n",
+ i + 1, rtp_typ[i], rtp_start[i], rtp_len[i]);
}
- else {
+ } else {
char temptext[RT_MEL];
- memset(temptext, 0x20, RT_MEL-1);
- memmove(temptext, plustext+rtp_start[i], rtp_len[i]+1);
+ memset(temptext, 0x20, RT_MEL - 1);
+ memmove(temptext, plustext + rtp_start[i], rtp_len[i] + 1);
rds_entitychar(temptext);
// +Memory
- memset(rtp_content.temptext, 0x20, RT_MEL-1);
- memcpy(rtp_content.temptext, temptext, RT_MEL-1);
+ memset(rtp_content.temptext, 0x20, RT_MEL - 1);
+ memcpy(rtp_content.temptext, temptext, RT_MEL - 1);
switch (rtp_typ[i]) {
- case 1: // Item-Title
- if ((mtext[10] & 0x08) > 0 && (RTP_TToggle & 0x01) == 0x01) {
- RTP_TToggle -= 0x01;
- RT_Info = 2;
- if (memcmp(RTP_Title, temptext, RT_MEL-1) != 0 || (mtext[10] & 0x10) != RTP_ItemToggle) {
- memcpy(RTP_Title, temptext, RT_MEL-1);
- if (RT_PlusShow && rtp_itime.Elapsed() > 1000)
- rtp_idiffs = (int) rtp_itime.Elapsed()/1000;
- if (!rtp_content.item_New) {
- RTP_Starttime = time(NULL);
- rtp_itime.Set(0);
- sprintf(RTP_Artist, "---");
- if (++rtp_content.item_Index >= MAX_RTPC)
- rtp_content.item_Index = 0;
- rtp_content.item_Start[rtp_content.item_Index] = time(NULL); // todo: replay-mode
- rtp_content.item_Artist[rtp_content.item_Index] = NULL;
- }
- rtp_content.item_New = (!rtp_content.item_New) ? true : false;
- if (rtp_content.item_Index >= 0)
- asprintf(&rtp_content.item_Title[rtp_content.item_Index], "%s", rtrim(rtp_content.temptext));
- RT_PlusShow = RT_MsgShow = rtp_itoggle = true;
- }
- }
- break;
- case 4: // Item-Artist
- if ((mtext[10] & 0x08) > 0 && (RTP_TToggle & 0x02) == 0x02) {
- RTP_TToggle -= 0x02;
- RT_Info = 2;
- if (memcmp(RTP_Artist, temptext, RT_MEL-1) != 0 || (mtext[10] & 0x10) != RTP_ItemToggle) {
- memcpy(RTP_Artist, temptext, RT_MEL-1);
- if (RT_PlusShow && rtp_itime.Elapsed() > 1000)
- rtp_idiffs = (int) rtp_itime.Elapsed()/1000;
- if (!rtp_content.item_New) {
- RTP_Starttime = time(NULL);
- rtp_itime.Set(0);
- sprintf(RTP_Title, "---");
- if (++rtp_content.item_Index >= MAX_RTPC)
- rtp_content.item_Index = 0;
- rtp_content.item_Start[rtp_content.item_Index] = time(NULL); // todo: replay-mode
- rtp_content.item_Title[rtp_content.item_Index] = NULL;
- }
- rtp_content.item_New = (!rtp_content.item_New) ? true : false;
- if (rtp_content.item_Index >= 0)
- asprintf(&rtp_content.item_Artist[rtp_content.item_Index], "%s", rtrim(rtp_content.temptext));
- RT_PlusShow = RT_MsgShow = rtp_itoggle = true;
- }
- }
- break;
- case 12: // Info_News
- asprintf(&rtp_content.info_News, "%s", rtrim(rtp_content.temptext));
- break;
- case 13: // Info_NewsLocal
- asprintf(&rtp_content.info_NewsLocal, "%s", rtrim(rtp_content.temptext));
- break;
- case 14: // Info_Stockmarket
- if (++rtp_content.info_StockIndex >= MAX_RTPC)
- rtp_content.info_StockIndex = 0;
- asprintf(&rtp_content.info_Stock[rtp_content.info_StockIndex], "%s", rtrim(rtp_content.temptext));
- break;
- case 15: // Info_Sport
- if (++rtp_content.info_SportIndex >= MAX_RTPC)
- rtp_content.info_SportIndex = 0;
- asprintf(&rtp_content.info_Sport[rtp_content.info_SportIndex], "%s", rtrim(rtp_content.temptext));
- break;
- case 16: // Info_Lottery
- if (++rtp_content.info_LotteryIndex >= MAX_RTPC)
- rtp_content.info_LotteryIndex = 0;
- asprintf(&rtp_content.info_Lottery[rtp_content.info_LotteryIndex], "%s", rtrim(rtp_content.temptext));
- break;
- case 24: // Info_DateTime
- asprintf(&rtp_content.info_DateTime, "%s", rtrim(rtp_content.temptext));
- break;
- case 25: // Info_Weather
- if (++rtp_content.info_WeatherIndex >= MAX_RTPC)
- rtp_content.info_WeatherIndex = 0;
- asprintf(&rtp_content.info_Weather[rtp_content.info_WeatherIndex], "%s", rtrim(rtp_content.temptext));
- break;
- case 26: // Info_Traffic
- asprintf(&rtp_content.info_Traffic, "%s", rtrim(rtp_content.temptext));
- break;
- case 27: // Info_Alarm
- asprintf(&rtp_content.info_Alarm, "%s", rtrim(rtp_content.temptext));
- break;
- case 28: // Info_Advert
- asprintf(&rtp_content.info_Advert, "%s", rtrim(rtp_content.temptext));
- break;
- case 29: // Info_Url
- asprintf(&rtp_content.info_Url, "%s", rtrim(rtp_content.temptext));
- break;
- case 30: // Info_Other
- if (++rtp_content.info_OtherIndex >= MAX_RTPC)
- rtp_content.info_OtherIndex = 0;
- asprintf(&rtp_content.info_Other[rtp_content.info_OtherIndex], "%s", rtrim(rtp_content.temptext));
- break;
- case 31: // Programme_Stationname.Short
- asprintf(&rtp_content.prog_StatShort, "%s", rtrim(rtp_content.temptext));
- break;
- case 32: // Programme_Stationname.Long
- asprintf(&rtp_content.prog_Station, "%s", rtrim(rtp_content.temptext));
- break;
- case 33: // Programme_Now
- asprintf(&rtp_content.prog_Now, "%s", rtrim(rtp_content.temptext));
- break;
- case 34: // Programme_Next
- asprintf(&rtp_content.prog_Next, "%s", rtrim(rtp_content.temptext));
- break;
- case 35: // Programme_Part
- asprintf(&rtp_content.prog_Part, "%s", rtrim(rtp_content.temptext));
- break;
- case 36: // Programme_Host
- asprintf(&rtp_content.prog_Host, "%s", rtrim(rtp_content.temptext));
- break;
- case 37: // Programme_EditorialStaff
- asprintf(&rtp_content.prog_EditStaff, "%s", rtrim(rtp_content.temptext));
- break;
- case 39: // Programme_Homepage
- asprintf(&rtp_content.prog_Homepage, "%s", rtrim(rtp_content.temptext));
- break;
- case 41: // Phone_Hotline
- asprintf(&rtp_content.phone_Hotline, "%s", rtrim(rtp_content.temptext));
- break;
- case 42: // Phone_Studio
- asprintf(&rtp_content.phone_Studio, "%s", rtrim(rtp_content.temptext));
- break;
- case 44: // SMS_Studio
- asprintf(&rtp_content.sms_Studio, "%s", rtrim(rtp_content.temptext));
- break;
- case 46: // Email_Hotline
- asprintf(&rtp_content.email_Hotline, "%s", rtrim(rtp_content.temptext));
- break;
- case 47: // Email_Studio
- asprintf(&rtp_content.email_Studio, "%s", rtrim(rtp_content.temptext));
- break;
+ case 1: // Item-Title
+ if ((mtext[10] & 0x08) > 0
+ && (RTP_TToggle & 0x01) == 0x01) {
+ RTP_TToggle -= 0x01;
+ RT_Info = 2;
+ if (memcmp(RTP_Title, temptext, RT_MEL - 1) != 0
+ || (mtext[10] & 0x10) != RTP_ItemToggle) {
+ memcpy(RTP_Title, temptext, RT_MEL - 1);
+ if (RT_PlusShow && rtp_itime.Elapsed() > 1000)
+ rtp_idiffs = (int) rtp_itime.Elapsed()
+ / 1000;
+ if (!rtp_content.item_New) {
+ RTP_Starttime = time(NULL);
+ rtp_itime.Set(0);
+ sprintf(RTP_Artist, "---");
+ if (++rtp_content.item_Index >= MAX_RTPC)
+ rtp_content.item_Index = 0;
+ rtp_content.item_Start[rtp_content.item_Index] =
+ time(NULL); // todo: replay-mode
+ rtp_content.item_Artist[rtp_content.item_Index] =
+ NULL;
+ }
+ rtp_content.item_New =
+ (!rtp_content.item_New) ? true : false;
+ if (rtp_content.item_Index >= 0)
+ asprintf(
+ &rtp_content.item_Title[rtp_content.item_Index],
+ "%s", rtrim(rtp_content.temptext));
+ RT_PlusShow = RT_MsgShow = rtp_itoggle = true;
+ }
+ }
+ break;
+ case 4: // Item-Artist
+ if ((mtext[10] & 0x08) > 0
+ && (RTP_TToggle & 0x02) == 0x02) {
+ RTP_TToggle -= 0x02;
+ RT_Info = 2;
+ if (memcmp(RTP_Artist, temptext, RT_MEL - 1) != 0
+ || (mtext[10] & 0x10) != RTP_ItemToggle) {
+ memcpy(RTP_Artist, temptext, RT_MEL - 1);
+ if (RT_PlusShow && rtp_itime.Elapsed() > 1000)
+ rtp_idiffs = (int) rtp_itime.Elapsed()
+ / 1000;
+ if (!rtp_content.item_New) {
+ RTP_Starttime = time(NULL);
+ rtp_itime.Set(0);
+ sprintf(RTP_Title, "---");
+ if (++rtp_content.item_Index >= MAX_RTPC)
+ rtp_content.item_Index = 0;
+ rtp_content.item_Start[rtp_content.item_Index] =
+ time(NULL); // todo: replay-mode
+ rtp_content.item_Title[rtp_content.item_Index] =
+ NULL;
+ }
+ rtp_content.item_New =
+ (!rtp_content.item_New) ? true : false;
+ if (rtp_content.item_Index >= 0)
+ asprintf(
+ &rtp_content.item_Artist[rtp_content.item_Index],
+ "%s", rtrim(rtp_content.temptext));
+ RT_PlusShow = RT_MsgShow = rtp_itoggle = true;
+ }
}
+ break;
+ case 12: // Info_News
+ asprintf(&rtp_content.info_News, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 13: // Info_NewsLocal
+ asprintf(&rtp_content.info_NewsLocal, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 14: // Info_Stockmarket
+ if (++rtp_content.info_StockIndex >= MAX_RTPC)
+ rtp_content.info_StockIndex = 0;
+ asprintf(
+ &rtp_content.info_Stock[rtp_content.info_StockIndex],
+ "%s", rtrim(rtp_content.temptext));
+ break;
+ case 15: // Info_Sport
+ if (++rtp_content.info_SportIndex >= MAX_RTPC)
+ rtp_content.info_SportIndex = 0;
+ asprintf(
+ &rtp_content.info_Sport[rtp_content.info_SportIndex],
+ "%s", rtrim(rtp_content.temptext));
+ break;
+ case 16: // Info_Lottery
+ if (++rtp_content.info_LotteryIndex >= MAX_RTPC)
+ rtp_content.info_LotteryIndex = 0;
+ asprintf(
+ &rtp_content.info_Lottery[rtp_content.info_LotteryIndex],
+ "%s", rtrim(rtp_content.temptext));
+ break;
+ case 24: // Info_DateTime
+ asprintf(&rtp_content.info_DateTime, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 25: // Info_Weather
+ if (++rtp_content.info_WeatherIndex >= MAX_RTPC)
+ rtp_content.info_WeatherIndex = 0;
+ asprintf(
+ &rtp_content.info_Weather[rtp_content.info_WeatherIndex],
+ "%s", rtrim(rtp_content.temptext));
+ break;
+ case 26: // Info_Traffic
+ asprintf(&rtp_content.info_Traffic, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 27: // Info_Alarm
+ asprintf(&rtp_content.info_Alarm, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 28: // Info_Advert
+ asprintf(&rtp_content.info_Advert, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 29: // Info_Url
+ asprintf(&rtp_content.info_Url, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 30: // Info_Other
+ if (++rtp_content.info_OtherIndex >= MAX_RTPC)
+ rtp_content.info_OtherIndex = 0;
+ asprintf(
+ &rtp_content.info_Other[rtp_content.info_OtherIndex],
+ "%s", rtrim(rtp_content.temptext));
+ break;
+ case 31: // Programme_Stationname.Short
+ asprintf(&rtp_content.prog_StatShort, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 32: // Programme_Stationname.Long
+ asprintf(&rtp_content.prog_Station, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 33: // Programme_Now
+ asprintf(&rtp_content.prog_Now, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 34: // Programme_Next
+ asprintf(&rtp_content.prog_Next, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 35: // Programme_Part
+ asprintf(&rtp_content.prog_Part, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 36: // Programme_Host
+ asprintf(&rtp_content.prog_Host, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 37: // Programme_EditorialStaff
+ asprintf(&rtp_content.prog_EditStaff, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 39: // Programme_Homepage
+ asprintf(&rtp_content.prog_Homepage, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 41: // Phone_Hotline
+ asprintf(&rtp_content.phone_Hotline, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 42: // Phone_Studio
+ asprintf(&rtp_content.phone_Studio, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 44: // SMS_Studio
+ asprintf(&rtp_content.sms_Studio, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 46: // Email_Hotline
+ asprintf(&rtp_content.email_Hotline, "%s",
+ rtrim(rtp_content.temptext));
+ break;
+ case 47: // Email_Studio
+ asprintf(&rtp_content.email_Studio, "%s",
+ rtrim(rtp_content.temptext));
+ break;
}
}
+ }
// Title-end @ no Item-Running'
if ((mtext[10] & 0x08) == 0) {
@@ -1083,198 +1273,238 @@ void cRadioAudio::RadiotextDecode(unsigned char *mtext, int len)
if (RT_PlusShow) {
RT_PlusShow = false;
rtp_itoggle = true;
- rtp_idiffs = (int) rtp_itime.Elapsed()/1000;
+ rtp_idiffs = (int) rtp_itime.Elapsed() / 1000;
RTP_Starttime = time(NULL);
- }
+ }
RT_MsgShow = (RT_Info > 0);
rtp_content.item_New = false;
- }
+ }
if (rtp_itoggle) {
if ((S_Verbose & 0x0f) >= 1) {
struct tm tm_store;
struct tm *ts = localtime_r(&RTP_Starttime, &tm_store);
- if (rtp_idiffs > 0)
- printf(" StartTime : %02d:%02d:%02d (last Title elapsed = %d s)\n",
- ts->tm_hour, ts->tm_min, ts->tm_sec, rtp_idiffs);
- else
- printf(" StartTime : %02d:%02d:%02d\n", ts->tm_hour, ts->tm_min, ts->tm_sec);
- printf(" RTp-Title : %s\n RTp-Artist: %s\n", RTP_Title, RTP_Artist);
+ if (rtp_idiffs > 0) {
+ printf(
+ " StartTime : %02d:%02d:%02d (last Title elapsed = %d s)\n",
+ ts->tm_hour, ts->tm_min, ts->tm_sec,
+ rtp_idiffs);
}
+ else {
+ printf(" StartTime : %02d:%02d:%02d\n", ts->tm_hour,
+ ts->tm_min, ts->tm_sec);
+ }
+ printf(" RTp-Title : %s\n RTp-Artist: %s\n", RTP_Title,
+ RTP_Artist);
+ }
RTP_ItemToggle = mtext[10] & 0x10;
rtp_itoggle = false;
rtp_idiffs = 0;
radioStatusMsg();
AudioRecorderService();
- }
-
- RTP_TToggle = 0;
}
- }
+
+ RTP_TToggle = 0;
+ }
+ }
else {
- if ((S_Verbose & 0x0f) >= 1)
- printf("RDS-Error: [RTDecode] Length not correct (MFL= %d, len= %d)\n", mtext[4], len);
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf(
+ "RDS-Error: [RTDecode] Length not correct (MFL= %d, len= %d)\n",
+ mtext[4], len);
}
+ }
}
-void cRadioAudio::RDS_PsPtynDecode(bool ptyn, unsigned char *mtext, int len)
-{
- if (len < 16) return;
+void cRadioAudio::RDS_PsPtynDecode(bool ptyn, unsigned char *mtext, int len) {
+ if (len < 16)
+ return;
// decode Text
for (int i = 8; i <= 15; i++) {
if (mtext[i] <= 0xfe) {
// additional rds-character, see RBDS-Standard, Annex E
- if (!ptyn)
- RDS_PSText[RDS_PSIndex][i-8] = (mtext[i] >= 0x80) ? rds_addchar[mtext[i]-0x80] : mtext[i];
- else
- RDS_PTYN[i-8] = (mtext[i] >= 0x80) ? rds_addchar[mtext[i]-0x80] : mtext[i];
+ if (!ptyn) {
+ RDS_PSText[RDS_PSIndex][i - 8] =
+ (mtext[i] >= 0x80) ?
+ rds_addchar[mtext[i] - 0x80] : mtext[i];
+ }
+ else {
+ RDS_PTYN[i - 8] =
+ (mtext[i] >= 0x80) ?
+ rds_addchar[mtext[i] - 0x80] : mtext[i];
}
}
-
+ }
+
if ((S_Verbose & 0x0f) >= 1) {
- if (!ptyn)
- printf("RDS-PS No= %d, Content[%d]= '%s'\n", mtext[7], RDS_PSIndex, RDS_PSText[RDS_PSIndex]);
- else
+ if (!ptyn) {
+ printf("RDS-PS No= %d, Content[%d]= '%s'\n", mtext[7], RDS_PSIndex,
+ RDS_PSText[RDS_PSIndex]);
+ }
+ else {
printf("RDS-PTYN No= %d, Content= '%s'\n", mtext[7], RDS_PTYN);
}
+ }
if (!ptyn) {
- RDS_PSIndex += 1; if (RDS_PSIndex >= 12) RDS_PSIndex = 0;
- RT_MsgShow = RDS_PSShow = true;
+ RDS_PSIndex += 1;
+ if (RDS_PSIndex >= 12) {
+ RDS_PSIndex = 0;
}
+ RT_MsgShow = RDS_PSShow = true;
+ }
}
-void cRadioAudio::AudioRecorderService(void)
-{
+void cRadioAudio::AudioRecorderService(void) {
/* check plugin audiorecorder service */
ARec_Receive = ARec_Record = false;
- if (!RT_PlusShow || RT_Replay)
+ if (!RT_PlusShow || RT_Replay) {
return;
+ }
Audiorecorder_StatusRtpChannel_v1_0 arec_service;
cPlugin *p;
arec_service.channel = chan;
- p = cPluginManager::CallFirstService("Audiorecorder-StatusRtpChannel-v1.0", &arec_service);
- if (p) {
+ p = cPluginManager::CallFirstService("Audiorecorder-StatusRtpChannel-v1.0",
+ &arec_service);
+ if (p) {
ARec_Receive = (arec_service.status >= 2);
ARec_Record = (arec_service.status == 3);
- }
+ }
}
// add <names> of DVB Radio Slides Specification 1.0, 20061228
-void cRadioAudio::RassDecode(unsigned char *mtext, int len)
-{
+void cRadioAudio::RassDecode(unsigned char *mtext, int len) {
if (RT_Replay) // no recordings $20090905
return;
static uint splfd = 0, spmax = 0, index = 0;
static uint afiles, slidenumr, slideelem, filemax;
static int filetype;
- static bool slideshow = false, slidesave = false, slidecan = false, slidedel = false, start = false;
+ static bool slideshow = false, slidesave = false, slidecan = false,
+ slidedel = false, start = false;
static uchar daten[65536]; // mpegs-stills defined <= 50kB
FILE *fd;
-
+
// byte 1+2 = ADD (10bit SiteAdress + 6bit EncoderAdress)
// byte 3 = SQC (Sequence Counter 0x00 = not used)
// byte 4 = MFL (Message Field Length),
- if (len >= mtext[4]+7) { // check complete length
- // byte 5 = MEC (0xda for Rass)
- // byte 6 = MEL
- if (mtext[6] == 0 || mtext[6] > mtext[4]-2) {
- if ((S_Verbose & 0x0f) >= 1)
- printf("Rass-Error: Length=0 or not correct (MFL= %d, MEL= %d)\n", mtext[4], mtext[6]);
- return;
+ if (len >= mtext[4] + 7) { // check complete length
+ // byte 5 = MEC (0xda for Rass)
+ // byte 6 = MEL
+ if (mtext[6] == 0 || mtext[6] > mtext[4] - 2) {
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf(
+ "Rass-Error: Length=0 or not correct (MFL= %d, MEL= %d)\n",
+ mtext[4], mtext[6]);
}
+ return;
+ }
// byte 7+8 = Service-ID zugehöriger Datenkanal
// byte 9-11 = Nummer aktuelles Paket, <PNR>
- uint plfd = mtext[11] | mtext[10]<<8 | mtext[9]<<16;
+ uint plfd = mtext[11] | mtext[10] << 8 | mtext[9] << 16;
// byte 12-14 = Anzahl Pakete, <NOP>
- uint pmax = mtext[14] | mtext[13]<<8 | mtext[12]<<16;
+ uint pmax = mtext[14] | mtext[13] << 8 | mtext[12] << 16;
// byte 15+16 = Rass-Kennung = Header, <Rass-STA>
if (mtext[15] == 0x40 && mtext[16] == 0xda) { // first
- // byte 17+18 = Anzahl Dateien im Archiv, <NOI>
- afiles = mtext[18] | mtext[17]<<8;
+ // byte 17+18 = Anzahl Dateien im Archiv, <NOI>
+ afiles = mtext[18] | mtext[17] << 8;
// byte 19+20 = Slide-Nummer, <Rass-ID>
- slidenumr = mtext[20] | mtext[19]<<8;
+ slidenumr = mtext[20] | mtext[19] << 8;
// byte 21+22 = Element-Nummer im Slide, <INR>
- slideelem = mtext[22] | mtext[21]<<8;
+ slideelem = mtext[22] | mtext[21] << 8;
// byte 23 = Slide-Steuerbyte, <Cntrl-Byte>: bit0 = Anzeige, bit1 = Speichern, bit2 = DarfAnzeige bei Senderwechsel, bit3 = Löschen
slideshow = mtext[23] & 0x01;
slidesave = mtext[23] & 0x02;
slidecan = mtext[23] & 0x04;
- slidedel = mtext[23] & 0x08;
+ slidedel = mtext[23] & 0x08;
// byte 24 = Dateiart, <Item-Type>: 0=unbekannt/1=MPEG-Still/2=Definition
filetype = mtext[24];
if (filetype != 1 && filetype != 2) {
- if ((S_Verbose & 0x0f) >= 1)
+ if ((S_Verbose & 0x0f) >= 1) {
printf("Rass-Error: Filetype '%d' unknown !\n", filetype);
- //return;
}
+ //return;
+ }
// byte 25-28 = Dateilänge, <Item-Length>
- filemax = mtext[28] | mtext[27]<<8 | mtext[26]<<16 | mtext[25]<<24;
+ filemax = mtext[28] | mtext[27] << 8 | mtext[26] << 16
+ | mtext[25] << 24;
if (filemax >= 65536) {
- if ((S_Verbose & 0x0f) >= 1)
- printf("Rass-Error: Filesize '%d' will be too big !\n", filemax);
- return;
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf("Rass-Error: Filesize '%d' will be too big !\n",
+ filemax);
}
+ return;
+ }
// byte 29-31 = Dateioffset Paketnr old, now <rfu>
// byte 32 = Dateioffset Bytenr old, now <rfu>
if ((S_Verbose & 0x10) > 0) {
- printf("Rass-Header: afiles= %d, slidenumr= %d, slideelem= %d\n slideshow= %d, -save= %d, -canschow= %d, -delete= %d\n filetype= %d, filemax= %d\n",
- afiles, slidenumr, slideelem, slideshow, slidesave, slidecan, slidedel, filetype, filemax);
+ printf(
+ "Rass-Header: afiles= %d, slidenumr= %d, slideelem= %d\n slideshow= %d, -save= %d, -canschow= %d, -delete= %d\n filetype= %d, filemax= %d\n",
+ afiles, slidenumr, slideelem, slideshow, slidesave,
+ slidecan, slidedel, filetype, filemax);
printf("Rass-Start ...\n");
- }
+ }
start = true;
index = 0;
- for (int i=33; i < len-2; i++) {
- if (index < filemax)
+ for (int i = 33; i < len - 2; i++) {
+ if (index < filemax) {
daten[index++] = mtext[i];
- else
+ }
+ else {
start = false;
}
- splfd = plfd;
}
+ splfd = plfd;
+ }
- else if (plfd < pmax && plfd == splfd+1) { // Between
+ else if (plfd < pmax && plfd == splfd + 1) { // Between
splfd = plfd;
if (start) {
- for (int i=15; i < len-2; i++) {
- if (index < filemax)
+ for (int i = 15; i < len - 2; i++) {
+ if (index < filemax) {
daten[index++] = mtext[i];
- else
+ }
+ else {
start = false;
}
}
}
+ }
- else if (plfd == pmax && plfd == splfd+1) { // Last
+ else if (plfd == pmax && plfd == splfd + 1) { // Last
if (start) {
- for (int i=15; i < len-4; i++) {
- if (index <= filemax)
+ for (int i = 15; i < len - 4; i++) {
+ if (index <= filemax) {
daten[index++] = mtext[i];
+ }
else {
start = false;
return;
- }
}
- if ((S_Verbose & 0x10) > 0)
+ }
+ if ((S_Verbose & 0x10) > 0) {
printf("... Rass-End (%d bytes)\n", index);
}
+ }
if (filemax > 0) { // nothing todo, if 0 byte file
// crc-check with bytes 'len-4/3'
unsigned short crc16 = crc16_ccitt(daten, filemax, false);
- if (crc16 != (mtext[len-4]<<8)+mtext[len-3]) {
- if ((S_Verbose & 0x0f) >= 1)
- printf("Rass-Error: wrong CRC # calc = %04x <> transmit = %02x%02x\n", crc16, mtext[len-4], mtext[len-3]);
+ if (crc16 != (mtext[len - 4] << 8) + mtext[len - 3]) {
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf(
+ "Rass-Error: wrong CRC # calc = %04x <> transmit = %02x%02x\n",
+ crc16, mtext[len - 4], mtext[len - 3]);
+ }
start = false;
return;
- }
}
+ }
// show & save file ?
if (index == filemax && enforce_directory(DataDir)) {
if (slideshow || (slidecan && Rass_Show == -1)) {
@@ -1286,89 +1516,107 @@ void cRadioAudio::RassDecode(unsigned char *mtext, int len)
//fflush(fd); // for test in replaymode
fclose(fd);
Rass_Show = 1;
- if ((S_Verbose & 0x10) > 0)
+ if ((S_Verbose & 0x10) > 0) {
printf("Rass-File: ready for displaying :-)\n");
}
- else
- esyslog("radio: ERROR writing Rass-imagefile failed '%s'", filepath);
- free(filepath);
}
+ else {
+ esyslog(
+ "radio: ERROR writing Rass-imagefile failed '%s'",
+ filepath);
+ }
+ free(filepath);
}
+ }
if (slidesave || slidedel || slidenumr < RASS_GALMAX) {
// lfd. Fotogallery 100.. ???
if (slidenumr >= 100 && slidenumr < RASS_GALMAX) {
- (Rass_SlideFoto < RASS_GALMAX) ? Rass_SlideFoto++ : Rass_SlideFoto = 100;
+ (Rass_SlideFoto < RASS_GALMAX) ?
+ Rass_SlideFoto++ : Rass_SlideFoto = 100;
slidenumr = Rass_SlideFoto;
- }
+ }
//
char *filepath;
- (filetype == 2) ? asprintf(&filepath, "%s/Rass_%d.def", DataDir, slidenumr)
- : asprintf(&filepath, "%s/Rass_%d.mpg", DataDir, slidenumr);
+ (filetype == 2) ?
+ asprintf(&filepath, "%s/Rass_%d.def", DataDir,
+ slidenumr) :
+ asprintf(&filepath, "%s/Rass_%d.mpg", DataDir,
+ slidenumr);
if ((fd = fopen(filepath, "wb")) != NULL) {
fwrite(daten, 1, filemax, fd);
fclose(fd);
if ((S_Verbose & 0x10) > 0)
printf("Rass-File: saving '%s'\n", filepath);
// archivemarker mpeg-stills
- if (filetype == 1) {
+ if (filetype == 1) {
// 0, 1000/1100/1110/1111..9000/9900/9990/9999
if (slidenumr == 0 || slidenumr > RASS_GALMAX) {
if (slidenumr == 0) {
Rass_Flags[0][0] = !slidedel;
- (RT_Info > 0) ? : RT_Info = 0; // open RadioTextOsd for ArchivTip
- }
- else {
- int islide = (int) floor(slidenumr/1000);
+ (RT_Info > 0) ? : RT_Info = 0; // open RadioTextOsd for ArchivTip
+ } else {
+ int islide = (int) floor(slidenumr / 1000);
for (int i = 3; i >= 0; i--) {
if (fmod(slidenumr, pow(10, i)) == 0) {
- Rass_Flags[islide][3-i] = !slidedel;
+ Rass_Flags[islide][3 - i] =
+ !slidedel;
break;
- }
}
}
}
+ }
// gallery
else {
Rass_Gallery[slidenumr] = !slidedel;
- if (!slidedel && (int)slidenumr > Rass_GalEnd)
+ if (!slidedel && (int) slidenumr > Rass_GalEnd)
Rass_GalEnd = slidenumr;
- if (!slidedel && (Rass_GalStart == 0 || (int)slidenumr < Rass_GalStart))
+ if (!slidedel
+ && (Rass_GalStart == 0
+ || (int) slidenumr
+ < Rass_GalStart))
Rass_GalStart = slidenumr;
// counter
Rass_GalCount = 0;
- for (int i = Rass_GalStart; i <= Rass_GalEnd; i++) {
- if (Rass_Gallery[i])
+ for (int i = Rass_GalStart; i <= Rass_GalEnd;
+ i++) {
+ if (Rass_Gallery[i]) {
Rass_GalCount++;
}
- Rass_Flags[10][0] = (Rass_GalCount > 0);
}
+ Rass_Flags[10][0] = (Rass_GalCount > 0);
}
}
- else
- esyslog("radio: ERROR writing Rass-image/data-file failed '%s'", filepath);
- free(filepath);
}
+ else {
+ esyslog(
+ "radio: ERROR writing Rass-image/data-file failed '%s'",
+ filepath);
+ }
+ free(filepath);
}
+ }
start = false;
splfd = spmax = 0;
- }
+ }
else {
start = false;
splfd = spmax = 0;
- }
}
+ }
else {
start = false;
splfd = spmax = 0;
- if ((S_Verbose & 0x0f) >= 1)
- printf("RDS-Error: [Rass] Length not correct (MFL= %d, len= %d)\n", mtext[4], len);
+ if ((S_Verbose & 0x0f) >= 1) {
+ printf("RDS-Error: [Rass] Length not correct (MFL= %d, len= %d)\n",
+ mtext[4], len);
}
-}
+ }
+}
-void cRadioAudio::EnableRadioTextProcessing(const char *Titel, int apid, bool replay)
-{
+void cRadioAudio::EnableRadioTextProcessing(const char *Titel, int apid,
+ bool replay) {
asprintf(&RT_Titel, "%s", Titel);
audiopid = apid;
RT_Replay = replay;
@@ -1387,7 +1635,7 @@ void cRadioAudio::EnableRadioTextProcessing(const char *Titel, int apid, bool re
RT_Index = RT_PTY = RTP_TToggle = 0;
RTP_ItemToggle = 1;
for (int i = 0; i < 5; i++)
- memset(RT_Text[i], 0x20, RT_MEL-1);
+ memset(RT_Text[i], 0x20, RT_MEL - 1);
sprintf(RTP_Title, "---");
sprintf(RTP_Artist, "---");
RTP_Starttime = time(NULL);
@@ -1397,7 +1645,7 @@ void cRadioAudio::EnableRadioTextProcessing(const char *Titel, int apid, bool re
RDS_PSIndex = 0;
for (int i = 0; i < 12; i++)
memset(RDS_PSText[i], 0x20, 8);
- }
+ }
// ...Memory
rtp_content.start = time(NULL);
rtp_content.item_New = false;
@@ -1410,7 +1658,7 @@ void cRadioAudio::EnableRadioTextProcessing(const char *Titel, int apid, bool re
rtp_content.info_OtherIndex = -1;
for (int i = 0; i < MAX_RTPC; i++) {
rtp_content.radiotext[i] = NULL;
- rtp_content.radiotext[MAX_RTPC+i] = NULL;
+ rtp_content.radiotext[MAX_RTPC + i] = NULL;
rtp_content.item_Title[i] = NULL;
rtp_content.item_Artist[i] = NULL;
rtp_content.info_Stock[i] = NULL;
@@ -1418,7 +1666,7 @@ void cRadioAudio::EnableRadioTextProcessing(const char *Titel, int apid, bool re
rtp_content.info_Lottery[i] = NULL;
rtp_content.info_Weather[i] = NULL;
rtp_content.info_Other[i] = NULL;
- }
+ }
rtp_content.info_News = NULL;
rtp_content.info_NewsLocal = NULL;
rtp_content.info_DateTime = NULL;
@@ -1443,53 +1691,63 @@ void cRadioAudio::EnableRadioTextProcessing(const char *Titel, int apid, bool re
// Rass init
Rass_Show = Rass_Archiv = -1;
for (int i = 0; i <= 10; i++) {
- for (int ii = 0; ii < 4; ii++)
+ for (int ii = 0; ii < 4; ii++) {
Rass_Flags[i][ii] = false;
}
+ }
Rass_GalStart = Rass_GalEnd = Rass_GalCount = 0;
- for (int i = 0; i < RASS_GALMAX; i++)
+ for (int i = 0; i < RASS_GALMAX; i++) {
Rass_Gallery[i] = false;
+ }
Rass_SlideFoto = 99;
//
InfoRequest = false;
-
- if (S_RtFunc < 1) return;
-
+
+ if (S_RtFunc < 1) {
+ return;
+ }
+
// RDS-Receiver for seperate Data-PIDs, only Livemode, hardcoded Astra_19E + Hotbird 13E
int pid = 0;
if (!replay) {
switch (chan->Tid()) {
- case 1113: switch (pid = chan->Apid(0)) { // Astra_19.2E - 12633 GHz
- /* case 0x161: pid = 0x229; // radio top40
- break; */
- case 0x400: // Hitradio FFH
- case 0x406: // planet radio
- case 0x40c: pid += 1; // harmony.ffm
- break;
- default: return;
- }
- break;
- case 5300: switch (pid = chan->Apid(0)) { // Hotbird_13E - 11747 GHz, no Radiotext @ moment, only TMC + MECs 25/26
- case 0xdc3: // Radio 1
- case 0xdd3: // Radio 3
- case 0xddb: // Radio 5
- case 0xde3: // Radio Exterior
- case 0xdeb: pid += 1; // Radio 4
- break;
- default: return;
- }
- break;
- default: return;
+ case 1113:
+ switch (pid = chan->Apid(0)) { // Astra_19.2E - 12633 GHz
+ /* case 0x161: pid = 0x229; // radio top40
+ break; */
+ case 0x400: // Hitradio FFH
+ case 0x406: // planet radio
+ case 0x40c:
+ pid += 1; // harmony.ffm
+ break;
+ default:
+ return;
}
+ break;
+ case 5300:
+ switch (pid = chan->Apid(0)) { // Hotbird_13E - 11747 GHz, no Radiotext @ moment, only TMC + MECs 25/26
+ case 0xdc3: // Radio 1
+ case 0xdd3: // Radio 3
+ case 0xddb: // Radio 5
+ case 0xde3: // Radio Exterior
+ case 0xdeb:
+ pid += 1; // Radio 4
+ break;
+ default:
+ return;
+ }
+ break;
+ default:
+ return;
+ }
RDSReceiver = new cRDSReceiver(pid);
rdsdevice = cDevice::ActualDevice();
rdsdevice->AttachReceiver(RDSReceiver);
- }
-
+ }
+
}
-void cRadioAudio::DisableRadioTextProcessing()
-{
+void cRadioAudio::DisableRadioTextProcessing() {
RT_Replay = enabled = false;
// Radiotext & Rass
@@ -1498,18 +1756,18 @@ void cRadioAudio::DisableRadioTextProcessing()
Rass_Show = Rass_Archiv = -1;
Rass_GalStart = Rass_GalEnd = Rass_GalCount = 0;
- if (RadioTextOsd != NULL)
+ if (RadioTextOsd != NULL) {
RadioTextOsd->Hide();
-
+ }
+
if (RDSReceiver != NULL) {
rdsdevice->Detach(RDSReceiver);
delete RDSReceiver;
RDSReceiver = NULL;
rdsdevice = NULL;
- }
+ }
}
-
// --- cRadioTextOsd ------------------------------------------------------
cBitmap cRadioTextOsd::rds(rds_xpm);
@@ -1535,83 +1793,97 @@ cBitmap cRadioTextOsd::no9(no9_xpm);
cBitmap cRadioTextOsd::bok(bok_xpm);
cBitmap cRadioTextOsd::pageE(pageE_xpm);
-cRadioTextOsd::cRadioTextOsd()
- : cCharSetConv((RT_Charset == 0) ? "ISO-8859-1" : NULL)
-{
+cRadioTextOsd::cRadioTextOsd() :
+ cCharSetConv((RT_Charset == 0) ? "ISO-8859-1" : NULL) {
RadioTextOsd = this;
osd = NULL;
qosd = NULL;
+ qiosd = NULL;
rtclosed = rassclosed = false;
RT_ReOpen = false;
+ ftext = NULL;
+ ftitel = NULL;
+ LastKey = kNone;
+ fheight = 0;
+ bheight = 0;
}
-cRadioTextOsd::~cRadioTextOsd()
-{
+cRadioTextOsd::~cRadioTextOsd() {
if (Rass_Archiv >= 0) {
- if (!RT_Replay)
+ if (!RT_Replay) {
Rass_Archiv = RassImage(-1, -1, false);
+ }
else {
Rass_Archiv = -1;
RadioImage->SetBackgroundImage(ReplayFile);
- }
}
-
- if (osd != NULL)
+ }
+
+ if (osd != NULL) {
delete osd;
- if (qosd != NULL)
+ osd = NULL;
+ }
+ if (qosd != NULL) {
delete qosd;
+ qosd = NULL;
+
+ }
+ if (qiosd != NULL) {
+ delete qiosd;
+ qiosd = NULL;
+ }
RadioTextOsd = NULL;
RT_ReOpen = !RT_OsdTO;
cRemote::Put(LastKey);
}
-void cRadioTextOsd::Show(void)
-{
+void cRadioTextOsd::Show(void) {
LastKey = kNone;
RT_OsdTO = false;
osdtimer.Set();
ftext = cFont::GetFont(fontSml);
fheight = ftext->Height() + 4;
- bheight = (S_RtOsdTags >=1 ) ? fheight * (S_RtOsdRows+3) : fheight * (S_RtOsdRows+1);
+ bheight =
+ (S_RtOsdTags >= 1) ?
+ fheight * (S_RtOsdRows + 3) : fheight * (S_RtOsdRows + 1);
bheight += 20;
- asprintf(&RTp_Titel, "%s - %s", InfoRequest ? tr("ext. Info") : tr("RTplus"), RT_Titel);
+ asprintf(&RTp_Titel, "%s - %s",
+ InfoRequest ? tr("ext. Info") : tr("RTplus"), RT_Titel);
if (S_RtDispl >= 1 && (!Rass_Flags[0][0] || S_RassText >= 2)) { // Rass_Show == -1
RT_MsgShow = (RT_Info >= 1);
ShowText();
- }
+ }
}
-void cRadioTextOsd::Hide(void)
-{
+void cRadioTextOsd::Hide(void) {
RTOsdClose();
RassOsdClose();
}
-void cRadioTextOsd::RTOsdClose(void)
-{
+void cRadioTextOsd::RTOsdClose(void) {
if (osd != NULL) {
delete osd;
osd = NULL;
- }
+ }
}
-void cRadioTextOsd::ShowText(void)
-{
+void cRadioTextOsd::ShowText(void) {
char stext[3][100];
int yoff = 17, ii = 1;
if (!osd && !qosd && !Skins.IsOpen() && !cOsd::IsOpen()) {
if (S_RtOsdPos == 1)
- osd = cOsdProvider::NewOsd(Setup.OSDLeft, Setup.OSDTop+Setup.OSDHeight-bheight);
+ osd = cOsdProvider::NewOsd(Setup.OSDLeft,
+ Setup.OSDTop + Setup.OSDHeight - bheight);
else
osd = cOsdProvider::NewOsd(Setup.OSDLeft, Setup.OSDTop);
- tArea Area = {0, 0, Setup.OSDWidth-1, bheight-1, 4};
+ tArea Area = { 0, 0, Setup.OSDWidth - 1, bheight - 1, 4 };
osd->SetAreas(&Area, 1);
- }
+ }
if (osd) {
uint32_t bcolor, fcolor;
@@ -1620,144 +1892,194 @@ void cRadioTextOsd::ShowText(void)
ftext = cFont::GetFont(fontSml);
if (S_RtOsdTitle == 1) {
// Title
- bcolor = (S_RtSkinColor > 0) ? radioSkin[skin].clrTitleBack : (0x00FFFFFF | S_RtBgTra<<24) & rt_color[S_RtBgCol];
- fcolor = (S_RtSkinColor > 0) ? radioSkin[skin].clrTitleText : rt_color[S_RtFgCol];
- osd->DrawRectangle(0, 0, Setup.OSDWidth-1, ftitel->Height()+9, bcolor);
+ bcolor =
+ (S_RtSkinColor > 0) ?
+ radioSkin[skin].clrTitleBack :
+ (0x00FFFFFF | S_RtBgTra << 24)
+ & rt_color[S_RtBgCol];
+ fcolor =
+ (S_RtSkinColor > 0) ?
+ radioSkin[skin].clrTitleText : rt_color[S_RtFgCol];
+ osd->DrawRectangle(0, 0, Setup.OSDWidth - 1, ftitel->Height() + 9,
+ bcolor);
osd->DrawEllipse(0, 0, 5, 5, 0x00000000, -2);
- osd->DrawEllipse(Setup.OSDWidth-6, 0, Setup.OSDWidth-1, 5, 0x00000000, -1);
+ osd->DrawEllipse(Setup.OSDWidth - 6, 0, Setup.OSDWidth - 1, 5,
+ 0x00000000, -1);
sprintf(stext[0], RT_PTY == 0 ? "%s - %s %s%s" : "%s - %s (%s)%s",
- RT_Titel, InfoRequest ? tr("ext. Info") : tr("Radiotext"),
- RT_PTY == 0 ? RDS_PTYN : ptynr2string(RT_PTY), RT_MsgShow ? ":" : tr(" [waiting ...]"));
- osd->DrawText(4, 5, stext[0], fcolor, clrTransparent, ftitel, Setup.OSDWidth-4, ftitel->Height());
+ RT_Titel, InfoRequest ? tr("ext. Info") : tr("Radiotext"),
+ RT_PTY == 0 ? RDS_PTYN : ptynr2string(RT_PTY),
+ RT_MsgShow ? ":" : tr(" [waiting ...]"));
+ osd->DrawText(4, 5, stext[0], fcolor, clrTransparent, ftitel,
+ Setup.OSDWidth - 4, ftitel->Height());
// Radio, RDS- or Rass-Symbol, ARec-Symbol or Bitrate
int inloff = (ftitel->Height() + 9 - 20) / 2;
if (Rass_Flags[0][0]) {
- osd->DrawBitmap(Setup.OSDWidth-51, inloff, rass, bcolor, fcolor);
+ osd->DrawBitmap(Setup.OSDWidth - 51, inloff, rass, bcolor,
+ fcolor);
if (ARec_Record)
- osd->DrawBitmap(Setup.OSDWidth-107, inloff, arec, bcolor, 0xFFFC1414); // FG=Red
+ osd->DrawBitmap(Setup.OSDWidth - 107, inloff, arec, bcolor,
+ 0xFFFC1414); // FG=Red
else {
inloff = (ftitel->Height() + 9 - ftext->Height()) / 2;
- osd->DrawText(4, inloff, RadioAudio->bitrate, fcolor, clrTransparent, ftext, Setup.OSDWidth-59, ftext->Height(), taRight);
- }
+ osd->DrawText(4, inloff, RadioAudio->bitrate, fcolor,
+ clrTransparent, ftext, Setup.OSDWidth - 59,
+ ftext->Height(), taRight);
}
- else {
+ } else {
if (InfoRequest && !RdsLogo) {
- osd->DrawBitmap(Setup.OSDWidth-72, inloff+1, radio, fcolor, bcolor);
- osd->DrawBitmap(Setup.OSDWidth-48, inloff-1, radio, fcolor, bcolor);
- }
- else
- osd->DrawBitmap(Setup.OSDWidth-84, inloff, rds, bcolor, fcolor);
+ osd->DrawBitmap(Setup.OSDWidth - 72, inloff + 1, radio,
+ fcolor, bcolor);
+ osd->DrawBitmap(Setup.OSDWidth - 48, inloff - 1, radio,
+ fcolor, bcolor);
+ } else
+ osd->DrawBitmap(Setup.OSDWidth - 84, inloff, rds, bcolor,
+ fcolor);
if (ARec_Record)
- osd->DrawBitmap(Setup.OSDWidth-140, inloff, arec, bcolor, 0xFFFC1414); // FG=Red
+ osd->DrawBitmap(Setup.OSDWidth - 140, inloff, arec, bcolor,
+ 0xFFFC1414); // FG=Red
else {
inloff = (ftitel->Height() + 9 - ftext->Height()) / 2;
- osd->DrawText(4, inloff, RadioAudio->bitrate, fcolor, clrTransparent, ftext, Setup.OSDWidth-92, ftext->Height(), taRight);
- }
+ osd->DrawText(4, inloff, RadioAudio->bitrate, fcolor,
+ clrTransparent, ftext, Setup.OSDWidth - 92,
+ ftext->Height(), taRight);
}
}
- else
- osd->DrawRectangle(0, 0, Setup.OSDWidth-1, ftitel->Height()+9, 0x00000000);
+ } else
+ osd->DrawRectangle(0, 0, Setup.OSDWidth - 1, ftitel->Height() + 9,
+ 0x00000000);
// Body
- bcolor = (S_RtSkinColor > 0) ? radioSkin[skin].clrBack : (0x00FFFFFF | S_RtBgTra<<24) & rt_color[S_RtBgCol];
- fcolor = (S_RtSkinColor > 0) ? radioSkin[skin].clrText : rt_color[S_RtFgCol];
- osd->DrawRectangle(0, ftitel->Height()+10, Setup.OSDWidth-1, bheight-1, bcolor);
- osd->DrawEllipse(0, bheight-6, 5, bheight-1, 0x00000000, -3);
- osd->DrawEllipse(Setup.OSDWidth-6, bheight-6, Setup.OSDWidth-1, bheight-1, 0x00000000, -4);
+ bcolor =
+ (S_RtSkinColor > 0) ?
+ radioSkin[skin].clrBack :
+ (0x00FFFFFF | S_RtBgTra << 24) & rt_color[S_RtBgCol];
+ fcolor =
+ (S_RtSkinColor > 0) ?
+ radioSkin[skin].clrText : rt_color[S_RtFgCol];
+ osd->DrawRectangle(0, ftitel->Height() + 10, Setup.OSDWidth - 1,
+ bheight - 1, bcolor);
+ osd->DrawEllipse(0, bheight - 6, 5, bheight - 1, 0x00000000, -3);
+ osd->DrawEllipse(Setup.OSDWidth - 6, bheight - 6, Setup.OSDWidth - 1,
+ bheight - 1, 0x00000000, -4);
if (S_RtOsdTitle == 1)
- osd->DrawRectangle(5, ftitel->Height()+9, Setup.OSDWidth-6, ftitel->Height()+9, fcolor);
+ osd->DrawRectangle(5, ftitel->Height() + 9, Setup.OSDWidth - 6,
+ ftitel->Height() + 9, fcolor);
if (RT_MsgShow) {
// RT-Text roundloop
int ind = (RT_Index == 0) ? S_RtOsdRows - 1 : RT_Index - 1;
if (S_RtOsdLoop == 1) { // latest bottom
- for (int i = ind+1; i < S_RtOsdRows; i++)
- osd->DrawText(5, yoff+fheight*(ii++), Convert(RT_Text[i]), fcolor, clrTransparent, ftext, Setup.OSDWidth-4, ftext->Height());
+ for (int i = ind + 1; i < S_RtOsdRows; i++)
+ osd->DrawText(5, yoff + fheight * (ii++),
+ Convert(RT_Text[i]), fcolor, clrTransparent, ftext,
+ Setup.OSDWidth - 4, ftext->Height());
for (int i = 0; i <= ind; i++)
- osd->DrawText(5, yoff+fheight*(ii++), Convert(RT_Text[i]), fcolor, clrTransparent, ftext, Setup.OSDWidth-4, ftext->Height());
- }
- else { // latest top
+ osd->DrawText(5, yoff + fheight * (ii++),
+ Convert(RT_Text[i]), fcolor, clrTransparent, ftext,
+ Setup.OSDWidth - 4, ftext->Height());
+ } else { // latest top
for (int i = ind; i >= 0; i--)
- osd->DrawText(5, yoff+fheight*(ii++), Convert(RT_Text[i]), fcolor, clrTransparent, ftext, Setup.OSDWidth-4, ftext->Height());
- for (int i = S_RtOsdRows-1; i > ind; i--)
- osd->DrawText(5, yoff+fheight*(ii++), Convert(RT_Text[i]), fcolor, clrTransparent, ftext, Setup.OSDWidth-4, ftext->Height());
- }
+ osd->DrawText(5, yoff + fheight * (ii++),
+ Convert(RT_Text[i]), fcolor, clrTransparent, ftext,
+ Setup.OSDWidth - 4, ftext->Height());
+ for (int i = S_RtOsdRows - 1; i > ind; i--)
+ osd->DrawText(5, yoff + fheight * (ii++),
+ Convert(RT_Text[i]), fcolor, clrTransparent, ftext,
+ Setup.OSDWidth - 4, ftext->Height());
+ }
// + RT-Plus or PS-Text = 2 rows
if ((S_RtOsdTags == 1 && RT_PlusShow) || S_RtOsdTags >= 2) {
- if (!RDS_PSShow || !strstr(RTP_Title, "---") || !strstr(RTP_Artist, "---")) {
+ if (!RDS_PSShow || !strstr(RTP_Title, "---")
+ || !strstr(RTP_Artist, "---")) {
sprintf(stext[1], "> %s", tr("Title :"));
sprintf(stext[2], "> %s", tr("Artist :"));
int fwidth = ftext->Width(stext[1]);
fwidth = max(fwidth, ftext->Width(stext[2])) + 15;
- osd->DrawText(4, 6+yoff+fheight*(ii), stext[1], fcolor, clrTransparent, ftext, fwidth-5, ftext->Height());
- osd->DrawText(fwidth, 6+yoff+fheight*(ii++), Convert(RTP_Title), fcolor, clrTransparent, ftext, Setup.OSDWidth-4, ftext->Height());
- osd->DrawText(4, 3+yoff+fheight*(ii), stext[2], fcolor, clrTransparent, ftext, fwidth-5, ftext->Height());
- osd->DrawText(fwidth, 3+yoff+fheight*(ii++), Convert(RTP_Artist), fcolor, clrTransparent, ftext, Setup.OSDWidth-4, ftext->Height());
- }
- else {
- char *temp;
+ osd->DrawText(4, 6 + yoff + fheight * (ii), stext[1],
+ fcolor, clrTransparent, ftext, fwidth - 5,
+ ftext->Height());
+ osd->DrawText(fwidth, 6 + yoff + fheight * (ii++),
+ Convert(RTP_Title), fcolor, clrTransparent, ftext,
+ Setup.OSDWidth - 4, ftext->Height());
+ osd->DrawText(4, 3 + yoff + fheight * (ii), stext[2],
+ fcolor, clrTransparent, ftext, fwidth - 5,
+ ftext->Height());
+ osd->DrawText(fwidth, 3 + yoff + fheight * (ii++),
+ Convert(RTP_Artist), fcolor, clrTransparent, ftext,
+ Setup.OSDWidth - 4, ftext->Height());
+ } else {
+ char *temp;
asprintf(&temp, "%s", "");
int ind = (RDS_PSIndex == 0) ? 11 : RDS_PSIndex - 1;
- for (int i = ind+1; i < 12; i++)
+ for (int i = ind + 1; i < 12; i++)
asprintf(&temp, "%s%s ", temp, RDS_PSText[i]);
for (int i = 0; i <= ind; i++)
asprintf(&temp, "%s%s ", temp, RDS_PSText[i]);
- snprintf(stext[1], 6*9, "%s", temp);
- snprintf(stext[2], 6*9, "%s", temp+(6*9));
+ snprintf(stext[1], 6 * 9, "%s", temp);
+ snprintf(stext[2], 6 * 9, "%s", temp + (6 * 9));
free(temp);
- osd->DrawText(6, 6+yoff+fheight*ii, "[", fcolor, clrTransparent, ftext, 12, ftext->Height());
- osd->DrawText(Setup.OSDWidth-12, 6+yoff+fheight*ii, "]", fcolor, clrTransparent, ftext, Setup.OSDWidth-6, ftext->Height());
- osd->DrawText(16, 6+yoff+fheight*(ii++), stext[1], fcolor, clrTransparent, ftext, Setup.OSDWidth-16, ftext->Height(), taCenter);
- osd->DrawText(6, 3+yoff+fheight*ii, "[", fcolor, clrTransparent, ftext, 12, ftext->Height());
- osd->DrawText(Setup.OSDWidth-12, 3+yoff+fheight*ii, "]", fcolor, clrTransparent, ftext, Setup.OSDWidth-6, ftext->Height());
- osd->DrawText(16, 3+yoff+fheight*(ii++), stext[2], fcolor, clrTransparent, ftext, Setup.OSDWidth-16, ftext->Height(), taCenter);
- }
+ osd->DrawText(6, 6 + yoff + fheight * ii, "[", fcolor,
+ clrTransparent, ftext, 12, ftext->Height());
+ osd->DrawText(Setup.OSDWidth - 12, 6 + yoff + fheight * ii,
+ "]", fcolor, clrTransparent, ftext,
+ Setup.OSDWidth - 6, ftext->Height());
+ osd->DrawText(16, 6 + yoff + fheight * (ii++), stext[1],
+ fcolor, clrTransparent, ftext, Setup.OSDWidth - 16,
+ ftext->Height(), taCenter);
+ osd->DrawText(6, 3 + yoff + fheight * ii, "[", fcolor,
+ clrTransparent, ftext, 12, ftext->Height());
+ osd->DrawText(Setup.OSDWidth - 12, 3 + yoff + fheight * ii,
+ "]", fcolor, clrTransparent, ftext,
+ Setup.OSDWidth - 6, ftext->Height());
+ osd->DrawText(16, 3 + yoff + fheight * (ii++), stext[2],
+ fcolor, clrTransparent, ftext, Setup.OSDWidth - 16,
+ ftext->Height(), taCenter);
}
}
- osd->Flush();
}
+ osd->Flush();
+ }
- RT_MsgShow = false;
+ RT_MsgShow = false;
}
-int cRadioTextOsd::RassImage(int QArchiv, int QKey, bool DirUp)
-{
+int cRadioTextOsd::RassImage(int QArchiv, int QKey, bool DirUp) {
int i;
if (QKey >= 0 && QKey <= 9) {
if (QArchiv == 0)
(Rass_Flags[QKey][0]) ? QArchiv = QKey * 1000 : QArchiv = 0;
else if (QArchiv > 0) {
- if (floor(QArchiv/1000) == QKey) {
+ if (floor(QArchiv / 1000) == QKey) {
for (i = 3; i >= 0; i--) {
if (fmod(QArchiv, pow(10, i)) == 0)
- break;
- }
- (i > 0) ? QArchiv += QKey * (int) pow(10, --i) : QArchiv = QKey * 1000;
- (Rass_Flags[QKey][3-i]) ? : QArchiv = QKey * 1000;
+ break;
}
- else
+ (i > 0) ?
+ QArchiv += QKey * (int) pow(10, --i) :
+ QArchiv = QKey * 1000;
+ (Rass_Flags[QKey][3 - i]) ? : QArchiv = QKey * 1000;
+ } else
(Rass_Flags[QKey][0]) ? QArchiv = QKey * 1000 : QArchiv = 0;
- }
}
+ }
// Gallery
else if (QKey > 9 && Rass_GalCount >= 0) {
if (QArchiv < Rass_GalStart || QArchiv > Rass_GalEnd)
- QArchiv = Rass_GalStart - 1;
+ QArchiv = Rass_GalStart - 1;
if (DirUp) {
- for (i = QArchiv+1; i <= Rass_GalEnd; i++) {
+ for (i = QArchiv + 1; i <= Rass_GalEnd; i++) {
if (Rass_Gallery[i])
break;
- }
+ }
QArchiv = (i <= Rass_GalEnd) ? i : Rass_GalStart;
+ } else {
+ for (i = QArchiv - 1; i >= Rass_GalStart; i--) {
+ if (Rass_Gallery[i])
+ break;
}
- else {
- for (i = QArchiv-1; i >= Rass_GalStart; i--) {
- if (Rass_Gallery[i])
- break;
- }
QArchiv = (i >= Rass_GalStart) ? i : Rass_GalEnd;
- }
}
-
+ }
+
// show mpeg-still
char *image;
if (QArchiv >= 0)
@@ -1766,20 +2088,20 @@ int cRadioTextOsd::RassImage(int QArchiv, int QKey, bool DirUp)
asprintf(&image, "%s/Rass_show.mpg", DataDir);
RadioImage->SetBackgroundImage(image);
free(image);
-
+
return QArchiv;
}
-void cRadioTextOsd::RassOsd(void)
-{
+void cRadioTextOsd::RassOsd(void) {
ftext = cFont::GetFont(fontSml);
int fh = ftext->Height();
if (!qosd && !osd && !Skins.IsOpen() && !cOsd::IsOpen()) {
- qosd = cOsdProvider::NewOsd(Setup.OSDLeft, Setup.OSDTop+Setup.OSDHeight - (29+264-6+36));
- tArea Area = {0, 0, 97, 29+264+5, 4};
+ qosd = cOsdProvider::NewOsd(Setup.OSDLeft,
+ Setup.OSDTop + Setup.OSDHeight - (29 + 264 - 6 + 36));
+ tArea Area = { 0, 0, 97, 29 + 264 + 5, 4 };
qosd->SetAreas(&Area, 1);
- }
+ }
if (qosd) {
uint32_t bcolor, fcolor;
@@ -1795,71 +2117,73 @@ void cRadioTextOsd::RassOsd(void)
bcolor = radioSkin[skin].clrBack;
fcolor = radioSkin[skin].clrText;
int offs = 29 + 2;
- qosd->DrawRectangle(0, offs, 97, 29+264+5, bcolor);
- qosd->DrawEllipse(0, 29+264, 5, 29+264+5, 0x00000000, -3);
- qosd->DrawEllipse(92, 29+264, 97, 29+264+5, 0x00000000, -4);
- qosd->DrawRectangle(5, 29, 92, 29, fcolor);
+ qosd->DrawRectangle(0, offs, 97, 29 + 264 + 5, bcolor);
+ qosd->DrawEllipse(0, 29 + 264, 5, 29 + 264 + 5, 0x00000000, -3);
+ qosd->DrawEllipse(92, 29 + 264, 97, 29 + 264 + 5, 0x00000000, -4);
+ qosd->DrawRectangle(5, 29, 92, 29, fcolor);
// Keys+Index
offs += 4;
- qosd->DrawBitmap(4, offs, no0, bcolor, fcolor);
- qosd->DrawBitmap(44, offs, index, bcolor, fcolor);
- qosd->DrawBitmap(4, 24+offs, no1, bcolor, fcolor);
- qosd->DrawBitmap(4, 48+offs, no2, bcolor, fcolor);
- qosd->DrawBitmap(4, 72+offs, no3, bcolor, fcolor);
- qosd->DrawBitmap(4, 96+offs, no4, bcolor, fcolor);
- qosd->DrawBitmap(4, 120+offs, no5, bcolor, fcolor);
- qosd->DrawBitmap(4, 144+offs, no6, bcolor, fcolor);
- qosd->DrawBitmap(4, 168+offs, no7, bcolor, fcolor);
- qosd->DrawBitmap(4, 192+offs, no8, bcolor, fcolor);
- qosd->DrawBitmap(4, 216+offs, no9, bcolor, fcolor);
- qosd->DrawBitmap(4, 240+offs, bok, bcolor, fcolor);
+ qosd->DrawBitmap(4, offs, no0, bcolor, fcolor);
+ qosd->DrawBitmap(44, offs, index, bcolor, fcolor);
+ qosd->DrawBitmap(4, 24 + offs, no1, bcolor, fcolor);
+ qosd->DrawBitmap(4, 48 + offs, no2, bcolor, fcolor);
+ qosd->DrawBitmap(4, 72 + offs, no3, bcolor, fcolor);
+ qosd->DrawBitmap(4, 96 + offs, no4, bcolor, fcolor);
+ qosd->DrawBitmap(4, 120 + offs, no5, bcolor, fcolor);
+ qosd->DrawBitmap(4, 144 + offs, no6, bcolor, fcolor);
+ qosd->DrawBitmap(4, 168 + offs, no7, bcolor, fcolor);
+ qosd->DrawBitmap(4, 192 + offs, no8, bcolor, fcolor);
+ qosd->DrawBitmap(4, 216 + offs, no9, bcolor, fcolor);
+ qosd->DrawBitmap(4, 240 + offs, bok, bcolor, fcolor);
// Content
bool mark = false;
for (int i = 1; i <= 9; i++) {
// Pages
- if (Rass_Flags[i][0] && Rass_Flags[i][1] && Rass_Flags[i][2] && Rass_Flags[i][3])
- qosd->DrawBitmap(48, (i*24)+offs, pages4, bcolor, fcolor);
+ if (Rass_Flags[i][0] && Rass_Flags[i][1] && Rass_Flags[i][2]
+ && Rass_Flags[i][3])
+ qosd->DrawBitmap(48, (i * 24) + offs, pages4, bcolor, fcolor);
else if (Rass_Flags[i][0] && Rass_Flags[i][1] && Rass_Flags[i][2])
- qosd->DrawBitmap(48, (i*24)+offs, pages3, bcolor, fcolor);
+ qosd->DrawBitmap(48, (i * 24) + offs, pages3, bcolor, fcolor);
else if (Rass_Flags[i][0] && Rass_Flags[i][1])
- qosd->DrawBitmap(48, (i*24)+offs, pages2, bcolor, fcolor);
+ qosd->DrawBitmap(48, (i * 24) + offs, pages2, bcolor, fcolor);
else if (Rass_Flags[i][0])
- qosd->DrawBitmap(48, (i*24)+offs, page1, bcolor, fcolor);
+ qosd->DrawBitmap(48, (i * 24) + offs, page1, bcolor, fcolor);
// Marker
- if (floor(Rass_Archiv/1000) == i) {
- qosd->DrawBitmap(28, (i*24)+offs, marker, bcolor, fcolor);
+ if (floor(Rass_Archiv / 1000) == i) {
+ qosd->DrawBitmap(28, (i * 24) + offs, marker, bcolor, fcolor);
mark = true;
- }
}
+ }
// Gallery
if (Rass_GalCount > 0) {
char *temp;
- qosd->DrawBitmap(48, 240+offs, pageE, bcolor, fcolor);
+ qosd->DrawBitmap(48, 240 + offs, pageE, bcolor, fcolor);
asprintf(&temp, "%d", Rass_GalCount);
- qosd->DrawText(67, 240+offs+(20-fh), temp, fcolor, clrTransparent, ftext, 97, fh);
+ qosd->DrawText(67, 240 + offs + (20 - fh), temp, fcolor,
+ clrTransparent, ftext, 97, fh);
free(temp);
- }
+ }
// Marker gallery/index
if (!mark) {
if (Rass_Archiv > 0 && Rass_Archiv <= RASS_GALMAX)
- qosd->DrawBitmap(30, 240+offs, marker, bcolor, fcolor);
- else
+ qosd->DrawBitmap(30, 240 + offs, marker, bcolor, fcolor);
+ else
qosd->DrawBitmap(28, offs, marker, bcolor, fcolor);
- }
- qosd->Flush();
}
+ qosd->Flush();
+ }
}
-void cRadioTextOsd::RassOsdTip(void)
-{
+void cRadioTextOsd::RassOsdTip(void) {
ftext = cFont::GetFont(fontSml);
int fh = ftext->Height();
if (!qosd && !osd && !Skins.IsOpen() && !cOsd::IsOpen()) {
- qosd = cOsdProvider::NewOsd(Setup.OSDLeft, Setup.OSDTop+Setup.OSDHeight - (29+(2*fh)-6+36));
- tArea Area = {0, 0, 97, 29+(2*fh)+5, 4};
+ qosd = cOsdProvider::NewOsd(Setup.OSDLeft,
+ Setup.OSDTop + Setup.OSDHeight - (29 + (2 * fh) - 6 + 36));
+ tArea Area = { 0, 0, 97, 29 + (2 * fh) + 5, 4 };
qosd->SetAreas(&Area, 1);
- }
+ }
if (qosd) {
uint32_t bcolor, fcolor;
@@ -1874,71 +2198,81 @@ void cRadioTextOsd::RassOsdTip(void)
// Body
bcolor = radioSkin[skin].clrBack;
fcolor = radioSkin[skin].clrText;
- qosd->DrawRectangle(0, 29+2, 97, 29+(2*fh)+5, bcolor);
- qosd->DrawEllipse(0, 29+(2*fh), 5, 29+(2*fh)+5, 0x00000000, -3);
- qosd->DrawEllipse(92, 29+(2*fh), 97, 29+(2*fh)+5, 0x00000000, -4);
- qosd->DrawRectangle(5, 29, 92, 29, fcolor);
- qosd->DrawText(5, 29+4, tr("Records"), fcolor, clrTransparent, ftext, 97, fh);
- qosd->DrawText(5, 29+fh+4, ".. <0>", fcolor, clrTransparent, ftext, 97, fh);
+ qosd->DrawRectangle(0, 29 + 2, 97, 29 + (2 * fh) + 5, bcolor);
+ qosd->DrawEllipse(0, 29 + (2 * fh), 5, 29 + (2 * fh) + 5, 0x00000000,
+ -3);
+ qosd->DrawEllipse(92, 29 + (2 * fh), 97, 29 + (2 * fh) + 5, 0x00000000,
+ -4);
+ qosd->DrawRectangle(5, 29, 92, 29, fcolor);
+ qosd->DrawText(5, 29 + 4, tr("Records"), fcolor, clrTransparent, ftext,
+ 97, fh);
+ qosd->DrawText(5, 29 + fh + 4, ".. <0>", fcolor, clrTransparent, ftext,
+ 97, fh);
qosd->Flush();
- }
+ }
}
-void cRadioTextOsd::RassOsdClose(void)
-{
+void cRadioTextOsd::RassOsdClose(void) {
if (qosd != NULL) {
delete qosd;
qosd = NULL;
- }
+ }
}
-void cRadioTextOsd::RassImgSave(const char *size, int pos)
-{
+void cRadioTextOsd::RassImgSave(const char *size, int pos) {
char *infile, *outfile, *cmd;
int filenr = 0, error = 0;
struct tm *ts, tm_store;
-
+
if (!enforce_directory(DataDir))
return;
-
+
time_t t = time(NULL);
ts = localtime_r(&t, &tm_store);
switch (pos) {
- // all from 1-9
- case 1 ... 9: for (int i = 3; i >= 0; i--) {
- filenr += (int) (pos * pow(10, i));
- if (Rass_Flags[pos][3-i]) {
- asprintf(&infile, "%s/Rass_%d.mpg", DataDir, filenr);
- asprintf(&outfile, "%s/Rass_%s-%04d_%02d%02d%02d%02d.jpg", DataDir, RT_Titel, filenr,
- ts->tm_mon+1, ts->tm_mday, ts->tm_hour, ts->tm_min);
- asprintf(&cmd, "ffmpeg -i \"%s\" -s %s -f mjpeg -y \"%s\"", infile, size, outfile);
- if ((error = system(cmd)))
- i = -1;
- }
- }
- asprintf(&cmd, "%s '%d'", tr("Rass-Image(s) saved from Archiv "), pos);
- break;
+ // all from 1-9
+ case 1 ... 9:
+ for (int i = 3; i >= 0; i--) {
+ filenr += (int) (pos * pow(10, i));
+ if (Rass_Flags[pos][3 - i]) {
+ asprintf(&infile, "%s/Rass_%d.mpg", DataDir, filenr);
+ asprintf(&outfile, "%s/Rass_%s-%04d_%02d%02d%02d%02d.jpg",
+ DataDir, RT_Titel, filenr, ts->tm_mon + 1, ts->tm_mday,
+ ts->tm_hour, ts->tm_min);
+ asprintf(&cmd, "ffmpeg -i \"%s\" -s %s -f mjpeg -y \"%s\"",
+ infile, size, outfile);
+ if ((error = system(cmd)))
+ i = -1;
+ }
+ }
+ asprintf(&cmd, "%s '%d'", tr("Rass-Image(s) saved from Archiv "), pos);
+ break;
// all from gallery
- case 10: for (int i = Rass_GalStart; i <= Rass_GalEnd; i++) {
- if (Rass_Gallery[i]) {
- asprintf(&infile, "%s/Rass_%d.mpg", DataDir, i);
- asprintf(&outfile, "%s/Rass_%s-Gallery%04d_%02d%02d.jpg", DataDir, RT_Titel, i,
- ts->tm_mon+1, ts->tm_mday);
- asprintf(&cmd, "ffmpeg -i \"%s\" -s %s -f mjpeg -y \"%s\"", infile, size, outfile);
- if ((error = system(cmd)))
- i = Rass_GalEnd + 1;
- }
- }
- asprintf(&cmd, "%s", tr("Rass-Image(s) saved from Gallery"));
- break;
- // single
- default: asprintf(&infile, "%s/Rass_%d.mpg", DataDir, Rass_Archiv);
- asprintf(&outfile, "%s/Rass_%s-%04d_%02d%02d%02d%02d.jpg", DataDir, RT_Titel, Rass_Archiv,
- ts->tm_mon+1, ts->tm_mday, ts->tm_hour, ts->tm_min);
- asprintf(&cmd, "ffmpeg -i \"%s\" -s %s -f mjpeg -y \"%s\"", infile, size, outfile);
- error = system(cmd);
- asprintf(&cmd, "%s: %s", tr("Rass-Image saved"), outfile);
+ case 10:
+ for (int i = Rass_GalStart; i <= Rass_GalEnd; i++) {
+ if (Rass_Gallery[i]) {
+ asprintf(&infile, "%s/Rass_%d.mpg", DataDir, i);
+ asprintf(&outfile, "%s/Rass_%s-Gallery%04d_%02d%02d.jpg",
+ DataDir, RT_Titel, i, ts->tm_mon + 1, ts->tm_mday);
+ asprintf(&cmd, "ffmpeg -i \"%s\" -s %s -f mjpeg -y \"%s\"",
+ infile, size, outfile);
+ if ((error = system(cmd)))
+ i = Rass_GalEnd + 1;
+ }
}
+ asprintf(&cmd, "%s", tr("Rass-Image(s) saved from Gallery"));
+ break;
+ // single
+ default:
+ asprintf(&infile, "%s/Rass_%d.mpg", DataDir, Rass_Archiv);
+ asprintf(&outfile, "%s/Rass_%s-%04d_%02d%02d%02d%02d.jpg", DataDir,
+ RT_Titel, Rass_Archiv, ts->tm_mon + 1, ts->tm_mday, ts->tm_hour,
+ ts->tm_min);
+ asprintf(&cmd, "ffmpeg -i \"%s\" -s %s -f mjpeg -y \"%s\"", infile,
+ size, outfile);
+ error = system(cmd);
+ asprintf(&cmd, "%s: %s", tr("Rass-Image saved"), outfile);
+ }
free(infile);
// Info
@@ -1946,241 +2280,282 @@ void cRadioTextOsd::RassImgSave(const char *size, int pos)
if (error) {
asprintf(&cmd, "%s: %s", tr("Rass-Image failed"), outfile);
Skins.Message(mtError, cmd, Setup.OSDMessageTime);
- }
- else
+ } else
Skins.Message(mtInfo, cmd, Setup.OSDMessageTime);
free(outfile);
free(cmd);
}
-void cRadioTextOsd::rtp_print(void)
-{
+void cRadioTextOsd::rtp_print(void) {
struct tm tm_store;
time_t t = time(NULL);
- printf("\n>>> %s-Memoryclasses @ %s", InfoRequest ? "Info" : "RTplus", asctime(localtime_r(&t, &tm_store)));
- printf(" on '%s' since %s", RT_Titel, asctime(localtime_r(&rtp_content.start, &tm_store)));
+ printf("\n>>> %s-Memoryclasses @ %s", InfoRequest ? "Info" : "RTplus",
+ asctime(localtime_r(&t, &tm_store)));
+ printf(" on '%s' since %s", RT_Titel,
+ asctime(localtime_r(&rtp_content.start, &tm_store)));
printf("--- Programme ---\n");
- if (rtp_content.prog_StatShort != NULL) printf("StationShort: %s\n", rtp_content.prog_StatShort);
- if (rtp_content.prog_Station != NULL) printf(" Station: %s\n", rtp_content.prog_Station);
- if (rtp_content.prog_Now != NULL) printf(" Now: %s\n", rtp_content.prog_Now);
- if (rtp_content.prog_Next != NULL) printf(" Next: %s\n", rtp_content.prog_Next);
- if (rtp_content.prog_Part != NULL) printf(" Part: %s\n", rtp_content.prog_Part);
- if (rtp_content.prog_Host != NULL) printf(" Host: %s\n", rtp_content.prog_Host);
- if (rtp_content.prog_EditStaff != NULL) printf(" Ed.Staff: %s\n", rtp_content.prog_EditStaff);
- if (rtp_content.prog_Homepage != NULL) printf(" Homepage: %s\n", rtp_content.prog_Homepage);
+ if (rtp_content.prog_StatShort != NULL)
+ printf("StationShort: %s\n", rtp_content.prog_StatShort);
+ if (rtp_content.prog_Station != NULL)
+ printf(" Station: %s\n", rtp_content.prog_Station);
+ if (rtp_content.prog_Now != NULL)
+ printf(" Now: %s\n", rtp_content.prog_Now);
+ if (rtp_content.prog_Next != NULL)
+ printf(" Next: %s\n", rtp_content.prog_Next);
+ if (rtp_content.prog_Part != NULL)
+ printf(" Part: %s\n", rtp_content.prog_Part);
+ if (rtp_content.prog_Host != NULL)
+ printf(" Host: %s\n", rtp_content.prog_Host);
+ if (rtp_content.prog_EditStaff != NULL)
+ printf(" Ed.Staff: %s\n", rtp_content.prog_EditStaff);
+ if (rtp_content.prog_Homepage != NULL)
+ printf(" Homepage: %s\n", rtp_content.prog_Homepage);
printf("--- Interactivity ---\n");
- if (rtp_content.phone_Hotline != NULL) printf(" Phone-Hotline: %s\n", rtp_content.phone_Hotline);
- if (rtp_content.phone_Studio != NULL) printf(" Phone-Studio: %s\n", rtp_content.phone_Studio);
- if (rtp_content.sms_Studio != NULL) printf(" SMS-Studio: %s\n", rtp_content.sms_Studio);
- if (rtp_content.email_Hotline != NULL) printf(" Email-Hotline: %s\n", rtp_content.email_Hotline);
- if (rtp_content.email_Studio != NULL) printf(" Email-Studio: %s\n", rtp_content.email_Studio);
+ if (rtp_content.phone_Hotline != NULL)
+ printf(" Phone-Hotline: %s\n", rtp_content.phone_Hotline);
+ if (rtp_content.phone_Studio != NULL)
+ printf(" Phone-Studio: %s\n", rtp_content.phone_Studio);
+ if (rtp_content.sms_Studio != NULL)
+ printf(" SMS-Studio: %s\n", rtp_content.sms_Studio);
+ if (rtp_content.email_Hotline != NULL)
+ printf(" Email-Hotline: %s\n", rtp_content.email_Hotline);
+ if (rtp_content.email_Studio != NULL)
+ printf(" Email-Studio: %s\n", rtp_content.email_Studio);
printf("--- Info ---\n");
- if (rtp_content.info_News != NULL) printf(" News: %s\n", rtp_content.info_News);
- if (rtp_content.info_NewsLocal != NULL) printf(" NewsLocal: %s\n", rtp_content.info_NewsLocal);
- if (rtp_content.info_DateTime != NULL) printf(" DateTime: %s\n", rtp_content.info_DateTime);
- if (rtp_content.info_Traffic != NULL) printf(" Traffic: %s\n", rtp_content.info_Traffic);
- if (rtp_content.info_Alarm != NULL) printf(" Alarm: %s\n", rtp_content.info_Alarm);
- if (rtp_content.info_Advert != NULL) printf(" Advertisg: %s\n", rtp_content.info_Advert);
- if (rtp_content.info_Url != NULL) printf(" Url: %s\n", rtp_content.info_Url);
+ if (rtp_content.info_News != NULL)
+ printf(" News: %s\n", rtp_content.info_News);
+ if (rtp_content.info_NewsLocal != NULL)
+ printf(" NewsLocal: %s\n", rtp_content.info_NewsLocal);
+ if (rtp_content.info_DateTime != NULL)
+ printf(" DateTime: %s\n", rtp_content.info_DateTime);
+ if (rtp_content.info_Traffic != NULL)
+ printf(" Traffic: %s\n", rtp_content.info_Traffic);
+ if (rtp_content.info_Alarm != NULL)
+ printf(" Alarm: %s\n", rtp_content.info_Alarm);
+ if (rtp_content.info_Advert != NULL)
+ printf(" Advertisg: %s\n", rtp_content.info_Advert);
+ if (rtp_content.info_Url != NULL)
+ printf(" Url: %s\n", rtp_content.info_Url);
// no sorting
for (int i = 0; i < MAX_RTPC; i++)
- if (rtp_content.info_Stock[i] != NULL) printf(" Stock[%02d]: %s\n", i, rtp_content.info_Stock[i]);
+ if (rtp_content.info_Stock[i] != NULL)
+ printf(" Stock[%02d]: %s\n", i, rtp_content.info_Stock[i]);
for (int i = 0; i < MAX_RTPC; i++)
- if (rtp_content.info_Sport[i] != NULL) printf(" Sport[%02d]: %s\n", i, rtp_content.info_Sport[i]);
+ if (rtp_content.info_Sport[i] != NULL)
+ printf(" Sport[%02d]: %s\n", i, rtp_content.info_Sport[i]);
for (int i = 0; i < MAX_RTPC; i++)
- if (rtp_content.info_Lottery[i] != NULL) printf(" Lottery[%02d]: %s\n", i, rtp_content.info_Lottery[i]);
+ if (rtp_content.info_Lottery[i] != NULL)
+ printf(" Lottery[%02d]: %s\n", i, rtp_content.info_Lottery[i]);
for (int i = 0; i < MAX_RTPC; i++)
- if (rtp_content.info_Weather[i] != NULL) printf(" Weather[%02d]: %s\n", i, rtp_content.info_Weather[i]);
+ if (rtp_content.info_Weather[i] != NULL)
+ printf(" Weather[%02d]: %s\n", i, rtp_content.info_Weather[i]);
for (int i = 0; i < MAX_RTPC; i++)
- if (rtp_content.info_Other[i] != NULL) printf(" Other[%02d]: %s\n", i, rtp_content.info_Other[i]);
-/*
- printf("--- Item-Playlist ---\n");
- // no sorting
- if (rtp_content.item_Index >= 0) {
- for (int i = 0; i < MAX_RTPC; i++) {
- if (rtp_content.item_Title[i] != NULL && rtp_content.item_Artist[i] != NULL) {
- struct tm tm_store;
- struct tm *ts = localtime_r(&rtp_content.item_Start[i], &tm_store);
- printf(" [%02d] %02d:%02d Title: %s | Artist: %s\n",
- i, ts->tm_hour, ts->tm_min, rtp_content.item_Title[i], rtp_content.item_Artist[i]);
- }
- }
- }
-
- printf("--- Last seen Radiotext ---\n");
- // no sorting
- if (rtp_content.rt_Index >= 0) {
- for (int i = 0; i < 2*MAX_RTPC; i++)
- if (rtp_content.radiotext[i] != NULL) printf(" [%03d] %s\n", i, rtp_content.radiotext[i]);
- }
-*/
+ if (rtp_content.info_Other[i] != NULL)
+ printf(" Other[%02d]: %s\n", i, rtp_content.info_Other[i]);
+ /*
+ printf("--- Item-Playlist ---\n");
+ // no sorting
+ if (rtp_content.item_Index >= 0) {
+ for (int i = 0; i < MAX_RTPC; i++) {
+ if (rtp_content.item_Title[i] != NULL && rtp_content.item_Artist[i] != NULL) {
+ struct tm tm_store;
+ struct tm *ts = localtime_r(&rtp_content.item_Start[i], &tm_store);
+ printf(" [%02d] %02d:%02d Title: %s | Artist: %s\n",
+ i, ts->tm_hour, ts->tm_min, rtp_content.item_Title[i], rtp_content.item_Artist[i]);
+ }
+ }
+ }
+
+ printf("--- Last seen Radiotext ---\n");
+ // no sorting
+ if (rtp_content.rt_Index >= 0) {
+ for (int i = 0; i < 2*MAX_RTPC; i++)
+ if (rtp_content.radiotext[i] != NULL) printf(" [%03d] %s\n", i, rtp_content.radiotext[i]);
+ }
+ */
printf("<<<\n");
}
#define rtplog 0
-eOSState cRadioTextOsd::ProcessKey(eKeys Key)
-{
+eOSState cRadioTextOsd::ProcessKey(eKeys Key) {
// RTplus Infolog
if (rtplog == 1 && (S_Verbose & 0x0f) >= 1) {
static int ct = 0;
if (++ct >= 60) {
ct = 0;
rtp_print();
- }
}
+ }
// check end @ replay
if (RT_Replay) {
int rplayCur, rplayTot;
cControl::Control()->GetIndex(rplayCur, rplayTot, false);
- if (rplayCur >= rplayTot-1) {
+ if (rplayCur >= rplayTot - 1) {
Hide();
return osEnd;
- }
}
+ }
// Timeout or no Info/Rass
if (RT_OsdTO || (RT_OsdTOTemp > 0) || (RT_Info < 0)) {
Hide();
return osEnd;
- }
+ }
eOSState state = cOsdObject::ProcessKey(Key);
- if (state != osUnknown) return state;
+ if (state != osUnknown)
+ return state;
// Key pressed ...
if (Key != kNone && Key < k_Release) {
if (osd) { // Radiotext, -plus Osd
switch (Key) {
- case kBack: RTOsdClose();
- rtclosed = true;
- //rassclosed = false;
- break;
- case k0: RTOsdClose();
- RTplus_Osd = true;
- cRemote::CallPlugin("radio");
- return osEnd;
- default: Hide();
- LastKey = (Key == kChanUp || Key == kChanDn) ? kNone : Key;
- return osEnd;
- }
+ case kBack:
+ RTOsdClose();
+ rtclosed = true;
+ //rassclosed = false;
+ break;
+ case k0:
+ RTOsdClose();
+ RTplus_Osd = true;
+ cRemote::CallPlugin("radio");
+ return osEnd;
+ default:
+ Hide();
+ LastKey = (Key == kChanUp || Key == kChanDn) ? kNone : Key;
+ return osEnd;
}
- else if (qosd && Rass_Archiv >= 0) { // Rass-Archiv Osd
+ } else if (qosd && Rass_Archiv >= 0) { // Rass-Archiv Osd
int i, pos;
- pos = (Rass_Archiv > 0 && Rass_Archiv <= RASS_GALMAX) ? 10 : (int) floor(Rass_Archiv/1000);
+ pos = (Rass_Archiv > 0 && Rass_Archiv <= RASS_GALMAX) ?
+ 10 : (int) floor(Rass_Archiv / 1000);
switch (Key) {
- // back to Slideshow
- case kBlue:
- case kBack: if (!RT_Replay)
- Rass_Archiv = RassImage(-1, 0, false);
- else {
- Rass_Archiv = -1;
- RadioImage->SetBackgroundImage(ReplayFile);
- }
- RassOsdClose();
- rassclosed = rtclosed = false;
- break;
+ // back to Slideshow
+ case kBlue:
+ case kBack:
+ if (!RT_Replay)
+ Rass_Archiv = RassImage(-1, 0, false);
+ else {
+ Rass_Archiv = -1;
+ RadioImage->SetBackgroundImage(ReplayFile);
+ }
+ RassOsdClose();
+ rassclosed = rtclosed = false;
+ break;
// Archiv-Sides
- case k0 ... k9: Rass_Archiv = RassImage(Rass_Archiv, Key-k0, false);
- RassOsd();
- break;
- case kOk: if (Rass_Flags[10][0]) {
- Rass_Archiv = RassImage(Rass_Archiv, 10, true);
- RassOsd();
- }
- break;
- case kLeft:
- case kRight: Rass_Archiv = RassImage(Rass_Archiv, pos, (Key == kRight) ? true : false);
- RassOsd();
- break;
- case kDown: (pos == 10) ? i = 0 : i = pos + 1;
- while (i != pos) {
- if (Rass_Flags[i][0]) {
- Rass_Archiv = RassImage(Rass_Archiv, i, true);
- RassOsd();
- return osContinue;
- }
- if (++i > 10) i = 0;
- }
- break;
- case kUp: (pos == 0) ? i = 10 : i = pos - 1;
- while (i != pos) {
- if (Rass_Flags[i][0]) {
- Rass_Archiv = RassImage(Rass_Archiv, i, true);
- RassOsd();
- return osContinue;
- }
- if (--i < 0) i = 10;
- }
- break;
- case kRed: RassImgSave("1024x576", 0);
- break;
- case kGreen: RassImgSave("1024x576", pos);
- break;
- case kYellow: break; // todo, what ?
- default: Hide();
- LastKey = (Key == kChanUp || Key == kChanDn) ? kNone : Key;
- return osEnd;
+ case k0 ... k9:
+ Rass_Archiv = RassImage(Rass_Archiv, Key - k0, false);
+ RassOsd();
+ break;
+ case kOk:
+ if (Rass_Flags[10][0]) {
+ Rass_Archiv = RassImage(Rass_Archiv, 10, true);
+ RassOsd();
+ }
+ break;
+ case kLeft:
+ case kRight:
+ Rass_Archiv = RassImage(Rass_Archiv, pos,
+ (Key == kRight) ? true : false);
+ RassOsd();
+ break;
+ case kDown:
+ (pos == 10) ? i = 0 : i = pos + 1;
+ while (i != pos) {
+ if (Rass_Flags[i][0]) {
+ Rass_Archiv = RassImage(Rass_Archiv, i, true);
+ RassOsd();
+ return osContinue;
+ }
+ if (++i > 10)
+ i = 0;
+ }
+ break;
+ case kUp:
+ (pos == 0) ? i = 10 : i = pos - 1;
+ while (i != pos) {
+ if (Rass_Flags[i][0]) {
+ Rass_Archiv = RassImage(Rass_Archiv, i, true);
+ RassOsd();
+ return osContinue;
+ }
+ if (--i < 0)
+ i = 10;
}
+ break;
+ case kRed:
+ RassImgSave("1024x576", 0);
+ break;
+ case kGreen:
+ RassImgSave("1024x576", pos);
+ break;
+ case kYellow:
+ break; // todo, what ?
+ default:
+ Hide();
+ LastKey = (Key == kChanUp || Key == kChanDn) ? kNone : Key;
+ return osEnd;
}
- else if (qosd && Rass_Archiv == -1) { // Rass-Slideshow Osd
+ } else if (qosd && Rass_Archiv == -1) { // Rass-Slideshow Osd
switch (Key) {
- // close
- case kBack: RassOsdClose();
- rassclosed = true;
- //rtclosed = false;
- break;
+ // close
+ case kBack:
+ RassOsdClose();
+ rassclosed = true;
+ //rtclosed = false;
+ break;
// Archiv-Index
- case k0: if (Rass_Flags[0][0]) {
- RassOsdClose();
- Rass_Archiv = RassImage(0, 0, false);
- RassOsd();
- }
- break;
- default: Hide();
- LastKey = (Key == kChanUp || Key == kChanDn) ? kNone : Key;
- return osEnd;
+ case k0:
+ if (Rass_Flags[0][0]) {
+ RassOsdClose();
+ Rass_Archiv = RassImage(0, 0, false);
+ RassOsd();
}
+ break;
+ default:
+ Hide();
+ LastKey = (Key == kChanUp || Key == kChanDn) ? kNone : Key;
+ return osEnd;
}
- else { // no RT && no Rass
+ } else { // no RT && no Rass
Hide();
LastKey = (Key == kChanUp || Key == kChanDn) ? kNone : Key;
return osEnd;
- }
}
+ }
// no Key pressed ...
- else if (S_RtOsdTO > 0 && osdtimer.Elapsed()/1000/60 >= (uint)S_RtOsdTO) {
+ else if (S_RtOsdTO > 0
+ && osdtimer.Elapsed() / 1000 / 60 >= (uint) S_RtOsdTO) {
RT_OsdTO = true;
Hide();
return osEnd;
- }
- else if (Rass_Archiv >= 0)
+ } else if (Rass_Archiv >= 0)
RassOsd();
- else if (RT_MsgShow && !rtclosed && (!Rass_Flags[0][0]|| S_RassText >= 2 || rassclosed)) { // Rass_Show == -1
+ else if (RT_MsgShow && !rtclosed
+ && (!Rass_Flags[0][0] || S_RassText >= 2 || rassclosed)) { // Rass_Show == -1
RassOsdClose();
ShowText();
- }
- else if (Rass_Flags[0][0] && !rassclosed && (S_RassText < 2 || rtclosed)) {
+ } else if (Rass_Flags[0][0] && !rassclosed
+ && (S_RassText < 2 || rtclosed)) {
RTOsdClose();
RassOsdTip();
- }
-
+ }
+
return osContinue;
}
-
// --- cRTplusOsd ------------------------------------------------------
-cRTplusOsd::cRTplusOsd(void)
- : cOsdMenu(RTp_Titel, 3, 12)
- , cCharSetConv((RT_Charset == 0) ? "ISO-8859-1" : NULL)
-{
+cRTplusOsd::cRTplusOsd(void) :
+ cOsdMenu(RTp_Titel, 3, 12), cCharSetConv(
+ (RT_Charset == 0) ? "ISO-8859-1" : NULL) {
RTplus_Osd = false;
-
+
bcount = helpmode = 0;
listtyp[0] = tr("Radiotext");
listtyp[1] = tr("Playlist");
@@ -2194,17 +2569,17 @@ cRTplusOsd::cRTplusOsd(void)
Display();
}
-cRTplusOsd::~cRTplusOsd()
-{
+cRTplusOsd::~cRTplusOsd() {
}
-void cRTplusOsd::Load(void)
-{
+void cRTplusOsd::Load(void) {
char text[80];
struct tm tm_store;
struct tm *ts = localtime_r(&rtp_content.start, &tm_store);
- snprintf(text, sizeof(text), "%s %02d:%02d", InfoRequest ? tr("extra Info since") : tr("RTplus Memory since"), ts->tm_hour, ts->tm_min);
+ snprintf(text, sizeof(text), "%s %02d:%02d",
+ InfoRequest ? tr("extra Info since") : tr("RTplus Memory since"),
+ ts->tm_hour, ts->tm_min);
Add(new cOsdItem(hk(text)));
snprintf(text, sizeof(text), "%s", " ");
Add(new cOsdItem(hk(text)));
@@ -2212,98 +2587,118 @@ void cRTplusOsd::Load(void)
snprintf(text, sizeof(text), "-- %s --", tr("Programme"));
Add(new cOsdItem(hk(text)));
if (rtp_content.prog_StatShort != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Stat.Short"), Convert(rtp_content.prog_StatShort));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Stat.Short"),
+ Convert(rtp_content.prog_StatShort));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.prog_Station != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Station"), Convert(rtp_content.prog_Station));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Station"),
+ Convert(rtp_content.prog_Station));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.prog_Now != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Now"), Convert(rtp_content.prog_Now));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Now"),
+ Convert(rtp_content.prog_Now));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.prog_Part != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("...Part"), Convert(rtp_content.prog_Part));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("...Part"),
+ Convert(rtp_content.prog_Part));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.prog_Next != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Next"), Convert(rtp_content.prog_Next));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Next"),
+ Convert(rtp_content.prog_Next));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.prog_Host != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Host"), Convert(rtp_content.prog_Host));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Host"),
+ Convert(rtp_content.prog_Host));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.prog_EditStaff != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Edit.Staff"), Convert(rtp_content.prog_EditStaff));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Edit.Staff"),
+ Convert(rtp_content.prog_EditStaff));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.prog_Homepage != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Homepage"), Convert(rtp_content.prog_Homepage));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Homepage"),
+ Convert(rtp_content.prog_Homepage));
Add(new cOsdItem(hk(text)));
- }
+ }
snprintf(text, sizeof(text), "%s", " ");
Add(new cOsdItem(hk(text)));
snprintf(text, sizeof(text), "-- %s --", tr("Interactivity"));
Add(new cOsdItem(hk(text)));
if (rtp_content.phone_Hotline != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Phone-Hotline"), Convert(rtp_content.phone_Hotline));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Phone-Hotline"),
+ Convert(rtp_content.phone_Hotline));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.phone_Studio != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Phone-Studio"), Convert(rtp_content.phone_Studio));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Phone-Studio"),
+ Convert(rtp_content.phone_Studio));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.sms_Studio != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("SMS-Studio"), Convert(rtp_content.sms_Studio));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("SMS-Studio"),
+ Convert(rtp_content.sms_Studio));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.email_Hotline != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Email-Hotline"), Convert(rtp_content.email_Hotline));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Email-Hotline"),
+ Convert(rtp_content.email_Hotline));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.email_Studio != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Email-Studio"), Convert(rtp_content.email_Studio));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Email-Studio"),
+ Convert(rtp_content.email_Studio));
Add(new cOsdItem(hk(text)));
- }
+ }
snprintf(text, sizeof(text), "%s", " ");
Add(new cOsdItem(hk(text)));
snprintf(text, sizeof(text), "-- %s --", tr("Info"));
Add(new cOsdItem(hk(text)));
if (rtp_content.info_News != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("News"), Convert(rtp_content.info_News));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("News"),
+ Convert(rtp_content.info_News));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.info_NewsLocal != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("NewsLocal"), Convert(rtp_content.info_NewsLocal));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("NewsLocal"),
+ Convert(rtp_content.info_NewsLocal));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.info_DateTime != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("DateTime"), Convert(rtp_content.info_DateTime));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("DateTime"),
+ Convert(rtp_content.info_DateTime));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.info_Traffic != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Traffic"), Convert(rtp_content.info_Traffic));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Traffic"),
+ Convert(rtp_content.info_Traffic));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.info_Alarm != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Alarm"), Convert(rtp_content.info_Alarm));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Alarm"),
+ Convert(rtp_content.info_Alarm));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.info_Advert != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Advertising"), Convert(rtp_content.info_Advert));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Advertising"),
+ Convert(rtp_content.info_Advert));
Add(new cOsdItem(hk(text)));
- }
+ }
if (rtp_content.info_Url != NULL) {
- snprintf(text, sizeof(text), "\t%s:\t%s", tr("Url"), Convert(rtp_content.info_Url));
+ snprintf(text, sizeof(text), "\t%s:\t%s", tr("Url"),
+ Convert(rtp_content.info_Url));
Add(new cOsdItem(hk(text)));
- }
+ }
for (int i = 0; i <= 6; i++)
- btext[i] = NULL;
+ btext[i] = NULL;
bcount = 0;
asprintf(&btext[bcount++], "%s", listtyp[0]);
if (rtp_content.item_Index >= 0)
@@ -2318,56 +2713,58 @@ void cRTplusOsd::Load(void)
asprintf(&btext[bcount++], "%s", listtyp[5]);
if (rtp_content.info_OtherIndex >= 0)
asprintf(&btext[bcount++], "%s", listtyp[6]);
-
+
switch (bcount) {
- case 4: if (helpmode == 0)
- SetHelp(btext[0], btext[1], btext[2], ">>");
- else if (helpmode == 1)
- SetHelp("<<", btext[3], NULL, tr("Exit"));
- break;
- case 5: if (helpmode == 0)
- SetHelp(btext[0], btext[1], btext[2], ">>");
- else if (helpmode == 1)
- SetHelp("<<", btext[3], btext[4], tr("Exit"));
- break;
- case 6: if (helpmode == 0)
- SetHelp(btext[0], btext[1], btext[2], ">>");
- else if (helpmode == 1)
- SetHelp("<<", btext[3], btext[4], ">>");
- else if (helpmode == 2)
- SetHelp("<<", btext[5], NULL, tr("Exit"));
- break;
- case 7: if (helpmode == 0)
- SetHelp(btext[0], btext[1], btext[2], ">>");
- else if (helpmode == 1)
- SetHelp("<<", btext[3], btext[4], ">>");
- else if (helpmode == 2)
- SetHelp("<<", btext[5], btext[6], tr("Exit"));
- break;
- default: helpmode = 0;
- SetHelp(btext[0], btext[1], btext[2], tr("Exit"));
- }
+ case 4:
+ if (helpmode == 0)
+ SetHelp(btext[0], btext[1], btext[2], ">>");
+ else if (helpmode == 1)
+ SetHelp("<<", btext[3], NULL, tr("Exit"));
+ break;
+ case 5:
+ if (helpmode == 0)
+ SetHelp(btext[0], btext[1], btext[2], ">>");
+ else if (helpmode == 1)
+ SetHelp("<<", btext[3], btext[4], tr("Exit"));
+ break;
+ case 6:
+ if (helpmode == 0)
+ SetHelp(btext[0], btext[1], btext[2], ">>");
+ else if (helpmode == 1)
+ SetHelp("<<", btext[3], btext[4], ">>");
+ else if (helpmode == 2)
+ SetHelp("<<", btext[5], NULL, tr("Exit"));
+ break;
+ case 7:
+ if (helpmode == 0)
+ SetHelp(btext[0], btext[1], btext[2], ">>");
+ else if (helpmode == 1)
+ SetHelp("<<", btext[3], btext[4], ">>");
+ else if (helpmode == 2)
+ SetHelp("<<", btext[5], btext[6], tr("Exit"));
+ break;
+ default:
+ helpmode = 0;
+ SetHelp(btext[0], btext[1], btext[2], tr("Exit"));
+ }
}
-void cRTplusOsd::Update(void)
-{
+void cRTplusOsd::Update(void) {
Clear();
Load();
Display();
}
-int cRTplusOsd::rtptyp(char *btext)
-{
+int cRTplusOsd::rtptyp(char *btext) {
for (int i = 0; i <= 6; i++) {
if (strcmp(btext, listtyp[i]) == 0)
return i;
- }
-
+ }
+
return -1;
}
-void cRTplusOsd::rtp_fileprint(void)
-{
+void cRTplusOsd::rtp_fileprint(void) {
struct tm *ts, tm_store;
char *fname, *fpath;
FILE *fd;
@@ -2378,231 +2775,279 @@ void cRTplusOsd::rtp_fileprint(void)
time_t t = time(NULL);
ts = localtime_r(&t, &tm_store);
- asprintf(&fname, "%s_%s_%04d-%02d-%02d.%02d.%02d", InfoRequest ? "Info" : "RTplus", RT_Titel, ts->tm_year+1900, ts->tm_mon+1, ts->tm_mday, ts->tm_hour, ts->tm_min);
+ asprintf(&fname, "%s_%s_%04d-%02d-%02d.%02d.%02d",
+ InfoRequest ? "Info" : "RTplus", RT_Titel, ts->tm_year + 1900,
+ ts->tm_mon + 1, ts->tm_mday, ts->tm_hour, ts->tm_min);
asprintf(&fpath, "%s/%s", DataDir, fname);
if ((fd = fopen(fpath, "w")) != NULL) {
-
- fprintf(fd, ">>> %s-Memoryclasses @ %s", InfoRequest ? "Info" : "RTplus", asctime(localtime_r(&t, &tm_store)));
- fprintf(fd, " on '%s' since %s", RT_Titel, asctime(localtime_r(&rtp_content.start, &tm_store)));
+
+ fprintf(fd, ">>> %s-Memoryclasses @ %s",
+ InfoRequest ? "Info" : "RTplus",
+ asctime(localtime_r(&t, &tm_store)));
+ fprintf(fd, " on '%s' since %s", RT_Titel,
+ asctime(localtime_r(&rtp_content.start, &tm_store)));
fprintf(fd, "--- Programme ---\n");
- if (rtp_content.prog_StatShort != NULL) fprintf(fd, "StationShort: %s\n", rtp_content.prog_StatShort);
- if (rtp_content.prog_Station != NULL) fprintf(fd, " Station: %s\n", rtp_content.prog_Station);
- if (rtp_content.prog_Now != NULL) fprintf(fd, " Now: %s\n", rtp_content.prog_Now);
- if (rtp_content.prog_Part != NULL) fprintf(fd, " Part: %s\n", rtp_content.prog_Part);
- if (rtp_content.prog_Next != NULL) fprintf(fd, " Next: %s\n", rtp_content.prog_Next);
- if (rtp_content.prog_Host != NULL) fprintf(fd, " Host: %s\n", rtp_content.prog_Host);
- if (rtp_content.prog_EditStaff != NULL) fprintf(fd, " Ed.Staff: %s\n", rtp_content.prog_EditStaff);
- if (rtp_content.prog_Homepage != NULL) fprintf(fd, " Homepage: %s\n", rtp_content.prog_Homepage);
+ if (rtp_content.prog_StatShort != NULL)
+ fprintf(fd, "StationShort: %s\n", rtp_content.prog_StatShort);
+ if (rtp_content.prog_Station != NULL)
+ fprintf(fd, " Station: %s\n", rtp_content.prog_Station);
+ if (rtp_content.prog_Now != NULL)
+ fprintf(fd, " Now: %s\n", rtp_content.prog_Now);
+ if (rtp_content.prog_Part != NULL)
+ fprintf(fd, " Part: %s\n", rtp_content.prog_Part);
+ if (rtp_content.prog_Next != NULL)
+ fprintf(fd, " Next: %s\n", rtp_content.prog_Next);
+ if (rtp_content.prog_Host != NULL)
+ fprintf(fd, " Host: %s\n", rtp_content.prog_Host);
+ if (rtp_content.prog_EditStaff != NULL)
+ fprintf(fd, " Ed.Staff: %s\n", rtp_content.prog_EditStaff);
+ if (rtp_content.prog_Homepage != NULL)
+ fprintf(fd, " Homepage: %s\n", rtp_content.prog_Homepage);
fprintf(fd, "--- Interactivity ---\n");
- if (rtp_content.phone_Hotline != NULL) fprintf(fd, " Phone-Hotline: %s\n", rtp_content.phone_Hotline);
- if (rtp_content.phone_Studio != NULL) fprintf(fd, " Phone-Studio: %s\n", rtp_content.phone_Studio);
- if (rtp_content.sms_Studio != NULL) fprintf(fd, " SMS-Studio: %s\n", rtp_content.sms_Studio);
- if (rtp_content.email_Hotline != NULL) fprintf(fd, " Email-Hotline: %s\n", rtp_content.email_Hotline);
- if (rtp_content.email_Studio != NULL) fprintf(fd, " Email-Studio: %s\n", rtp_content.email_Studio);
+ if (rtp_content.phone_Hotline != NULL)
+ fprintf(fd, " Phone-Hotline: %s\n", rtp_content.phone_Hotline);
+ if (rtp_content.phone_Studio != NULL)
+ fprintf(fd, " Phone-Studio: %s\n", rtp_content.phone_Studio);
+ if (rtp_content.sms_Studio != NULL)
+ fprintf(fd, " SMS-Studio: %s\n", rtp_content.sms_Studio);
+ if (rtp_content.email_Hotline != NULL)
+ fprintf(fd, " Email-Hotline: %s\n", rtp_content.email_Hotline);
+ if (rtp_content.email_Studio != NULL)
+ fprintf(fd, " Email-Studio: %s\n", rtp_content.email_Studio);
fprintf(fd, "--- Info ---\n");
- if (rtp_content.info_News != NULL) fprintf(fd, " News: %s\n", rtp_content.info_News);
- if (rtp_content.info_NewsLocal != NULL) fprintf(fd, " NewsLocal: %s\n", rtp_content.info_NewsLocal);
- if (rtp_content.info_DateTime != NULL) fprintf(fd, " DateTime: %s\n", rtp_content.info_DateTime);
- if (rtp_content.info_Traffic != NULL) fprintf(fd, " Traffic: %s\n", rtp_content.info_Traffic);
- if (rtp_content.info_Alarm != NULL) fprintf(fd, " Alarm: %s\n", rtp_content.info_Alarm);
- if (rtp_content.info_Advert != NULL) fprintf(fd, " Advertisg: %s\n", rtp_content.info_Advert);
- if (rtp_content.info_Url != NULL) fprintf(fd, " Url: %s\n", rtp_content.info_Url);
-
+ if (rtp_content.info_News != NULL)
+ fprintf(fd, " News: %s\n", rtp_content.info_News);
+ if (rtp_content.info_NewsLocal != NULL)
+ fprintf(fd, " NewsLocal: %s\n", rtp_content.info_NewsLocal);
+ if (rtp_content.info_DateTime != NULL)
+ fprintf(fd, " DateTime: %s\n", rtp_content.info_DateTime);
+ if (rtp_content.info_Traffic != NULL)
+ fprintf(fd, " Traffic: %s\n", rtp_content.info_Traffic);
+ if (rtp_content.info_Alarm != NULL)
+ fprintf(fd, " Alarm: %s\n", rtp_content.info_Alarm);
+ if (rtp_content.info_Advert != NULL)
+ fprintf(fd, " Advertisg: %s\n", rtp_content.info_Advert);
+ if (rtp_content.info_Url != NULL)
+ fprintf(fd, " Url: %s\n", rtp_content.info_Url);
if (rtp_content.item_Index >= 0) {
fprintf(fd, "--- Item-Playlist ---\n");
ind = rtp_content.item_Index;
- if (ind < (MAX_RTPC-1) && rtp_content.item_Title[ind+1] != NULL) {
- for (int i = ind+1; i < MAX_RTPC; i++) {
- if (rtp_content.item_Title[i] != NULL && rtp_content.item_Artist[i] != NULL) {
+ if (ind < (MAX_RTPC - 1) && rtp_content.item_Title[ind + 1] != NULL) {
+ for (int i = ind + 1; i < MAX_RTPC; i++) {
+ if (rtp_content.item_Title[i] != NULL
+ && rtp_content.item_Artist[i] != NULL) {
ts = localtime_r(&rtp_content.item_Start[i], &tm_store);
- fprintf(fd, " %02d:%02d Title: '%s' | Artist: '%s'\n", ts->tm_hour, ts->tm_min, rtp_content.item_Title[i], rtp_content.item_Artist[i]);
- }
+ fprintf(fd,
+ " %02d:%02d Title: '%s' | Artist: '%s'\n",
+ ts->tm_hour, ts->tm_min,
+ rtp_content.item_Title[i],
+ rtp_content.item_Artist[i]);
}
}
+ }
for (int i = 0; i <= ind; i++) {
- if (rtp_content.item_Title[i] != NULL && rtp_content.item_Artist[i] != NULL) {
+ if (rtp_content.item_Title[i] != NULL
+ && rtp_content.item_Artist[i] != NULL) {
ts = localtime_r(&rtp_content.item_Start[i], &tm_store);
- fprintf(fd, " %02d:%02d Title: '%s' | Artist: '%s'\n", ts->tm_hour, ts->tm_min, rtp_content.item_Title[i], rtp_content.item_Artist[i]);
- }
+ fprintf(fd, " %02d:%02d Title: '%s' | Artist: '%s'\n",
+ ts->tm_hour, ts->tm_min, rtp_content.item_Title[i],
+ rtp_content.item_Artist[i]);
}
}
+ }
if (rtp_content.info_SportIndex >= 0) {
fprintf(fd, "--- Sports ---\n");
ind = rtp_content.info_SportIndex;
- if (ind < (MAX_RTPC-1) && rtp_content.info_Sport[ind+1] != NULL) {
- for (int i = ind+1; i < MAX_RTPC; i++) {
+ if (ind < (MAX_RTPC - 1) && rtp_content.info_Sport[ind + 1] != NULL) {
+ for (int i = ind + 1; i < MAX_RTPC; i++) {
if (rtp_content.info_Sport[i] != NULL)
- fprintf(fd, " %02d. %s\n", ++lfd, rtp_content.info_Sport[i]);
- }
+ fprintf(fd, " %02d. %s\n", ++lfd,
+ rtp_content.info_Sport[i]);
}
+ }
for (int i = 0; i <= ind; i++) {
if (rtp_content.info_Sport[i] != NULL)
- fprintf(fd, " %02d. %s\n", ++lfd, rtp_content.info_Sport[i]);
- }
+ fprintf(fd, " %02d. %s\n", ++lfd,
+ rtp_content.info_Sport[i]);
}
-
+ }
+
if (rtp_content.info_LotteryIndex >= 0) {
fprintf(fd, "--- Lottery ---\n");
ind = rtp_content.info_LotteryIndex;
- if (ind < (MAX_RTPC-1) && rtp_content.info_Lottery[ind+1] != NULL) {
- for (int i = ind+1; i < MAX_RTPC; i++) {
+ if (ind
+ < (MAX_RTPC - 1)&& rtp_content.info_Lottery[ind+1] != NULL) {
+ for (int i = ind + 1; i < MAX_RTPC; i++) {
if (rtp_content.info_Lottery[i] != NULL)
- fprintf(fd, " %02d. %s\n", ++lfd, rtp_content.info_Lottery[i]);
- }
+ fprintf(fd, " %02d. %s\n", ++lfd,
+ rtp_content.info_Lottery[i]);
}
+ }
for (int i = 0; i <= ind; i++) {
if (rtp_content.info_Lottery[i] != NULL)
- fprintf(fd, " %02d. %s\n", ++lfd, rtp_content.info_Lottery[i]);
- }
+ fprintf(fd, " %02d. %s\n", ++lfd,
+ rtp_content.info_Lottery[i]);
}
+ }
if (rtp_content.info_WeatherIndex >= 0) {
fprintf(fd, "--- Weather ---\n");
ind = rtp_content.info_WeatherIndex;
- if (ind < (MAX_RTPC-1) && rtp_content.info_Weather[ind+1] != NULL) {
- for (int i = ind+1; i < MAX_RTPC; i++) {
+ if (ind
+ < (MAX_RTPC - 1)&& rtp_content.info_Weather[ind+1] != NULL) {
+ for (int i = ind + 1; i < MAX_RTPC; i++) {
if (rtp_content.info_Weather[i] != NULL)
- fprintf(fd, " %02d. %s\n", ++lfd, rtp_content.info_Weather[i]);
- }
+ fprintf(fd, " %02d. %s\n", ++lfd,
+ rtp_content.info_Weather[i]);
}
+ }
for (int i = 0; i <= ind; i++) {
if (rtp_content.info_Weather[i] != NULL)
- fprintf(fd, " %02d. %s\n", ++lfd, rtp_content.info_Weather[i]);
- }
+ fprintf(fd, " %02d. %s\n", ++lfd,
+ rtp_content.info_Weather[i]);
}
+ }
if (rtp_content.info_StockIndex >= 0) {
fprintf(fd, "--- Stockmarket ---\n");
ind = rtp_content.info_StockIndex;
- if (ind < (MAX_RTPC-1) && rtp_content.info_Stock[ind+1] != NULL) {
- for (int i = ind+1; i < MAX_RTPC; i++) {
+ if (ind < (MAX_RTPC - 1) && rtp_content.info_Stock[ind + 1] != NULL) {
+ for (int i = ind + 1; i < MAX_RTPC; i++) {
if (rtp_content.info_Stock[i] != NULL)
- fprintf(fd, " %02d. %s\n", ++lfd, rtp_content.info_Stock[i]);
- }
+ fprintf(fd, " %02d. %s\n", ++lfd,
+ rtp_content.info_Stock[i]);
}
+ }
for (int i = 0; i <= ind; i++) {
if (rtp_content.info_Stock[i] != NULL)
- fprintf(fd, " %02d. %s\n", ++lfd, rtp_content.info_Stock[i]);
- }
+ fprintf(fd, " %02d. %s\n", ++lfd,
+ rtp_content.info_Stock[i]);
}
-
+ }
+
if (rtp_content.info_OtherIndex >= 0) {
fprintf(fd, "--- Other ---\n");
ind = rtp_content.info_OtherIndex;
- if (ind < (MAX_RTPC-1) && rtp_content.info_Other[ind+1] != NULL) {
- for (int i = ind+1; i < MAX_RTPC; i++) {
+ if (ind < (MAX_RTPC - 1) && rtp_content.info_Other[ind + 1] != NULL) {
+ for (int i = ind + 1; i < MAX_RTPC; i++) {
if (rtp_content.info_Other[i] != NULL)
- fprintf(fd, " %02d. %s\n", ++lfd, rtp_content.info_Other[i]);
- }
+ fprintf(fd, " %02d. %s\n", ++lfd,
+ rtp_content.info_Other[i]);
}
+ }
for (int i = 0; i <= ind; i++) {
if (rtp_content.info_Other[i] != NULL)
- fprintf(fd, " %02d. %s\n", ++lfd, rtp_content.info_Other[i]);
- }
+ fprintf(fd, " %02d. %s\n", ++lfd,
+ rtp_content.info_Other[i]);
}
+ }
fprintf(fd, "--- Last seen Radiotext ---\n");
ind = rtp_content.rt_Index;
- if (ind < (2*MAX_RTPC-1) && rtp_content.radiotext[ind+1] != NULL) {
- for (int i = ind+1; i < 2*MAX_RTPC; i++) {
+ if (ind < (2 * MAX_RTPC - 1) && rtp_content.radiotext[ind + 1] != NULL) {
+ for (int i = ind + 1; i < 2 * MAX_RTPC; i++) {
if (rtp_content.radiotext[i] != NULL)
- fprintf(fd, " %03d. %s\n", ++lfd, rtp_content.radiotext[i]);
- }
+ fprintf(fd, " %03d. %s\n", ++lfd,
+ rtp_content.radiotext[i]);
}
+ }
for (int i = 0; i <= ind; i++) {
if (rtp_content.radiotext[i] != NULL)
fprintf(fd, " %03d. %s\n", ++lfd, rtp_content.radiotext[i]);
- }
+ }
fprintf(fd, "<<<\n");
fclose(fd);
char *infotext;
- asprintf(&infotext, "%s: %s", InfoRequest ? tr("Info-File saved") : tr("RTplus-File saved"), fpath);
+ asprintf(&infotext, "%s: %s",
+ InfoRequest ? tr("Info-File saved") : tr("RTplus-File saved"),
+ fpath);
Skins.Message(mtInfo, infotext, Setup.OSDMessageTime);
free(infotext);
- }
- else
+ } else
esyslog("radio: ERROR writing RTplus-File failed '%s'", fpath);
free(fpath);
free(fname);
}
-eOSState cRTplusOsd::ProcessKey(eKeys Key)
-{
+eOSState cRTplusOsd::ProcessKey(eKeys Key) {
int typ, ind;
eOSState state = cOsdMenu::ProcessKey(Key);
if (HasSubMenu())
- return osContinue;
+ return osContinue;
if (state == osUnknown) {
switch (Key) {
- case kBack:
- case kOk: return osEnd;
- case kBlue: if (bcount >= 4 && helpmode == 0) {
- helpmode += 1;
- Update();
- }
- else if (bcount >= 6 && helpmode == 1) {
- helpmode += 1;
- Update();
- }
- else
- return osEnd;
- break;
- case k0: Update();
- break;
- case k8: rtp_fileprint();
- break;
- case kRed: if (helpmode == 0) {
- if (btext[0] != NULL)
- if ((typ = rtptyp(btext[0])) >= 0)
- AddSubMenu(new cRTplusList(typ));
- }
- else {
- helpmode -= 1;
- Update();
- }
- break;
- case kGreen: ind = (helpmode*2) + 1;
- if (btext[ind] != NULL) {
- if ((typ = rtptyp(btext[ind])) >= 0)
- AddSubMenu(new cRTplusList(typ));
- }
- break;
- case kYellow: ind = (helpmode*2) + 2;
- if (btext[ind] != NULL) {
- if ((typ = rtptyp(btext[ind])) >= 0)
- AddSubMenu(new cRTplusList(typ));
- }
- break;
- default: state = osContinue;
+ case kBack:
+ case kOk:
+ return osEnd;
+ case kBlue:
+ if (bcount >= 4 && helpmode == 0) {
+ helpmode += 1;
+ Update();
+ } else if (bcount >= 6 && helpmode == 1) {
+ helpmode += 1;
+ Update();
+ } else
+ return osEnd;
+ break;
+ case k0:
+ Update();
+ break;
+ case k8:
+ rtp_fileprint();
+ break;
+ case kRed:
+ if (helpmode == 0) {
+ if (btext[0] != NULL)
+ if ((typ = rtptyp(btext[0])) >= 0)
+ AddSubMenu(new cRTplusList(typ));
+ } else {
+ helpmode -= 1;
+ Update();
+ }
+ break;
+ case kGreen:
+ ind = (helpmode * 2) + 1;
+ if (btext[ind] != NULL) {
+ if ((typ = rtptyp(btext[ind])) >= 0)
+ AddSubMenu(new cRTplusList(typ));
}
+ break;
+ case kYellow:
+ ind = (helpmode * 2) + 2;
+ if (btext[ind] != NULL) {
+ if ((typ = rtptyp(btext[ind])) >= 0)
+ AddSubMenu(new cRTplusList(typ));
+ }
+ break;
+ default:
+ state = osContinue;
}
-
+ }
+
static int ct;
if (++ct >= 60) {
ct = 0;
Update();
- }
+ }
return state;
}
-
// --- cRTplusList ------------------------------------------------------
-cRTplusList::cRTplusList(int Typ)
- : cOsdMenu(RTp_Titel, 4)
- , cCharSetConv((RT_Charset == 0) ? "ISO-8859-1" : NULL)
-{
+cRTplusList::cRTplusList(int Typ) :
+ cOsdMenu(RTp_Titel, 4), cCharSetConv(
+ (RT_Charset == 0) ? "ISO-8859-1" : NULL) {
typ = Typ;
refresh = false;
@@ -2610,13 +3055,11 @@ cRTplusList::cRTplusList(int Typ)
Display();
}
-cRTplusList::~cRTplusList()
-{
+cRTplusList::~cRTplusList() {
typ = 0;
}
-void cRTplusList::Load(void)
-{
+void cRTplusList::Load(void) {
char text[80];
struct tm *ts, tm_store;
int ind, lfd = 0;
@@ -2624,193 +3067,224 @@ void cRTplusList::Load(void)
ts = localtime_r(&rtp_content.start, &tm_store);
switch (typ) {
- case 0: snprintf(text, sizeof(text), "-- %s (max. %d) --", tr("last seen Radiotext"), 2*MAX_RTPC);
- Add(new cOsdItem(hk(text)));
- snprintf(text, sizeof(text), "%s", " ");
- Add(new cOsdItem(hk(text)));
- ind = rtp_content.rt_Index;
- if (ind < (2*MAX_RTPC-1) && rtp_content.radiotext[ind+1] != NULL) {
- for (int i = ind+1; i < 2*MAX_RTPC; i++) {
- if (rtp_content.radiotext[i] != NULL) {
- snprintf(text, sizeof(text), "%d.\t%s", ++lfd, Convert(rtp_content.radiotext[i]));
- Add(new cOsdItem(hk(text)));
- }
- }
- }
- for (int i = 0; i <= ind; i++) {
- if (rtp_content.radiotext[i] != NULL) {
- snprintf(text, sizeof(text), "%d.\t%s", ++lfd, Convert(rtp_content.radiotext[i]));
- Add(new cOsdItem(hk(text)), refresh);
- }
- }
- break;
- case 1: SetCols(6, 19, 1);
- snprintf(text, sizeof(text), "-- %s --", tr("Playlist"));
- Add(new cOsdItem(hk(text)));
- snprintf(text, sizeof(text), "%s\t%s\t\t%s", tr("Time"), tr("Title"), tr("Artist"));
- Add(new cOsdItem(hk(text)));
- snprintf(text, sizeof(text), "%s", " ");
- Add(new cOsdItem(hk(text)));
- ind = rtp_content.item_Index;
- if (ind < (MAX_RTPC-1) && rtp_content.item_Title[ind+1] != NULL) {
- for (int i = ind+1; i < MAX_RTPC; i++) {
- if (rtp_content.item_Title[i] != NULL && rtp_content.item_Artist[i] != NULL) {
- ts = localtime_r(&rtp_content.item_Start[i], &tm_store);
- snprintf(ctitle, sizeof(ctitle), "%s", Convert(rtp_content.item_Title[i]));
- snprintf(text, sizeof(text), "%02d:%02d\t%s\t\t%s", ts->tm_hour, ts->tm_min, ctitle, Convert(rtp_content.item_Artist[i]));
- Add(new cOsdItem(hk(text)));
- }
- }
- }
- for (int i = 0; i <= ind; i++) {
- if (rtp_content.item_Title[i] != NULL && rtp_content.item_Artist[i] != NULL) {
- ts = localtime_r(&rtp_content.item_Start[i], &tm_store);
- snprintf(ctitle, sizeof(ctitle), "%s", Convert(rtp_content.item_Title[i]));
- snprintf(text, sizeof(text), "%02d:%02d\t%s\t\t%s", ts->tm_hour, ts->tm_min, ctitle, Convert(rtp_content.item_Artist[i]));
- Add(new cOsdItem(hk(text)), refresh);
- }
- }
- break;
- case 2: snprintf(text, sizeof(text), "-- %s --", tr("Sports"));
- Add(new cOsdItem(hk(text)));
- snprintf(text, sizeof(text), "%s", " ");
- Add(new cOsdItem(hk(text)));
- ind = rtp_content.info_SportIndex;
- if (ind < (MAX_RTPC-1) && rtp_content.info_Sport[ind+1] != NULL) {
- for (int i = ind+1; i < MAX_RTPC; i++) {
- if (rtp_content.info_Sport[i] != NULL) {
- snprintf(text, sizeof(text), "%d.\t%s", ++lfd, Convert(rtp_content.info_Sport[i]));
- Add(new cOsdItem(hk(text)));
- }
- }
- }
- for (int i = 0; i <= ind; i++) {
- if (rtp_content.info_Sport[i] != NULL) {
- snprintf(text, sizeof(text), "%d.\t%s", ++lfd, Convert(rtp_content.info_Sport[i]));
- Add(new cOsdItem(hk(text)), refresh);
- }
- }
- break;
- case 3: snprintf(text, sizeof(text), "-- %s --", tr("Lottery"));
- Add(new cOsdItem(hk(text)));
- snprintf(text, sizeof(text), "%s", " ");
- Add(new cOsdItem(hk(text)));
- ind = rtp_content.info_LotteryIndex;
- if (ind < (MAX_RTPC-1) && rtp_content.info_Lottery[ind+1] != NULL) {
- for (int i = ind+1; i < MAX_RTPC; i++) {
- if (rtp_content.info_Lottery[i] != NULL) {
- snprintf(text, sizeof(text), "%d.\t%s", ++lfd, Convert(rtp_content.info_Lottery[i]));
- Add(new cOsdItem(hk(text)));
- }
- }
- }
- for (int i = 0; i <= ind; i++) {
- if (rtp_content.info_Lottery[i] != NULL) {
- snprintf(text, sizeof(text), "%d.\t%s", ++lfd, Convert(rtp_content.info_Lottery[i]));
- Add(new cOsdItem(hk(text)), refresh);
- }
- }
- break;
- case 4: snprintf(text, sizeof(text), "-- %s --", tr("Weather"));
- Add(new cOsdItem(hk(text)));
- snprintf(text, sizeof(text), "%s", " ");
- Add(new cOsdItem(hk(text)));
- ind = rtp_content.info_WeatherIndex;
- if (ind < (MAX_RTPC-1) && rtp_content.info_Weather[ind+1] != NULL) {
- for (int i = ind+1; i < MAX_RTPC; i++) {
- if (rtp_content.info_Weather[i] != NULL) {
- snprintf(text, sizeof(text), "%d.\t%s", ++lfd, Convert(rtp_content.info_Weather[i]));
- Add(new cOsdItem(hk(text)));
- }
- }
- }
- for (int i = 0; i <= ind; i++) {
- if (rtp_content.info_Weather[i] != NULL) {
- snprintf(text, sizeof(text), "%d.\t%s", ++lfd, Convert(rtp_content.info_Weather[i]));
- Add(new cOsdItem(hk(text)), refresh);
- }
- }
- break;
- case 5: snprintf(text, sizeof(text), "-- %s --", tr("Stockmarket"));
- Add(new cOsdItem(hk(text)));
- snprintf(text, sizeof(text), "%s", " ");
- Add(new cOsdItem(hk(text)));
- ind = rtp_content.info_StockIndex;
- if (ind < (MAX_RTPC-1) && rtp_content.info_Stock[ind+1] != NULL) {
- for (int i = ind+1; i < MAX_RTPC; i++) {
- if (rtp_content.info_Stock[i] != NULL) {
- snprintf(text, sizeof(text), "%d.\t%s", ++lfd, Convert(rtp_content.info_Stock[i]));
- Add(new cOsdItem(hk(text)));
- }
- }
- }
- for (int i = 0; i <= ind; i++) {
- if (rtp_content.info_Stock[i] != NULL) {
- snprintf(text, sizeof(text), "%d.\t%s", ++lfd, Convert(rtp_content.info_Stock[i]));
- Add(new cOsdItem(hk(text)), refresh);
- }
- }
- break;
- case 6: snprintf(text, sizeof(text), "-- %s --", tr("Other"));
- Add(new cOsdItem(hk(text)));
- snprintf(text, sizeof(text), "%s", " ");
- Add(new cOsdItem(hk(text)));
- ind = rtp_content.info_OtherIndex;
- if (ind < (MAX_RTPC-1) && rtp_content.info_Other[ind+1] != NULL) {
- for (int i = ind+1; i < MAX_RTPC; i++) {
- if (rtp_content.info_Other[i] != NULL) {
- snprintf(text, sizeof(text), "%d.\t%s", ++lfd, Convert(rtp_content.info_Other[i]));
- Add(new cOsdItem(hk(text)));
- }
- }
- }
- for (int i = 0; i <= ind; i++) {
- if (rtp_content.info_Other[i] != NULL) {
- snprintf(text, sizeof(text), "%d.\t%s", ++lfd, Convert(rtp_content.info_Other[i]));
- Add(new cOsdItem(hk(text)), refresh);
- }
- }
- break;
+ case 0:
+ snprintf(text, sizeof(text), "-- %s (max. %d) --",
+ tr("last seen Radiotext"), 2 * MAX_RTPC);
+ Add(new cOsdItem(hk(text)));
+ snprintf(text, sizeof(text), "%s", " ");
+ Add(new cOsdItem(hk(text)));
+ ind = rtp_content.rt_Index;
+ if (ind < (2 * MAX_RTPC - 1) && rtp_content.radiotext[ind + 1] != NULL) {
+ for (int i = ind + 1; i < 2 * MAX_RTPC; i++) {
+ if (rtp_content.radiotext[i] != NULL) {
+ snprintf(text, sizeof(text), "%d.\t%s", ++lfd,
+ Convert(rtp_content.radiotext[i]));
+ Add(new cOsdItem(hk(text)));
+ }
+ }
+ }
+ for (int i = 0; i <= ind; i++) {
+ if (rtp_content.radiotext[i] != NULL) {
+ snprintf(text, sizeof(text), "%d.\t%s", ++lfd,
+ Convert(rtp_content.radiotext[i]));
+ Add(new cOsdItem(hk(text)), refresh);
+ }
}
+ break;
+ case 1:
+ SetCols(6, 19, 1);
+ snprintf(text, sizeof(text), "-- %s --", tr("Playlist"));
+ Add(new cOsdItem(hk(text)));
+ snprintf(text, sizeof(text), "%s\t%s\t\t%s", tr("Time"), tr("Title"),
+ tr("Artist"));
+ Add(new cOsdItem(hk(text)));
+ snprintf(text, sizeof(text), "%s", " ");
+ Add(new cOsdItem(hk(text)));
+ ind = rtp_content.item_Index;
+ if (ind < (MAX_RTPC - 1) && rtp_content.item_Title[ind + 1] != NULL) {
+ for (int i = ind + 1; i < MAX_RTPC; i++) {
+ if (rtp_content.item_Title[i] != NULL
+ && rtp_content.item_Artist[i] != NULL) {
+ ts = localtime_r(&rtp_content.item_Start[i], &tm_store);
+ snprintf(ctitle, sizeof(ctitle), "%s",
+ Convert(rtp_content.item_Title[i]));
+ snprintf(text, sizeof(text), "%02d:%02d\t%s\t\t%s",
+ ts->tm_hour, ts->tm_min, ctitle,
+ Convert(rtp_content.item_Artist[i]));
+ Add(new cOsdItem(hk(text)));
+ }
+ }
+ }
+ for (int i = 0; i <= ind; i++) {
+ if (rtp_content.item_Title[i] != NULL
+ && rtp_content.item_Artist[i] != NULL) {
+ ts = localtime_r(&rtp_content.item_Start[i], &tm_store);
+ snprintf(ctitle, sizeof(ctitle), "%s",
+ Convert(rtp_content.item_Title[i]));
+ snprintf(text, sizeof(text), "%02d:%02d\t%s\t\t%s", ts->tm_hour,
+ ts->tm_min, ctitle,
+ Convert(rtp_content.item_Artist[i]));
+ Add(new cOsdItem(hk(text)), refresh);
+ }
+ }
+ break;
+ case 2:
+ snprintf(text, sizeof(text), "-- %s --", tr("Sports"));
+ Add(new cOsdItem(hk(text)));
+ snprintf(text, sizeof(text), "%s", " ");
+ Add(new cOsdItem(hk(text)));
+ ind = rtp_content.info_SportIndex;
+ if (ind < (MAX_RTPC - 1) && rtp_content.info_Sport[ind + 1] != NULL) {
+ for (int i = ind + 1; i < MAX_RTPC; i++) {
+ if (rtp_content.info_Sport[i] != NULL) {
+ snprintf(text, sizeof(text), "%d.\t%s", ++lfd,
+ Convert(rtp_content.info_Sport[i]));
+ Add(new cOsdItem(hk(text)));
+ }
+ }
+ }
+ for (int i = 0; i <= ind; i++) {
+ if (rtp_content.info_Sport[i] != NULL) {
+ snprintf(text, sizeof(text), "%d.\t%s", ++lfd,
+ Convert(rtp_content.info_Sport[i]));
+ Add(new cOsdItem(hk(text)), refresh);
+ }
+ }
+ break;
+ case 3:
+ snprintf(text, sizeof(text), "-- %s --", tr("Lottery"));
+ Add(new cOsdItem(hk(text)));
+ snprintf(text, sizeof(text), "%s", " ");
+ Add(new cOsdItem(hk(text)));
+ ind = rtp_content.info_LotteryIndex;
+ if (ind < (MAX_RTPC - 1) && rtp_content.info_Lottery[ind + 1] != NULL) {
+ for (int i = ind + 1; i < MAX_RTPC; i++) {
+ if (rtp_content.info_Lottery[i] != NULL) {
+ snprintf(text, sizeof(text), "%d.\t%s", ++lfd,
+ Convert(rtp_content.info_Lottery[i]));
+ Add(new cOsdItem(hk(text)));
+ }
+ }
+ }
+ for (int i = 0; i <= ind; i++) {
+ if (rtp_content.info_Lottery[i] != NULL) {
+ snprintf(text, sizeof(text), "%d.\t%s", ++lfd,
+ Convert(rtp_content.info_Lottery[i]));
+ Add(new cOsdItem(hk(text)), refresh);
+ }
+ }
+ break;
+ case 4:
+ snprintf(text, sizeof(text), "-- %s --", tr("Weather"));
+ Add(new cOsdItem(hk(text)));
+ snprintf(text, sizeof(text), "%s", " ");
+ Add(new cOsdItem(hk(text)));
+ ind = rtp_content.info_WeatherIndex;
+ if (ind < (MAX_RTPC - 1) && rtp_content.info_Weather[ind + 1] != NULL) {
+ for (int i = ind + 1; i < MAX_RTPC; i++) {
+ if (rtp_content.info_Weather[i] != NULL) {
+ snprintf(text, sizeof(text), "%d.\t%s", ++lfd,
+ Convert(rtp_content.info_Weather[i]));
+ Add(new cOsdItem(hk(text)));
+ }
+ }
+ }
+ for (int i = 0; i <= ind; i++) {
+ if (rtp_content.info_Weather[i] != NULL) {
+ snprintf(text, sizeof(text), "%d.\t%s", ++lfd,
+ Convert(rtp_content.info_Weather[i]));
+ Add(new cOsdItem(hk(text)), refresh);
+ }
+ }
+ break;
+ case 5:
+ snprintf(text, sizeof(text), "-- %s --", tr("Stockmarket"));
+ Add(new cOsdItem(hk(text)));
+ snprintf(text, sizeof(text), "%s", " ");
+ Add(new cOsdItem(hk(text)));
+ ind = rtp_content.info_StockIndex;
+ if (ind < (MAX_RTPC - 1) && rtp_content.info_Stock[ind + 1] != NULL) {
+ for (int i = ind + 1; i < MAX_RTPC; i++) {
+ if (rtp_content.info_Stock[i] != NULL) {
+ snprintf(text, sizeof(text), "%d.\t%s", ++lfd,
+ Convert(rtp_content.info_Stock[i]));
+ Add(new cOsdItem(hk(text)));
+ }
+ }
+ }
+ for (int i = 0; i <= ind; i++) {
+ if (rtp_content.info_Stock[i] != NULL) {
+ snprintf(text, sizeof(text), "%d.\t%s", ++lfd,
+ Convert(rtp_content.info_Stock[i]));
+ Add(new cOsdItem(hk(text)), refresh);
+ }
+ }
+ break;
+ case 6:
+ snprintf(text, sizeof(text), "-- %s --", tr("Other"));
+ Add(new cOsdItem(hk(text)));
+ snprintf(text, sizeof(text), "%s", " ");
+ Add(new cOsdItem(hk(text)));
+ ind = rtp_content.info_OtherIndex;
+ if (ind < (MAX_RTPC - 1) && rtp_content.info_Other[ind + 1] != NULL) {
+ for (int i = ind + 1; i < MAX_RTPC; i++) {
+ if (rtp_content.info_Other[i] != NULL) {
+ snprintf(text, sizeof(text), "%d.\t%s", ++lfd,
+ Convert(rtp_content.info_Other[i]));
+ Add(new cOsdItem(hk(text)));
+ }
+ }
+ }
+ for (int i = 0; i <= ind; i++) {
+ if (rtp_content.info_Other[i] != NULL) {
+ snprintf(text, sizeof(text), "%d.\t%s", ++lfd,
+ Convert(rtp_content.info_Other[i]));
+ Add(new cOsdItem(hk(text)), refresh);
+ }
+ }
+ break;
+ }
- SetHelp(NULL, NULL , refresh ? tr("Refresh Off") : tr("Refresh On"), tr("Back"));
+ SetHelp(NULL, NULL, refresh ? tr("Refresh Off") : tr("Refresh On"),
+ tr("Back"));
}
-void cRTplusList::Update(void)
-{
+void cRTplusList::Update(void) {
Clear();
Load();
Display();
}
-eOSState cRTplusList::ProcessKey(eKeys Key)
-{
+eOSState cRTplusList::ProcessKey(eKeys Key) {
eOSState state = cOsdMenu::ProcessKey(Key);
if (state == osUnknown) {
switch (Key) {
- case k0: Update();
- break;
- case kYellow: refresh = (refresh) ? false : true;
- Update();
- break;
- case kBack:
- case kOk:
- case kBlue: return osBack;
- default: state = osContinue;
- }
+ case k0:
+ Update();
+ break;
+ case kYellow:
+ refresh = (refresh) ? false : true;
+ Update();
+ break;
+ case kBack:
+ case kOk:
+ case kBlue:
+ return osBack;
+ default:
+ state = osContinue;
}
-
+ }
+
static int ct;
if (refresh) {
if (++ct >= 20) {
ct = 0;
Update();
- }
}
-
+ }
+
return state;
}
-
//--------------- End -----------------------------------------------------------------