-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathMeadowApp.cs
More file actions
90 lines (79 loc) · 3.06 KB
/
Copy pathMeadowApp.cs
File metadata and controls
90 lines (79 loc) · 3.06 KB
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
using Meadow;
using Meadow.Devices;
using Meadow.Hardware;
using System.Text;
using System.Threading.Tasks;
namespace GpioInterrogation;
public class MeadowApp : App<F7FeatherV2>
{
public override Task Run()
{
// uncomment to build out a table of pins functions
StringBuilder table = new StringBuilder();
table.Append(BuildHeader());
foreach (var pin in Device.Pins.AllPins)
{
table.Append(BuildRow(pin));
}
Resolver.Log.Info(table.ToString());
//foreach (var pin in Device.Pins.AllPins) {
// Resolver.Log.Info($"Found pin: {pin.Name}");
// foreach (var channel in pin.SupportedChannels) {
// Resolver.Log.Info($"Contains a {channel.GetType()} channel called: {channel.Name}.");
// }
//}
return Task.CompletedTask;
}
private string BuildHeader()
{
return "| Meadow Pin Name | MCU Pin Name | Digital Channel | Analog Channel | PWM Timer Channel | Interrupt Group | \r\n" +
"|-----------------|--------------|-----------------|----------------|-------------------|-----------------| \r\n";
}
private string BuildRow(IPin pin)
{
StringBuilder stringBuilder = new StringBuilder("| ");
stringBuilder.Append($"{pin} | {pin.Key.ToString()} | ");
IUartChannelInfo? uartChan = null;
ICanChannelInfo? canChan = null;
IPwmChannelInfo? pwmChan = null;
II2cChannelInfo? i2cChan = null;
ISpiChannelInfo? spiChan = null;
IAnalogChannelInfo? analogChan = null;
IDigitalChannelInfo? digitalChan = null;
foreach (var chan in pin.SupportedChannels)
{
switch (chan)
{
case IUartChannelInfo u:
uartChan = u;
break;
case ICanChannelInfo c:
canChan = c;
break;
case IPwmChannelInfo p:
pwmChan = p;
break;
case II2cChannelInfo i:
i2cChan = i;
break;
case ISpiChannelInfo s:
spiChan = s;
break;
case IAnalogChannelInfo a:
analogChan = a;
break;
case IDigitalChannelInfo d:
digitalChan = d;
break;
default:
break;
}
}
stringBuilder.Append($" {((digitalChan == null) ? "n/a" : digitalChan?.Name)} |");
stringBuilder.Append($" {((analogChan == null) ? "n/a" : analogChan?.Name)} |");
stringBuilder.Append($" {((pwmChan == null) ? "n/a" : pwmChan?.TimerChannel.ToString())} |");
stringBuilder.Append($" {((digitalChan == null) ? "n/a" : digitalChan?.InterruptGroup?.ToString())} |");
stringBuilder.Append("\r\n");
return stringBuilder.ToString();
}
}