public TurnOnOffDevice(string vendorName, string model, string version, string serialNumber, string description, ITurnOnOffModule module) : base(module.Name, vendorName, model, version, serialNumber, description) { Module = module; AdapterBusObject busObject = new AdapterBusObject("Guybrush"); Interface = new AdapterInterface("com.guybrush.devices.onoffcontrol"); var attr = new AdapterAttribute("Status", module.Status) { COVBehavior = SignalBehavior.Always, Access = E_ACCESS_TYPE.ACCESS_READ }; attr.Annotations.Add("com.guybrush.devices.onoffcontrol.status", "The device status"); Interface.Properties.Add(attr); List <IAdapterValue> inputs = new List <IAdapterValue>(1); inputs.Add(new AdapterValue("TargetStatus", false)); AdapterMethod method = new AdapterMethod("Switch", "Switches devices on or off.", ChangeStatus, inputs); Interface.Methods.Add(method); busObject.Interfaces.Add(Interface); BusObjects.Add(busObject); CreateEmitSignalChangedSignal(); Module.ValueChanged += Module_ValueChanged; }
public void AddCondition(AdapterMethod sender, IReadOnlyDictionary <string, object> inputParams, IDictionary <string, object> outputParams) { var condition = new ConditionBuilder().BuildCondition((DeviceType)inputParams["SourceDeviceType"], (string)inputParams["SourceDevice"], (string)inputParams["TargetDevice"], (int)inputParams["RequiredValue"], (ConditionType)inputParams["ConditionType"], (int)inputParams["TargetValue"]); _conditionManager.RegisterCondition(condition); }
private async void ChangeStatus(AdapterMethod sender, IReadOnlyDictionary <string, object> inputParams, IDictionary <string, object> outputParams) { await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { bool targetStatus = (bool)inputParams["TargetStatus"]; Module.Status = targetStatus; }); }
public SmarthomeAdapter(BridgeConfiguration configuration, ConditionManager conditionMgr) : base(configuration) { _conditionManager = conditionMgr; _abo = new AdapterBusObject("Guybrush"); AdapterInterface conditionInterface = new AdapterInterface("com.guybrush.station.conditions"); var addConInputParams = new List <AdapterValue>(); addConInputParams.Add(new AdapterValue("SourceDeviceType", -1)); addConInputParams.Add(new AdapterValue("SourceDevice", "")); addConInputParams.Add(new AdapterValue("TargetDevice", "")); addConInputParams.Add(new AdapterValue("RequiredValue", -1)); addConInputParams.Add(new AdapterValue("ConditionType", -1)); addConInputParams.Add(new AdapterValue("TargetValue", -1)); var addConOutParams = new List <AdapterValue>(); addConOutParams.Add(new AdapterValue("Response", "")); AdapterMethod addCondAttr = new AdapterMethod("AddCondition", "Calling this method will add new condition.", AddCondition, addConInputParams, addConOutParams); conditionInterface.Methods.Add(addCondAttr); var getCondOutParams = new List <AdapterValue>(); getCondOutParams.Add(new AdapterValue("SourceDeviceType", "")); getCondOutParams.Add(new AdapterValue("SourceDevice", "")); getCondOutParams.Add(new AdapterValue("TargetDevice", "")); getCondOutParams.Add(new AdapterValue("RequiredValue", "")); getCondOutParams.Add(new AdapterValue("ConditionType", "")); getCondOutParams.Add(new AdapterValue("TargetValue", "")); AdapterMethod getCondAttr = new AdapterMethod("GetConditions", "Calling this method returns list of conditions", GetConditions, null, getCondOutParams); conditionInterface.Methods.Add(getCondAttr); var removeCondInputParams = new List <AdapterValue>(); removeCondInputParams.Add(new AdapterValue("SourceDevice", "")); removeCondInputParams.Add(new AdapterValue("TargetDevice", "")); var removeConOutParams = new List <AdapterValue>(); removeConOutParams.Add(new AdapterValue("Response", "")); AdapterMethod removeCondAttr = new AdapterMethod("RemoveCondition", "Calling this method will remove a condition", RemoveCondition, removeCondInputParams, removeConOutParams); conditionInterface.Methods.Add(removeCondAttr); _abo.Interfaces.Add(conditionInterface); BusObjects.Add(_abo); }
private void GetConditions(AdapterMethod sender, IReadOnlyDictionary <string, object> inputParams, IDictionary <string, object> outputParams) { lock (_conditionManager.Locker) { var conditions = _conditionManager.Conditions; var condArrays = new ConditionMapper().MapToParams(conditions); outputParams["SourceDeviceType"] = condArrays.SourceDeviceTypes ?? string.Empty; outputParams["SourceDevice"] = condArrays.SourceDeviceNames ?? string.Empty; outputParams["TargetDevice"] = condArrays.TargetDeviceNames ?? string.Empty; outputParams["RequiredValue"] = condArrays.RequiredValues ?? string.Empty; outputParams["ConditionType"] = condArrays.ConditionTypes ?? string.Empty; outputParams["TargetValue"] = condArrays.TargetValues ?? string.Empty; } }
/* <interface name="org.alljoyn.SmartSpaces.Operation.OnControl"> <annotation name="org.alljoyn.Bus.DocString.En" value="This interface provides capability to switch on the device."/> <annotation name="org.alljoyn.Bus.Secure" value="true"/> <property name="Version" type="q" access="read"> <annotation name="org.alljoyn.Bus.DocString.En" value="The interface version."/> <annotation name="org.freedesktop.DBus.Property.EmitsChangedSignal" value="const"/> </property> <method name="SwitchOn"> <annotation name="org.alljoyn.Bus.DocString.En" value="Switch on the device."/> </method> </interface> */ public static AdapterInterface CreateOnControl(Action switchOnAction) { var iface = new AdapterInterface("org.alljoyn.SmartSpaces.Operation.OnControl"); iface.Properties.Add(new AdapterAttribute("Version", (ushort)1) { COVBehavior = SignalBehavior.Never }); iface.Properties[0].Annotations.Add("org.alljoyn.Bus.DocString.En", "The interface version"); var m = new AdapterMethod("SwitchOn", "Switch on the device.", (sender, input, output) => { switchOnAction(); }); iface.Methods.Add(m); return iface; }
private void RemoveCondition(AdapterMethod sender, IReadOnlyDictionary <string, object> inputParams, IDictionary <string, object> outputParams) { _conditionManager.RemoveCondition((string)inputParams["SourceDevice"], (string)inputParams["TargetDevice"]); }
private void OnMethodInvoked(RequestContext context, Type adapterType, AdapterMethod method, object[] requestArgs, object[] passedArgs, object returnVal) { var handler = MethodInvoked; if (handler != null) { handler(this, new InvokeAdapterMethodEventArgs(context, adapterType, method, requestArgs, passedArgs, returnVal)); } }