Compare commits

...

3 Commits

Author SHA1 Message Date
feyris-tan
ed44e894a9 Ditto!
Some checks failed
🚀 Pack skyscraper8 / make-zip (push) Failing after 33s
2026-04-15 18:49:07 +02:00
feyris-tan
82253eefce Merge branch 'master' of http://172.20.20.19:3000/ft/skyscraper8 2026-04-15 18:48:48 +02:00
feyris-tan
6c36c100e8 Ditto! 2026-04-15 18:48:26 +02:00
13 changed files with 323 additions and 46 deletions

View File

@ -399,6 +399,16 @@ namespace skyscraper5.Data.MySql
throw new NotImplementedException();
}
public bool TestForRmt(Rmt rmt)
{
return true;
}
public void InsertRmt(Rmt rmt)
{
throw new NotImplementedException();
}
public IEnumerable<Tuple<int, int, ProgramMapping>> SelectAllPmt()
{
throw new NotImplementedException();

View File

@ -6,6 +6,7 @@ using NpgsqlTypes;
using skyscraper5.Dvb.Psi.Model;
using skyscraper5.Dvb.TvAnytime;
using skyscraper5.Skyscraper.Headless;
using skyscraper5.src.InteractionChannel.Model;
using skyscraper5.src.InteractionChannel.Model2;
using skyscraper8.DvbNip;
using skyscraper8.InteractionChannel.Model2;
@ -256,6 +257,16 @@ namespace skyscraper5.Data.PostgreSql
{
throw new NotImplementedException();
}
public bool TestForRmt(Rmt rmt)
{
return true;
}
public void InsertRmt(Rmt rmt)
{
throw new NotImplementedException();
}
}
}

View File

@ -28,10 +28,13 @@ using skyscraper5.Skyscraper.Equipment;
using skyscraper5.Skyscraper.IO.CrazycatStreamReader;
using skyscraper5.Skyscraper.Net;
using skyscraper5.Skyscraper.Scraper;
using skyscraper5.src.InteractionChannel.Model;
using skyscraper5.src.Skyscraper.FrequencyListGenerator;
using skyscraper5.T2MI.Packets;
using skyscraper5.Teletext.Wss;
using skyscraper8.DvbNip;
using skyscraper8.DvbNip.UiIntegration;
using skyscraper8.DvbSis;
using skyscraper8.GSE;
using skyscraper8.GSE.GSE;
using skyscraper8.Ietf.FLUTE;
@ -39,6 +42,7 @@ using skyscraper8.Ses;
using skyscraper8.Skyscraper.Drawing;
using skyscraper8.Skyscraper.FrequencyListGenerator;
using skyscraper8.Skyscraper.Scraper;
using skyscraper8.T2MI.Packets;
using testdrid.SdlWrapper;
using Platform = skyscraper5.Dvb.DataBroadcasting.IntModel.Platform;
@ -2330,12 +2334,68 @@ namespace SDL2Demo.Forms
public void OnDvbNipServiceList(NipActualCarrierInformation currentCarrierInformation, string serviceListId1, ServiceListType serviceListId2)
{
throw new NotImplementedException();
}
public void NotifyTransportStreamId(int tsid, int nid)
{
throw new NotImplementedException();
}
public void OnDvbSisCat(int sourcePid, SisCatContainer catContainer)
{
}
public void OnDvbSisEit(int sourcePid, SisEitContainer eitContainer)
{
}
public void OnDvbSisFti(int relatedPid, _0xF0_FramingTimingInformation fti)
{
}
public void OnDvbSisTimestamp(int pid, _0x20_DvbT2Timestamp t2Timestamp)
{
}
public void OnDvbSisPat(int sourcePid, SisPatContainer patContainer)
{
}
public void OnDvbSisSdt(int sourcePid, SisSdtContainer sdtContainer)
{
}
public void OnDvbSisDsaci(ushort currentDsaGroupId, int versionNumber, byte sectionNumber, byte lastSectionNumber,
Stream dsaci)
{
}
public void OnDvbSisPmt(int sourcePid, SisPmtContainer pmtContainer)
{
}
public void OnDvbSisNit(int sourcePid, SisNitContainer nitContainer)
{
}
public void OnDvbSisTdt(int sourcePid, DateTime? utcTime)
{
}
public void OnRcs2Rmt(Rmt rmt)
{
}
}
}

View File

