示例#1
0
        public uint EnumDevices(
            ENUM_DEVICES_OPTIONS Options,
            out IList <IAdapterDevice> DeviceListPtr,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            DeviceListPtr = new List <IAdapterDevice>();

            // Add all end points in all ZigBee devices to the list
            // if device list not locked
            // note that:
            // - an endpoint is a device for BridgeRT
            // - endpoints will be notified as ZigBee devices arrive
            if (Monitor.TryEnter(m_deviceMap))
            {
                try
                {
                    foreach (var zigBeeDeviceItem in m_deviceMap)
                    {
                        foreach (var endPointItem in zigBeeDeviceItem.Value.EndPointList)
                        {
                            DeviceListPtr.Add(endPointItem.Value);
                        }
                    }
                }
                finally
                {
                    // use try/finally to ensure m_deviceList is unlocked in every case
                    Monitor.Exit(m_deviceMap);
                }
            }

            return(ERROR_SUCCESS);
        }
示例#2
0
        public uint SetPropertyValue(
            IAdapterProperty Property,
            IAdapterValue Value,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            // sanity check
            if (Property == null)
            {
                return(ERROR_INVALID_PARAMETER);
            }

            // cast back IAdapterProperty to ZclCluster
            ZclCluster cluster = (ZclCluster)Property;

            // look for the attribute and write new data
            foreach (var item in cluster.InternalAttributeList)
            {
                var attribute = item.Value;
                if (attribute.Value.Name == Value.Name)
                {
                    if (attribute.Write(Value.Data))
                    {
                        return(ERROR_SUCCESS);
                    }
                    else
                    {
                        return((uint)ZclHelper.ZigBeeStatusToHResult(attribute.Status));
                    }
                }
            }

            return(ERROR_NOT_SUPPORTED);
        }
示例#3
0
        public uint GetProperty(
            IAdapterProperty Property,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            // sanity check
            if (Property == null)
            {
                return(ERROR_INVALID_PARAMETER);
            }

            // cast back IAdapterProperty to ZclCluster
            ZclCluster cluster = (ZclCluster)Property;

            // read all attributes for the attribute
            foreach (var item in cluster.InternalAttributeList)
            {
                var    attribute = item.Value;
                object value;
                if (!attribute.Read(out value))
                {
                    // give up at 1st read error
                    return((uint)ZclHelper.ZigBeeStatusToHResult(attribute.Status));
                }
            }

            return(ERROR_SUCCESS);
        }
示例#4
0
        public uint SetPropertyValue(IAdapterProperty Property, IAdapterValue Value, out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            // find corresponding attribute
            foreach (var attribute in ((AdapterProperty)Property).Attributes)
            {
                if (attribute.Value.Name == Value.Name)
                {
                    string path   = "devices/" + ((AdapterValue)attribute.Value).Path + "/state";
                    uint   status = this.SetHttpValue(path, attribute.Value.Data, attribute.Value.Name);
                    if (status == 0)
                    {
                        attribute.Value.Data = Value.Data;

                        IAdapterDevice adapterDevice = null;
                        this.devicesDict.TryGetValue(((AdapterValue)Value).Path, out adapterDevice);

                        int SignalHashCode = ((AdapterValue)attribute.Value).SignalHashCode;

                        IAdapterSignal covSignal = null;
                        ((AdapterDevice)adapterDevice).SignalsDict.TryGetValue(SignalHashCode, out covSignal);

                        this.NotifySignalListener(covSignal);
                    }

                    return(ERROR_SUCCESS);
                }
            }
            return(ERROR_INVALID_HANDLE);
        }
示例#5
0
        //Currently There is no action supported by brdige
        public uint CallMethod(IAdapterMethod Method, out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            if (Method.Name.Equals("Delete"))
            {
                String path = Method.Path;
                return(SetHttpValue(path, null, ""));
            }
            else
            {
                FriendlyName = (string)Method.InputParams.First(param => param.Name.Equals("FriendlyName", StringComparison.OrdinalIgnoreCase)).Data;
                //NewDeviceProfile = (string)Method.InputParams.First(param => param.Name.Equals("Profile", StringComparison.OrdinalIgnoreCase)).Data;

                if (Method.Name.Equals("Add_RockerSwitch"))
                {
                    NewDeviceProfile = "F6-02-01";
                }
                else if (Method.Name.Equals("Add_Sensor"))
                {
                    NewDeviceProfile = "F6-05-01";
                }
                else if (Method.Name.Equals("Add_Handle"))
                {
                    NewDeviceProfile = "F6-10-00";
                }
                else if (Method.Name.Equals("Add_Other"))
                {
                    NewDeviceProfile = "other";
                }
                return((uint)SetHttpValue("system/receiveMode", null, "learnMode"));
            }
        }
