HamBook – Diff between revs 44 and 46
?pathlinks?
Rev 44 | Rev 46 | |||
---|---|---|---|---|
Line 23... | Line 23... | |||
23 | |
23 | |
|
24 | public MT(SerialPortStream serialPort) : base(serialPort) |
24 | public MT(SerialPortStream serialPort) : base(serialPort) |
|
25 | { |
25 | { |
|
26 | /// MTP9U026965000+0000004100001AAAAAAAAAAAA; |
26 | /// MTP9U026965000+0000004100001AAAAAAAAAAAA; |
|
27 | /// ^---- fixed: 0 in manual, but responds 1; looks like a radio bug |
27 | /// ^---- fixed: 0 in manual, but responds 1; looks like a radio bug |
|
28 | readRegex = new Regex($"^{Name}(?<currentLocation>[0-9PLU]{{3}})(?<frequency>[0-9]{{9}})(?<clarifierDirection>[\\+\\-]{{1}})(?<clarifierOffset>[0-9]{{4}})(?<clar>[01]{{1}})0(?<mode>[123456789ABCD]{{1}})[0-9]{{1}}(?<ctcssMode>[012]{{1}})00(?<phase>[012]{{1}})(?<tag>[01]{{1}})(?<text>[\x20-\x7E]{{0,12}}){Generic.Constants.EOT}$", RegexOptions.Compiled); |
28 | readRegex = new Regex($"^{Name}(?<currentLocation>[0-9PLU]{{3}})(?<frequency>[0-9]{{9}})(?<clarifierDirection>[\\+\\-]{{1}})(?<clarifierOffset>[0-9]{{4}})(?<clar>[01]{{1}})0(?<mode>[123456789ABCD]{{1}})[0-9]{{1}}(?<ctcss>[012]{{1}})00(?<phase>[012]{{1}})(?<tag>[01]{{1}})(?<text>[\x20-\x7E]{{0,12}}){Constants.EOT}$", RegexOptions.Compiled); |
|
Line 29... | Line 29... | |||
29 | } |
29 | } |
|
30 | |
30 | |
|
31 | public override MemoryChannel Read(string location) |
31 | public override Generic.MemoryChannel Read(string location) |
|
32 | { |
32 | { |
|
33 | SerialPort.Write($"{Name}{location}{Generic.Constants.EOT}"); |
33 | SerialPort.Write($"{Name}{location}{Constants.EOT}"); |
|
34 | var buffer = new byte[CatLength.Answer]; |
34 | var buffer = new byte[CatLength.Answer]; |
|
35 | if (SerialPort.Read(buffer, 0, CatLength.Answer) != CatLength.Answer) |
35 | if (SerialPort.Read(buffer, 0, CatLength.Answer) != CatLength.Answer) |
|
36 | { |
36 | { |
|
Line 40... | Line 40... | |||
40 | var answer = Constants.Encoding.GetString(buffer); |
40 | var answer = Constants.Encoding.GetString(buffer); |
|
Line 41... | Line 41... | |||
41 | |
41 | |
|
42 | return Parse(answer); |
42 | return Parse(answer); |
|
Line 43... | Line 43... | |||
43 | } |
43 | } |
|
44 | |
44 | |
|
45 | public override async Task<MemoryChannel> ReadAsync(string location, CancellationToken cancellationToken) |
45 | public override async Task<Generic.MemoryChannel> ReadAsync(string location, CancellationToken cancellationToken) |
|
46 | { |
46 | { |
|
47 | var payload = Constants.Encoding.GetBytes($"{Name}{location}{Generic.Constants.EOT}"); |
47 | var payload = Constants.Encoding.GetBytes($"{Name}{location}{Constants.EOT}"); |
|
48 | await SerialPort.WriteAsync(payload, 0, payload.Length); |
48 | await SerialPort.WriteAsync(payload, 0, payload.Length); |
|
49 | var buffer = new byte[CatLength.Answer]; |
49 | var buffer = new byte[CatLength.Answer]; |
|
50 | if (await SerialPort.ReadAsync(buffer, 0, CatLength.Answer) != CatLength.Answer) |
50 | if (await SerialPort.ReadAsync(buffer, 0, CatLength.Answer) != CatLength.Answer) |
|
Line 55... | Line 55... | |||
55 | var answer = Constants.Encoding.GetString(buffer); |
55 | var answer = Constants.Encoding.GetString(buffer); |
|
Line 56... | Line 56... | |||
56 | |
56 | |
|
57 | return Parse(answer); |
57 | return Parse(answer); |
|
Line 58... | Line 58... | |||
58 | } |
58 | } |
|
59 | |
59 | |
|
60 | public override bool Set(MemoryChannel channel) |
60 | public override bool Set(Generic.MemoryChannel channel) |
|
Line 61... | Line 61... | |||
61 | { |
61 | { |
|
Line 62... | Line 62... | |||
62 | var payload = Constants.Encoding.GetBytes(Compose(channel)); |
62 | var payload = Constants.Encoding.GetBytes(Compose(new MemoryChannel(channel))); |
|
63 | |
63 | |
|
Line 64... | Line 64... | |||
64 | SerialPort.Write(payload, 0, payload.Length); |
64 | SerialPort.Write(payload, 0, payload.Length); |
|
65 | |
65 | |
|
66 | return Read(channel.CurrentLocation).Equals(channel); |
66 | return Read(channel.CurrentLocation).Equals(channel); |
|
Line 67... | Line 67... | |||
67 | } |
67 | } |
|
Line 68... | Line 68... | |||
68 | |
68 | |
|
Line 69... | Line 69... | |||
69 | public override async Task<bool> SetAsync(MemoryChannel channel, CancellationToken cancellationToken) |
69 | public override async Task<bool> SetAsync(Generic.MemoryChannel channel, CancellationToken cancellationToken) |
|
Line 70... | Line 70... | |||
70 | { |
70 | { |
|
71 | var compose = Compose(channel); |
71 | var compose = Compose(new MemoryChannel(channel)); |
|
Line 72... | Line 72... | |||
72 | |
72 | |
|
73 | var payload = Constants.Encoding.GetBytes(compose); |
73 | var payload = Constants.Encoding.GetBytes(compose); |
|
74 | |
74 | |
|
75 | await SerialPort.WriteAsync(payload, 0, payload.Length, cancellationToken); |
75 | await SerialPort.WriteAsync(payload, 0, payload.Length, cancellationToken); |
|
Line 76... | Line 76... | |||
76 | |
76 | |
|
77 | var result = await ReadAsync(channel.CurrentLocation, cancellationToken); |
77 | var result = await ReadAsync(channel.CurrentLocation, cancellationToken); |
|
78 | |
78 | |
|
Line 79... | Line 79... | |||
79 | return result.Equals(channel); |
79 | return result.Equals(channel); |
|
80 | } |
80 | } |
|
Line 97... | Line 97... | |||
97 | var frequency = int.Parse(match.Result("${frequency}")); |
97 | var frequency = int.Parse(match.Result("${frequency}")); |
|
98 | var clarifierDirection = char.Parse(match.Result("${clarifierDirection}")); |
98 | var clarifierDirection = char.Parse(match.Result("${clarifierDirection}")); |
|
99 | var clarifierOffset = int.Parse(match.Result("${clarifierOffset}")); |
99 | var clarifierOffset = int.Parse(match.Result("${clarifierOffset}")); |
|
100 | var clar = int.Parse(match.Result("${clar}")) == 0 ? false : true; |
100 | var clar = int.Parse(match.Result("${clar}")) == 0 ? false : true; |
|
101 | var radioMode = char.Parse(match.Result("${mode}")); |
101 | var radioMode = char.Parse(match.Result("${mode}")); |
|
102 | var ctcssMode = int.Parse(match.Result("${ctcssMode}")); |
102 | var ctcss = int.Parse(match.Result("${ctcss}")); |
|
103 | var phase = int.Parse(match.Result("${phase}")); |
103 | var phase = int.Parse(match.Result("${phase}")); |
|
104 | var tag = int.Parse(match.Result("${tag}")) == 0 ? false : true; |
104 | var tag = int.Parse(match.Result("${tag}")) == 0 ? false : true; |
|
105 | var text = match.Result("${text}"); |
105 | var text = match.Result("${text}"); |
|
Line 106... | Line 106... | |||
106 | |
106 | |
|
Line 110... | Line 110... | |||
110 | Frequency = frequency, |
110 | Frequency = frequency, |
|
111 | ClarifierDirection = clarifierDirection, |
111 | ClarifierDirection = clarifierDirection, |
|
112 | ClarifierOffset = clarifierOffset, |
112 | ClarifierOffset = clarifierOffset, |
|
113 | Clar = clar, |
113 | Clar = clar, |
|
114 | MemoryRadioMode = new MemoryRadioMode(radioMode), |
114 | MemoryRadioMode = new MemoryRadioMode(radioMode), |
|
115 | CtcssMode = ctcssMode, |
115 | Ctcss = new Ctcss(ctcss), |
|
116 | Phase = phase, |
116 | Phase = new Phase(phase), |
|
117 | Tag = tag, |
117 | Tag = tag, |
|
118 | Text = text |
118 | Text = text |
|
Line 119... | Line 119... | |||
119 | |
119 | |
|
Line 120... | Line 120... | |||
120 | }; |
120 | }; |
|
121 | |
121 | |
|
Line 122... | Line 122... | |||
122 | return memoryChannel; |
122 | return memoryChannel; |
|
123 | } |
123 | } |
|
124 | |
124 | |
|
Line 125... | Line 125... | |||
125 | public override void Write(MemoryChannel channel) |
125 | public override void Write(Generic.MemoryChannel channel) |
|
126 | { |
126 | { |
|
Line 127... | Line 127... | |||
127 | var payload = Constants.Encoding.GetBytes(Compose(channel)); |
127 | var payload = Constants.Encoding.GetBytes(Compose(new MemoryChannel(channel))); |
|
128 | |
128 | |
|
129 | SerialPort.Write(payload, 0, payload.Length); |
129 | SerialPort.Write(payload, 0, payload.Length); |
|
Line 130... | Line 130... | |||
130 | } |
130 | } |
|
Line 131... | Line 131... | |||
131 | |
131 | |
|
132 | public override async Task WriteAsync(MemoryChannel channel, CancellationToken cancellationToken) |
132 | public override async Task WriteAsync(Generic.MemoryChannel channel, CancellationToken cancellationToken) |