@ -131,7 +131,7 @@ namespace SDL2Demo.Jobs
bjc.TunerMetadata = tuners[settingsWindowBLScanTunerSelection];
bjc.Ui = new InheritedBlindscanUiJunction();
bjc.Ui.Tasks = _taskQueue;
//bjc.Ui.Tasks = _taskQueue;
return bjc;
}

View File

@ -36,13 +36,17 @@ using System.Xml.Serialization;
using moe.yo3explorer.skyscraper8.DVBI.Model;
using skyscraper5.Dvb.DataBroadcasting.IntModel;
using skyscraper5.Dvb.SystemSoftwareUpdate.Model;
using skyscraper5.src.InteractionChannel.Model;
using skyscraper5.T2MI.Packets;
using skyscraper8.DvbNip;
using skyscraper8.DvbNip.UiIntegration;
using skyscraper8.DvbSis;
using skyscraper8.GSE;
using skyscraper8.GSE.GSE;
using skyscraper8.Ietf.FLUTE;
using skyscraper8.Ses;
using skyscraper8.Skyscraper.Scraper;
using skyscraper8.T2MI.Packets;
using testdrid.SdlWrapper;
using static SDL2Demo.Jobs.Blindscan;
using Platform = skyscraper5.Dvb.DataBroadcasting.IntModel.Platform;
@ -1823,112 +1827,168 @@ namespace SDL2Demo.Jobs
public void NotifyNit(NitNetwork nitNetwork)
{
throw new NotImplementedException();
}
public void EnableUiFeature(SkyscraperUiFeature bbframeAnalysis)
{
throw new NotImplementedException();
}
public void OnIpMacNotification(int sourcePid, Platform platform, Target target, Operational operational)
{
throw new NotImplementedException();
}
public void OnSsuNotification(UpdateNotificationGroup common, UpdateNotificationTarget target, ushort programNumber)
{
throw new NotImplementedException();
}
public void OnBbframe(BBHeader bbHeader, byte[] payload)
{
throw new NotImplementedException();
}
public void OnDetectionOfInnerTs(SkyscraperContext child, object identifier)
{
throw new NotImplementedException();
}
public void NotifyGsePacket(ushort value, byte[] gseDataBytes, GseLabel label)
{
throw new NotImplementedException();
}
public void OnDvbNipFileArrival(FluteUiHandle fuh)
{
throw new NotImplementedException();
}
public void OnDvbNipMulticastGatewayConfiguration(NipActualCarrierInformation carrier,
MulticastGatewayConfigurationType multicastGatewayConfiguration)
{
throw new NotImplementedException();
}
public void OnDvbNipCarrierDetected(NipActualCarrierInformation currentCarrierInformation)
{
throw new NotImplementedException();
}
public void OnDvbNipPrivateDataSignallingManifest(PrivateDataSignallingManifestType privateDataSignallingManifest)
{
throw new NotImplementedException();
}
public void OnDvbNipServiceListEntryPoints(NipActualCarrierInformation currentCarrierInformation,
ServiceListEntryPoints serviceListEntryPoints, DateTime dvbNipTime)
{
throw new NotImplementedException();
}
public void OnDvbNipServiceList(NipActualCarrierInformation currentCarrierInformation, string serviceListId1,
string serviceListId2)
{
throw new NotImplementedException();
}
public void OnDvbNipTimeOffsetFile(NipActualCarrierInformation currentCarrierInformation, TimeOffsetFileType timeOffsetFile)
{
throw new NotImplementedException();
}
public void OnDvbNipNetworkInformationFile(NipActualCarrierInformation currentCarrierInformation,
NetworkInformationFileType networkInformationFile)
{
throw new NotImplementedException();
}
public void DvbNipServiceInformation(NipActualCarrierInformation currentCarrierInformation,
ServiceInformationFileType serviceInformationFile)
{
throw new NotImplementedException();
}
public void OnDvbNipFileAnnouncement(FDTInstanceType flute)
{
throw new NotImplementedException();
}
public void OnAstraSgtList(SgtList list)
{
throw new NotImplementedException();
}
public void OnAstraSgtService(SgtService child)
{
throw new NotImplementedException();
}
public void OnDvbNipServiceList(NipActualCarrierInformation currentCarrierInformation, string serviceListId1, ServiceListType serviceListId2)
{
throw new NotImplementedException();
}
public void NotifyTransportStreamId(int tsid, int nid)
{
throw new NotImplementedException();
}
public void OnDvbSisCat(int sourcePid, SisCatContainer catContainer)
{
}
public void OnDvbSisEit(int sourcePid, SisEitContainer eitContainer)
{
}
public void OnDvbSisFti(int relatedPid, _0xF0_FramingTimingInformation fti)
{
}
public void OnDvbSisTimestamp(int pid, _0x20_DvbT2Timestamp t2Timestamp)
{
}
public void OnDvbSisPat(int sourcePid, SisPatContainer patContainer)
{
}
public void OnDvbSisSdt(int sourcePid, SisSdtContainer sdtContainer)
{
}
public void OnDvbSisDsaci(ushort currentDsaGroupId, int versionNumber, byte sectionNumber, byte lastSectionNumber,
Stream dsaci)
{
}
public void OnDvbSisPmt(int sourcePid, SisPmtContainer pmtContainer)
{
}
public void OnDvbSisNit(int sourcePid, SisNitContainer nitContainer)
{
}
public void OnDvbSisTdt(int sourcePid, DateTime? utcTime)
{
}
public void OnRcs2Rmt(Rmt rmt)
{
}
public TaskQueue Tasks { get; set; }