示例#6
0
文件: Adapter.cs 项目: alljoyn/dsb
        public uint GetPropertyValue(
            IAdapterProperty Property,
            string AttributeName,
            out IAdapterValue ValuePtr,
            out IAdapterIoRequest RequestPtr)
        {
            ValuePtr   = null;
            RequestPtr = null;

            // find corresponding attribute
            foreach (var attribute in Property.Attributes)
            {
                if (attribute.Value.Name == AttributeName)
                {
                    //Read from Modbus Device
                    ((ModbusSensorAttribute)attribute).ReadAsync().Wait();
                    ValuePtr = attribute.Value;

                    //Send signals if needed
                    if (AttributeName == "Temperature" && previousTempValue != (double)ValuePtr.Data)
                    {
                        if (previousTempValue != -100.0)
                        {
                            tempValueChangeEventHandler();
                        }
                        previousTempValue = (double)ValuePtr.Data;
                    }
                    return(ERROR_SUCCESS);
                }
            }

            return(ERROR_INVALID_HANDLE);
        }
示例#7
0
        public uint SetProperty(
            IAdapterProperty Property,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            // sanity check
            if (Property == null)
            {
                return(ERROR_INVALID_PARAMETER);
            }

            // cast back IAdapterProperty to ZclCluster
            ZclCluster cluster = (ZclCluster)Property;

            // write new value for all attributes
            // note that it is assumed that BridgeRT has set the new value
            // for each attribute
            foreach (var item in cluster.InternalAttributeList)
            {
                var attribute = item.Value;
                if (attribute.Write(attribute.Value.Data))
                {
                    // give up at 1st write error
                    return((uint)ZclHelper.ZigBeeStatusToHResult(attribute.Status));
                }
            }

            return(ERROR_SUCCESS);
        }
示例#8
0
        public uint SetProperty(
            IAdapterProperty Property,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            return(ERROR_SUCCESS);
        }
示例#9
0
        public uint CallMethod(
            IAdapterMethod Method,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            return(ERROR_SUCCESS);
        }
示例#10
0
        override public uint CallMethod(IAdapterMethod Method, out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            ((BridgeAdapterMethod <KnxDevice>)Method).Device.CallMethod(Method);

            return(ERROR_SUCCESS);
        }
示例#11
0
文件: Adapter.cs 项目: alljoyn/dsb
        public uint CallMethod(
            IAdapterMethod Method,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;
            ((ModbusSensorMethod)Method).SetValue();

            return(ERROR_SUCCESS);
        }
示例#12
0
        public uint CallMethod(IAdapterMethod Method, out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;


            AllJoynMethod?.Invoke(this, new AllJoynMethodData(Method, devices[0]));

            return(ERROR_SUCCESS);
        }
示例#13
0
 public uint CallMethod(
     IAdapterMethod Method,
     out IAdapterIoRequest RequestPtr)
 {
     RequestPtr = null;
     if (Method is AdapterMethod)
     {
         ((AdapterMethod)Method).Invoke();
     }
     return(ERROR_SUCCESS);
 }
示例#14
0
        public uint SetPropertyValue(IAdapterProperty Property, IAdapterValue Value, out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            foreach (var attribute in ((AdapterProperty)Property).Attributes)
            {
                if (attribute.Value.Name == Value.Name)
                {
                    attribute.Value.Data = Value.Data;
                    return(ERROR_SUCCESS);
                }
            }

            return(ERROR_INVALID_HANDLE);
        }
示例#15
0
        public uint SetPropertyValue(IAdapterProperty Property, IAdapterValue Value, out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            var r = ((AdapterProperty)Property).Attributes.Where(x => x.Value.Name == Value.Name).First() as BridgeRT.IAdapterAttribute;

            if (r == null)
            {
                return(ERROR_INVALID_HANDLE);
            }
            else
            {
                r.Value.Data = Value.Data;

                AllJoynSet?.Invoke(this, new AllJoynData(r.Value));
                return(ERROR_SUCCESS);
            }
        }
