public Tuple <int, byte[]> CreatePacket(byte[] data) { int apid = -1; while (true) { if (data.Length < 14) { return(Tuple.Create(-1, data)); } OpenSatelliteProject.GRB.MSDU msdu = OpenSatelliteProject.GRB.MSDU.ParseMSDU(data); temporaryStorage[msdu.APID] = msdu; apid = msdu.APID; if (msdu.RemainingData.Length > 0 || msdu.Full) { data = msdu.RemainingData; msdu.RemainingData = new byte[0]; msduManager.FinishMSDU(msdu); temporaryStorage.Remove(msdu.APID); apid = -1; } else { break; } } return(Tuple.Create(apid, new byte[0])); }