-
Notifications
You must be signed in to change notification settings - Fork 0
/
Form1.cs
115 lines (105 loc) · 4.38 KB
/
Form1.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/*
Copyright (C) <2007-2017> <Kay Diefenthal>
SatIp.DiscoverySample is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
SatIp.DiscoverySample is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with SatIp.DiscoverySample. If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.Windows.Forms;
using SatIp.DiscoverySample.Logging;
using SatIp.DiscoverySample.Properties;
using SatIp.DiscoverySample.Upnp;
namespace SatIp.DiscoverySample
{
public partial class Form1 : Form
{
private readonly SSDPClient _client = new SSDPClient();
public Form1()
{
InitializeComponent();
Logger.SetLogFilePath("Sample.log", Settings.Default.LogLevel);
Logger.Info("Search for Transmitters");
_client.DeviceFound += DeviceFound;
_client.DeviceLost += DeviceLost;
_client.Start();
_client.FindByType("urn:ses-com:device:SatIPServer:1");
}
private void DeviceFound(object sender, SatIpDeviceFoundArgs args)
{
if (InvokeRequired)
{
this.BeginInvoke((MethodInvoker)delegate
{
DeviceFound(sender, args);
});
return;
}
var newnode = treeView1.Nodes[0].Nodes.Add(args.Device.UniqueDeviceName, args.Device.FriendlyName);
newnode.ToolTipText = args.Device.DeviceDescription;
if (treeView1.Nodes[0].IsExpanded != true)
treeView1.Nodes[0].Expand();
}
private void DeviceLost(object sender, SatIpDeviceLostArgs args)
{
if (InvokeRequired)
{
this.BeginInvoke((MethodInvoker)delegate
{
DeviceLost(sender, args);
});
return;
}
Logger.Info("Device with UUID :{0} restarts,and will removed from the Devices Tree", args.Uuid);
if (treeView1.Nodes[0].Nodes.ContainsKey(args.Uuid))
{
var tn = treeView1.Nodes[0].Nodes[args.Uuid];
treeView1.Nodes[0].Nodes.Remove(tn);
treeView1.Update();
}
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
var device = (SatIpDevice)_client.FindByUDN(e.Node.Name);
if (device != null)
{
tbxFriendlyName.Text = device.FriendlyName;
tbxUniqueDeviceName.Text = device.UniqueDeviceName;
tbxDeviceType.Text = device.DeviceType;
tbxModelDescription.Text = device.ModelDescription;
tbxManufacture.Text = device.Manufacturer;
tbxManufactureUrl.Text = device.ManufacturerUrl;
tbxPresentationUrl.Text = device.PresentationUrl;
pbxDVBC.Image = Resources.dvb_c;
pbxDVBC.Visible = device.SupportsDVBC;
pbxDVBS.Image = Resources.dvb_s;
pbxDVBS.Visible = device.SupportsDVBS;
pbxDVBT.Image = Resources.dvb_t;
pbxDVBT.Visible = device.SupportsDVBT;
webBrowser1.DocumentText = device.DeviceDescription;
try
{
string imageUrl = string.Format(device.FriendlyName == "OctopusNet" ? "http://{0}:{1}/{2}" : "http://{0}:{1}{2}", device.BaseUrl.Host, device.BaseUrl.Port, device.GetImage(1));
pictureBox1.LoadAsync(imageUrl);
pictureBox1.Visible = true;
}
catch (Exception)
{
pictureBox1.Visible = false;
}
}
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
_client.DeviceFound -= DeviceFound;
_client.DeviceLost -= DeviceLost;
_client.Dispose();
}
}
}