mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-16 21:24:54 +00:00
Compare commits
1 Commits
1.14.2-hot
...
hotfix/fil
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
83c76340fc |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -389,4 +389,3 @@ MigrationBackup/
|
|||||||
# Fody - auto-generated XML schema
|
# Fody - auto-generated XML schema
|
||||||
FodyWeavers.xsd
|
FodyWeavers.xsd
|
||||||
essentials-framework/Essentials Interfaces/PepperDash_Essentials_Interfaces/PepperDash_Essentials_Interfaces.csproj
|
essentials-framework/Essentials Interfaces/PepperDash_Essentials_Interfaces/PepperDash_Essentials_Interfaces.csproj
|
||||||
.DS_Store
|
|
||||||
|
|||||||
@@ -226,182 +226,7 @@ namespace PepperDash.Essentials
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Initialize()
|
void Initialize()
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//if (DefaultAudioDevice is IBasicVolumeControls)
|
|
||||||
// DefaultVolumeControls = DefaultAudioDevice as IBasicVolumeControls;
|
|
||||||
//else if (DefaultAudioDevice is IHasVolumeDevice)
|
|
||||||
// DefaultVolumeControls = (DefaultAudioDevice as IHasVolumeDevice).VolumeDevice;
|
|
||||||
//CurrentVolumeControls = DefaultVolumeControls;
|
|
||||||
|
|
||||||
|
|
||||||
//// Combines call feedback from both codecs if available
|
|
||||||
//InCallFeedback = new BoolFeedback(() =>
|
|
||||||
//{
|
|
||||||
// bool inAudioCall = false;
|
|
||||||
// bool inVideoCall = false;
|
|
||||||
|
|
||||||
// if (AudioCodec != null)
|
|
||||||
// inAudioCall = AudioCodec.IsInCall;
|
|
||||||
|
|
||||||
// if (VideoCodec != null)
|
|
||||||
// inVideoCall = VideoCodec.IsInCall;
|
|
||||||
|
|
||||||
// if (inAudioCall || inVideoCall)
|
|
||||||
// return true;
|
|
||||||
// else
|
|
||||||
// return false;
|
|
||||||
//});
|
|
||||||
|
|
||||||
//SetupDisplays();
|
|
||||||
|
|
||||||
//// Get Microphone Privacy object, if any MUST HAPPEN AFTER setting InCallFeedback
|
|
||||||
//this.MicrophonePrivacy = EssentialsRoomConfigHelper.GetMicrophonePrivacy(PropertiesConfig, this);
|
|
||||||
|
|
||||||
//Debug.Console(2, this, "Microphone Privacy Config evaluated.");
|
|
||||||
|
|
||||||
//// Get emergency object, if any
|
|
||||||
//this.Emergency = EssentialsRoomConfigHelper.GetEmergency(PropertiesConfig, this);
|
|
||||||
|
|
||||||
//Debug.Console(2, this, "Emergency Config evaluated.");
|
|
||||||
|
|
||||||
|
|
||||||
//VideoCodec.CallStatusChange += (o, a) => this.InCallFeedback.FireUpdate();
|
|
||||||
//VideoCodec.IsReadyChange += (o, a) => { this.SetCodecExternalSources(); SetCodecBranding(); };
|
|
||||||
|
|
||||||
//if (AudioCodec != null)
|
|
||||||
// AudioCodec.CallStatusChange += (o, a) => this.InCallFeedback.FireUpdate();
|
|
||||||
|
|
||||||
//IsSharingFeedback = new BoolFeedback(() => VideoCodec.SharingContentIsOnFeedback.BoolValue);
|
|
||||||
//VideoCodec.SharingContentIsOnFeedback.OutputChange += (o, a) => this.IsSharingFeedback.FireUpdate();
|
|
||||||
|
|
||||||
//// link privacy to VC (for now?)
|
|
||||||
//PrivacyModeIsOnFeedback = new BoolFeedback(() => VideoCodec.PrivacyModeIsOnFeedback.BoolValue);
|
|
||||||
//VideoCodec.PrivacyModeIsOnFeedback.OutputChange += (o, a) => this.PrivacyModeIsOnFeedback.FireUpdate();
|
|
||||||
|
|
||||||
//CallTypeFeedback = new IntFeedback(() => 0);
|
|
||||||
|
|
||||||
SetSourceListKey();
|
|
||||||
|
|
||||||
//EnablePowerOnToLastSource = true;
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Debug.Console(0, this, "Error Initializing Room: {0}", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SetupDisplays()
|
|
||||||
{
|
|
||||||
//DefaultDisplay = DeviceManager.GetDeviceForKey(PropertiesConfig.DefaultDisplayKey) as IRoutingSinkWithSwitching;
|
|
||||||
|
|
||||||
var destinationList = ConfigReader.ConfigObject.DestinationLists[PropertiesConfig.DestinationListKey];
|
|
||||||
|
|
||||||
Displays.Clear();
|
|
||||||
|
|
||||||
foreach (var destination in destinationList)
|
|
||||||
{
|
|
||||||
var dest = destination.Value.SinkDevice as IRoutingSinkWithSwitching;
|
|
||||||
|
|
||||||
if (dest != null)
|
|
||||||
{
|
|
||||||
Displays.Add(dest);
|
|
||||||
}
|
|
||||||
|
|
||||||
var display = dest as DisplayBase;
|
|
||||||
if (display != null)
|
|
||||||
{
|
|
||||||
// Link power, warming, cooling to display
|
|
||||||
var dispTwoWay = display as IHasPowerControlWithFeedback;
|
|
||||||
if (dispTwoWay != null)
|
|
||||||
{
|
|
||||||
dispTwoWay.PowerIsOnFeedback.OutputChange -= PowerIsOnFeedback_OutputChange;
|
|
||||||
dispTwoWay.PowerIsOnFeedback.OutputChange += PowerIsOnFeedback_OutputChange;
|
|
||||||
|
|
||||||
if (dispTwoWay.PowerIsOnFeedback.BoolValue)
|
|
||||||
{
|
|
||||||
SetDefaultLevels();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
display.IsWarmingUpFeedback.OutputChange -= IsWarmingUpFeedback_OutputChange;
|
|
||||||
display.IsWarmingUpFeedback.OutputChange += IsWarmingUpFeedback_OutputChange;
|
|
||||||
|
|
||||||
display.IsCoolingDownFeedback.OutputChange -= IsCoolingDownFeedback_OutputChange;
|
|
||||||
display.IsCoolingDownFeedback.OutputChange += IsCoolingDownFeedback_OutputChange;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void IsCoolingDownFeedback_OutputChange(object sender, FeedbackEventArgs e)
|
|
||||||
{
|
|
||||||
IsCoolingDownFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
void IsWarmingUpFeedback_OutputChange(object sender, FeedbackEventArgs e)
|
|
||||||
{
|
|
||||||
IsWarmingUpFeedback.FireUpdate();
|
|
||||||
if (!IsWarmingUpFeedback.BoolValue)
|
|
||||||
(CurrentVolumeControls as IBasicVolumeWithFeedback).SetVolume(DefaultVolume);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PowerIsOnFeedback_OutputChange(object sender, FeedbackEventArgs e)
|
|
||||||
{
|
|
||||||
var dispTwoWay = sender as IHasPowerControlWithFeedback;
|
|
||||||
|
|
||||||
if (dispTwoWay != null && dispTwoWay.PowerIsOnFeedback.BoolValue != OnFeedback.BoolValue)
|
|
||||||
{
|
|
||||||
//if (!dispTwoWay.PowerIsOnFeedback.BoolValue)
|
|
||||||
// CurrentSourceInfo = null;
|
|
||||||
OnFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void SetSourceListKey()
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(PropertiesConfig.SourceListKey))
|
|
||||||
{
|
|
||||||
SetSourceListKey(PropertiesConfig.SourceListKey);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SetSourceListKey(Key);
|
|
||||||
}
|
|
||||||
|
|
||||||
SetUpVideoCodec();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void CustomSetConfig(DeviceConfig config)
|
|
||||||
{
|
|
||||||
var newPropertiesConfig = JsonConvert.DeserializeObject<EssentialsHuddleVtc1PropertiesConfig>(config.Properties.ToString());
|
|
||||||
|
|
||||||
if (newPropertiesConfig != null)
|
|
||||||
PropertiesConfig = newPropertiesConfig;
|
|
||||||
|
|
||||||
ConfigWriter.UpdateRoomConfig(config);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool Deactivate()
|
|
||||||
{
|
|
||||||
// Stop listining to this event when room deactivated
|
|
||||||
VideoCodec.IsReadyChange -= VideoCodec_IsReadyChange;
|
|
||||||
|
|
||||||
// Clear occupancy
|
|
||||||
RoomOccupancy = null;
|
|
||||||
|
|
||||||
Debug.Console(0, this, "Room '{0}' Deactivated", Name);
|
|
||||||
|
|
||||||
return base.Deactivate();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool CustomActivate()
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -442,37 +267,110 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
Debug.Console(2, this, "Emergency Config evaluated.");
|
Debug.Console(2, this, "Emergency Config evaluated.");
|
||||||
|
|
||||||
|
|
||||||
|
VideoCodec.CallStatusChange += (o, a) => this.InCallFeedback.FireUpdate();
|
||||||
|
VideoCodec.IsReadyChange += (o, a) => { this.SetCodecExternalSources(); SetCodecBranding(); };
|
||||||
|
|
||||||
if (AudioCodec != null)
|
if (AudioCodec != null)
|
||||||
{
|
AudioCodec.CallStatusChange += (o, a) => this.InCallFeedback.FireUpdate();
|
||||||
AudioCodec.CallStatusChange -= AudioCodec_CallStatusChange;
|
|
||||||
AudioCodec.CallStatusChange += AudioCodec_CallStatusChange;
|
|
||||||
}
|
|
||||||
|
|
||||||
VideoCodec.CallStatusChange -= VideoCodec_CallStatusChange;
|
|
||||||
VideoCodec.CallStatusChange += VideoCodec_CallStatusChange;
|
|
||||||
|
|
||||||
VideoCodec.IsReadyChange -= VideoCodec_IsReadyChange;
|
|
||||||
VideoCodec.IsReadyChange += VideoCodec_IsReadyChange;
|
|
||||||
|
|
||||||
VideoCodec.SharingContentIsOnFeedback.OutputChange -= SharingContentIsOnFeedback_OutputChange;
|
|
||||||
VideoCodec.SharingContentIsOnFeedback.OutputChange += SharingContentIsOnFeedback_OutputChange;
|
|
||||||
|
|
||||||
|
|
||||||
IsSharingFeedback = new BoolFeedback(() => VideoCodec.SharingContentIsOnFeedback.BoolValue);
|
IsSharingFeedback = new BoolFeedback(() => VideoCodec.SharingContentIsOnFeedback.BoolValue);
|
||||||
|
VideoCodec.SharingContentIsOnFeedback.OutputChange += (o, a) => this.IsSharingFeedback.FireUpdate();
|
||||||
|
|
||||||
// link privacy to VC (for now?)
|
// link privacy to VC (for now?)
|
||||||
PrivacyModeIsOnFeedback = new BoolFeedback(() => VideoCodec.PrivacyModeIsOnFeedback.BoolValue);
|
PrivacyModeIsOnFeedback = new BoolFeedback(() => VideoCodec.PrivacyModeIsOnFeedback.BoolValue);
|
||||||
|
VideoCodec.PrivacyModeIsOnFeedback.OutputChange += (o, a) => this.PrivacyModeIsOnFeedback.FireUpdate();
|
||||||
VideoCodec.PrivacyModeIsOnFeedback.OutputChange -= PrivacyModeIsOnFeedback_OutputChange;
|
|
||||||
VideoCodec.PrivacyModeIsOnFeedback.OutputChange += PrivacyModeIsOnFeedback_OutputChange;
|
|
||||||
|
|
||||||
CallTypeFeedback = new IntFeedback(() => 0);
|
CallTypeFeedback = new IntFeedback(() => 0);
|
||||||
|
|
||||||
SetSourceListKey();
|
SetSourceListKey();
|
||||||
|
|
||||||
EnablePowerOnToLastSource = true;
|
EnablePowerOnToLastSource = true;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.Console(0, this, "Error Initializing Room: {0}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetupDisplays()
|
||||||
|
{
|
||||||
|
//DefaultDisplay = DeviceManager.GetDeviceForKey(PropertiesConfig.DefaultDisplayKey) as IRoutingSinkWithSwitching;
|
||||||
|
|
||||||
|
var destinationList = ConfigReader.ConfigObject.DestinationLists[PropertiesConfig.DestinationListKey];
|
||||||
|
|
||||||
|
foreach (var destination in destinationList)
|
||||||
|
{
|
||||||
|
var dest = destination.Value.SinkDevice as IRoutingSinkWithSwitching;
|
||||||
|
|
||||||
|
if (dest != null)
|
||||||
|
{
|
||||||
|
Displays.Add(dest);
|
||||||
|
}
|
||||||
|
|
||||||
|
var display = dest as DisplayBase;
|
||||||
|
if (display != null)
|
||||||
|
{
|
||||||
|
// Link power, warming, cooling to display
|
||||||
|
var dispTwoWay = display as IHasPowerControlWithFeedback;
|
||||||
|
if (dispTwoWay != null)
|
||||||
|
{
|
||||||
|
dispTwoWay.PowerIsOnFeedback.OutputChange += (o, a) =>
|
||||||
|
{
|
||||||
|
if (dispTwoWay.PowerIsOnFeedback.BoolValue != OnFeedback.BoolValue)
|
||||||
|
{
|
||||||
|
//if (!dispTwoWay.PowerIsOnFeedback.BoolValue)
|
||||||
|
// CurrentSourceInfo = null;
|
||||||
|
OnFeedback.FireUpdate();
|
||||||
|
}
|
||||||
|
if (dispTwoWay.PowerIsOnFeedback.BoolValue)
|
||||||
|
{
|
||||||
|
SetDefaultLevels();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
display.IsWarmingUpFeedback.OutputChange += (o, a) =>
|
||||||
|
{
|
||||||
|
IsWarmingUpFeedback.FireUpdate();
|
||||||
|
if (!IsWarmingUpFeedback.BoolValue)
|
||||||
|
(CurrentVolumeControls as IBasicVolumeWithFeedback).SetVolume(DefaultVolume);
|
||||||
|
};
|
||||||
|
display.IsCoolingDownFeedback.OutputChange += (o, a) =>
|
||||||
|
{
|
||||||
|
IsCoolingDownFeedback.FireUpdate();
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetSourceListKey()
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(PropertiesConfig.SourceListKey))
|
||||||
|
{
|
||||||
|
SetSourceListKey(PropertiesConfig.SourceListKey);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetSourceListKey(Key);
|
||||||
|
}
|
||||||
|
|
||||||
|
SetCodecExternalSources();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void CustomSetConfig(DeviceConfig config)
|
||||||
|
{
|
||||||
|
var newPropertiesConfig = JsonConvert.DeserializeObject<EssentialsHuddleVtc1PropertiesConfig>(config.Properties.ToString());
|
||||||
|
|
||||||
|
if (newPropertiesConfig != null)
|
||||||
|
PropertiesConfig = newPropertiesConfig;
|
||||||
|
|
||||||
|
ConfigWriter.UpdateRoomConfig(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CustomActivate()
|
||||||
|
{
|
||||||
// Add Occupancy object from config
|
// Add Occupancy object from config
|
||||||
if (PropertiesConfig.Occupancy != null)
|
if (PropertiesConfig.Occupancy != null)
|
||||||
{
|
{
|
||||||
@@ -487,50 +385,9 @@ namespace PepperDash.Essentials
|
|||||||
this.DefaultSourceItem = PropertiesConfig.DefaultSourceItem;
|
this.DefaultSourceItem = PropertiesConfig.DefaultSourceItem;
|
||||||
this.DefaultVolume = (ushort)(PropertiesConfig.Volumes.Master.Level * 65535 / 100);
|
this.DefaultVolume = (ushort)(PropertiesConfig.Volumes.Master.Level * 65535 / 100);
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Debug.Console(0, this, "Error Activiating Room: {0}", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Debug.Console(0, this, "Room '{0}' Activated", Name);
|
|
||||||
return base.CustomActivate();
|
return base.CustomActivate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioCodec_CallStatusChange(object sender, CodecCallStatusItemChangeEventArgs e)
|
|
||||||
{
|
|
||||||
InCallFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
void PrivacyModeIsOnFeedback_OutputChange(object sender, FeedbackEventArgs e)
|
|
||||||
{
|
|
||||||
PrivacyModeIsOnFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
void VideoCodec_IsReadyChange(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SetUpVideoCodec();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetUpVideoCodec()
|
|
||||||
{
|
|
||||||
SetCodecExternalSources();
|
|
||||||
SetCodecBranding();
|
|
||||||
}
|
|
||||||
|
|
||||||
void VideoCodec_CallStatusChange(object sender, CodecCallStatusItemChangeEventArgs e)
|
|
||||||
{
|
|
||||||
InCallFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SharingContentIsOnFeedback_OutputChange(object sender, FeedbackEventArgs e)
|
|
||||||
{
|
|
||||||
IsSharingFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -923,8 +780,6 @@ namespace PepperDash.Essentials
|
|||||||
videoCodecWithExternalSwitching.SetExternalSourceState(kvp.Key, PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.eExternalSourceMode.Ready);
|
videoCodecWithExternalSwitching.SetExternalSourceState(kvp.Key, PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.eExternalSourceMode.Ready);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug.Console(1, this, "Successfully set up codec external sources for room: {0}", Name);
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,8 +19,6 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
public class EssentialsHuddleVtc1Room : EssentialsRoomBase, IEssentialsHuddleVtc1Room
|
public class EssentialsHuddleVtc1Room : EssentialsRoomBase, IEssentialsHuddleVtc1Room
|
||||||
{
|
{
|
||||||
private IEssentialsRoomCombiner _roomCombiner;
|
|
||||||
|
|
||||||
private bool _codecExternalSourceChange;
|
private bool _codecExternalSourceChange;
|
||||||
public event EventHandler<VolumeDeviceChangeEventArgs> CurrentVolumeDeviceChange;
|
public event EventHandler<VolumeDeviceChangeEventArgs> CurrentVolumeDeviceChange;
|
||||||
public event SourceInfoChangeHandler CurrentSourceChange;
|
public event SourceInfoChangeHandler CurrentSourceChange;
|
||||||
@@ -236,7 +234,7 @@ namespace PepperDash.Essentials
|
|||||||
throw new ArgumentNullException("DefaultAudioDevice cannot be null");
|
throw new ArgumentNullException("DefaultAudioDevice cannot be null");
|
||||||
}
|
}
|
||||||
|
|
||||||
Initialize();
|
InitializeRoom();
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -244,64 +242,7 @@ namespace PepperDash.Essentials
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InitializeRoom()
|
||||||
private void SetupEnvironmentalControlDevices()
|
|
||||||
{
|
|
||||||
if (PropertiesConfig.Environment != null)
|
|
||||||
{
|
|
||||||
if (PropertiesConfig.Environment.Enabled)
|
|
||||||
{
|
|
||||||
EnvironmentalControlDevices.Clear();
|
|
||||||
|
|
||||||
foreach (var d in PropertiesConfig.Environment.DeviceKeys)
|
|
||||||
{
|
|
||||||
var envDevice = DeviceManager.GetDeviceForKey(d) as EssentialsDevice;
|
|
||||||
EnvironmentalControlDevices.Add(envDevice);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void SetSourceListKey()
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(PropertiesConfig.SourceListKey))
|
|
||||||
{
|
|
||||||
SetSourceListKey(PropertiesConfig.SourceListKey);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SetSourceListKey(Key);
|
|
||||||
}
|
|
||||||
|
|
||||||
SetUpVideoCodec();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void CustomSetConfig(DeviceConfig config)
|
|
||||||
{
|
|
||||||
var newPropertiesConfig = JsonConvert.DeserializeObject<EssentialsHuddleVtc1PropertiesConfig>(config.Properties.ToString());
|
|
||||||
|
|
||||||
if (newPropertiesConfig != null)
|
|
||||||
PropertiesConfig = newPropertiesConfig;
|
|
||||||
|
|
||||||
ConfigWriter.UpdateRoomConfig(config);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool Deactivate()
|
|
||||||
{
|
|
||||||
|
|
||||||
// Stop listining to this event when room deactivated
|
|
||||||
VideoCodec.IsReadyChange -= VideoCodec_IsReadyChange;
|
|
||||||
|
|
||||||
// Clear occupancy
|
|
||||||
RoomOccupancy = null;
|
|
||||||
|
|
||||||
Debug.Console(0, this, "Room '{0}' Deactivated", Name);
|
|
||||||
|
|
||||||
return base.Deactivate();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool CustomActivate()
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -337,15 +278,32 @@ namespace PepperDash.Essentials
|
|||||||
var dispTwoWay = disp as IHasPowerControlWithFeedback;
|
var dispTwoWay = disp as IHasPowerControlWithFeedback;
|
||||||
if (dispTwoWay != null)
|
if (dispTwoWay != null)
|
||||||
{
|
{
|
||||||
dispTwoWay.PowerIsOnFeedback.OutputChange -= PowerIsOnFeedback_OutputChange;
|
dispTwoWay.PowerIsOnFeedback.OutputChange += (o, a) =>
|
||||||
dispTwoWay.PowerIsOnFeedback.OutputChange += PowerIsOnFeedback_OutputChange;
|
{
|
||||||
|
if (dispTwoWay.PowerIsOnFeedback.BoolValue != OnFeedback.BoolValue)
|
||||||
|
{
|
||||||
|
if (!dispTwoWay.PowerIsOnFeedback.BoolValue)
|
||||||
|
CurrentSourceInfo = null;
|
||||||
|
OnFeedback.FireUpdate();
|
||||||
|
}
|
||||||
|
if (dispTwoWay.PowerIsOnFeedback.BoolValue)
|
||||||
|
{
|
||||||
|
SetDefaultLevels();
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
disp.IsWarmingUpFeedback.OutputChange -= IsWarmingUpFeedback_OutputChange;
|
disp.IsWarmingUpFeedback.OutputChange += (o, a) =>
|
||||||
disp.IsWarmingUpFeedback.OutputChange += IsWarmingUpFeedback_OutputChange;
|
{
|
||||||
|
IsWarmingUpFeedback.FireUpdate();
|
||||||
|
if (!IsWarmingUpFeedback.BoolValue)
|
||||||
|
(CurrentVolumeControls as IBasicVolumeWithFeedback).SetVolume(DefaultVolume);
|
||||||
|
};
|
||||||
|
disp.IsCoolingDownFeedback.OutputChange += (o, a) =>
|
||||||
|
{
|
||||||
|
IsCoolingDownFeedback.FireUpdate();
|
||||||
|
};
|
||||||
|
|
||||||
disp.IsCoolingDownFeedback.OutputChange -= IsCoolingDownFeedback_OutputChange;
|
|
||||||
disp.IsCoolingDownFeedback.OutputChange += IsCoolingDownFeedback_OutputChange;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -360,29 +318,19 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
Debug.Console(2, this, "Emergency Config evaluated.");
|
Debug.Console(2, this, "Emergency Config evaluated.");
|
||||||
|
|
||||||
|
|
||||||
|
VideoCodec.CallStatusChange += (o, a) => this.InCallFeedback.FireUpdate();
|
||||||
|
VideoCodec.IsReadyChange += (o, a) => { this.SetCodecExternalSources(); SetCodecBranding(); };
|
||||||
|
|
||||||
if (AudioCodec != null)
|
if (AudioCodec != null)
|
||||||
{
|
AudioCodec.CallStatusChange += (o, a) => this.InCallFeedback.FireUpdate();
|
||||||
AudioCodec.CallStatusChange -= AudioCodec_CallStatusChange;
|
|
||||||
AudioCodec.CallStatusChange += AudioCodec_CallStatusChange;
|
|
||||||
}
|
|
||||||
|
|
||||||
VideoCodec.CallStatusChange -= VideoCodec_CallStatusChange;
|
|
||||||
VideoCodec.CallStatusChange += VideoCodec_CallStatusChange;
|
|
||||||
|
|
||||||
VideoCodec.IsReadyChange -= VideoCodec_IsReadyChange;
|
|
||||||
VideoCodec.IsReadyChange += VideoCodec_IsReadyChange;
|
|
||||||
|
|
||||||
VideoCodec.SharingContentIsOnFeedback.OutputChange -= SharingContentIsOnFeedback_OutputChange;
|
|
||||||
VideoCodec.SharingContentIsOnFeedback.OutputChange += SharingContentIsOnFeedback_OutputChange;
|
|
||||||
|
|
||||||
|
|
||||||
IsSharingFeedback = new BoolFeedback(() => VideoCodec.SharingContentIsOnFeedback.BoolValue);
|
IsSharingFeedback = new BoolFeedback(() => VideoCodec.SharingContentIsOnFeedback.BoolValue);
|
||||||
|
VideoCodec.SharingContentIsOnFeedback.OutputChange += (o, a) => this.IsSharingFeedback.FireUpdate();
|
||||||
|
|
||||||
// link privacy to VC (for now?)
|
// link privacy to VC (for now?)
|
||||||
PrivacyModeIsOnFeedback = new BoolFeedback(() => VideoCodec.PrivacyModeIsOnFeedback.BoolValue);
|
PrivacyModeIsOnFeedback = new BoolFeedback(() => VideoCodec.PrivacyModeIsOnFeedback.BoolValue);
|
||||||
|
VideoCodec.PrivacyModeIsOnFeedback.OutputChange += (o, a) => this.PrivacyModeIsOnFeedback.FireUpdate();
|
||||||
VideoCodec.PrivacyModeIsOnFeedback.OutputChange -= PrivacyModeIsOnFeedback_OutputChange;
|
|
||||||
VideoCodec.PrivacyModeIsOnFeedback.OutputChange += PrivacyModeIsOnFeedback_OutputChange;
|
|
||||||
|
|
||||||
CallTypeFeedback = new IntFeedback(() => 0);
|
CallTypeFeedback = new IntFeedback(() => 0);
|
||||||
|
|
||||||
@@ -391,8 +339,55 @@ namespace PepperDash.Essentials
|
|||||||
SetSourceListKey();
|
SetSourceListKey();
|
||||||
|
|
||||||
EnablePowerOnToLastSource = true;
|
EnablePowerOnToLastSource = true;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.Console(0, this, "Error Initializing Room: {0}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetupEnvironmentalControlDevices()
|
||||||
|
{
|
||||||
|
if (PropertiesConfig.Environment != null)
|
||||||
|
{
|
||||||
|
if (PropertiesConfig.Environment.Enabled)
|
||||||
|
{
|
||||||
|
foreach (var d in PropertiesConfig.Environment.DeviceKeys)
|
||||||
|
{
|
||||||
|
var envDevice = DeviceManager.GetDeviceForKey(d) as EssentialsDevice;
|
||||||
|
EnvironmentalControlDevices.Add(envDevice);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void SetSourceListKey()
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(PropertiesConfig.SourceListKey))
|
||||||
|
{
|
||||||
|
SetSourceListKey(PropertiesConfig.SourceListKey);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetSourceListKey(Key);
|
||||||
|
}
|
||||||
|
|
||||||
|
SetCodecExternalSources();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void CustomSetConfig(DeviceConfig config)
|
||||||
|
{
|
||||||
|
var newPropertiesConfig = JsonConvert.DeserializeObject<EssentialsHuddleVtc1PropertiesConfig>(config.Properties.ToString());
|
||||||
|
|
||||||
|
if (newPropertiesConfig != null)
|
||||||
|
PropertiesConfig = newPropertiesConfig;
|
||||||
|
|
||||||
|
ConfigWriter.UpdateRoomConfig(config);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CustomActivate()
|
||||||
|
{
|
||||||
// Add Occupancy object from config
|
// Add Occupancy object from config
|
||||||
if (PropertiesConfig.Occupancy != null)
|
if (PropertiesConfig.Occupancy != null)
|
||||||
{
|
{
|
||||||
@@ -406,77 +401,10 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
this.DefaultSourceItem = PropertiesConfig.DefaultSourceItem;
|
this.DefaultSourceItem = PropertiesConfig.DefaultSourceItem;
|
||||||
this.DefaultVolume = (ushort)(PropertiesConfig.Volumes.Master.Level * 65535 / 100);
|
this.DefaultVolume = (ushort)(PropertiesConfig.Volumes.Master.Level * 65535 / 100);
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Debug.Console(0, this, "Error Activiating Room: {0}", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
Debug.Console(0, this, "Room '{0}' Activated", Name);
|
|
||||||
return base.CustomActivate();
|
return base.CustomActivate();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrivacyModeIsOnFeedback_OutputChange(object sender, FeedbackEventArgs e)
|
|
||||||
{
|
|
||||||
PrivacyModeIsOnFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SharingContentIsOnFeedback_OutputChange(object sender, FeedbackEventArgs e)
|
|
||||||
{
|
|
||||||
IsSharingFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AudioCodec_CallStatusChange(object sender, CodecCallStatusItemChangeEventArgs e)
|
|
||||||
{
|
|
||||||
InCallFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
void VideoCodec_IsReadyChange(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
SetUpVideoCodec();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetUpVideoCodec()
|
|
||||||
{
|
|
||||||
SetCodecExternalSources();
|
|
||||||
SetCodecBranding();
|
|
||||||
}
|
|
||||||
|
|
||||||
void VideoCodec_CallStatusChange(object sender, CodecCallStatusItemChangeEventArgs e)
|
|
||||||
{
|
|
||||||
InCallFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
void IsCoolingDownFeedback_OutputChange(object sender, FeedbackEventArgs e)
|
|
||||||
{
|
|
||||||
IsCoolingDownFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
void IsWarmingUpFeedback_OutputChange(object sender, FeedbackEventArgs e)
|
|
||||||
{
|
|
||||||
IsWarmingUpFeedback.FireUpdate();
|
|
||||||
if (!IsWarmingUpFeedback.BoolValue)
|
|
||||||
(CurrentVolumeControls as IBasicVolumeWithFeedback).SetVolume(DefaultVolume);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void PowerIsOnFeedback_OutputChange(object sender, FeedbackEventArgs e)
|
|
||||||
{
|
|
||||||
var dispTwoWay = DefaultDisplay as IHasPowerControlWithFeedback;
|
|
||||||
|
|
||||||
if (dispTwoWay.PowerIsOnFeedback.BoolValue != OnFeedback.BoolValue)
|
|
||||||
{
|
|
||||||
if (!dispTwoWay.PowerIsOnFeedback.BoolValue)
|
|
||||||
CurrentSourceInfo = null;
|
|
||||||
OnFeedback.FireUpdate();
|
|
||||||
}
|
|
||||||
if (dispTwoWay.PowerIsOnFeedback.BoolValue)
|
|
||||||
{
|
|
||||||
SetDefaultLevels();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -904,8 +832,6 @@ namespace PepperDash.Essentials
|
|||||||
videoCodecWithExternalSwitching.SetExternalSourceState(kvp.Key, PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.eExternalSourceMode.Ready);
|
videoCodecWithExternalSwitching.SetExternalSourceState(kvp.Key, PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.eExternalSourceMode.Ready);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Debug.Console(1, this, "Successfully set up codec external sources for room: {0}", Name);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using Crestron.SimplSharp;
|
using Crestron.SimplSharp;
|
||||||
using PepperDash.Core;
|
using PepperDash.Core;
|
||||||
using PepperDash.Essentials.Core;
|
using PepperDash.Essentials.Core;
|
||||||
@@ -9,7 +8,6 @@ namespace PepperDash_Essentials_Core.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface for any device that is able to control it'spower and has a configurable reboot time
|
/// Interface for any device that is able to control it'spower and has a configurable reboot time
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Obsolete("PepperDash_Essentials_Core.Devices is Deprecated - use PepperDash.Essentials.Core")]
|
|
||||||
public interface IHasPowerCycle : IKeyName, IHasPowerControlWithFeedback
|
public interface IHasPowerCycle : IKeyName, IHasPowerControlWithFeedback
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -26,7 +24,6 @@ namespace PepperDash_Essentials_Core.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface for any device that contains a collection of IHasPowerReboot Devices
|
/// Interface for any device that contains a collection of IHasPowerReboot Devices
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Obsolete("PepperDash_Essentials_Core.Devices is Deprecated - use PepperDash.Essentials.Core")]
|
|
||||||
public interface IHasControlledPowerOutlets : IKeyName
|
public interface IHasControlledPowerOutlets : IKeyName
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -1,87 +0,0 @@
|
|||||||
using Crestron.SimplSharp;
|
|
||||||
using PepperDash.Core;
|
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Core
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Interface for any device that has a battery that can be monitored
|
|
||||||
/// </summary>
|
|
||||||
public interface IHasBatteryStats : IKeyName
|
|
||||||
{
|
|
||||||
int BatteryPercentage { get; }
|
|
||||||
int BatteryCautionThresholdPercentage { get; }
|
|
||||||
int BatteryWarningThresholdPercentage { get; }
|
|
||||||
BoolFeedback BatteryIsWarningFeedback { get; }
|
|
||||||
BoolFeedback BatteryIsCautionFeedback { get; }
|
|
||||||
BoolFeedback BatteryIsOkFeedback { get; }
|
|
||||||
IntFeedback BatteryPercentageFeedback { get; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Interface for any device that has a battery that can be monitored and the ability to charge and discharge
|
|
||||||
/// </summary>
|
|
||||||
public interface IHasBatteryCharging : IHasBatteryStats
|
|
||||||
{
|
|
||||||
BoolFeedback BatteryIsCharging { get; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Interface for any device that has multiple batteries that can be monitored
|
|
||||||
/// </summary>
|
|
||||||
public interface IHasBatteries : IKeyName
|
|
||||||
{
|
|
||||||
ReadOnlyDictionary<string, IHasBatteryStats> Batteries { get; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface IHasBatteryStatsExtended : IHasBatteryStats
|
|
||||||
{
|
|
||||||
int InputVoltage { get; }
|
|
||||||
int OutputVoltage { get; }
|
|
||||||
int InptuCurrent { get; }
|
|
||||||
int OutputCurrent { get; }
|
|
||||||
|
|
||||||
IntFeedback InputVoltageFeedback { get; }
|
|
||||||
IntFeedback OutputVoltageFeedback { get; }
|
|
||||||
IntFeedback InputCurrentFeedback { get; }
|
|
||||||
IntFeedback OutputCurrentFeedback { get; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Interface for any device that is able to control its power, has a configurable reboot time, and has batteries that can be monitored
|
|
||||||
/// </summary>
|
|
||||||
public interface IHasPowerCycleWithBattery : IHasPowerCycle, IHasBatteryStats
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Interface for any device that is able to control it's power and has a configurable reboot time
|
|
||||||
/// </summary>
|
|
||||||
public interface IHasPowerCycle : IKeyName, IHasPowerControlWithFeedback
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Delay between power off and power on for reboot
|
|
||||||
/// </summary>
|
|
||||||
int PowerCycleTimeMs { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Reboot outlet
|
|
||||||
/// </summary>
|
|
||||||
void PowerCycle();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Interface for any device that contains a collection of IHasPowerReboot Devices
|
|
||||||
/// </summary>
|
|
||||||
public interface IHasControlledPowerOutlets : IKeyName
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Collection of IPduOutlets
|
|
||||||
/// </summary>
|
|
||||||
ReadOnlyDictionary<int, IHasPowerCycle> PduOutlets { get; }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -85,33 +85,19 @@ namespace PepperDash.Essentials.Core
|
|||||||
{
|
{
|
||||||
if (_partitionSensor.IsOnline == false) return;
|
if (_partitionSensor.IsOnline == false) return;
|
||||||
|
|
||||||
// Default to enable
|
|
||||||
_partitionSensor.Enable.BoolValue = true;
|
|
||||||
|
|
||||||
Debug.Console(1, this, "Attempting to apply settings to sensor from config");
|
Debug.Console(1, this, "Attempting to apply settings to sensor from config");
|
||||||
|
|
||||||
if (PropertiesConfig.Sensitivity != null)
|
if (PropertiesConfig.Sensitivity != null)
|
||||||
{
|
{
|
||||||
Debug.Console(1, this, "Sensitivity found, attempting to set value '{0}' from config",
|
Debug.Console(1, this, "Sensitivity found, attempting to set value '{0}' from config",
|
||||||
PropertiesConfig.Sensitivity);
|
PropertiesConfig.Sensitivity);
|
||||||
_partitionSensor.Sensitivity.UShortValue = (ushort)PropertiesConfig.Sensitivity;
|
_partitionSensor.Sensitivity.UShortValue = (ushort) PropertiesConfig.Sensitivity;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Debug.Console(1, this, "Sensitivity null, no value specified in config");
|
Debug.Console(1, this, "Sensitivity null, no value specified in config");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PropertiesConfig.Enable != null)
|
|
||||||
{
|
|
||||||
Debug.Console(1, this, "Enable found, attempting to set value '{0}' from config",
|
|
||||||
PropertiesConfig.Enable);
|
|
||||||
_partitionSensor.Enable.BoolValue = (bool)PropertiesConfig.Enable;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Debug.Console(1, this, "Enable null, no value specified in config");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PartitionSensor_BaseEvent(GenericBase device, BaseEventArgs args)
|
private void PartitionSensor_BaseEvent(GenericBase device, BaseEventArgs args)
|
||||||
|
|||||||
@@ -17,8 +17,5 @@ namespace PepperDash_Essentials_Core.PartitionSensor
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
[JsonProperty("sensitivity")]
|
[JsonProperty("sensitivity")]
|
||||||
public ushort? Sensitivity { get; set; }
|
public ushort? Sensitivity { get; set; }
|
||||||
|
|
||||||
[JsonProperty("enable")]
|
|
||||||
public bool? Enable { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -200,7 +200,6 @@
|
|||||||
<Compile Include="Crestron IO\Relay\GenericRelayDevice.cs" />
|
<Compile Include="Crestron IO\Relay\GenericRelayDevice.cs" />
|
||||||
<Compile Include="Crestron IO\Relay\ISwitchedOutput.cs" />
|
<Compile Include="Crestron IO\Relay\ISwitchedOutput.cs" />
|
||||||
<Compile Include="Crestron IO\StatusSign\StatusSignController.cs" />
|
<Compile Include="Crestron IO\StatusSign\StatusSignController.cs" />
|
||||||
<Compile Include="Devices\PowerInterfaces.cs" />
|
|
||||||
<Compile Include="Web\RequestHandlers\AppDebugRequestHandler.cs" />
|
<Compile Include="Web\RequestHandlers\AppDebugRequestHandler.cs" />
|
||||||
<Compile Include="Web\RequestHandlers\GetFeedbacksForDeviceRequestHandler.cs" />
|
<Compile Include="Web\RequestHandlers\GetFeedbacksForDeviceRequestHandler.cs" />
|
||||||
<Compile Include="Web\EssentialsWebApiHelpers.cs" />
|
<Compile Include="Web\EssentialsWebApiHelpers.cs" />
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ namespace PepperDash.Essentials.Core
|
|||||||
public BoolFeedback IsWarmingUpFeedback { get; private set; }
|
public BoolFeedback IsWarmingUpFeedback { get; private set; }
|
||||||
public BoolFeedback IsCoolingDownFeedback { get; private set; }
|
public BoolFeedback IsCoolingDownFeedback { get; private set; }
|
||||||
|
|
||||||
public IOccupancyStatusProvider RoomOccupancy { get; protected set; }
|
public IOccupancyStatusProvider RoomOccupancy { get; private set; }
|
||||||
|
|
||||||
public bool OccupancyStatusProviderIsRemote { get; private set; }
|
public bool OccupancyStatusProviderIsRemote { get; private set; }
|
||||||
|
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ namespace PepperDash.Essentials.DM.AirMedia
|
|||||||
else
|
else
|
||||||
AirMedia.DisplayControl.DisableAutomaticRouting();
|
AirMedia.DisplayControl.DisableAutomaticRouting();
|
||||||
|
|
||||||
return base.CustomActivate();
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
|
public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
<packages>
|
<packages>
|
||||||
<package id="PepperDashCore" version="1.3.0" targetFramework="net35" allowedVersions="[1.0,2.0)"/>
|
<package id="PepperDashCore" version="1.2.1" targetFramework="net35" allowedVersions="[1.0,2.0)"/>
|
||||||
</packages>
|
</packages>
|
||||||
|
|||||||
Reference in New Issue
Block a user