From b14cc368ab0200f6dff60c9c5621f8263edf1e68 Mon Sep 17 00:00:00 2001 From: hbeham Date: Mon, 14 Jul 2014 22:20:22 +0200 Subject: [PATCH] - added support for LY hospitality series - fixed wrong offset for prognr2 for LV/LW/LK950 models --- ChanSort.Loader.LG/TllFileSerializer.cs | 22 +- ChanSort/MainForm.cs | 2 +- .../tll-256-LY.h | 209 ++++++++++++++++++ readme.txt | 11 +- 4 files changed, 232 insertions(+), 12 deletions(-) create mode 100644 Information/FileStructures_for_HHD_Hex_Editor_Neo/tll-256-LY.h diff --git a/ChanSort.Loader.LG/TllFileSerializer.cs b/ChanSort.Loader.LG/TllFileSerializer.cs index df4292b..0e87b22 100644 --- a/ChanSort.Loader.LG/TllFileSerializer.cs +++ b/ChanSort.Loader.LG/TllFileSerializer.cs @@ -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 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); diff --git a/ChanSort/MainForm.cs b/ChanSort/MainForm.cs index 2bec83c..9eb6c2e 100644 --- a/ChanSort/MainForm.cs +++ b/ChanSort/MainForm.cs @@ -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; diff --git a/Information/FileStructures_for_HHD_Hex_Editor_Neo/tll-256-LY.h b/Information/FileStructures_for_HHD_Hex_Editor_Neo/tll-256-LY.h new file mode 100644 index 0000000..6ee7ce7 --- /dev/null +++ b/Information/FileStructures_for_HHD_Hex_Editor_Neo/tll-256-LY.h @@ -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; +}; diff --git a/readme.txt b/readme.txt index 6aea429..007829b 100644 --- a/readme.txt +++ b/readme.txt @@ -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)