X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fdvb%2Fdvbtime.cpp;h=26b6767cf10862466e8bc2ed345bc18068341c8e;hp=03847ecb88b7bfb245f298b1bd0d85a0be184fbb;hb=849b33656dc710cfa5f644a55680fd396ab1d8d7;hpb=8632fc87741200695d2726b689853b6b550a4b06 diff --git a/lib/dvb/dvbtime.cpp b/lib/dvb/dvbtime.cpp index 03847ec..26b6767 100644 --- a/lib/dvb/dvbtime.cpp +++ b/lib/dvb/dvbtime.cpp @@ -20,7 +20,7 @@ void setRTC(time_t time) FILE *f = fopen("/proc/stb/fp/rtc", "w"); if (f) { - if (fprintf(f, "%u", time)) + if (fprintf(f, "%u", (unsigned int)time)) prev_time = time; else eDebug("write /proc/stb/fp/rtc failed (%m)"); @@ -47,8 +47,11 @@ time_t getRTC() if (f) { // sanity check to detect corrupt atmel firmware - if (fscanf(f, "%u", &rtc_time) != 1) + unsigned int tmp; + if (fscanf(f, "%u", &tmp) != 1) eDebug("read /proc/stb/fp/rtc failed (%m)"); + else + rtc_time=tmp; fclose(f); } else @@ -64,7 +67,7 @@ time_t getRTC() return rtc_time != prev_time ? rtc_time : 0; } -time_t parseDVBtime(__u8 t1, __u8 t2, __u8 t3, __u8 t4, __u8 t5) +time_t parseDVBtime(__u8 t1, __u8 t2, __u8 t3, __u8 t4, __u8 t5, __u16 *hash) { tm t; t.tm_sec=fromBCD(t5); @@ -84,6 +87,11 @@ time_t parseDVBtime(__u8 t1, __u8 t2, __u8 t3, __u8 t4, __u8 t5) t.tm_isdst = 0; t.tm_gmtoff = 0; + if (hash) { + *hash = t.tm_hour * 60 + t.tm_min; + *hash |= t.tm_mday << 11; + } + return timegm(&t); } @@ -103,7 +111,7 @@ void TDT::ready(int error) int TDT::createTable(unsigned int nr, const __u8 *data, unsigned int max) { - if ( data && data[0] == 0x70 || data[0] == 0x73 ) + if ( data && (data[0] == 0x70 || data[0] == 0x73 )) { int length = ((data[1] & 0x0F) << 8) | data[2]; if ( length >= 5 )