- added support for LY hospitality series

- fixed wrong offset for prognr2 for LV/LW/LK950 models
This commit is contained in:
hbeham
2014-07-14 22:20:22 +02:00
parent 3352a19ca6
commit b14cc368ab
4 changed files with 232 additions and 12 deletions

View File

@@ -12,7 +12,7 @@ namespace ChanSort.Loader.LG
{
public partial class TllFileSerializer : SerializerBase
{
enum SpecialHandlingModels { Standard, LH3000, LH250, PN, LP, LT };
enum SpecialHandlingModels { Standard, LH3000, LH250, PN, LP, LT, LY };
private const long DVBS_S2 = 0x0032532D53425644; // reverse of "DVBS-S2\0"
private const long MaxFileSize = 2000000;
@@ -41,7 +41,7 @@ namespace ChanSort.Loader.LG
private int analogBlockOffset;
private int firmwareBlockOffset;
private int extraBlockOffset;
private int hospitalityBlockOffset;
private int dvbctBlockOffset;
private int dvbsBlockOffset;
private int[] dvbsSubblockCrcOffset;
@@ -58,7 +58,7 @@ namespace ChanSort.Loader.LG
private Dictionary<int, ushort> nextChannelIndex;
private int firmwareBlockSize;
private int extraBlockSize;
private int hospitalityBlockSize;
private int dvbsBlockSize;
private int settingsBlockSize;
private string countryCode;
@@ -144,6 +144,8 @@ namespace ChanSort.Loader.LG
this.specialModel = SpecialHandlingModels.LP;
else if (basename.StartsWith("XXLT"))
this.specialModel = SpecialHandlingModels.LT;
else if (basename.StartsWith("XXLY"))
this.specialModel = SpecialHandlingModels.LY;
else
this.specialModel = SpecialHandlingModels.Standard;
@@ -217,12 +219,12 @@ namespace ChanSort.Loader.LG
#region ReadHotelModelExtraBlock()
private void ReadHotelModelExtraBlock(ref int off)
{
if (!(this.specialModel == SpecialHandlingModels.LT || this.specialModel == SpecialHandlingModels.LP))
if (!(this.specialModel == SpecialHandlingModels.LT || this.specialModel == SpecialHandlingModels.LP || this.specialModel == SpecialHandlingModels.LY))
return;
int size = BitConverter.ToInt32(this.fileContent, off);
this.extraBlockOffset = off;
this.extraBlockSize = size;
this.hospitalityBlockOffset = off;
this.hospitalityBlockSize = size;
off += 4 + size;
}
#endregion
@@ -321,6 +323,8 @@ namespace ChanSort.Loader.LG
key += "LH3000";
else if (this.specialModel == SpecialHandlingModels.PN)
key += "PN";
else if (this.specialModel == SpecialHandlingModels.LY)
key += "LY";
var actMapping = this.actMappings.GetMapping(key);
return actMapping;
}
@@ -890,9 +894,9 @@ namespace ChanSort.Loader.LG
// firmware
file.Write(fileContent, this.firmwareBlockOffset, this.firmwareBlockSize + 4);
// LT-series extra block
if (extraBlockOffset != 0)
file.Write(fileContent, this.extraBlockOffset, this.extraBlockSize + 4);
// hospitality models extra block
if (hospitalityBlockOffset != 0)
file.Write(fileContent, this.hospitalityBlockOffset, this.hospitalityBlockSize + 4);
// DVB-CT
file.Write(newDvbctChannelCount*this.actChannelSize + 4);

View File

@@ -25,7 +25,7 @@ namespace ChanSort.Ui
{
public partial class MainForm : XtraForm
{
public const string AppVersion = "v2014-07-11";
public const string AppVersion = "v2014-07-14";
private const int MaxMruEntries = 10;

View File

@@ -0,0 +1,209 @@
#include "tll-common.h"
#define MAX_SAT_COUNT 64
struct TLL48_Satellite;
typedef TLL48_Satellite TLL_Satellite;
#define MAX_TP_COUNT 2400
struct TLL56_Transponder;
typedef TLL56_Transponder TLL_Transponder;
#define MAX_DVBS_COUNT 7520
struct TLL92_SatChannel;
typedef TLL92_SatChannel TLL_SatChannel;
#define MAX_LNB_COUNT 40
struct TLL52_Lnb;
typedef TLL52_Lnb TLL_Lnb;
#define DVBS_CHANNELLIST_PREFIXSIZE 0
#include "tll-satellite.h"
struct LY256_Channel
{
byte t1[8];
TLL_SignalSource SignalSource;
byte t1b;
word ChannelTransponder1;
word ProgramNr;
word LogicalProgramNr1;
byte t2[4];
byte Favorites1;
byte t2b[3];
word Frequency1Div50__PcrPid1;
word APID1;
word xPID;
byte t3[6];
word ChannelNumber_Band__VPID1;
byte t3b[6];
char CH_Name1[40];
word CH_NameLength1;
word SID1;
byte t5a[47];
byte NitVersion;
word ChannelTransponder2;
word t5b;
dword Frequency;
byte t6[6];
word ONID;
word TSID;
byte t7[23];
word ChannelTransponder3;
byte t8;
word ProgramNr2;
word LogicalProgramNr2;
word ChannelTransponder4;
byte t9[2];
byte Favorites2;
TLL_EditFlags EditFlags;
byte t10[2];
word SID2;
byte ServiceType;
byte CH_NameLength2;
char CH_Name2[40];
word FrequencyDiv50__PcrPid2;
word APID2;
word u1;
word u2;
byte t11[12];
};
struct LY256_AnalogBlock
{
dword BlockSize;
dword ChannelCount;
LY256_Channel Channels[ChannelCount];
};
struct LY256_HotelSettings
{
byte HotelModeActive;
byte PowerOnStatus;
byte SetupMenuDisplay;
byte ProgramChange;
byte InputSourceChange;
byte MenuDisplay;
byte OsdDisplay;
byte LgIrOperation;
byte LocalKeyOp;
byte MaxVolume;
byte Unknown1;
byte DtvChannelUpdate;
byte PowerOnDefault;
byte InputSource;
word Programme;
byte Unknown2;
byte Volume;
byte AvSettings;
byte RadioVideoBlank;
byte unknown3;
byte StartProgNr;
byte unknown4;
byte NumberOfPrograms;
byte RadioNameDisplay;
byte unknown5[2];
byte AccessCode[4];
};
struct LY256_FirmwareBlock
{
dword BlockSize;
byte Data[BlockSize];
};
struct LY256_HospitalityBlock
{
dword BlockSize;
byte Data[BlockSize];
};
struct LY256_DvbCTBlock
{
dword BlockSize;
dword ChannelCount;
LY256_Channel Channels[ChannelCount];
};
struct TLL48_Satellite
{
char Name[32];
byte PosDeg;
byte PosCDeg;
byte LnbIndex;
byte FactoryDefault;
word TransponderHead;
word TransponderTail;
word TransponderCount;
word Unknown4;
word Unknown5;
word Unknown6;
};
struct TLL56_Transponder
{
byte t1[10];
word TP_Number;
word TP_Freq;
byte t2[8];
word NID;
word TID;
byte t3[3];
word SRateTimes2;
byte t4[9];
byte SatIndexTimes2;
byte t5[3];
byte u40[12];
};
struct TLL92_SatChannel
{
word LnbIndex;
word t1;
TLL_SignalSource SignalSource;
byte t2;
word TP_Number;
word CH_Number;
word CH_NumberFixed;
word TP_Number2;
byte FavCrypt;
TLL_EditFlags EditFlags;
word SID;
byte ServiceType;
byte CH_NameLength;
char CH_Name[52];
word VPID;
word APID;
word t3;
word t4;
byte t5[12];
};
struct TLL52_Lnb
{
byte SettingsID;
byte t2[3];
byte SatelliteID;
byte ScanSearchType;
byte NetworkSearch;
byte BlindSearch;
byte t3[4];
char FrequencyName[12];
word LOF1;
byte t4[2];
word LOF2;
byte t5[22];
};
public struct LY256
{
byte Header[4];
LY256_AnalogBlock Analog;
LY256_FirmwareBlock Firmware;
LY256_HospitalityBlock Hospitality;
LY256_DvbCTBlock DvbCT;
TLL_DvbSBlock DvbS;
TLL_SettingsBlock Settings;
};

View File

@@ -1,7 +1,9 @@
Version v2014-07-11 =======================================================
Version v2014-07-14 =======================================================
Changes:
- improved accessibility support (channel list and prog/fav list selection)
- fixed issue with broken channel lists for LG models LV,
LW (except LW4500, LW5400), LK950S and PM670S
- added support for LG's LY series binary TLL file format
The complete change log can be found at the end of this document
@@ -115,6 +117,11 @@ OTHER DEALINGS IN THE SOFTWARE.
Change log ================================================================
2014-07-14
- fixed issue with broken channel lists for LG models LV,
LW (except LW4500, LW5400), LK950S and PM670S
- added support for LG's LY series binary TLL file format
2014-07-11
- improved accessibility support (channel list and prog/fav list selection)