189 lines
6.3 KiB
C#
189 lines
6.3 KiB
C#
//-----------------------------------------------------------------------
|
|
// <copyright file="NDEFRecord.cs" company="BTU/IIT">
|
|
// Company copyright tag.
|
|
// </copyright>
|
|
// <author>stubbfel</author>
|
|
// <sience>21.08.2013</sience>
|
|
//----------------------------------------------------------------------
|
|
namespace CampusAppWP8.Utility.NDEF
|
|
{
|
|
using System.IO;
|
|
using System.Text;
|
|
|
|
/// <summary>Ndef record of a NDEFMessage.</summary>
|
|
/// <remarks>Stubbfel, 21.08.2013.</remarks>
|
|
public abstract class NDEFRecord
|
|
{
|
|
#region Members
|
|
|
|
/// <summary>The maximum record pay load.</summary>
|
|
public const int MaxRecordPayLoad = 255;
|
|
|
|
/// <summary>Size of the type.</summary>
|
|
protected const byte TypeSize = 0x01;
|
|
|
|
#endregion
|
|
|
|
#region Constructors
|
|
/// <summary>Initializes a new instance of the NDEFRecord class.</summary>
|
|
/// <remarks>Stubbfel, 21.08.2013.</remarks>
|
|
public NDEFRecord()
|
|
{
|
|
}
|
|
|
|
/// <summary>Initializes a new instance of the NDEFRecord class.</summary>
|
|
/// <remarks>Stubbfel, 21.08.2013.</remarks>
|
|
/// <param name="array">The array.</param>
|
|
/// <param name="index">(Optional) zero-based index of the.</param>
|
|
public NDEFRecord(byte[] array, int index = 0)
|
|
{
|
|
this.FormatFlags = array[index];
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region enum
|
|
|
|
/// <summary>Values that represent NDEFFlags.</summary>
|
|
/// <remarks>Stubbfel, 21.08.2013.</remarks>
|
|
public enum NDEFFlags
|
|
{
|
|
/// <summary>An Enum constant representing the UNSET option.</summary>
|
|
UNSET = 0x00,
|
|
|
|
/// <summary>An Enum constant representing the Message begin option.</summary>
|
|
MBSET = 0x80,
|
|
|
|
/// <summary>An Enum constant representing the Message end option.</summary>
|
|
MESET = 0x40,
|
|
|
|
/// <summary>An Enum constant representing the CHUNK FLAG option.</summary>
|
|
CFSET = 0x20,
|
|
|
|
/// <summary>An Enum constant representing the Short Record set option.</summary>
|
|
SRSET = 0x10,
|
|
|
|
/// <summary>An Enum constant representing the ID length option.</summary>
|
|
ILSET = 0x08,
|
|
|
|
/// <summary>An enum constant representing the tnfset option.</summary>
|
|
TNFSET = 0x03
|
|
}
|
|
|
|
/// <summary>Values that represent TNFVAL.</summary>
|
|
/// <remarks>Stubbfel, 21.08.2013.</remarks>
|
|
public enum TNFVAL
|
|
{
|
|
/// <summary>An enum constant representing the empty option.</summary>
|
|
EMPTY = 0x00,
|
|
|
|
/// <summary>An enum constant representing the Well-Know-Type option.</summary>
|
|
WKT = 0x01,
|
|
|
|
/// <summary>An enum constant representing the MediaType option.</summary>
|
|
MEDIATYPE = 0x02,
|
|
|
|
/// <summary>An enum constant representing the URI option.</summary>
|
|
URI = 0x03,
|
|
|
|
/// <summary>An enum constant representing the NFCE option.</summary>
|
|
NFCE = 0x04,
|
|
|
|
/// <summary>An enum constant representing the unknow option.</summary>
|
|
unknow = 0x05,
|
|
|
|
/// <summary>An enum constant representing the unchanged option.</summary>
|
|
UNCHANGED = 0x06,
|
|
|
|
/// <summary>An enum constant representing the reserved option.</summary>
|
|
RESERVED = 0x07
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Properties
|
|
/// <summary>Gets or sets the MBFlag.</summary>
|
|
/// <value>The MBFlag.</value>
|
|
public NDEFFlags MB { get; set; }
|
|
|
|
/// <summary>Gets or sets MEFlag.</summary>
|
|
/// <value>The MEFlag .</value>
|
|
public NDEFFlags ME { get; set; }
|
|
|
|
/// <summary>Gets or sets the CFFlag.</summary>
|
|
/// <value>The CFFlag.</value>
|
|
public NDEFFlags CF { get; set; }
|
|
|
|
/// <summary>Gets or sets the SRFlag.</summary>
|
|
/// <value>The SRFlag.</value>
|
|
public NDEFFlags SR { get; set; }
|
|
|
|
/// <summary>Gets or sets the ILFlag.</summary>
|
|
/// <value>The ILFlag.</value>
|
|
public NDEFFlags IL { get; set; }
|
|
|
|
/// <summary>Gets or sets the TNFField.</summary>
|
|
/// <value>The TNFField.</value>
|
|
public TNFVAL TNF { get; set; }
|
|
|
|
/// <summary>Gets or sets the type.</summary>
|
|
/// <value>The type.</value>
|
|
public NDEFMessage.TYPEVAL Type { get; set; }
|
|
|
|
/// <summary>Gets or sets the format flags.</summary>
|
|
/// <value>The format flags.</value>
|
|
public byte FormatFlags
|
|
{
|
|
get
|
|
{
|
|
return (byte)((byte)this.TNF | ((byte)this.MB) | ((byte)this.ME) | ((byte)this.CF) | ((byte)this.SR) | ((byte)this.IL));
|
|
}
|
|
|
|
protected set
|
|
{
|
|
this.TNF = (TNFVAL)(value & (byte)NDEFFlags.TNFSET);
|
|
this.MB = (NDEFFlags)(value & (byte)NDEFFlags.MBSET);
|
|
this.ME = (NDEFFlags)(value & (byte)NDEFFlags.MESET);
|
|
this.CF = (NDEFFlags)(value & (byte)NDEFFlags.CFSET);
|
|
this.SR = (NDEFFlags)(value & (byte)NDEFFlags.SRSET);
|
|
this.IL = (NDEFFlags)(value & (byte)NDEFFlags.ILSET);
|
|
}
|
|
}
|
|
|
|
/// <summary>Gets or sets the payload.</summary>
|
|
/// <value>The payload.</value>
|
|
public string Payload { get; set; }
|
|
|
|
/// <summary>Gets the size of the record.</summary>
|
|
/// <value>The size of the record.</value>
|
|
public int RecordSize
|
|
{
|
|
get
|
|
{
|
|
return this.HeaderSize + this.Payload.Length + this.PayloadPraefix.Length;
|
|
}
|
|
}
|
|
|
|
/// <summary>Gets or sets the payload praefix.</summary>
|
|
/// <value>The payload praefix.</value>
|
|
public string PayloadPraefix { get; set; }
|
|
|
|
/// <summary>Gets or sets the size of the header.</summary>
|
|
/// <value>The size of the header.</value>
|
|
protected int HeaderSize { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Methods
|
|
|
|
/// <summary>Converts the record to a byte array.</summary>
|
|
/// <remarks>Stubbfel, 21.08.2013.</remarks>
|
|
/// <returns>This object as a byte[].</returns>
|
|
public abstract byte[] ToByteArray();
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
|
|
// End of Utility\NDEF\NDEFRecord.cs
|