HamBook – Diff between revs 15 and 43
?pathlinks?
Rev 15 | Rev 43 | |||
---|---|---|---|---|
Line -... | Line 1... | |||
- | 1 | using HamBook.Properties; |
||
1 | using Org.BouncyCastle.Crypto.Tls; |
2 | using Org.BouncyCastle.Crypto.Tls; |
|
2 | using System; |
3 | using System; |
|
3 | using System.Collections.Generic; |
4 | using System.Collections.Generic; |
|
4 | using System.Linq; |
5 | using System.Linq; |
|
- | 6 | using System.Reflection; |
||
5 | using System.Text; |
7 | using System.Text; |
|
6 | using System.Threading.Tasks; |
8 | using System.Threading.Tasks; |
|
Line 7... | Line 9... | |||
7 | |
9 | |
|
8 | namespace HamBook.Radios.Generic |
10 | namespace HamBook.Radios.Generic |
|
9 | { |
11 | { |
|
10 | public class RadioMode |
12 | public abstract class RadioMode |
|
11 | { |
13 | { |
|
Line 12... | Line 14... | |||
12 | public char Mode { get; private set; } |
14 | public abstract char Mode { get; } |
|
13 | |
- | ||
14 | public RadioMode(string mode) |
- | ||
15 | { |
- | ||
Line 16... | Line 15... | |||
16 | Mode = Parse(mode); |
15 | |
|
17 | } |
- | ||
18 | |
- | ||
19 | public RadioMode(char mode) |
- | ||
Line 20... | Line 16... | |||
20 | { |
16 | public abstract RadioMode AsRadioMode(string mode); |
|
21 | Mode = Parse(mode); |
17 | |
|
22 | } |
18 | public abstract string AsString(RadioMode radioMode); |
|
23 | |
- | ||
Line 24... | Line -... | |||
24 | public static bool TryParse(string mode, out RadioMode radioMode) |
- | ||
25 | { |
- | ||
26 | switch(mode) |
- | ||
27 | { |
- | ||
28 | |
- | ||
29 | case "SSB_1": |
- | ||
30 | case "SSB_2": |
- | ||
31 | case "CW_1": |
- | ||
32 | case "FM": |
- | ||
33 | case "AM": |
- | ||
34 | case "RTTY_1": |
- | ||
35 | case "CW_2": |
- | ||
36 | case "DATA_1": |
19 | |
|
37 | case "RTTY_2": |
- | ||
38 | case "FM-N": |
- | ||
39 | case "DATA_2": |
- | ||
40 | case "AM-N": |
- | ||
41 | radioMode = new RadioMode(mode); |
- | ||
42 | return true; |
- | ||
Line 43... | Line 20... | |||
43 | default: |
20 | public abstract RadioMode AsRadioMode(char mode); |
|
44 | radioMode = null; |
- | ||
45 | return false; |
- | ||
46 | } |
- | ||
47 | } |
- | ||
48 | |
- | ||
49 | public static bool TryParse(char mode, out RadioMode radioMode) |
- | ||
50 | { |
- | ||
51 | switch (mode) |
- | ||
52 | { |
- | ||
53 | case '1': |
- | ||
54 | case '2': |
- | ||
55 | case '3': |
- | ||
56 | case '4': |
- | ||
57 | case '5': |
- | ||
58 | case '6': |
- | ||
59 | case '7': |
- | ||
60 | case '8': |
- | ||
61 | case '9': |
- | ||
62 | case 'B': |
- | ||
63 | case 'C': |
- | ||
64 | case 'D': |
- | ||
65 | radioMode = new RadioMode(mode); |
- | ||
Line 66... | Line 21... | |||
66 | return true; |
21 | |
|
67 | default: |
22 | public abstract char AsChar(RadioMode radioMode); |
|
68 | radioMode = null; |
23 | |
|
69 | return false; |
24 | public abstract bool TryParse(string mode, out RadioMode radioMode); |
|
70 | } |
- | ||
71 | } |
- | ||
72 | |
- | ||
73 | private char Parse(string mode) |
- | ||
74 | { |
25 | |
|
75 | switch (mode) |
- | ||
76 | { |
- | ||
77 | |
26 | public abstract bool TryParse(char mode, out RadioMode radioMode); |
|
78 | case "SSB_1": |
27 | |
|
79 | return '1'; |
28 | public static RadioMode Create(string radio, params object[] param) |
|
80 | case "SSB_2": |
- | ||
81 | return '2'; |
- | ||
82 | case "CW_1": |
- | ||
83 | return '3'; |
- | ||
84 | case "FM": |
29 | { |
|
85 | return '4'; |
- | ||
- | 30 | foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) |
||
86 | case "AM": |
31 | { |
|
87 | return '5'; |
- | ||
88 | case "RTTY_1": |
32 | foreach (var type in assembly.GetTypes()) |
|
89 | return '6'; |
- | ||
90 | case "CW_2": |
33 | { |
|
91 | return '7'; |
- | ||
92 | case "DATA_1": |
34 | if (typeof(RadioMode).IsAssignableFrom(type)) |
|
93 | return '8'; |
- | ||
94 | case "RTTY_2": |
35 | { |
|
95 | return '9'; |
36 | var radioAttribute = type.GetCustomAttribute<RadioAttribute>(); |
|
96 | case "FM-N": |
- | ||
97 | return 'B'; |
37 | |
|
98 | case "DATA_2": |
- | ||
Line 99... | Line -... | |||
99 | return 'C'; |
- | ||
100 | case "AM-N": |
- | ||
101 | return 'D'; |
- | ||
102 | default: |
- | ||
103 | throw new ArgumentException(); |
- | ||
104 | } |
- | ||
105 | } |
- | ||
106 | |
- | ||
107 | private char Parse(char mode) |
- | ||
108 | { |
- | ||
109 | switch (mode) |
- | ||
110 | { |
- | ||
111 | case '1': |
- | ||
112 | case '2': |
- | ||
113 | case '3': |
- | ||
114 | case '4': |
- | ||
115 | case '5': |
- | ||
116 | case '6': |
- | ||
117 | case '7': |
- | ||
118 | case '8': |
- | ||
119 | case '9': |
- | ||
120 | case 'B': |
- | ||
121 | case 'C': |
- | ||
122 | case 'D': |
- | ||
123 | return mode; |
- | ||
124 | default: |
- | ||
125 | throw new ArgumentException(); |
- | ||
126 | } |
- | ||
127 | } |
- | ||
128 | |
- | ||
129 | public static implicit operator RadioMode(string mode) |
- | ||
130 | { |
- | ||
131 | return new RadioMode(mode); |
- | ||
132 | } |
- | ||
133 | |
- | ||
134 | public static implicit operator string(RadioMode radioMode) |
- | ||
135 | { |
- | ||
136 | switch (radioMode.Mode) |
- | ||
137 | { |
- | ||
138 | case '1': |
- | ||
139 | return "SSB_1"; |
- | ||
140 | case '2': |
- | ||
141 | return "SSB_2"; |
- | ||
142 | case '3': |
- | ||
143 | return "CW_1"; |
- | ||
144 | case '4': |
- | ||
145 | return "FM"; |
- | ||
146 | case '5': |
- | ||
147 | return "AM"; |
- | ||
148 | case '6': |
- | ||
149 | return "RTTY_1"; |
- | ||
150 | case '7': |
- | ||
151 | return "CW_2"; |
- | ||
152 | case '8': |
- | ||
153 | return "DATA_1"; |
- | ||
154 | case '9': |
38 | if (radioAttribute != null && radioAttribute.Radio == radio) |
|
155 | return "RTTY_2"; |
- | ||
156 | case 'B': |
- | ||
157 | return "FM-N"; |
- | ||
158 | case 'C': |
- | ||
159 | return "DATA_2"; |
- | ||
160 | case 'D': |
- | ||
161 | return "AM-N"; |
- | ||
162 | default: |
- | ||
163 | throw new ArgumentException(); |
- | ||
164 | } |
- | ||
165 | } |
- | ||
166 | |
- | ||
167 | public static implicit operator RadioMode(char mode) |
39 | { |
|
168 | { |
40 | return (RadioMode)Activator.CreateInstance(type, param); |
|
169 | return new RadioMode(mode); |
41 | } |