public HueBridgeDevice(Q42.HueApi.HueClient client, HueBridgeDescription desc, Adapter bridge) : base("PhilipsHue",
desc.Manufacturer, desc.ModelName, "", desc.SerialNumber, $"{desc.FriendlyName}\n{desc.ModelDescription} ({desc.ModelNumber})")
{
_client = client;
_description = desc;
_bridge = bridge;
_enableJoinMethod = new AdapterMethod("Link", "Puts the adapter into join mode", 0);
_enableJoinMethod.InvokeAction = Link;
_enableJoinMethod.OutputParams.Add(new AdapterValue("Result", "") { Data = "" });
Methods.Add(_enableJoinMethod);
//var UpdateMethod = new AdapterMethod("Update", "Looks for any removed or added lights", 0);
//UpdateMethod.InvokeAction = UpdateDeviceList;
//Methods.Add(UpdateMethod);
//Check if bridge is already linked and registered
bool isLinked = false;
var container = ApplicationData.Current.LocalSettings.CreateContainer("RegisteredHueBridges", ApplicationDataCreateDisposition.Always);
if(container.Values.ContainsKey(desc.SerialNumber))
{
var key = container.Values[desc.SerialNumber] as string;
if (key != null)
{
(client as Q42.HueApi.LocalHueClient)?.Initialize(key);
isLinked = true;
UpdateDeviceList();
}
}
_isLinkedProperty = new AdapterProperty("Link", "com.dotMorten.PhilipsHueDSB.PhilipsHue");
_isLinkedProperty.Attributes.Add(new AdapterAttribute("IsLinked", isLinked, E_ACCESS_TYPE.ACCESS_READ) { COVBehavior = SignalBehavior.Always });
this.Properties.Add(_isLinkedProperty);
if(desc.ModelName.EndsWith(" 2012")) //V1 bridge
Icon = new AdapterIcon("ms-appx:///AdapterLib/Icons/HueBridge1.png");
else if (desc.ModelName.EndsWith(" 2015")) //V2 bridge
Icon = new AdapterIcon("ms-appx:///AdapterLib/Icons/HueBridge2.png");
else //Fallback - use uri from descriptor
Icon = new AdapterIcon(desc.IconUri.OriginalString);
// change of value signal
CreateSignals();
}