HamBook – Diff between revs 15 and 43

Subversion Repositories:
Rev:
Show entire fileIgnore whitespace
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 }