|
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
using System.Threading.Tasks;
|
|
|
|
|
+using TeamAAS_VP.Models.Lights;
|
|
|
|
|
|
|
|
namespace TeamAAS_VP.Core.Lights
|
|
namespace TeamAAS_VP.Core.Lights
|
|
|
{
|
|
{
|
|
@@ -32,6 +33,11 @@ namespace TeamAAS_VP.Core.Lights
|
|
|
/// </summary>
|
|
/// </summary>
|
|
|
public int ChannelCount { get; }
|
|
public int ChannelCount { get; }
|
|
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
|
+ /// 控制器配置(只读)。
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ public LightControllerConfig Config { get; }
|
|
|
|
|
+
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// 指示控制器当前是否与设备连接。派生类应在连接/断开时维护此状态。
|
|
/// 指示控制器当前是否与设备连接。派生类应在连接/断开时维护此状态。
|
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -52,11 +58,13 @@ namespace TeamAAS_VP.Core.Lights
|
|
|
/// </summary>
|
|
/// </summary>
|
|
|
/// <param name="id">控制器标识符。</param>
|
|
/// <param name="id">控制器标识符。</param>
|
|
|
/// <param name="channelCount">通道数量,必须为非负整数。</param>
|
|
/// <param name="channelCount">通道数量,必须为非负整数。</param>
|
|
|
- protected LightControllerBase(int id,int channelCount)
|
|
|
|
|
|
|
+ /// <param name="config">控制器配置。</param>
|
|
|
|
|
+ protected LightControllerBase(int id,int channelCount, LightControllerConfig config)
|
|
|
{
|
|
{
|
|
|
Id = id;
|
|
Id = id;
|
|
|
ChannelCount = channelCount;
|
|
ChannelCount = channelCount;
|
|
|
ChannelsInternal = new List<ILightChannel>();
|
|
ChannelsInternal = new List<ILightChannel>();
|
|
|
|
|
+ Config = config;
|
|
|
InitializeChannels();
|
|
InitializeChannels();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -68,7 +76,7 @@ namespace TeamAAS_VP.Core.Lights
|
|
|
{
|
|
{
|
|
|
for (int i = 0; i < ChannelCount; i++)
|
|
for (int i = 0; i < ChannelCount; i++)
|
|
|
{
|
|
{
|
|
|
- ChannelsInternal.Add(CreateChannel(i));
|
|
|
|
|
|
|
+ ChannelsInternal.Add(CreateChannel(i, Config.ChannelConfigs[i].Name));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -77,8 +85,9 @@ namespace TeamAAS_VP.Core.Lights
|
|
|
/// 派生类必须实现此方法以返回实际的 <see cref="ILightChannel"/> 对象。
|
|
/// 派生类必须实现此方法以返回实际的 <see cref="ILightChannel"/> 对象。
|
|
|
/// </summary>
|
|
/// </summary>
|
|
|
/// <param name="index">通道索引(从 0 开始)。</param>
|
|
/// <param name="index">通道索引(从 0 开始)。</param>
|
|
|
|
|
+ /// <param name="channelName">通道名称。</param>
|
|
|
/// <returns>新创建的 <see cref="ILightChannel"/> 实例。</returns>
|
|
/// <returns>新创建的 <see cref="ILightChannel"/> 实例。</returns>
|
|
|
- protected abstract ILightChannel CreateChannel(int index);
|
|
|
|
|
|
|
+ protected abstract ILightChannel CreateChannel(int index,string channelName);
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// 异步连接到控制器对应的硬件或服务。
|
|
/// 异步连接到控制器对应的硬件或服务。
|