ThinkingHome.DeviceModel
ThinkingHome.DeviceModel
DeviceHost Class
Реализация хоста устройств: сразу обе грани — IDeviceRegistry (регистрация драйверов) и IDeviceHost (потребительский .NET API). Хранит карту id → DeviceEntry и агрегированное событие изменений. Всё, что касается конкретного устройства (кэш, подписка на его изменения), инкапсулировано в DeviceEntry; хост общается с записью только через её публичный интерфейс, а записи передаёт два колбэка — сама запись про хост не знает.
public sealed class DeviceHost : ThinkingHome.DeviceModel.IDeviceRegistry, ThinkingHome.DeviceModel.IDeviceHostInheritance System.Object → DeviceHost
Implements IDeviceRegistry, IDeviceHost
Properties
DeviceHost.Count Property
Число зарегистрированных устройств.
public int Count { get; }Property Value
Methods
DeviceHost.ExecuteAsync(string, DeviceCommand, CancellationToken) Method
Исполнить команду над устройством (execute).
public System.Threading.Tasks.Task<ThinkingHome.DeviceModel.CommandOutcome> ExecuteAsync(string deviceId, ThinkingHome.DeviceModel.Commands.DeviceCommand command, System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));Parameters
deviceId System.String
command DeviceCommand
ct System.Threading.CancellationToken
Implements ExecuteAsync(string, DeviceCommand, CancellationToken)
Returns
System.Threading.Tasks.Task<CommandOutcome>
DeviceHost.GetDeviceAsync(string, CancellationToken) Method
Описание одного устройства или null, если его нет.
public System.Threading.Tasks.Task<ThinkingHome.DeviceModel.DeviceDescriptor?> GetDeviceAsync(string deviceId, System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));Parameters
deviceId System.String
ct System.Threading.CancellationToken
Implements GetDeviceAsync(string, CancellationToken)
Returns
System.Threading.Tasks.Task<DeviceDescriptor>
DeviceHost.GetDevicesAsync(CancellationToken) Method
Все зарегистрированные устройства (discovery). Async — может уходить по сети (remote host).
public System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyCollection<ThinkingHome.DeviceModel.DeviceDescriptor>> GetDevicesAsync(System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));Parameters
ct System.Threading.CancellationToken
Implements GetDevicesAsync(CancellationToken)
Returns
System.Threading.Tasks.Task<System.Collections.Generic.IReadOnlyCollection<DeviceDescriptor>>
DeviceHost.QueryAsync(string, CancellationToken) Method
Опросить состояние устройства (query).
public System.Threading.Tasks.Task<ThinkingHome.DeviceModel.State.DeviceSnapshot> QueryAsync(string deviceId, System.Threading.CancellationToken ct=default(System.Threading.CancellationToken));Parameters
deviceId System.String
ct System.Threading.CancellationToken
Implements QueryAsync(string, CancellationToken)
Returns
System.Threading.Tasks.Task<DeviceSnapshot>
DeviceHost.Register(IDevice) Method
Зарегистрировать устройство. Dispose() возвращаемого объекта снимает регистрацию.
public System.IDisposable Register(ThinkingHome.DeviceModel.IDevice device);Parameters
device IDevice
Implements Register(IDevice)
Returns
Events
DeviceHost.Changed Event
Агрегированный поток изменений состояния всех устройств (report).
public event Action<StateChange>? Changed;Implements Changed