示例#16
0
        public uint EnumDevices(
            ENUM_DEVICES_OPTIONS Options,
            out IList <IAdapterDevice> DeviceListPtr,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            try
            {
                DeviceListPtr = new List <IAdapterDevice>(this.devices);
            }
            catch (OutOfMemoryException ex)
            {
                throw;
            }

            return(ERROR_SUCCESS);
        }
示例#17
0
        public uint GetPropertyValue(
            IAdapterProperty Property,
            string AttributeName,
            out IAdapterValue ValuePtr,
            out IAdapterIoRequest RequestPtr)
        {
            ValuePtr   = null;
            RequestPtr = null;

            // find corresponding attribute
            foreach (var attribute in ((AdapterProperty)Property).Attributes)
            {
                if (attribute.Value.Name == AttributeName)
                {
                    ValuePtr = attribute.Value;
                    return(ERROR_SUCCESS);
                }
            }

            return(ERROR_INVALID_HANDLE);
        }
示例#18
0
文件: Adapter.cs 项目: alljoyn/dsb
        public uint SetPropertyValue(
            IAdapterProperty Property,
            IAdapterValue Value,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            // find corresponding attribute
            foreach (var attribute in Property.Attributes)
            {
                if (attribute.Value.Name == Value.Name)
                {
                    //Write to Modbus Device
                    ((ModbusSensorAttribute)attribute).WriteAsync(Value.Data).Wait();
                    attribute.Value.Data = Value.Data;
                    return(ERROR_SUCCESS);
                }
            }

            return(ERROR_INVALID_HANDLE);
        }
示例#19
0
        public uint GetPropertyValue(
            IAdapterProperty Property,
            string AttributeName,
            out IAdapterValue ValuePtr,
            out IAdapterIoRequest RequestPtr)
        {
            ValuePtr   = null;
            RequestPtr = null;

            // sanity check
            if (Property == null)
            {
                return(ERROR_INVALID_PARAMETER);
            }

            // cast back IAdapterProperty to ZclCluster
            ZclCluster cluster = (ZclCluster)Property;

            // look for the attribute
            foreach (var item in cluster.InternalAttributeList)
            {
                var attribute = item.Value;
                if (attribute.Value.Name == AttributeName)
                {
                    object value;
                    if (attribute.Read(out value))
                    {
                        ValuePtr = attribute.Value;
                        return(ERROR_SUCCESS);
                    }
                    else
                    {
                        return((uint)ZclHelper.ZigBeeStatusToHResult(attribute.Status));
                    }
                }
            }

            return(ERROR_NOT_SUPPORTED);
        }
示例#20
0
        public uint CallMethod(
            IAdapterMethod Method,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            // sanity check
            if (Method == null)
            {
                return(ERROR_INVALID_PARAMETER);
            }

            // IAdapterMethod is either a ZclCommand or a ManagementLeave command,
            // cast back IAdapterMethod to ZclCommand first then to ManagementLeave if cast failed
            try
            {
                var command = (ZclCommand)Method;
                command.Send();
                return((uint)command.HResult);
            }
            catch (InvalidCastException e)
            {
                // send the leave command and remove devices (hence all end points of the ZigBee device)
                //
                // Note that ManagementLeave is THE unique ZdoCommand exposed to AllJoyn
                //
                var command = (ManagementLeave)Method;
                command.Send();

                if (command.ZigBeeStatus != ZdoHelper.ZDO_NOT_SUPPORTED)
                {
                    // async device removal
                    Task.Run(() => RemoveDevice(command.Device));
                }

                return((uint)command.HResult);
            }
        }
示例#21
0
 public uint CallMethod(IAdapterMethod Method, out IAdapterIoRequest RequestPtr)
 {
     return(_adapter.CallMethod(Method, out RequestPtr));
 }
示例#22
0
        public uint EnumDevices(ENUM_DEVICES_OPTIONS Options, out IList <IAdapterDevice> DeviceListPtr, out IAdapterIoRequest RequestPtr)
        {
            RequestPtr    = null;
            DeviceListPtr = new List <IAdapterDevice>(this.devices);

            return(ERROR_SUCCESS);
        }
