From 82871ba1bac1d62f69e1933b66659e62d2e5e063 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Tue, 12 Sep 2023 20:53:09 +0300 Subject: another rewrite, v1.0.0 --- pkg/messages/types/svcCreateStringTable.go | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 pkg/messages/types/svcCreateStringTable.go (limited to 'pkg/messages/types/svcCreateStringTable.go') diff --git a/pkg/messages/types/svcCreateStringTable.go b/pkg/messages/types/svcCreateStringTable.go new file mode 100644 index 0000000..ed9e477 --- /dev/null +++ b/pkg/messages/types/svcCreateStringTable.go @@ -0,0 +1,36 @@ +package messages + +import ( + "math" + + "github.com/pektezol/bitreader" +) + +type SvcCreateStringTable struct { + Name string + MaxEntries int16 + NumEntries int8 + Length int32 + UserDataFixedSize bool + UserDataSize int16 + UserDataSizeBits int8 + Flags int8 + StringData int +} + +func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTable { + svcCreateStringTable := SvcCreateStringTable{ + Name: reader.TryReadString(), + MaxEntries: int16(reader.TryReadBits(16)), + } + svcCreateStringTable.NumEntries = int8(reader.TryReadBits(int(math.Log2(float64(svcCreateStringTable.MaxEntries))) + 1)) + svcCreateStringTable.Length = int32(reader.TryReadBits(20)) + svcCreateStringTable.UserDataFixedSize = reader.TryReadBool() + if svcCreateStringTable.UserDataFixedSize { + svcCreateStringTable.UserDataSize = int16(reader.TryReadBits(12)) + svcCreateStringTable.UserDataSizeBits = int8(reader.TryReadBits(4)) + } + svcCreateStringTable.Flags = int8(reader.TryReadBits(2)) + reader.SkipBits(int(svcCreateStringTable.Length)) // TODO: StringTable parsing + return svcCreateStringTable +} -- cgit v1.2.3