View File

@ -0,0 +1,36 @@
using System.IO;
using System.Net.NetworkInformation;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using skyscraper5.Skyscraper.IO;
namespace skyscraper8.Tests.ResourceTests;
[TestClass]
public class NtbuDoability
{
[TestMethod]
public void DecodeUnifiInform()
{
byte[] bytes = Resources1.ubnt;
MemoryStream stream = new MemoryStream(bytes,false);
if (stream.ReadUInt32BE() != 1414414933u)
Assert.Fail();
if (stream.ReadUInt32BE() != 0)
Assert.Fail();
PhysicalAddress apMac = new PhysicalAddress(stream.ReadBytes(6));
ushort flags = stream.ReadUInt16BE();
bool encrypted = (flags & 0x0001) != 0;
bool zlib = (flags & 0x0002) != 0;
bool snappy = (flags & 0x0004) != 0;
bool aesGcm = (flags & 0x0008) != 0;
byte[] iv = stream.ReadBytes(16);
uint dataVersion = stream.ReadUInt32BE();
uint payloadLength = stream.ReadUInt32BE();
byte[] payload = stream.ReadBytes(payloadLength);
}
}

View File

@ -149,5 +149,12 @@ namespace skyscraper8.Tests {
return ((byte[])(obj));
}
}
internal static byte[] ubnt {
get {
object obj = ResourceManager.GetObject("ubnt", resourceCulture);
return ((byte[])(obj));
}
}
}
}

View File