示例#23
0
 public uint SetPropertyValue(IAdapterProperty Property, IAdapterValue Value, out IAdapterIoRequest RequestPtr)
 {
     return(_adapter.SetPropertyValue(Property, Value, out RequestPtr));
 }
        public uint GetPropertyValue(
            IAdapterProperty Property,
            string AttributeName,
            out IAdapterValue ValuePtr,
            out IAdapterIoRequest RequestPtr)
        {
            ValuePtr = null;
            RequestPtr = null;

            return ERROR_SUCCESS;
        }
示例#25
0
        virtual public uint GetPropertyValue(IAdapterProperty Property, string AttributeName, out IAdapterValue ValuePtr, out IAdapterIoRequest RequestPtr)
        {
            ValuePtr   = null;
            RequestPtr = null;

            return(ERROR_SUCCESS);
        }
        public uint SetProperty(
            IAdapterProperty Property,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            return ERROR_SUCCESS;
        }
示例#27
0
        override public uint GetPropertyValue(IAdapterProperty Property, string AttributeName, out IAdapterValue ValuePtr, out IAdapterIoRequest RequestPtr)
        {
            ValuePtr   = null;
            RequestPtr = null;

            ValuePtr = ((BridgeAdapterProperty <KnxDevice>)Property).Device.GetPropertyValue(Property, AttributeName);

            return(ERROR_SUCCESS);
        }
示例#28
0
 public uint GetPropertyValue(IAdapterProperty Property, string AttributeName, out IAdapterValue ValuePtr, out IAdapterIoRequest RequestPtr)
 {
     return(_adapter.GetPropertyValue(Property, AttributeName, out ValuePtr, out RequestPtr));
 }
        public uint EnumDevices(
            ENUM_DEVICES_OPTIONS Options,
            out IList<IAdapterDevice> DeviceListPtr,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            try
            {
                DeviceListPtr = new List<IAdapterDevice>(this.devices);
            }
            catch (OutOfMemoryException ex)
            {
                throw;
            }

            return ERROR_SUCCESS;
        }
示例#30
0
 public uint EnumDevices(ENUM_DEVICES_OPTIONS Options, out IList <IAdapterDevice> DeviceListPtr, out IAdapterIoRequest RequestPtr)
 {
     return(_adapter.EnumDevices(Options, out DeviceListPtr, out RequestPtr));
 }
示例#31
0
        public uint CallMethod(
            IAdapterMethod Method,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            return ERROR_SUCCESS;
        }
示例#32
0
        virtual public uint SetPropertyValue(IAdapterProperty Property, IAdapterValue Value, out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            return(ERROR_SUCCESS);
        }
示例#33
0
        public uint SetPropertyValue(
            IAdapterProperty Property,
            IAdapterValue Value,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            IAdapterValue attribute = Property.Attributes.ElementAt<IAdapterValue>(0);
            if (Property.Name == "Pin-5")
            {
                if (Convert.ToInt32(Value.Data) == 1)
                {
                    pinValueData5 = 1;
                    pin5.Write(GpioPinValue.High);
                }
                else
                {
                    pinValueData5 = 0;
                    pin5.Write(GpioPinValue.Low);
                }
            }
            else if (Property.Name == "Pin-6")
            {
                if (Convert.ToInt32(Value.Data) == 1)
                {
                    pinValueData6 = 1;
                    pin6.Write(GpioPinValue.High);
                }
                else
                {
                    pinValueData6 = 0;
                    pin6.Write(GpioPinValue.Low);
                }
            }
            else if (Property.Name == "Pin-12")
            {
                if (Convert.ToInt32(Value.Data) == 1)
                {
                    pinValueData12 = 1;
                    pin12.Write(GpioPinValue.High);
                }
                else
                {
                    pinValueData12 = 0;
                    pin12.Write(GpioPinValue.Low);
                }
            }
            else if (Property.Name == "Pin-16")
            {
                if (Convert.ToInt32(Value.Data) == 1)
                {
                    pinValueData16 = 1;
                    pin16.Write(GpioPinValue.High);
                }
                else
                {
                    pinValueData16 = 0;
                    pin16.Write(GpioPinValue.Low);
                }
            }

            attribute.Data = Value.Data;

            return ERROR_SUCCESS;
        }
