HamBook – Diff between revs 1 and 3
?pathlinks?
Rev 1 | Rev 3 | |||
---|---|---|---|---|
Line 5... | Line 5... | |||
5 | using System.Text; |
5 | using System.Text; |
|
6 | using System.Threading.Tasks; |
6 | using System.Threading.Tasks; |
|
Line 7... | Line 7... | |||
7 | |
7 | |
|
8 | namespace HamBook.Radios.Generic |
8 | namespace HamBook.Radios.Generic |
|
9 | { |
9 | { |
|
10 | public enum RadioMode |
10 | public class RadioMode |
|
- | 11 | { |
||
- | 12 | public char Mode { get; private set; } |
||
- | 13 | |
||
- | 14 | public RadioMode(string mode) |
||
- | 15 | { |
||
- | 16 | Mode = Parse(mode); |
||
- | 17 | } |
||
- | 18 | |
||
- | 19 | public RadioMode(char mode) |
||
- | 20 | { |
||
- | 21 | Mode = Parse(mode); |
||
- | 22 | } |
||
- | 23 | |
||
- | 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": |
||
- | 37 | case "RTTY_2": |
||
- | 38 | case "FM-N": |
||
- | 39 | case "DATA_2": |
||
- | 40 | case "AM-N": |
||
- | 41 | radioMode = new RadioMode(mode); |
||
- | 42 | return true; |
||
- | 43 | default: |
||
- | 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); |
||
- | 66 | return true; |
||
- | 67 | default: |
||
- | 68 | radioMode = null; |
||
- | 69 | return false; |
||
- | 70 | } |
||
- | 71 | } |
||
- | 72 | |
||
- | 73 | private char Parse(string mode) |
||
- | 74 | { |
||
- | 75 | switch (mode) |
||
- | 76 | { |
||
- | 77 | |
||
- | 78 | case "SSB_1": |
||
- | 79 | return '1'; |
||
- | 80 | case "SSB_2": |
||
- | 81 | return '2'; |
||
- | 82 | case "CW_1": |
||
- | 83 | return '3'; |
||
- | 84 | case "FM": |
||
- | 85 | return '4'; |
||
- | 86 | case "AM": |
||
- | 87 | return '5'; |
||
- | 88 | case "RTTY_1": |
||
- | 89 | return '6'; |
||
- | 90 | case "CW_2": |
||
- | 91 | return '7'; |
||
- | 92 | case "DATA_1": |
||
- | 93 | return '8'; |
||
- | 94 | case "RTTY_2": |
||
- | 95 | return '9'; |
||
- | 96 | case "FM-N": |
||
- | 97 | return 'B'; |
||
- | 98 | case "DATA_2": |
||
- | 99 | return 'C'; |
||
- | 100 | case "AM-N": |
||
- | 101 | return 'D'; |
||
- | 102 | default: |
||
11 | { |
103 | throw new ArgumentException(); |
|
- | 104 | } |
||
- | 105 | } |
||
- | 106 | |
||
- | 107 | private char Parse(char mode) |
||
- | 108 | { |
||
12 | NONE, |
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: |
||
13 | SSB_1, |
125 | throw new ArgumentException(); |
|
14 | SSB_2, |
126 | } |
|
- | 127 | } |
||
- | 128 | |
||
15 | AM, |
129 | public static implicit operator string(RadioMode radioMode) |
|
- | 130 | { |
||
- | 131 | switch (radioMode.Mode) |
||
- | 132 | { |
||
- | 133 | case '1': |
||
- | 134 | return "SSB_1"; |
||
- | 135 | case '2': |
||
- | 136 | return "SSB_2"; |
||
- | 137 | case '3': |
||
- | 138 | return "CW_1"; |
||
- | 139 | case '4': |
||
- | 140 | return "FM"; |
||
- | 141 | case '5': |
||
- | 142 | return "AM"; |
||
- | 143 | case '6': |
||
- | 144 | return "RTTY_1"; |
||
- | 145 | case '7': |
||
- | 146 | return "CW_2"; |
||
- | 147 | case '8': |
||
- | 148 | return "DATA_1"; |
||
- | 149 | case '9': |
||
- | 150 | return "RTTY_2"; |
||
- | 151 | case 'B': |
||
- | 152 | return "FM-N"; |
||
- | 153 | case 'C': |
||
- | 154 | return "DATA_2"; |
||
- | 155 | case 'D': |
||
- | 156 | return "AM-N"; |
||
- | 157 | default: |
||
- | 158 | throw new ArgumentException(); |
||
- | 159 | } |
||
- | 160 | } |
||
- | 161 | |
||
- | 162 | public static implicit operator RadioMode(char mode) |
||
- | 163 | { |
||
- | 164 | return new RadioMode(mode); |
||
- | 165 | } |
||
- | 166 | |
||
- | 167 | public static implicit operator char(RadioMode radioMode) |
||
- | 168 | { |
||
16 | FM, |
169 | return radioMode.Mode; |
|
17 | CW |
170 | } |
|
18 | } |
171 | } |