using System.Collections.Generic; namespace CoreBluetooth { /// /// A collection of data and associated behaviors that accomplish a function or feature of a device. /// https://developer.apple.com/documentation/corebluetooth/cbservice /// public class CBService { public string UUID { get; } /// /// The peripheral to which this service belongs. /// public CBPeripheral Peripheral { get; } List _characteristics = new List(); public virtual CBCharacteristic[] Characteristics { get { return _characteristics?.ToArray(); } set { throw new System.NotImplementedException("Not available on 'CBService', only available on CBMutableService."); } } internal CBService(string uuid, CBPeripheral peripheral = null) { this.UUID = uuid; this.Peripheral = peripheral; } internal CBCharacteristic FindCharacteristic(string uuid) => _characteristics.Find(c => c.UUID == uuid); internal void UpdateCharacteristics(CBCharacteristic[] characteristics) { if (_characteristics != null) { ClearCharacteristics(); } if (characteristics == null) { _characteristics = null; return; } foreach (var characteristic in characteristics) { characteristic.UpdateService(this); _characteristics.Add(characteristic); } } void ClearCharacteristics() { foreach (var characteristic in _characteristics) { characteristic.UpdateService(null); } _characteristics.Clear(); } public override string ToString() => $"CBService: UUID = {UUID}"; } }