Exemple #1
0
        /// <summary>
        /// Get all devices for a home
        /// </summary>
        /// <param name="user">The user to get for</param>
        /// <param name="home">The home</param>
        /// <returns>The list of all devices attached to a home</returns>
        async Task <IEnumerable <Device> > IDeviceLayer.GetAllDevices(Guid user, Guid home)
        {
            return(await this.connectionManager.ExecuteSql(
                       "hub.getdevices",
                       parameters =>
            {
                parameters.AddWithValue("home", home);
                parameters.AddWithValue("user", user);
            },
                       reader =>
            {
                var functions = SqlDataLayer.GetDeviceFunctions(reader);

                reader.NextResult();

                var devices = new List <Device>();
                while (reader.Read())
                {
                    var deviceDefinitionGuid = (Guid)reader["devicedefinition"];

                    var definition = new DeviceDefinition(
                        deviceDefinitionGuid,
                        (string)reader["manufacturer"],
                        (string)reader["product"],
                        (DeviceType)reader["type"],
                        functions[deviceDefinitionGuid]);

                    var device = new Device(
                        (Guid)reader["id"],
                        home,
                        (string)reader["name"],
                        (string)reader["description"],
                        definition,
                        (string)reader["meta"]);
                    devices.Add(device);
                }

                return devices;
            },
                       this.tokenSource.Token));
        }
Exemple #2
0
        /// <summary>
        /// Get the device definitions
        /// </summary>
        /// <returns>The dictionary of device definitions</returns>
        async Task <Dictionary <string, IEnumerable <DeviceDefinition> > > IDeviceDefinitions.GetDefinitions()
        {
            var devices = await this.connectionManager.ExecuteSql(
                "hub.getdefinitions",
                collection => { },
                reader =>
            {
                var func = SqlDataLayer.GetDeviceFunctions(reader);

                reader.NextResult();


                var definitions = new Dictionary <string, IEnumerable <DeviceDefinition> >();
                while (reader.Read())
                {
                    var id           = (Guid)reader["id"];
                    var manufacturer = (string)reader["name"];
                    var definition   = new DeviceDefinition(
                        id,
                        manufacturer,
                        (string)reader["product"],
                        (DeviceType)reader["type"],
                        func[id]);

                    if (false == definitions.ContainsKey(manufacturer))
                    {
                        definitions.Add(manufacturer, new List <DeviceDefinition>());
                    }

                    ((List <DeviceDefinition>)definitions[manufacturer]).Add(definition);
                }

                return(definitions);
            },
                this.tokenSource.Token);

            return(devices);
        }
Exemple #3
0
        /// <summary>
        /// Create a new device
        /// </summary>
        /// <param name="name">The name</param>
        /// <param name="home">The home</param>
        /// <param name="description">The description</param>
        /// <param name="definition">The definition</param>
        /// <param name="meta">The metadata about the device</param>
        /// <returns>The new device</returns>
        async Task <Device> IDeviceLayer.CreateDevice(string name, Guid home, string description, Guid definition, string meta)
        {
            return(await this.connectionManager.ExecuteSql(
                       "hub.adddevice",
                       collection =>
            {
                collection.AddWithValue("name", name);
                collection.AddWithValue("home", home);
                collection.AddWithValue("description", description);
                collection.AddWithValue("definition", definition);
                collection.AddWithValue("meta", meta);
            },
                       reader =>
            {
                // Get the guid for the new device
                reader.Read();
                var id = (Guid)reader["id"];

                reader.NextResult();

                // Read the functions
                var functions = SqlDataLayer.GetDeviceFunctions(reader);

                reader.NextResult();

                // read the device definition
                reader.Read();
                var defintion = new DeviceDefinition(
                    definition,
                    (string)reader["manufacturer"],
                    (string)reader["product"],
                    (DeviceType)reader["type"],
                    functions[definition]);

                return new Device(id, home, name, description, defintion, meta);
            },
                       this.tokenSource.Token));
        }