public UAVMetaObject(long objID, String name, UAVDataObject parent) : base(objID, true, name) { this.parent = parent; ownMetadata = new Metadata(); ownMetadata.flags = 0; // TODO: Fix flags ownMetadata.gcsTelemetryUpdatePeriod = 0; ownMetadata.loggingUpdatePeriod = 0; List<String> modesBitField = new List<String>(); modesBitField.Add("FlightReadOnly"); modesBitField.Add("GCSReadOnly"); modesBitField.Add("FlightTelemetryAcked"); modesBitField.Add("GCSTelemetryAcked"); modesBitField.Add("FlightUpdatePeriodic"); modesBitField.Add("FlightUpdateOnChange"); modesBitField.Add("GCSUpdatePeriodic"); modesBitField.Add("GCSUpdateOnChange"); List<UAVObjectField> fields = new List<UAVObjectField>(); fields.Add( new UAVObjectField<bool>("Modes", "", 1, modesBitField, parent) ); fields.Add(new UAVObjectField<UInt16>("Flight Telemetry Update Period", "ms", 1, null, parent)); fields.Add(new UAVObjectField<UInt16>("GCS Telemetry Update Period", "ms", 1, null, parent)); fields.Add(new UAVObjectField<UInt16>("Logging Update Period", "ms", 1, null, parent)); int numBytes = fields.Sum(j=>j.getNumBytes()); // Initialize object // Initialize parent base.initialize(0); initializeFields(fields, new ByteBuffer(numBytes), numBytes); // Setup metadata of parent parentMetadata = parent.getDefaultMetadata(); }