SafeDispatch/LibrarySDR/Flags/DataFlag.cs

61 lines
2.0 KiB
C#
Raw Permalink Normal View History

2024-02-22 16:43:59 +00:00
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);
}
}
}