skyscraper8/skyscraper8/InteractionChannel/Model/Descriptors/0xa5_EncryptedLoginIdDescriptor.cs
feyris-tan 7e7a3f86dd
Some checks failed
🚀 Pack skyscraper8 / make-zip (push) Failing after 1m48s
Reworked the database handling for TIMs.
2026-03-21 22:38:16 +01:00

55 lines
1.3 KiB
C#

using skyscraper5.Mpeg2;
using skyscraper5.Skyscraper.IO;
using skyscraper5.Skyscraper.Plugins;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace skyscraper5.src.InteractionChannel.Model.Descriptors
{
[SkyscraperPlugin]
[TsDescriptor(0xa5,"TIM")]
internal class _0xa5_EncryptedLoginIdDescriptor : TsDescriptor
{
public _0xa5_EncryptedLoginIdDescriptor(byte[] buffer)
{
MemoryStream ms = new MemoryStream(buffer, false);
IdStartTime = ms.ReadUInt16BE();
IdUpdatePeriod = ms.ReadUInt16BE();
byte idLoopCount = ms.ReadUInt8(); idLoopCount++;
int requiredLength = idLoopCount * 2;
if (ms.GetAvailableBytes() < requiredLength)
{
Valid = false;
return;
}
EncryptedLoginId = new ushort[idLoopCount];
for (int i = 0; i < idLoopCount; i++)
{
EncryptedLoginId[i] = ms.ReadUInt16BE();
}
Valid = true;
}
public ushort IdStartTime { get; }
public ushort IdUpdatePeriod { get; }
public ushort[] EncryptedLoginId { get; }
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("Encrypted Login Ids: ");
foreach(ushort u in EncryptedLoginId)
{
sb.Append(u);
sb.Append(',');
}
return sb.ToString();
}
}
}