SafeDispatch/LibrarySDR/Flags/DataFlag.cs
2024-02-22 18:43:59 +02:00

61 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static LibrarySDR.Helpers.BinaryHexHelper;
namespace LibrarySDR.Flags
{
public class DataFlag
{
private bool isConsumedConfirmationRequested;
public bool IsConsumedConfirmationRequested { get { return isConsumedConfirmationRequested; } }
private bool isReceivedConfirmationRequested;
public bool IsReceivedConfirmationRequested { get { return isReceivedConfirmationRequested; } }
private bool isStorageAllowed;
public bool IsStorageAllowed { get { return isStorageAllowed; } }
private bool isIndividualServiceOnly;
public bool IsIndividualServiceOnly { get { return isIndividualServiceOnly; } }
private bool isOnlyStandardReportAllowed;
public bool IsOnlyStandardReportAllowed { get { return isOnlyStandardReportAllowed; } }
public bool IsUseOfShortFormReportRecommended { get { return !isOnlyStandardReportAllowed; } }
public DataFlag(int flags)
{
int i = 0;
Int16 output = 0;
// first bit is 7 , and the last one is 0
String binary = GetBits(flags, 8);
Int16.TryParse(binary.Substring(i++, 1), out output);
isConsumedConfirmationRequested = output == 1;
Int16.TryParse(binary.Substring(i++, 1), out output);
isReceivedConfirmationRequested = output == 1;
bool Data_Ind = false;
bool Data_Req = true;
bool resp = false;
if (Data_Ind)
{
Boolean.TryParse(binary.Substring(i++, 1), out resp);
isIndividualServiceOnly = !resp; // 0 - Data-Ind: Individual service | 1 - Group or individual service
}
else if (Data_Req)
Boolean.TryParse(binary.Substring(i++, 1), out isOnlyStandardReportAllowed);
Boolean.TryParse(binary.Substring(i++, 1), out isStorageAllowed);
}
}
}