示例#34
0
        public uint GetPropertyValue(
            IAdapterProperty Property,
            string AttributeName,
            out IAdapterValue ValuePtr,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;
            IAdapterValue attribute = Property.Attributes.ElementAt<IAdapterValue>(0);
            if (Property.Name == "Pin-5")
            {
                pinValueData5 = (int)pin5.Read();

                attribute.Data = pinValueData5;
            }
            else if (Property.Name == "Pin-6")
            {
                pinValueData6 = (int)pin6.Read();

                attribute.Data = pinValueData6;
            }
            else if (Property.Name == "Pin-12")
            {
                pinValueData12 = (int)pin12.Read();

                attribute.Data = pinValueData12;
            }
            else if (Property.Name == "Pin-16")
            {
                pinValueData16 = (int)pin16.Read();

                attribute.Data = pinValueData16;
            }

            ValuePtr = attribute;

            return ERROR_SUCCESS;
        }
示例#35
0
 public uint GetProperty(IAdapterProperty Property, out IAdapterIoRequest RequestPtr)
 {
     return(_adapter.GetProperty(Property, out RequestPtr));
 }
示例#36
0
        public uint GetPropertyValue(
            IAdapterProperty Property,
            string AttributeName,
            out IAdapterValue ValuePtr,
            out IAdapterIoRequest RequestPtr)
        {
            ValuePtr = null;
            RequestPtr = null;

            // find corresponding attribute
            foreach (var attribute in ((AdapterProperty)Property).Attributes)
            {
                if (attribute.Value.Name == AttributeName)
                {
                    ValuePtr = attribute.Value;
                    return ERROR_SUCCESS;
                }
            }

            return ERROR_INVALID_HANDLE;
        }
        public uint CallMethod(IAdapterMethod Method, out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            AllJoynMethod?.Invoke(this, new AllJoynMethodData(Method, devices[0]));

            return ERROR_SUCCESS;
        }
示例#38
0
        public uint SetPropertyValue(
            IAdapterProperty Property,
            IAdapterValue Value,
            out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            // find corresponding attribute
            foreach (var attribute in ((AdapterProperty)Property).Attributes)
            {
                if (attribute.Value.Name == Value.Name)
                {
                    attribute.Value.Data = Value.Data;
                    return ERROR_SUCCESS;
                }
            }

            return ERROR_INVALID_HANDLE;
        }
        public uint GetPropertyValue(IAdapterProperty Property, string AttributeName, out IAdapterValue ValuePtr, out IAdapterIoRequest RequestPtr)
        {
            ValuePtr = null;
            RequestPtr = null;

            var r = ((AdapterProperty)Property).Attributes.Where(x => x.Value.Name == AttributeName).First() as BridgeRT.IAdapterAttribute;

            if (r == null) { return ERROR_INVALID_HANDLE; }
            else
            {
                ValuePtr = r.Value;
                return ERROR_SUCCESS;
            }
        }
示例#40
0
 public uint CallMethod(
     IAdapterMethod Method,
     out IAdapterIoRequest RequestPtr)
 {
     RequestPtr = null;
     if(Method is AdapterMethod)
     {
         ((AdapterMethod)Method).Invoke();
     }
     return ERROR_SUCCESS;
 }
        public uint SetPropertyValue(IAdapterProperty Property, IAdapterValue Value, out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            var r = ((AdapterProperty)Property).Attributes.Where(x => x.Value.Name == Value.Name).First() as BridgeRT.IAdapterAttribute;

            if (r == null) { return ERROR_INVALID_HANDLE; }
            else
            {
                r.Value.Data = Value.Data;

                AllJoynSet?.Invoke(this, new AllJoynData(r.Value));
                return ERROR_SUCCESS;
            }
        }
示例#42
0
        override public uint SetPropertyValue(IAdapterProperty Property, IAdapterValue Value, out IAdapterIoRequest RequestPtr)
        {
            RequestPtr = null;

            ((BridgeAdapterProperty <KnxDevice>)Property).Device.SendPropertyValue(Property, Value);

            return(ERROR_SUCCESS);
        }