- added support for Philips PFL9715K/02 (Repair\s2channellib\*.dat channel list format version 0.1)

- added support for Grundig dtv_cmdb_3.bin channel lists with size of 1270 KB
- fixed saving of Grundig dtv_cmdb_3.bin channel lists with size of 1293 KB
- updated tivusat reference list
- fixed issue when saving *cmdb_*.bin channel lists after applying a reference list which contains missing channels
- HB_DATABASE_mm_dd.DBM for Strong SRT 7007: added option "reorderPhysically" in ChanSort.Loader.DBM.ini
  for this particular format to not only change the number but also change the order or data records in the file
- removed app.config files containing assembly redirects from projects and included them in the central Solution.props instead
- upgraded various NuGet packages
This commit is contained in:
Horst Beham
2025-01-28 21:26:53 +01:00
parent 4eb78e1ca8
commit 0d9cdfefbb
70 changed files with 514 additions and 630 deletions

View File

@@ -0,0 +1,151 @@
#include "chansort.h"
#pragma script("get_doc_size.js")
/*
structure definition for various variants of MStar (aka MorningStar) DVB-C and DVB-S receiver channel list formats.
Also used by various models from brands like AEG, Akiwa, Auvisio, Boca, Botech, Comag, Dyon, LogiSat, Kjaerulff, Micro, Megasat, Schwaiger, SeaSat, Strong, TechniSat, TeleSystem, Trekstor, Xoro, Zehnder, ...
Typical file names include: vodafone.DBM, HB_DATABASE_6_29.DBM, MAS_HRS8520_23_08_2011.DBM, ...
*/
struct s_Satellite
{
var off0 = current_offset;
word u;
byte Name[34];
word LowFreq;
word HighFreq;
var off1 = current_offset;
byte u1[50 - (off1 - off0)];
word OrbitalPos;
var off1 = current_offset;
byte unk[satRecordLengthTail - (off1 - off0)];
};
struct s_Transponder
{
var off0 = current_offset;
byte SatIndex;
byte unk1[5];
word Tsid;
word Onid;
word Nid;
byte u[2];
word transponderIndex;
word FreqInMhz;
byte unk2[10];
word SymRate;
var off1 = current_offset;
byte unk[transponderRecordLength - (off1 - off0)];
};
enum e_Favorites : byte
{
A=0x01,
B=0x04,
C=0x08,
D=0x10
};
enum e_Flags : byte
{
Encrypted=0x10,
Skip=0x20,
Lock=0x40
};
enum e_ServiceType : byte
{
TV=1,
Radio=2
};
struct s_Channel
{
var off0 = current_offset;
word Index;
byte u0[13];
//e_Flags Flags;
//byte u1;
byte ChannelType;
byte ServiceType;
byte u1[3];
word TransponderIndex;
word PmtPid;
word u2;
word PcrPid;
word VideoPid;
word u3;
word ProgNr;
word ServiceId;
byte u4[14];
char AudioLang1[4];
word AudioPid1;
char AudioLang2[4];
word AudioPid2;
byte u90[84];
char Name[50];
char Provider[224];
var off1 = current_offset;
byte unk[channelRecordLength - (off1-off0)];
};
public struct dtv_cmdb_3_unified
{
var headerLength = 0;
var satBitmapLength = 0;
var satRecordCount = 0;
var satRecordLength = 0;
var networkData = 0;
var channelBitmapLength = 0;
var channelRecordCount = 0;
var channelRecordLength = 0;
var channelBlockUnknownLength = 0;
var transponderBitmapLength = 0;
var transponderRecordCount = 0;
var transponderRecordLength = 0;
switch (GetDocumentSize())
{
case 1299920:
// Grundig 22 VLE 8120 WG
headerLength = 8;
satBitmapLength = 4;
channelBitmapLength = 750;
satRecordCount = 24;
satRecordLength = 60;
networkDataLength = 254 * 54;
transponderBitmapLength = 0;
transponderRecordCount = 3200;
transponderRecordLength = 44;
channelRecordCount = 6000;
channelRecordLength = 192;
channelBlockUnknownLength = 0;
break;
default:
$assert(false, "Structure for this file size is not supported");
break;
}
byte Header[headerLength];
byte SatelliteBitmap[satBitmapLength];
byte ChannelBitmap[channelBitmapLength];
byte unk[2];
s_Satellite SatelliteData[satRecordCount];
byte NetworkData[networkDataLength];
byte TransponderBitmap[transponderBitmapLength];
s_Transponder TransponderData[transponderRecordCount];
s_Channel ChannelData[channelRecordCount];
//byte ChannelBlockUnknown[channelBlockUnknownLength];
byte Extra[*];
};