public bool ReadFromFrame(Frame frame) { if (frame == null || frame.LengthDataUsed < 1) return false; byte header = frame.ReadByte(0); if (header != (byte)Message.Report) return false; nodeCount = (frame.LengthDataUsed - 1) / 6; if (frame.LengthDataUsed != Length()) return false; frame.DeleteFromFront(1); nodes = new Node[nodeCount]; for (int i = 0; i < nodeCount; i++) { nodes[i].addr = frame.ReadUInt16(0); frame.DeleteFromFront(2); nodes[i].rxBps = frame.ReadUInt32(0); frame.DeleteFromFront(4); } return true; }