Visual Studio 2019
dotPeek - for reverse engineering plug-in DLL
SDR#
TETRA demodulator plug-in version 1.0.14.0 (SDRSharp.TETRADemodulator)
Show SDS type 4 messages always as binarystring and hexadecimal string.
Modify SdsMessage.cs
namespace SDRSharp.Tetra
{
public class SdsMessage
{
public string TextString { get; set; }
public string BinaryString { get; set; }
//ADDX
public string BinaryString2 { get; set; } //add this
}
}
Modify SdsParser.cs
public unsafe void ParseTextMessage(
LogicChannel channelData,
int offset,
int length,
Dictionary<GlobalNames, int> result)
{
int num1 = 0;
string empty = string.Empty;
int key = 0;
int offset1 = offset;
Dictionary<int, SdsMessage> dictionary1 = new Dictionary<int, SdsMessage>();
SdsMessage sdsMessage = new SdsMessage();
sdsMessage.TextString = string.Empty;
sdsMessage.BinaryString = string.Empty;
//ADDX
sdsMessage.BinaryString2 = string.Empty; //add this
if (!result.TryGetValue(GlobalNames.Protocol_identifier, out num1))
return;
//ADDX
sdsMessage.BinaryString2 = TetraUtils.BitsToString(channelData.Ptr, offset, length); // add this
int num2 = 0;
NetInfoWindow.cs
public void UpdateTextBox(List<Dictionary<GlobalNames, int>> rawData)
....
if (dictionary.TryGetValue(GlobalNames.SDS_Text_here, out num2))
{
string empty2 = string.Empty;
int key = 0;
SdsMessage sdsMessage1 = new SdsMessage();
sdsMessage1.TextString = string.Empty;
sdsMessage1.BinaryString = string.Empty;
//ADDX
sdsMessage1.BinaryString2 = string.Empty; // add this
dictionary.TryGetValue(GlobalNames.Message_reference, out key);
for (int index1 = 0; index1 < SdsParser.SdsMessages.Count; ++index1)
{
Dictionary<int, SdsMessage> sdsMessage2 = SdsParser.SdsMessages[index1];
if (sdsMessage2.ContainsKey(key))
{
sdsMessage2.TryGetValue(key, out sdsMessage1);
for (int index2 = 0; index2 < index1 + 1; ++index2)
SdsParser.SdsMessages.RemoveAt(0);
break;
}
}
if ((sdsMessage1.TextString != null || sdsMessage1.BinaryString != null) && (sdsMessage1.TextString != string.Empty || sdsMessage1.BinaryString != string.Empty))
{
if (num2 == 2)
str2 = str2 + " TEXT:'" + sdsMessage1.TextString + "'";
if (num2 == 3)
str2 = str2 + " DATA:'" + sdsMessage1.BinaryString + "'";
}
//ADDX -- add these lines
if (string.IsNullOrEmpty(sdsMessage1.BinaryString2) == false)
{
str2 = str2 + Environment.NewLine + "BIN " + sdsMessage1.BinaryString2;
var hex = string.Join(":",
Enumerable.Range(0, sdsMessage1.BinaryString2.Length / 8)
.Select(i => Convert.ToByte(sdsMessage1.BinaryString2.Substring(i * 8, 8), 2).ToString("X2")));
}
// END OF ADDX
}
if (dictionary.TryGetValue(GlobalNames.Time_data_type, out num2))
...
Kommentit
Tämän blogin kommentit tarkistetaan ennen julkaisua.