/// <summary>
        /// Returns true if the provided advertisement passes the scan filter
        /// </summary>
        /// <param name="advertisement"></param>
        /// <returns></returns>
        public Boolean Passes(IBleAdvertisement advertisement)
        {
            if (m_advertisedServiceIsInList != null && m_advertisedServiceIsInList.Count > 0)
            {
                var passes = false;
                foreach (var guid in m_advertisedServiceIsInList)
                {
                    if (advertisement.Services.Contains(guid))
                    {
                        passes = true;
                        break;
                    }
                }
                if (!passes)
                {
                    return(false);
                }
            }

            if (AdvertisedDeviceName != null && advertisement.DeviceName != AdvertisedDeviceName)
            {
                return(false);
            }

            if (AdvertisedManufacturerCompanyId != null &&
                advertisement.ManufacturerSpecificData.All(x => x.CompanyId != AdvertisedManufacturerCompanyId.Value))
            {
                return(false);
            }

            return(true);
        }
示例#2
0
        /// <summary>
        /// Returns true if the provided advertisement passes the scan filter
        /// </summary>
        /// <param name="advertisement"></param>
        /// <returns></returns>
        public Boolean Passes(IBleAdvertisement advertisement)
        {
            if (m_advertisedServiceIsInList != null && m_advertisedServiceIsInList.Count > 0 &&
                !m_advertisedServiceIsInList.Any(guid => advertisement.Services.Contains(guid)))
            {
                return(false);
            }

            if (AdvertisedDeviceName != null && advertisement.DeviceName != AdvertisedDeviceName)
            {
                return(false);
            }

            if (AdvertisedManufacturerCompanyId != null &&
                advertisement.ManufacturerSpecificData.All(x => x.CompanyId != AdvertisedManufacturerCompanyId.Value))
            {
                return(false);
            }

            return(true);
        }
示例#3
0
        /// <summary>
        /// Returns true if the provided advertisement passes the scan filter
        /// </summary>
        public static Boolean Passes(this IScanFilter filter, IBleAdvertisement advertisement)
        {
            var services = filter.AdvertisedServiceIsInList;

            if (services != null && services.Count > 0 && !services.Any(guid => advertisement.Services.Contains(guid)))
            {
                return(false);
            }

            if (filter.AdvertisedDeviceName != null && advertisement.DeviceName != filter.AdvertisedDeviceName)
            {
                return(false);
            }

            var companyId = filter.AdvertisedManufacturerCompanyId;

            // ReSharper disable once ConvertIfStatementToReturnStatement
            if (companyId != null && advertisement.ManufacturerSpecificData.All(x => x.CompanyId != companyId.Value))
            {
                return(false);
            }

            return(true);
        }