@ -163,4 +163,7 @@
<data name="Frame00000357_TSGS1_MIS000_SYNC184" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\Frame00000357_TSGS1_MIS000_SYNC184.bbframe;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="ubnt" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\ubnt.bin;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -78,91 +78,69 @@ Global
{8DAAE3A2-72EA-4908-8F62-911D293043E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8DAAE3A2-72EA-4908-8F62-911D293043E8}.Release|Any CPU.Build.0 = Release|Any CPU
{E52A1723-7193-EC3C-7371-01A3BB58E0EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E52A1723-7193-EC3C-7371-01A3BB58E0EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E52A1723-7193-EC3C-7371-01A3BB58E0EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E52A1723-7193-EC3C-7371-01A3BB58E0EA}.Release|Any CPU.Build.0 = Release|Any CPU
{1015ACF1-E812-5410-66A5-E92DE682D2C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1015ACF1-E812-5410-66A5-E92DE682D2C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1015ACF1-E812-5410-66A5-E92DE682D2C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1015ACF1-E812-5410-66A5-E92DE682D2C6}.Release|Any CPU.Build.0 = Release|Any CPU
{C4262F19-0648-A1A1-3D62-748A45BC5329}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C4262F19-0648-A1A1-3D62-748A45BC5329}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C4262F19-0648-A1A1-3D62-748A45BC5329}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C4262F19-0648-A1A1-3D62-748A45BC5329}.Release|Any CPU.Build.0 = Release|Any CPU
{1B8696DA-8A81-8F1F-9463-49C727959EDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1B8696DA-8A81-8F1F-9463-49C727959EDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1B8696DA-8A81-8F1F-9463-49C727959EDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1B8696DA-8A81-8F1F-9463-49C727959EDA}.Release|Any CPU.Build.0 = Release|Any CPU
{68EB7299-FC65-654E-B972-D79514B91BAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{68EB7299-FC65-654E-B972-D79514B91BAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{68EB7299-FC65-654E-B972-D79514B91BAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{68EB7299-FC65-654E-B972-D79514B91BAD}.Release|Any CPU.Build.0 = Release|Any CPU
{60F519BA-49C0-7C7B-E26F-E4313A9B1697}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{60F519BA-49C0-7C7B-E26F-E4313A9B1697}.Debug|Any CPU.Build.0 = Debug|Any CPU
{60F519BA-49C0-7C7B-E26F-E4313A9B1697}.Release|Any CPU.ActiveCfg = Release|Any CPU
{60F519BA-49C0-7C7B-E26F-E4313A9B1697}.Release|Any CPU.Build.0 = Release|Any CPU
{71CFF3DD-4F6C-3A21-B2C3-2F3A59D4FB4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{71CFF3DD-4F6C-3A21-B2C3-2F3A59D4FB4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{71CFF3DD-4F6C-3A21-B2C3-2F3A59D4FB4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{71CFF3DD-4F6C-3A21-B2C3-2F3A59D4FB4A}.Release|Any CPU.Build.0 = Release|Any CPU
{AD0F65A7-3257-BB3B-46F5-C16BFDF9DBCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD0F65A7-3257-BB3B-46F5-C16BFDF9DBCC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AD0F65A7-3257-BB3B-46F5-C16BFDF9DBCC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD0F65A7-3257-BB3B-46F5-C16BFDF9DBCC}.Release|Any CPU.Build.0 = Release|Any CPU
{868A7453-E1B7-A619-F447-41E42420405C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{868A7453-E1B7-A619-F447-41E42420405C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{868A7453-E1B7-A619-F447-41E42420405C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{868A7453-E1B7-A619-F447-41E42420405C}.Release|Any CPU.Build.0 = Release|Any CPU
{2296DA0C-AD28-DB06-1984-13B4AE5DE61D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2296DA0C-AD28-DB06-1984-13B4AE5DE61D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2296DA0C-AD28-DB06-1984-13B4AE5DE61D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2296DA0C-AD28-DB06-1984-13B4AE5DE61D}.Release|Any CPU.Build.0 = Release|Any CPU
{96D43A77-C1DA-16EF-2084-BA939C0BEB4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{96D43A77-C1DA-16EF-2084-BA939C0BEB4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{96D43A77-C1DA-16EF-2084-BA939C0BEB4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{96D43A77-C1DA-16EF-2084-BA939C0BEB4D}.Release|Any CPU.Build.0 = Release|Any CPU
{17C2E095-B952-8919-2C68-F2EAA7A601C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{17C2E095-B952-8919-2C68-F2EAA7A601C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{17C2E095-B952-8919-2C68-F2EAA7A601C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{17C2E095-B952-8919-2C68-F2EAA7A601C3}.Release|Any CPU.Build.0 = Release|Any CPU
{07214423-32B2-DDE8-8D38-511D55ADC206}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{07214423-32B2-DDE8-8D38-511D55ADC206}.Debug|Any CPU.Build.0 = Debug|Any CPU
{07214423-32B2-DDE8-8D38-511D55ADC206}.Release|Any CPU.ActiveCfg = Release|Any CPU
{07214423-32B2-DDE8-8D38-511D55ADC206}.Release|Any CPU.Build.0 = Release|Any CPU
{0E4C7079-228A-B94C-379A-8A14B08BAB34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0E4C7079-228A-B94C-379A-8A14B08BAB34}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0E4C7079-228A-B94C-379A-8A14B08BAB34}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0E4C7079-228A-B94C-379A-8A14B08BAB34}.Release|Any CPU.Build.0 = Release|Any CPU
{3B52C24E-58E2-F982-F9B7-B9E7465B82A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B52C24E-58E2-F982-F9B7-B9E7465B82A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B52C24E-58E2-F982-F9B7-B9E7465B82A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B52C24E-58E2-F982-F9B7-B9E7465B82A2}.Release|Any CPU.Build.0 = Release|Any CPU
{8F17668C-623C-F9B3-EAD4-2922E5414B75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8F17668C-623C-F9B3-EAD4-2922E5414B75}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8F17668C-623C-F9B3-EAD4-2922E5414B75}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8F17668C-623C-F9B3-EAD4-2922E5414B75}.Release|Any CPU.Build.0 = Release|Any CPU
{46CACA1C-F9B2-2FE0-2068-716F381325E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{46CACA1C-F9B2-2FE0-2068-716F381325E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{46CACA1C-F9B2-2FE0-2068-716F381325E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{46CACA1C-F9B2-2FE0-2068-716F381325E9}.Release|Any CPU.Build.0 = Release|Any CPU
{BDBDB7A9-D0A4-9B89-0801-2935B2066551}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BDBDB7A9-D0A4-9B89-0801-2935B2066551}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BDBDB7A9-D0A4-9B89-0801-2935B2066551}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BDBDB7A9-D0A4-9B89-0801-2935B2066551}.Release|Any CPU.Build.0 = Release|Any CPU
{CF21D250-9804-4191-89F5-95821E3AF39D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CF21D250-9804-4191-89F5-95821E3AF39D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CF21D250-9804-4191-89F5-95821E3AF39D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CF21D250-9804-4191-89F5-95821E3AF39D}.Release|Any CPU.Build.0 = Release|Any CPU
{EBB6B1CF-2597-4962-AA31-2B42B4C28C7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EBB6B1CF-2597-4962-AA31-2B42B4C28C7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EBB6B1CF-2597-4962-AA31-2B42B4C28C7D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EBB6B1CF-2597-4962-AA31-2B42B4C28C7D}.Release|Any CPU.Build.0 = Release|Any CPU
{839C3783-020F-77D6-C22C-D50DCC97CDD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{839C3783-020F-77D6-C22C-D50DCC97CDD6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{839C3783-020F-77D6-C22C-D50DCC97CDD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{839C3783-020F-77D6-C22C-D50DCC97CDD6}.Release|Any CPU.Build.0 = Release|Any CPU
{1A29F6E6-4B6A-DCCD-1DF1-AA8D020E17D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1A29F6E6-4B6A-DCCD-1DF1-AA8D020E17D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1A29F6E6-4B6A-DCCD-1DF1-AA8D020E17D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1A29F6E6-4B6A-DCCD-1DF1-AA8D020E17D2}.Release|Any CPU.Build.0 = Release|Any CPU
{84EE9FCD-2C7F-DF84-C1BA-99D018CE9412}.Debug|Any CPU.ActiveCfg = Debug|Any CPU

View File

@ -28,6 +28,7 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARuntimeResourceSet_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003Fe1_003Ff15f6bbe_003FRuntimeResourceSet_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASafeFileHandle_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003Fc6_003Fd8e0f2f2_003FSafeFileHandle_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASkip_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fd8c543d93f1559af2ea2be8e9d55839b5bb1a3605f22daa45ea63772e3b4bc_003FSkip_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASpan_00601_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2026_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F48f7bf031b2942d3831d66d46fe3bc99b2e200_003F49_003F017cad58_003FSpan_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASR_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F4d_003F7edc51d9_003FSR_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AString_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F57d616db882b441b8c50720b4477e03db2e200_003F2e_003F1a14f40f_003FString_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATestMethodInfo_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F9ea467e7c7b4671a214143293021e7ec337916b71125d896e17a0b7fc_003FTestMethodInfo_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
@ -59,9 +60,11 @@
<s:String x:Key="/Default/Profiling/Configurations/=1/@EntryIndexedValue">&lt;data&gt;&lt;HostParameters type="LocalHostParameters" /&gt;&lt;Argument type="StandaloneArgument"&gt;&lt;Arguments IsNull="False"&gt;&lt;/Arguments&gt;&lt;FileName IsNull="False"&gt;&lt;/FileName&gt;&lt;WorkingDirectory IsNull="False"&gt;&lt;/WorkingDirectory&gt;&lt;Scope&gt;&lt;ProcessFilters /&gt;&lt;/Scope&gt;&lt;/Argument&gt;&lt;Info type="TimelineInfo" /&gt;&lt;CoreOptions type="CoreOptions"&gt;&lt;CoreTempPath IsNull="False"&gt;&lt;/CoreTempPath&gt;&lt;RemoteEndPoint IsNull="False"&gt;&lt;/RemoteEndPoint&gt;&lt;AdditionalEnvironmentVariables /&gt;&lt;/CoreOptions&gt;&lt;HostOptions type="HostOptions"&gt;&lt;HostTempPath IsNull="False"&gt;&lt;/HostTempPath&gt;&lt;/HostOptions&gt;&lt;/data&gt;</s:String>
<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=skyscraper8_002ETests_002FProperties_002FResources/@EntryIndexedValue">False</s:Boolean>
<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=skyscraper8_002ETests_002FResources1/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/ResxEditorPersonal/Initialized/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/ResxEditorPersonal/ShowOnlyErrors/@EntryValue">False</s:Boolean>
<s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=46caca1c_002Df9b2_002D2fe0_002D2068_002D716f381325e9_0023skyscraper5_002EUI_002EWindowsForms/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=ebb6b1cf_002D2597_002D4962_002Daa31_002D2b42b4c28c7d_0023skyscraper8_002EAnagramViewer/@EntryIndexedValue">True</s:Boolean>
</wpf:ResourceDictionary>

View File

@ -0,0 +1,61 @@
using skyscraper5.Ietf.Rfc971;
using skyscraper5.Skyscraper.Plugins;
namespace skyscraper8.ReutersWne;
[SkyscraperPlugin]
public class ReutersWneExtractor : ISkyscraperMpePlugin
{
public void ConnectToStorage(object[] connector)
{
//TODO: connect to stroage plugins
}
public void SetContext(DateTime? currentTime, object skyscraperContext)
{
//TODO: remember current time and skyscraper context
}
public bool CanHandlePacket(InternetHeader internetHeader, byte[] ipv4Packet)
{
if (internetHeader.Protocol != 0x11) //Reuters WNE is UDP only
return false;
if (ipv4Packet[8] != 0) //First opcode byte is always "0"
return false;
//These bytes are according to the "WNE - RX8200 Configuration.pdf", page 11
byte[] addressBytes = internetHeader.DestinationAddress.GetAddressBytes();
if (addressBytes[0] != 224)
return false;
if (addressBytes[1] != 14)
return false;
if (addressBytes[2] != 14)
return false;
if (addressBytes[3] > 16) //Should be 14 or 15
return false;
return true;
}
public void HandlePacket(InternetHeader internetHeader, byte[] ipv4Packet)
{
Span<byte> udpPayload = new Span<byte>(ipv4Packet,8,ipv4Packet.Length-8);
byte byte0 = udpPayload[0];
if (byte0 != 0x00)
return;
byte opcodeL = udpPayload[1];
byte unkn1 = udpPayload[2];
byte opcodeR = udpPayload[3];
uint session = udpPayload.ReadUInt32BigEndian(4);
//throw new NotImplementedException();
}
public bool StopProcessingAfterThis()
{
return true;
}
}

View File

@ -1273,6 +1273,20 @@ namespace skyscraper5.Skyscraper.Scraper
public void OnSdtService(ushort transportStreamId, ushort originalNetworkId, SdtService sdtService)
{
if (originalNetworkId == 1)
{
if (transportStreamId == 1)
{
if (!DvbContext.IsPidProcessorPresent(0x0dde))
{
if (sdtService.ServiceName.Equals("REUTERS WNE"))
{
logger.InfoFormat("Found REUTERS WNE, registering PID 0x0dde");
DvbContext.RegisterPacketProcessor(0x0dde, new PsiDecoder(0xdde,new MultiprotocolEncapsulationDecoder(this)));
}
}
}
}
if (DataStorage.TestForSdtService(transportStreamId, originalNetworkId, sdtService))
{
if (!IsChild)

View File

@ -0,0 +1,34 @@
using System;
public static class SpanByteExtensions
{
public static uint ReadUInt32LittleEndian(this ReadOnlySpan<byte> span, int offset)
{
if ((uint)offset > (uint)(span.Length - 4))
throw new ArgumentOutOfRangeException(nameof(offset));
return (uint)(
span[offset] |
(span[offset + 1] << 8) |
(span[offset + 2] << 16) |
(span[offset + 3] << 24));
}
public static uint ReadUInt32BigEndian(this ReadOnlySpan<byte> span, int offset)
{
if ((uint)offset > (uint)(span.Length - 4))
throw new ArgumentOutOfRangeException(nameof(offset));
return (uint)(
(span[offset] << 24) |
(span[offset + 1] << 16) |
(span[offset + 2] << 8) |
span[offset + 3]);
}
public static uint ReadUInt32LittleEndian(this Span<byte> span, int offset)
=> ReadUInt32LittleEndian((ReadOnlySpan<byte>)span, offset);
public static uint ReadUInt32BigEndian(this Span<byte> span, int offset)
=> ReadUInt32BigEndian((ReadOnlySpan<byte>)span, offset);
}