53 lines
1.6 KiB
C#
53 lines
1.6 KiB
C#
|
using LibrarySDR.Enums;
|
|||
|
using LibrarySDR.Requests;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using static LibrarySDR.Helpers.BinaryHexHelper;
|
|||
|
|
|||
|
namespace LibrarySDR.Responses
|
|||
|
{
|
|||
|
public class AcknowledgeResponse
|
|||
|
{
|
|||
|
private static PDUType PduType = PDUType.ACK_RESP;
|
|||
|
|
|||
|
private static ProtocolIdentifier protocolIdentifier = ProtocolIdentifier.GPSUsingSDSTL;
|
|||
|
|
|||
|
private static int areaSelection = 0;
|
|||
|
|
|||
|
public static String GetInstance(Int64 sourceISSI, Int64 destinationISSI, int messageReference, DeliveredStatus deliveryStatus)
|
|||
|
{
|
|||
|
StringBuilder sb = new StringBuilder("");
|
|||
|
|
|||
|
// PDU Type (8 bits)
|
|||
|
sb.Append(GetBits((int)PduType, 8));
|
|||
|
|
|||
|
// source ISSI (32 bits)
|
|||
|
sb.Append(GetBits(sourceISSI, 32));
|
|||
|
|
|||
|
// destination ISSI (32 bits)
|
|||
|
sb.Append(GetBits(destinationISSI, 32));
|
|||
|
|
|||
|
// protocol identifier (8 bits)
|
|||
|
sb.Append(GetBits((int)protocolIdentifier, 8));
|
|||
|
|
|||
|
// message reference (8 bits)
|
|||
|
sb.Append(GetBits(messageReference, 8));
|
|||
|
|
|||
|
// area selection (8 bits)
|
|||
|
sb.Append(GetBits(areaSelection, 8));
|
|||
|
|
|||
|
// delivery status (8 bits)
|
|||
|
sb.Append(GetBits((int)deliveryStatus, 8));
|
|||
|
|
|||
|
// get the header with the length
|
|||
|
String header = Header.GetHeaderBinary(sb.ToString().Length / 8);
|
|||
|
|
|||
|
// add header in front of the request
|
|||
|
return BinaryStringToHexString($"{header}{sb.ToString()}", Padding.RIGHT);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|