HamBook – Rev 16
?pathlinks?
using Org.BouncyCastle.Crypto.Tls;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HamBook.Radios.Generic
{
public class RadioMode
{
public char Mode { get; private set; }
public RadioMode(string mode)
{
Mode = Parse(mode);
}
public RadioMode(char mode)
{
Mode = Parse(mode);
}
public static bool TryParse(string mode, out RadioMode radioMode)
{
switch(mode)
{
case "SSB_1":
case "SSB_2":
case "CW_1":
case "FM":
case "AM":
case "RTTY_1":
case "CW_2":
case "DATA_1":
case "RTTY_2":
case "FM-N":
case "DATA_2":
case "AM-N":
radioMode = new RadioMode(mode);
return true;
default:
radioMode = null;
return false;
}
}
public static bool TryParse(char mode, out RadioMode radioMode)
{
switch (mode)
{
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case 'B':
case 'C':
case 'D':
radioMode = new RadioMode(mode);
return true;
default:
radioMode = null;
return false;
}
}
private char Parse(string mode)
{
switch (mode)
{
case "SSB_1":
return '1';
case "SSB_2":
return '2';
case "CW_1":
return '3';
case "FM":
return '4';
case "AM":
return '5';
case "RTTY_1":
return '6';
case "CW_2":
return '7';
case "DATA_1":
return '8';
case "RTTY_2":
return '9';
case "FM-N":
return 'B';
case "DATA_2":
return 'C';
case "AM-N":
return 'D';
default:
throw new ArgumentException();
}
}
private char Parse(char mode)
{
switch (mode)
{
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case 'B':
case 'C':
case 'D':
return mode;
default:
throw new ArgumentException();
}
}
public static implicit operator RadioMode(string mode)
{
return new RadioMode(mode);
}
public static implicit operator string(RadioMode radioMode)
{
switch (radioMode.Mode)
{
case '1':
return "SSB_1";
case '2':
return "SSB_2";
case '3':
return "CW_1";
case '4':
return "FM";
case '5':
return "AM";
case '6':
return "RTTY_1";
case '7':
return "CW_2";
case '8':
return "DATA_1";
case '9':
return "RTTY_2";
case 'B':
return "FM-N";
case 'C':
return "DATA_2";
case 'D':
return "AM-N";
default:
throw new ArgumentException();
}
}
public static implicit operator RadioMode(char mode)
{
return new RadioMode(mode);
}
public static implicit operator char(RadioMode radioMode)
{
return radioMode.Mode;
}
}
}