RFID.RFIDInterface.PacketData.ParsePacket C# (CSharp) Method

ParsePacket() public static method

ParsePacket
public static ParsePacket ( byte buffer, PacketBase &packet, string &errorMessage ) : PacketType
buffer byte packet data to be parsed.
packet PacketBase
errorMessage string output parameter to hold any error message.
return PacketType
        public static PacketType ParsePacket(byte[] buffer, out PacketBase packet, out string errorMessage)
        {
            // Initalize output paramters
            packet = null;
            errorMessage = null;

            // Check parameters
            if (buffer == null)
            {
                errorMessage = SysLogger.LogError(new ArgumentNullException("buffer", "Attempted to parse an empty packet buffer."));
                return PacketType.U_N_D_F_I_N_E_D;
            }

            if (buffer.Length < PREAMBLE_SIZE)
            {
                errorMessage = SysLogger.LogError(new rfidInvalidPacketException(rfidErrorCode.PacketDataTooSmall, buffer, 0));
                return PacketType.U_N_D_F_I_N_E_D;
            }

            // Initialize locals

            PacketType rslt = GetPacketTypeFromBuffer(buffer, 0);
            if (rslt == PacketType.U_N_D_F_I_N_E_D)
            {
                errorMessage = SysLogger.LogError(new rfidInvalidPacketException(rfidErrorCode.UnknownPacketType, buffer, 0));
                return PacketType.U_N_D_F_I_N_E_D;
            }

            packet = PacketData.CreatePacket(rslt);
            try
            {
                Parse_Fields(packet, buffer, 0, FullPacketBytes(buffer, 0));

            } catch (rfidInvalidPacketException exp)
            {
                errorMessage =SysLogger.LogError(exp);
                packet = null;
                return PacketType.U_N_D_F_I_N_E_D;
            }
            return rslt;
        }