private XmlNode WriteDevice(int index, VirtualDeviceSettings settings, XmlDocument target) { XmlElement result = target.CreateElement(settings.DeviceType.ToString()); result.SetAttribute("CommonIndex", index.ToString()); result.SetAttribute("ClassifiedIndex", settings.ClassifiedDeviceIndex.ToString()); { // device id XmlElement deviceId = target.CreateElement("DeviceId"); result.AppendChild(deviceId); deviceId.InnerText = settings.DeviceId.ToString(); } { // send policy XmlElement sendPolicy = target.CreateElement("SendPolicy"); result.AppendChild(sendPolicy); sendPolicy.InnerText = settings.SendPolicy.ToString(); } // send rate if (settings.SendPolicy != VirtualDeviceSendPolicy.AfterModification) { XmlElement sendRate = target.CreateElement("SendRate"); result.AppendChild(sendRate); sendRate.InnerText = settings.SendRate.ToString(); } // axis and button count if (settings.DeviceType == VirtualDeviceType.Joystick) { XmlElement buttonNo = target.CreateElement("ButtonNo"); result.AppendChild(buttonNo); buttonNo.InnerText = settings.ButtonNo.ToString(); XmlElement axisNo = target.CreateElement("AxisNo"); result.AppendChild(axisNo); axisNo.InnerText = settings.AxisNo.ToString(); } return(result); }
public bool Read(SetupProfile result, XmlNode root) { foreach (XmlNode node in root.ChildNodes) { VirtualDeviceType deviceType; if (!Enum.TryParse(node.Name, out deviceType)) { continue; } if (node.Attributes["CommonIndex"] == null || node.Attributes["ClassifiedIndex"] == null) { return(false); } int commonIndex = JsonString.ParseInt(node.Attributes["CommonIndex"].InnerText, -1); int classifiedIndex = JsonString.ParseInt(node.Attributes["ClassifiedIndex"].InnerText, -1); if (commonIndex < 0 || classifiedIndex < 0) { return(false); } var settings = new VirtualDeviceSettings() { DeviceType = deviceType, ClassifiedDeviceIndex = classifiedIndex }; settings = ReadDevice(settings, node); if (settings == null) { return(false); } result.AddDevice(commonIndex, settings); } return(true); }
public bool Write(SetupProfile profile, XmlNode root, XmlDocument target) { if (profile == null) { throw new ArgumentNullException("profile"); } if (target == null) { throw new ArgumentNullException("target"); } if (root == null) { throw new ArgumentNullException("root"); } var indexes = new List <int>(profile.VideoCaptureIndexes); foreach (int i in profile.DeviceIndexes) { VirtualDeviceSettings settings = profile.GetDevice(i); XmlNode node = WriteDevice(i, settings, target); if (node != null) { root.AppendChild(node); } } return(true); }
public void AddDevice(int index, VirtualDeviceSettings settings) { if (settings == null) { throw new ArgumentNullException("settings"); } devices[index] = settings; }
private VirtualDeviceSettings ReadDevice(VirtualDeviceSettings settings, XmlNode root) { foreach (XmlNode node in root.ChildNodes) { if (node.Name.Equals("DeviceId")) { int deviceId = JsonString.ParseInt(node.InnerText, -1); if (deviceId < 0) { return(null); } settings.DeviceId = deviceId; } else if (node.Name.Equals("SendPolicy")) { VirtualDeviceSendPolicy policy; if (!Enum.TryParse(node.InnerText, out policy)) { return(null); } settings.SendPolicy = policy; } else if (node.Name.Equals("SendRate")) { int sendRate = JsonString.ParseInt(node.InnerText, -1); if (sendRate < 0) { return(null); } settings.SendRate = sendRate; } else if (node.Name.Equals("ButtonNo")) { int buttonNo = JsonString.ParseInt(node.InnerText, -1); if (buttonNo < 0) { return(null); } settings.ButtonNo = buttonNo; } else if (node.Name.Equals("AxisNo")) { int axisNo = JsonString.ParseInt(node.InnerText, -1); if (axisNo < 0) { return(null); } settings.AxisNo = axisNo; } } return(settings); }