forked from AutomatedArchitecture/SirenOfShame
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSimpleSirenOfShameExampleForm.cs
142 lines (123 loc) · 4.46 KB
/
SimpleSirenOfShameExampleForm.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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
using System;
using System.Text;
using System.Windows.Forms;
using SirenOfShame.Lib.Device;
using SirenOfShame.Lib.Helpers;
namespace SimpleSirenOfShameDeviceExample
{
public partial class SimpleSirenOfShameExampleForm : Form
{
private readonly ISirenOfShameDevice _sirenOfShameDevice;
public SimpleSirenOfShameExampleForm()
{
InitializeComponent();
EnableButtons(false);
_sirenOfShameDevice = new SirenOfShameDevice();
_sirenOfShameDevice.Connected += SirenOfShameDeviceConnected;
_sirenOfShameDevice.Disconnected += SirenOfShameDeviceDisconnected;
}
void SirenOfShameDeviceDisconnected(object sender, EventArgs e)
{
EnableButtons(false);
}
void SirenOfShameDeviceConnected(object sender, EventArgs e)
{
EnableButtons(true);
}
private void EnableButtons(bool sosDeviceConnected)
{
_tryConnect.Enabled = !sosDeviceConnected;
_disconnect.Enabled = sosDeviceConnected;
_playAudio.Enabled = sosDeviceConnected;
_stopAudio.Enabled = sosDeviceConnected;
_audioDuration.Enabled = sosDeviceConnected;
_audioPattern.Enabled = sosDeviceConnected;
_playLed.Enabled = sosDeviceConnected;
_stopLed.Enabled = sosDeviceConnected;
_ledDuration.Enabled = sosDeviceConnected;
_ledPattern.Enabled = sosDeviceConnected;
_refreshDeviceInfo.Enabled = sosDeviceConnected;
if (_sirenOfShameDevice != null)
{
_connectionStatus.Text = _sirenOfShameDevice.IsConnected ? "Connected" : "Not Connected";
}
RefreshDeviceInfo();
RefreshAudioPatterns();
RefreshLedPatterns();
}
private void RefreshAudioPatterns()
{
_audioPattern.Items.Clear();
if (_sirenOfShameDevice == null)
{
return;
}
foreach (var audioPattern in _sirenOfShameDevice.AudioPatterns)
{
_audioPattern.Items.Add(audioPattern);
}
}
private void RefreshLedPatterns()
{
_ledPattern.Items.Clear();
if (_sirenOfShameDevice == null)
{
return;
}
foreach (var ledPattern in _sirenOfShameDevice.LedPatterns)
{
_ledPattern.Items.Add(ledPattern);
}
}
private void RefreshDeviceInfo()
{
if (_sirenOfShameDevice == null)
{
_deviceInfo.Text = "Not Connected";
return;
}
var deviceInfo = _sirenOfShameDevice.ReadDeviceInfo();
_deviceInfo.Text = deviceInfo.ToString();
}
protected override void WndProc(ref Message m)
{
if (_sirenOfShameDevice != null)
{
_sirenOfShameDevice.WndProc(ref m);
}
base.WndProc(ref m);
}
private void _tryConnect_Click(object sender, EventArgs e)
{
_sirenOfShameDevice.TryConnect();
}
private void _disconnect_Click(object sender, EventArgs e)
{
_sirenOfShameDevice.Disconnect();
}
private void _refreshDeviceInfo_Click(object sender, EventArgs e)
{
RefreshDeviceInfo();
}
private void _playAudio_Click(object sender, EventArgs e)
{
var pattern = (AudioPattern)_audioPattern.SelectedItem;
var duration = new TimeSpan(0, 0, 0, (int)_audioDuration.Value);
_sirenOfShameDevice.PlayAudioPattern(pattern, duration);
}
private void _stopAudio_Click(object sender, EventArgs e)
{
_sirenOfShameDevice.StopAudioPattern();
}
private void _playLed_Click(object sender, EventArgs e)
{
var pattern = (LedPattern)_ledPattern.SelectedItem;
var duration = new TimeSpan(0, 0, 0, (int)_ledDuration.Value);
_sirenOfShameDevice.PlayLightPattern(pattern, duration);
}
private void _stopLed_Click(object sender, EventArgs e)
{
_sirenOfShameDevice.StopLightPattern();
}
}
}