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);
        }