FireBirdLib - Topfield TMS PVR TAP Programming Library
LogoManager_UpdateLIL.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <string.h>
3#include <stdlib.h>
4#include "libFireBird.h"
5#include "FBLib_LogoManager.h"
6
8{
10
11 typedef struct
12 {
13 ulong64 ChannelID;
14 char Name[MAXLOGONAME+1];
15 }tNewIDs;
16
17 int nTvSvc, nRadioSvc;
18 int i;
19 TYPE_TapChInfo chInfo;
20 char s[255], LogoName[MAX_SvcName + 1];
21 SYSTEM_TYPE SystemType;
22 tFlashSatTable SatInfo;
23
24 word SatPos;
25 ulong64 ChannelID;
26 tNewIDs *NewIDs;
27 int NewIDCount;
28
29 SystemType = GetSystemType();
30
33
34 TAP_Channel_GetTotalNum(&nTvSvc, &nRadioSvc);
35 NewIDs = TAP_MemAlloc((nTvSvc + nRadioSvc) * sizeof(tNewIDs));
36 NewIDCount = 0;
37
38 INIOpenFile(LILNAME, NULL);
39
40 for(i = 0; i < nTvSvc; i++)
41 {
42 TAP_Channel_GetInfo(SVC_TYPE_Tv, i, &chInfo);
43 FlashSatTablesGetInfo(chInfo.satIdx, &SatInfo);
44
45 switch(SystemType)
46 {
47 case ST_S:
48 case ST_TMSS:
49 {
50 SatPos = SatInfo.SatPosition;
51 break;
52 }
53
54 default:
55 SatPos = 0;
56 break;
57 }
58
59 ChannelID = LogoManager_CalculateChannelID(SatPos, chInfo.orgNetId, chInfo.tsId, chInfo.svcId);
60 TAP_SPrint(s, "%16.16llx", ChannelID);
61 if(!INIKeyExists(s))
62 {
63 NewIDs[NewIDCount].ChannelID = ChannelID;
64 strcpy(NewIDs[NewIDCount].Name, LogoManager_ChannelNameToLogoName(chInfo.chName, LogoName, sizeof(LogoName)));
65 if(NewIDs[NewIDCount].Name[0]) NewIDCount++;
66 }
67 }
68
69 for(i = 0; i < nRadioSvc; i++)
70 {
71 TAP_Channel_GetInfo(SVC_TYPE_Radio, i, &chInfo);
72 FlashSatTablesGetInfo(chInfo.satIdx, &SatInfo);
73
74 switch(SystemType)
75 {
76 case ST_S:
77 case ST_TMSS:
78 {
79 SatPos = SatInfo.SatPosition;
80 break;
81 }
82
83 default:
84 SatPos = 0;
85 break;
86 }
87
88 ChannelID = LogoManager_CalculateChannelID(SatPos, chInfo.orgNetId, chInfo.tsId, chInfo.svcId);
89 TAP_SPrint(s, "%16.16llx", ChannelID);
90 if(!INIKeyExists(s))
91 {
92 NewIDs[NewIDCount].ChannelID = ChannelID;
93 TAP_SPrint(NewIDs[NewIDCount].Name, "r_%s", LogoManager_ChannelNameToLogoName(chInfo.chName, LogoName, sizeof(LogoName)));
94 if(NewIDs[NewIDCount].Name[0]) NewIDCount++;
95 }
96 }
97
99
100 if(NewIDCount > 0)
101 {
102 TYPE_File *f;
103 word year;
104 byte month, day, weekDay;
105
106 if(!TAP_Hdd_Exist(LILNAME)) TAP_Hdd_Create(LILNAME, ATTR_NORMAL);
107 f = TAP_Hdd_Fopen(LILNAME);
108
109 if(!f)
110 {
113
114 TRACEEXIT();
115 return -1;
116 }
117
118 TAP_Hdd_Fseek(f, 0, SEEK_END);
119 TAP_ExtractMjd(Now(NULL) >> 16, &year, &month, &day, &weekDay);
120 TAP_SPrint(s, "\n\n# Added %4.4d-%2.2d-%2.2d\n", year, month, day);
121 TAP_Hdd_Fwrite(s, 1, strlen(s), f);
122
123 for(i = 0; i < NewIDCount; i++)
124 {
125 TAP_SPrint(s, "%16.16llx=%s\n", NewIDs[i].ChannelID, NewIDs[i].Name);
126 TAP_Hdd_Fwrite(s, 1, strlen(s), f);
127 }
128 TAP_Hdd_Fclose(f);
129 if(LogoManager_CB) LogoManager_CB(5, NewIDCount);
130
131 }
132
133 TAP_MemFree(NewIDs);
134
136
137 TRACEEXIT();
138 return NewIDCount;
139}
#define MAXLOGONAME
void(* LogoManager_CB)(int CallbackType, int Param1)
bool FlashSatTablesGetInfo(int SatNum, tFlashSatTable *SatTable)
bool HDD_ChangeDir(const char *Dir)
Definition: HDD_ChangeDir.c:5
void INICloseFile(void)
Definition: INICloseFile.c:5
bool INIKeyExists(char *Key)
Definition: INIKeyExists.c:5
INILOCATION INIOpenFile(char *FileName, char *AppName)
Definition: INIOpenFile.c:9
int LogoManager_UpdateLIL(void)
ulong64 LogoManager_CalculateChannelID(word SatLongitude, word NetworkID, word TSID, word ServiceID)
#define LOGOROOT
Definition: libFireBird.h:2217
bool HDD_TAP_PushDir(void)
SYSTEM_TYPE GetSystemType(void)
Definition: GetSystemType.c:3
#define TRACEEXIT()
Definition: libFireBird.h:1244
char * LogoManager_ChannelNameToLogoName(char *ChannelName, char *LogoName, int LogoNameSize)
#define LILNAME
Definition: libFireBird.h:2222
#define TRACEENTER()
Definition: libFireBird.h:1243
bool HDD_TAP_PopDir(void)
Definition: HDD_TAP_PopDir.c:3
SYSTEM_TYPE
Definition: libFireBird.h:66
@ ST_TMSS
Definition: libFireBird.h:72
@ ST_S
Definition: libFireBird.h:68
#define SEEK_END
Definition: libFireBird.h:1883
dword Now(byte *Sec)
Definition: Now.c:3