public override PDU Decode(byte[] buffer, ref Codes.DecodeErrors outcode) { var high_command = Convert.ToChar(buffer[0]); outcode = Codes.DecodeErrors.NoError; switch (high_command) { case 'Q': return(FactoryPosicion(buffer)); case 'H': return(FactoryHandSake(buffer)); case 'E': return(FactoryEntrante(buffer)); case 'R': { var partes = Encoding.ASCII.GetString(buffer).Split(";".ToCharArray()); return(new PDU { CH = (byte)Codes.HighCommand.OKACK, CL = 0, Seq = Convert.ToByte(partes[1]), IdDispositivo = Convert.ToInt16(partes[2]) }); } default: outcode = Codes.DecodeErrors.UnknownMessage; return(null); } }
/* el decodificador propio del protocolo que implemente */ public abstract PDU Decode(byte[] buffer, ref Codes.DecodeErrors outcode);