public bool TryGetDeviceAllLinkDatabase(DeviceBase device) { if (device == null) { throw new ArgumentNullException("device"); } var records = new List <PlmAllLinkDatabaseRecord>(); plm.exceptionHandler(() => { plm.sendExtendedMessageAndWait4Response(device.DeviceId, Constants.MSG_FLAGS_DIRECT, 0x2F, 0x00); while (true) //this will bail when 0x6A returns a NACK { var record = plm.waitForSpecificMessageFrom(device.DeviceId, 0x51); var data = record.Slice(14, 24); if (data[4] == 0 && data[5] == 0 && data[6] == 0) { break; } records.Add(new PlmAllLinkDatabaseRecord(data)); } }); device.AllLinkDatabase = new PlmAllLinkDatabase(records); return(true); }