/// <summary> /// Default constructor for command messages /// </summary> /// <param name="command">Associated DeviceCommand object</param> /// <param name="user">Associated User object</param> public MessageHandlerContext(DeviceCommand command, User user = null) { if (command == null) throw new ArgumentNullException("command"); Device = command.Device; Command = command; User = user; }
public void Save(DeviceCommand command) { if (command == null) throw new ArgumentNullException("command"); using (var context = new DeviceHiveContext()) { context.Devices.Attach(command.Device); context.DeviceCommands.Add(command); if (command.ID > 0) { context.Entry(command).State = EntityState.Modified; } context.SaveChanges(); } }
private void Notify(WebSocketConnectionBase connection, Guid subscriptionId, DeviceCommand command, Device device, bool isInitialCommand = false) { if (!isInitialCommand) { var initialCommandList = GetInitialCommandList(connection, subscriptionId); lock (initialCommandList) // wait until all initial commands are sent { if (initialCommandList.Contains(command.ID)) return; } if (!IsDeviceAccessible(connection, device, "GetDeviceCommand")) return; } connection.SendResponse("command/insert", new JProperty("subscriptionId", subscriptionId), new JProperty("deviceGuid", device.GUID), new JProperty("command", GetMapper<DeviceCommand>().Map(command))); }
public void DeviceCommand() { var network = new Network("N1"); DataContext.Network.Save(network); RegisterTearDown(() => DataContext.Network.Delete(network.ID)); var deviceClass = new DeviceClass("D1", "V1"); DataContext.DeviceClass.Save(deviceClass); RegisterTearDown(() => DataContext.DeviceClass.Delete(deviceClass.ID)); var device = new Device(Guid.NewGuid().ToString(), "Test", network, deviceClass); DataContext.Device.Save(device); RegisterTearDown(() => DataContext.Device.Delete(device.ID)); var command = new DeviceCommand("Test", device); DataContext.DeviceCommand.Save(command); RegisterTearDown(() => DataContext.DeviceCommand.Delete(command.ID)); // test GetByDevice var commands = DataContext.DeviceCommand.GetByDevice(device.ID); Assert.Greater(commands.Count, 0); // test Get(id) var command1 = DataContext.DeviceCommand.Get(command.ID); Assert.IsNotNull(command1); Assert.AreEqual("Test", command1.Command); Assert.AreEqual(device.ID, command1.DeviceID); // test Save command.Command = "Test2"; command.Parameters = "{ }"; command.Status = "OK"; command.Result = "\"Success\""; command.UserID = 1; DataContext.DeviceCommand.Save(command); var command2 = DataContext.DeviceCommand.Get(command.ID); Assert.AreEqual("Test2", command2.Command); Assert.AreEqual("{ }", command2.Parameters); Assert.AreEqual("OK", command2.Status); Assert.AreEqual("\"Success\"", command2.Result); Assert.AreEqual(1, command2.UserID); // test Delete DataContext.DeviceCommand.Delete(command.ID); var command3 = DataContext.DeviceCommand.Get(command.ID); Assert.IsNull(command3); }
public void DeviceCommandTest() { var network = new Network("N1"); NetworkRepository.Save(network); var deviceClass = new DeviceClass("D1", "V1"); DeviceClassRepository.Save(deviceClass); var device = new Device(Guid.NewGuid(), "key", "Test", network, deviceClass); DeviceRepository.Save(device); var command = new DeviceCommand("Test", device); DeviceCommandRepository.Save(command); // test GetByDevice var commands = DeviceCommandRepository.GetByDevice(device.ID, null, null); Assert.Greater(commands.Count, 0); // test Get(id) var command1 = DeviceCommandRepository.Get(command.ID); Assert.IsNotNull(command1); Assert.AreEqual("Test", command1.Command); Assert.AreEqual(device.ID, command1.DeviceID); // test Save command.Command = "Test2"; command.Parameters = "{}"; command.Status = "OK"; command.Result = "Success"; DeviceCommandRepository.Save(command); var command2 = DeviceCommandRepository.Get(command.ID); Assert.AreEqual("Test2", command2.Command); Assert.AreEqual("{}", command2.Parameters); Assert.AreEqual("OK", command2.Status); Assert.AreEqual("Success", command2.Result); // test Delete DeviceCommandRepository.Delete(command.ID); var command3 = DeviceCommandRepository.Get(command.ID); Assert.IsNull(command3); }
private void Notify(WebSocketConnectionBase connection, Device device, DeviceCommand command) { connection.SendResponse("command/insert", new JProperty("deviceGuid", device.GUID), new JProperty("command", CommandMapper.Map(command))); }
/// <summary> /// Notifies the device about new command. /// </summary> /// <action>command/insert</action> /// <response> /// <parameter name="deviceGuid" type="string">Device unique identifier.</parameter> /// <parameter name="command" cref="DeviceCommand">A <see cref="DeviceCommand"/> resource representing the command.</parameter> /// </response> private void Notify(WebSocketConnectionBase connection, Device device, DeviceCommand command, bool isInitialCommand = false) { if (!isInitialCommand) { var initialCommandList = GetInitialCommandList(connection); lock (initialCommandList) // wait until all initial commands are sent { if (initialCommandList.Contains(command.ID)) return; } } connection.SendResponse("command/insert", new JProperty("deviceGuid", device.GUID), new JProperty("command", MapDeviceCommand(command))); }