mirror of
https://github.com/n5ac/mmtty.git
synced 2025-12-06 04:12:03 +01:00
commit
08f6df1eb6
16
ComLib.h
16
ComLib.h
|
|
@ -30,9 +30,20 @@
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <mbstring.h>
|
#include <mbstring.h>
|
||||||
#include <SHELLAPI.H>
|
#include <SHELLAPI.H>
|
||||||
|
//AA6YQ 1.65D->1.66G, JE3HHT 1.67
|
||||||
|
#define VERID "Ver1.70" //K6TU 1.68A -> 1.70A Hide FlexRadio Reserved and IQ Audio Devices
|
||||||
|
#define VERBETA "G" //JA7UDE 1.70A -> 1.70B G3WYW FT-991 CAT support
|
||||||
|
//AA6YQ 1.70C added COM16-32 to PTT/FSK port selector and Radio port selector, added 991 to Yaesu Group selector entry
|
||||||
|
//AA6YQ 1.70D prevent shift > 4000 Hz so CSlideFFT::Create does not divide by zero
|
||||||
|
//AA6YQ 1.70E limit PTT/FSK port selector and Radio port selector to display only 8 items
|
||||||
|
// added COM33-64 to PTT/FSK port selector and Radio port selector
|
||||||
|
// added 891 to Yaesu Group selector entry
|
||||||
|
// added 991 and 891 to Model selector for Yaesu Group
|
||||||
|
// provide "Hide FlexRadio Reserved and IQ Audio Devices" checkbox on the Options panel's Soundcard tab.
|
||||||
|
//AA6YQ 1.70F notify user if attempting to open FSK TxD port at low speed, as many serial port devices can't do this
|
||||||
|
// accept RXM_SOUNDSOURCE message to change soundcard source channel (mono, left, right)
|
||||||
|
//JA7UDE 1.70G translate new 1.70F error message into Japanese
|
||||||
|
|
||||||
#define VERID "Ver1.70" //K6TU 1.68A -> 1.70A AA6YQ 1.65D->1.66G, JE3HHT 1.67
|
|
||||||
#define VERBETA "A"
|
|
||||||
#define VERTTL2 "MMTTY "VERID VERBETA
|
#define VERTTL2 "MMTTY "VERID VERBETA
|
||||||
#define VERTTL VERTTL2" (C) JE3HHT 2000-2010."
|
#define VERTTL VERTTL2" (C) JE3HHT 2000-2010."
|
||||||
|
|
||||||
|
|
@ -216,6 +227,7 @@ typedef struct {
|
||||||
int m_SoundPriority;
|
int m_SoundPriority;
|
||||||
int m_SoundDevice;
|
int m_SoundDevice;
|
||||||
int m_SoundOutDevice; //AA6YQ 1.66
|
int m_SoundOutDevice; //AA6YQ 1.66
|
||||||
|
int m_HideFlexAudio; //AA6YQ 1.70E
|
||||||
int m_SoundStereo;
|
int m_SoundStereo;
|
||||||
int m_SoundFifoRX;
|
int m_SoundFifoRX;
|
||||||
int m_SoundFifoTX;
|
int m_SoundFifoTX;
|
||||||
|
|
|
||||||
18
Main.cpp
18
Main.cpp
|
|
@ -458,6 +458,8 @@ __fastcall TMmttyWd::TMmttyWd(TComponent* Owner)
|
||||||
sys.m_SoundPriority = 1;
|
sys.m_SoundPriority = 1;
|
||||||
sys.m_SoundStereo = 0;
|
sys.m_SoundStereo = 0;
|
||||||
|
|
||||||
|
sys.m_HideFlexAudio=0; //AA6YQ 1.70E
|
||||||
|
|
||||||
sys.m_txuos = 1;
|
sys.m_txuos = 1;
|
||||||
sys.m_dblsft = 0;
|
sys.m_dblsft = 0;
|
||||||
|
|
||||||
|
|
@ -1586,9 +1588,14 @@ void __fastcall TMmttyWd::OpenClosePTT(void)
|
||||||
delete pComm;
|
delete pComm;
|
||||||
pComm = NULL;
|
pComm = NULL;
|
||||||
if( !Remote || !m_RemoteTimer ){
|
if( !Remote || !m_RemoteTimer ){
|
||||||
|
if (cm.Baud<110){ //1.70F notify user if attempting to open port at low speed, as many devices can't do this
|
||||||
|
ErrorMB( (Font->Charset != SHIFTJIS_CHARSET)? "Cannot open '%s' at '%s' baud; if the selected serial port can't handle this baud rate, use EXTFSK.":"'%s'をボーレート'%s'で開けません.もし、選択したシリアルポートがこのボーレートをサポートしていないときはEXTFSKを使ってください。", sys.m_TxRxName.c_str(),AnsiString(cm.Baud).c_str());
|
||||||
|
}
|
||||||
|
else {
|
||||||
ErrorMB( (Font->Charset != SHIFTJIS_CHARSET)? "Cannot open '%s'":"'%s'‚ªƒI<C692>[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", sys.m_TxRxName.c_str());
|
ErrorMB( (Font->Charset != SHIFTJIS_CHARSET)? "Cannot open '%s'":"'%s'‚ªƒI<C692>[ƒvƒ“‚Å‚«‚Ü‚¹‚ñ.", sys.m_TxRxName.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
_noerr:;
|
_noerr:;
|
||||||
if( (pMap != NULL) && !(Remote & REMDISSHARED) ) StrCopy(pMap->comName, sys.m_TxRxName.c_str(), sizeof(pMap->comName)-1);
|
if( (pMap != NULL) && !(Remote & REMDISSHARED) ) StrCopy(pMap->comName, sys.m_TxRxName.c_str(), sizeof(pMap->comName)-1);
|
||||||
}
|
}
|
||||||
|
|
@ -2032,6 +2039,9 @@ void __fastcall TMmttyWd::ReadRegister(void)
|
||||||
sys.m_SoundPriority = pIniFile->ReadInteger("Define", "SoundPriority", sys.m_SoundPriority);
|
sys.m_SoundPriority = pIniFile->ReadInteger("Define", "SoundPriority", sys.m_SoundPriority);
|
||||||
sys.m_SoundDevice = pIniFile->ReadInteger("Define", "SoundDevice", sys.m_SoundDevice);
|
sys.m_SoundDevice = pIniFile->ReadInteger("Define", "SoundDevice", sys.m_SoundDevice);
|
||||||
sys.m_SoundOutDevice = pIniFile->ReadInteger("Define", "SoundOutDevice", sys.m_SoundDevice); //AA6YQ 1.66
|
sys.m_SoundOutDevice = pIniFile->ReadInteger("Define", "SoundOutDevice", sys.m_SoundDevice); //AA6YQ 1.66
|
||||||
|
|
||||||
|
sys.m_HideFlexAudio = pIniFile->ReadInteger("Define", "HideFlexAudio", sys.m_HideFlexAudio); //AA6YQ 1.70E
|
||||||
|
|
||||||
sys.m_SoundMMW = pIniFile->ReadString("Define", "SoundMMW", sys.m_SoundMMW);
|
sys.m_SoundMMW = pIniFile->ReadString("Define", "SoundMMW", sys.m_SoundMMW);
|
||||||
pSound->m_IDDevice = sys.m_SoundDevice;
|
pSound->m_IDDevice = sys.m_SoundDevice;
|
||||||
pSound->m_IDOutDevice=sys.m_SoundOutDevice;
|
pSound->m_IDOutDevice=sys.m_SoundOutDevice;
|
||||||
|
|
@ -2374,6 +2384,8 @@ void __fastcall TMmttyWd::WriteRegister(void)
|
||||||
pIniFile->WriteInteger("Define", "SoundStereo", sys.m_SoundStereo);
|
pIniFile->WriteInteger("Define", "SoundStereo", sys.m_SoundStereo);
|
||||||
pIniFile->WriteString("Define", "SoundMMW", sys.m_SoundMMW);
|
pIniFile->WriteString("Define", "SoundMMW", sys.m_SoundMMW);
|
||||||
|
|
||||||
|
pIniFile->WriteInteger("Define", "HideFlexAudio", sys.m_HideFlexAudio); //AA6YQ 1.70E
|
||||||
|
|
||||||
pIniFile->WriteInteger("Define", "Tap", pSound->FSKDEM.GetFilterTap());
|
pIniFile->WriteInteger("Define", "Tap", pSound->FSKDEM.GetFilterTap());
|
||||||
pIniFile->WriteInteger("Define", "IIRBW", pSound->FSKDEM.m_iirfw);
|
pIniFile->WriteInteger("Define", "IIRBW", pSound->FSKDEM.m_iirfw);
|
||||||
|
|
||||||
|
|
@ -8664,6 +8676,12 @@ void __fastcall TMmttyWd::RemoteMMTTY(tagMSG &Msg)
|
||||||
sys.m_TxPort = Msg.lParam & 0x03;
|
sys.m_TxPort = Msg.lParam & 0x03;
|
||||||
COMM.change = 1;
|
COMM.change = 1;
|
||||||
OpenCloseCom();
|
OpenCloseCom();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case RXM_SOUNDSOURCE: // Added by AA6YQ 1.70F
|
||||||
|
if( sys.m_SoundStereo != (Msg.lParam & 0x03) ){
|
||||||
|
sys.m_SoundStereo = Msg.lParam & 0x03;
|
||||||
|
pSound->InitSound();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
3
Main.h
3
Main.h
|
|
@ -82,6 +82,7 @@ enum {
|
||||||
RXM_ENBSHARED,
|
RXM_ENBSHARED,
|
||||||
|
|
||||||
RXM_PTTFSK, // 30 Added by JE3HHT on Sep.2010
|
RXM_PTTFSK, // 30 Added by JE3HHT on Sep.2010
|
||||||
|
RXM_SOUNDSOURCE,// 31 Added by AA6YQ in 1.70F
|
||||||
//--------------------------------------
|
//--------------------------------------
|
||||||
TXM_HANDLE=0x8000, // MMTTY -> APP
|
TXM_HANDLE=0x8000, // MMTTY -> APP
|
||||||
TXM_REQHANDLE,
|
TXM_REQHANDLE,
|
||||||
|
|
@ -647,6 +648,8 @@ __published: // IDE
|
||||||
void __fastcall KMOptClick(TObject *Sender);
|
void __fastcall KMOptClick(TObject *Sender);
|
||||||
void __fastcall KViewClick(TObject *Sender);
|
void __fastcall KViewClick(TObject *Sender);
|
||||||
void __fastcall KExtCmdClick(TObject *Sender);
|
void __fastcall KExtCmdClick(TObject *Sender);
|
||||||
|
|
||||||
|
|
||||||
private: // ユーザー宣言
|
private: // ユーザー宣言
|
||||||
WAVEFORMAT wfm;
|
WAVEFORMAT wfm;
|
||||||
|
|
||||||
|
|
|
||||||
181
Option.cpp
181
Option.cpp
|
|
@ -37,7 +37,7 @@ static int PageIndexBPF = 0;
|
||||||
|
|
||||||
// Static array to map selected audio devices from radio group index
|
// Static array to map selected audio devices from radio group index
|
||||||
// to unit number - one each for input & output devices
|
// to unit number - one each for input & output devices
|
||||||
// K6TU 3/17/2015
|
// K6TU 1.70A 3/17/2015
|
||||||
static int InputDeviceMap[16];
|
static int InputDeviceMap[16];
|
||||||
static int OutputDeviceMap[16];
|
static int OutputDeviceMap[16];
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
|
|
@ -64,7 +64,7 @@ __fastcall TOptionDlg::TOptionDlg(TComponent* AOwner)
|
||||||
SetComboBox(pllVCOGain, MmttyWd->m_asVCOGain.c_str());
|
SetComboBox(pllVCOGain, MmttyWd->m_asVCOGain.c_str());
|
||||||
SetComboBox(pllLoopFC, MmttyWd->m_asLoopFC.c_str());
|
SetComboBox(pllLoopFC, MmttyWd->m_asLoopFC.c_str());
|
||||||
|
|
||||||
//K6TU
|
//K6TU 1.70A
|
||||||
// Amended enumeration of audio units to review the
|
// Amended enumeration of audio units to review the
|
||||||
// first 32 units for each of input & output.
|
// first 32 units for each of input & output.
|
||||||
//
|
//
|
||||||
|
|
@ -85,11 +85,13 @@ __fastcall TOptionDlg::TOptionDlg(TComponent* AOwner)
|
||||||
devName = MmttyWd->pSound->GetInputSoundcard(CurrentUnit);
|
devName = MmttyWd->pSound->GetInputSoundcard(CurrentUnit);
|
||||||
cString = AnsiString(devName).c_str();
|
cString = AnsiString(devName).c_str();
|
||||||
|
|
||||||
|
if (sys.m_HideFlexAudio) { //AA6YQ 1.70E
|
||||||
if (strstr(cString, "IQ") || strstr(cString, "RESERVED")) {
|
if (strstr(cString, "IQ") || strstr(cString, "RESERVED")) {
|
||||||
// This is one of the FlexRadio audio devices we don't want
|
// This is one of the FlexRadio audio devices we don't want
|
||||||
CurrentUnit++;
|
CurrentUnit++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// This is a device we want...
|
// This is a device we want...
|
||||||
if (devName) {
|
if (devName) {
|
||||||
|
|
@ -113,11 +115,13 @@ __fastcall TOptionDlg::TOptionDlg(TComponent* AOwner)
|
||||||
devName = MmttyWd->pSound->GetOutputSoundcard(CurrentUnit);
|
devName = MmttyWd->pSound->GetOutputSoundcard(CurrentUnit);
|
||||||
cString = AnsiString(devName).c_str();
|
cString = AnsiString(devName).c_str();
|
||||||
|
|
||||||
|
if (sys.m_HideFlexAudio) { //AA6YQ 1.70E
|
||||||
if (strstr(cString, "IQ") || strstr(cString, "RESERVED")) {
|
if (strstr(cString, "IQ") || strstr(cString, "RESERVED")) {
|
||||||
// This is one of the FlexRadio audio devices we don't want
|
// This is one of the FlexRadio audio devices we don't want
|
||||||
CurrentUnit++;
|
CurrentUnit++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// This is a device we want...
|
// This is a device we want...
|
||||||
if (devName) {
|
if (devName) {
|
||||||
|
|
@ -514,6 +518,8 @@ int __fastcall TOptionDlg::Execute(CFSKDEM *fp, CFSKMOD *mp)
|
||||||
FifoTX->Text = sys.m_SoundFifoTX;
|
FifoTX->Text = sys.m_SoundFifoTX;
|
||||||
SoundPriority->ItemIndex = sys.m_SoundPriority;
|
SoundPriority->ItemIndex = sys.m_SoundPriority;
|
||||||
|
|
||||||
|
HideFlexAudio->Checked = sys.m_HideFlexAudio; //AA6YQ 1.70E
|
||||||
|
|
||||||
if( sys.m_SoundDevice == -2 ){
|
if( sys.m_SoundDevice == -2 ){
|
||||||
DevNo->Text = sys.m_SoundMMW;
|
DevNo->Text = sys.m_SoundMMW;
|
||||||
}
|
}
|
||||||
|
|
@ -530,8 +536,9 @@ int __fastcall TOptionDlg::Execute(CFSKDEM *fp, CFSKMOD *mp)
|
||||||
}
|
}
|
||||||
|
|
||||||
//AA6YQ 1.66
|
//AA6YQ 1.66
|
||||||
//K6TU
|
//K6TU 1.70A
|
||||||
if (IsSoundcard (AnsiString(DevNo->Text).c_str())) { //JA7UDE 0428
|
if (IsSoundcard (AnsiString(DevNo->Text).c_str())) { //JA7UDE 0428
|
||||||
|
|
||||||
// Assuming that devices haven't been re-enumerated by Windows,
|
// Assuming that devices haven't been re-enumerated by Windows,
|
||||||
// we need to find the corresponding unit number in the map in order
|
// we need to find the corresponding unit number in the map in order
|
||||||
// to select the right unit
|
// to select the right unit
|
||||||
|
|
@ -542,6 +549,7 @@ int __fastcall TOptionDlg::Execute(CFSKDEM *fp, CFSKMOD *mp)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
InputSoundcards->ItemIndex = i != 16 ? i : -1;
|
InputSoundcards->ItemIndex = i != 16 ? i : -1;
|
||||||
// InputSoundcards->ItemIndex = atoi(AnsiString(DevNo->Text).c_str()); //AA6YQ 1.66 //JA7UDE 0428
|
// InputSoundcards->ItemIndex = atoi(AnsiString(DevNo->Text).c_str()); //AA6YQ 1.66 //JA7UDE 0428
|
||||||
}
|
}
|
||||||
|
|
@ -550,8 +558,9 @@ int __fastcall TOptionDlg::Execute(CFSKDEM *fp, CFSKMOD *mp)
|
||||||
}
|
}
|
||||||
|
|
||||||
//AA6YQ 1.66
|
//AA6YQ 1.66
|
||||||
//K6TU
|
//K6TU 1.70A
|
||||||
if (IsSoundcard (AnsiString(DevOutNo->Text).c_str())) { //JA7UDE 0428
|
if (IsSoundcard (AnsiString(DevOutNo->Text).c_str())) { //JA7UDE 0428
|
||||||
|
|
||||||
// Assuming that devices haven't been re-enumerated by Windows,
|
// Assuming that devices haven't been re-enumerated by Windows,
|
||||||
// we need to find the corresponding unit number in the map in order
|
// we need to find the corresponding unit number in the map in order
|
||||||
// to select the right unit
|
// to select the right unit
|
||||||
|
|
@ -562,8 +571,10 @@ int __fastcall TOptionDlg::Execute(CFSKDEM *fp, CFSKMOD *mp)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OutputSoundcards->ItemIndex = i != 16 ? i : -1;
|
OutputSoundcards->ItemIndex = i != 16 ? i : -1;
|
||||||
// OutputSoundcards->ItemIndex = atoi(AnsiString(DevOutNo->Text).c_str()); //AA6YQ 1.66 //JA7UDE 0428
|
// OutputSoundcards->ItemIndex = atoi(AnsiString(DevOutNo->Text).c_str()); //AA6YQ 1.66 //JA7UDE 0428
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
OutputSoundcards->ItemIndex =-1;
|
OutputSoundcards->ItemIndex =-1;
|
||||||
|
|
@ -820,8 +831,10 @@ int __fastcall TOptionDlg::Execute(CFSKDEM *fp, CFSKMOD *mp)
|
||||||
|
|
||||||
sys.m_SoundPriority = SoundPriority->ItemIndex;
|
sys.m_SoundPriority = SoundPriority->ItemIndex;
|
||||||
|
|
||||||
|
sys.m_HideFlexAudio=HideFlexAudio->Checked; //AA6YQ 1.70E
|
||||||
|
|
||||||
if( sscanf(AnsiString(DevNo->Text).c_str(), "%d", &dd) == 1 ){ //JA7UDE 0428
|
if( sscanf(AnsiString(DevNo->Text).c_str(), "%d", &dd) == 1 ){ //JA7UDE 0428
|
||||||
// Find the unit number in the input map and update
|
//K6TU 1.70A Find the unit number in the input map and update
|
||||||
sys.m_SoundDevice = InputDeviceMap[dd];
|
sys.m_SoundDevice = InputDeviceMap[dd];
|
||||||
// sys.m_SoundDevice = dd;
|
// sys.m_SoundDevice = dd;
|
||||||
}
|
}
|
||||||
|
|
@ -832,7 +845,7 @@ int __fastcall TOptionDlg::Execute(CFSKDEM *fp, CFSKMOD *mp)
|
||||||
|
|
||||||
//AA6YQ 1.66
|
//AA6YQ 1.66
|
||||||
if( sscanf(AnsiString(DevOutNo->Text).c_str(), "%d", &dd) == 1 ){ //JA7UDE 0428
|
if( sscanf(AnsiString(DevOutNo->Text).c_str(), "%d", &dd) == 1 ){ //JA7UDE 0428
|
||||||
// Find the unit in the output map and update
|
//K6TU 1.70A Find the unit in the output map and update
|
||||||
sys.m_SoundOutDevice = OutputDeviceMap[dd];
|
sys.m_SoundOutDevice = OutputDeviceMap[dd];
|
||||||
// sys.m_SoundOutDevice = dd;
|
// sys.m_SoundOutDevice = dd;
|
||||||
}
|
}
|
||||||
|
|
@ -1560,7 +1573,9 @@ void __fastcall TOptionDlg::PortNameDropDown(TObject *Sender)
|
||||||
for( int i = 0; i < m_MMList.GetCount(); i++ ){
|
for( int i = 0; i < m_MMList.GetCount(); i++ ){
|
||||||
PortName->Items->Add(m_MMList.GetItemName(i));
|
PortName->Items->Add(m_MMList.GetItemName(i));
|
||||||
}
|
}
|
||||||
PortName->DropDownCount = PortName->Items->Count;
|
//AA6YQ 1.70E
|
||||||
|
//PortName->DropDownCount = PortName->Items->Count;
|
||||||
|
PortName->DropDownCount = 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
@ -1670,3 +1685,155 @@ void __fastcall TOptionDlg::SBAA6YQClick(TObject *Sender)
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TOptionDlg::HideFlexAudioClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
int CountUnits = 0;
|
||||||
|
int CurrentUnit = 0;
|
||||||
|
|
||||||
|
int unitnum;
|
||||||
|
int i;
|
||||||
|
int NewDeviceNumber;
|
||||||
|
|
||||||
|
int InputDeviceNumber;
|
||||||
|
int MappedInputDeviceNumber;
|
||||||
|
int OutputDeviceNumber;
|
||||||
|
int MappedOutputDeviceNumber;
|
||||||
|
|
||||||
|
LPCSTR devName;
|
||||||
|
char *cString;
|
||||||
|
|
||||||
|
InputDeviceNumber = atoi(AnsiString(DevNo->Text).c_str());
|
||||||
|
|
||||||
|
if (InputDeviceNumber < 16) {
|
||||||
|
MappedInputDeviceNumber = InputDeviceMap[InputDeviceNumber];
|
||||||
|
} else {
|
||||||
|
MappedInputDeviceNumber=-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
OutputDeviceNumber = atoi(AnsiString(DevOutNo->Text).c_str());
|
||||||
|
|
||||||
|
if (OutputDeviceNumber < 16) {
|
||||||
|
MappedOutputDeviceNumber = OutputDeviceMap[OutputDeviceNumber];
|
||||||
|
} else {
|
||||||
|
MappedOutputDeviceNumber=-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
InputSoundcards->Items->BeginUpdate();
|
||||||
|
InputSoundcards->Items->Clear();
|
||||||
|
|
||||||
|
while (CountUnits < 16 && CurrentUnit < 32) {
|
||||||
|
devName = MmttyWd->pSound->GetInputSoundcard(CurrentUnit);
|
||||||
|
cString = AnsiString(devName).c_str();
|
||||||
|
|
||||||
|
if (HideFlexAudio->Checked) { //AA6YQ 1.70E
|
||||||
|
if (strstr(cString, "IQ") || strstr(cString, "RESERVED")) {
|
||||||
|
// This is one of the FlexRadio audio devices we don't want
|
||||||
|
CurrentUnit++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is a device we want...
|
||||||
|
if (devName) {
|
||||||
|
InputSoundcards->Items->Add(devName);
|
||||||
|
InputDeviceMap[CountUnits++] = CurrentUnit++;
|
||||||
|
} else {
|
||||||
|
CurrentUnit++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// for( int i = 0; i < 16; i++ ){
|
||||||
|
// InputSoundcards->Items->Add(MmttyWd->pSound->GetInputSoundcard(i));
|
||||||
|
// }
|
||||||
|
InputSoundcards->Items->EndUpdate();
|
||||||
|
|
||||||
|
if (HideFlexAudio->Checked != sys.m_HideFlexAudio) {
|
||||||
|
|
||||||
|
NewDeviceNumber=-1;
|
||||||
|
|
||||||
|
if (IsSoundcard (AnsiString(DevNo->Text).c_str())) {
|
||||||
|
|
||||||
|
if (HideFlexAudio->Checked) {
|
||||||
|
|
||||||
|
for (i=0; i < 16; i++) {
|
||||||
|
if (InputDeviceMap[i] == InputDeviceNumber) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
NewDeviceNumber = i != 16 ? i : -1;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
NewDeviceNumber = MappedInputDeviceNumber;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
InputSoundcards->ItemIndex = NewDeviceNumber;
|
||||||
|
DevNo->ItemIndex = NewDeviceNumber+1;
|
||||||
|
sys.m_SoundDevice = NewDeviceNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
OutputSoundcards->Items->BeginUpdate();
|
||||||
|
OutputSoundcards->Items->Clear();
|
||||||
|
|
||||||
|
CountUnits = 0;
|
||||||
|
CurrentUnit = 0;
|
||||||
|
while (CountUnits < 16 && CurrentUnit < 32) {
|
||||||
|
devName = MmttyWd->pSound->GetOutputSoundcard(CurrentUnit);
|
||||||
|
cString = AnsiString(devName).c_str();
|
||||||
|
|
||||||
|
if (HideFlexAudio->Checked) { //AA6YQ 1.70E
|
||||||
|
if (strstr(cString, "IQ") || strstr(cString, "RESERVED")) {
|
||||||
|
// This is one of the FlexRadio audio devices we don't want
|
||||||
|
CurrentUnit++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is a device we want...
|
||||||
|
if (devName) {
|
||||||
|
OutputSoundcards->Items->Add(devName);
|
||||||
|
OutputDeviceMap[CountUnits++] = CurrentUnit++;
|
||||||
|
} else {
|
||||||
|
CurrentUnit++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//for( int i = 0; i < 16; i++ ){
|
||||||
|
// OutputSoundcards->Items->Add(MmttyWd->pSound->GetOutputSoundcard(i));
|
||||||
|
//}
|
||||||
|
OutputSoundcards->Items->EndUpdate();
|
||||||
|
|
||||||
|
if (HideFlexAudio->Checked != sys.m_HideFlexAudio) {
|
||||||
|
|
||||||
|
NewDeviceNumber=-1;
|
||||||
|
|
||||||
|
if (IsSoundcard (AnsiString(DevOutNo->Text).c_str())) {
|
||||||
|
|
||||||
|
if (HideFlexAudio->Checked) {
|
||||||
|
|
||||||
|
for (i=0; i < 16; i++) {
|
||||||
|
if (OutputDeviceMap[i] == OutputDeviceNumber) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
NewDeviceNumber = i != 16 ? i : -1;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
NewDeviceNumber = MappedOutputDeviceNumber;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
OutputSoundcards->ItemIndex = NewDeviceNumber;
|
||||||
|
DevOutNo->ItemIndex = NewDeviceNumber+1;
|
||||||
|
sys.m_SoundOutDevice = NewDeviceNumber;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sys.m_HideFlexAudio = HideFlexAudio->Checked;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
BIN
Option.dfm
BIN
Option.dfm
Binary file not shown.
4
Option.h
4
Option.h
|
|
@ -279,6 +279,7 @@ __published:
|
||||||
TCheckBox *CBFix45;
|
TCheckBox *CBFix45;
|
||||||
TCheckBox *CBAA6YQ;
|
TCheckBox *CBAA6YQ;
|
||||||
TSpeedButton *SBAA6YQ;
|
TSpeedButton *SBAA6YQ;
|
||||||
|
TCheckBox *HideFlexAudio;
|
||||||
void __fastcall HamBtnClick(TObject *Sender);
|
void __fastcall HamBtnClick(TObject *Sender);
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -351,6 +352,9 @@ __published:
|
||||||
void __fastcall DevOutNoClick(TObject *Sender);
|
void __fastcall DevOutNoClick(TObject *Sender);
|
||||||
|
|
||||||
void __fastcall SBAA6YQClick(TObject *Sender);
|
void __fastcall SBAA6YQClick(TObject *Sender);
|
||||||
|
void __fastcall HideFlexAudioClick(TObject *Sender);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_FontCharset;
|
int m_FontCharset;
|
||||||
int m_FontStyle;
|
int m_FontStyle;
|
||||||
|
|
|
||||||
4
Rtty.cpp
4
Rtty.cpp
|
|
@ -740,6 +740,7 @@ void CFSKDEM::SetLPFFreq(double f)
|
||||||
|
|
||||||
void CFSKDEM::SetMarkFreq(double d)
|
void CFSKDEM::SetMarkFreq(double d)
|
||||||
{
|
{
|
||||||
|
if ((m_AFCSpaceFreq - d) < 4000) { //1.70D prevent divide by zero in M_SlideFFT.Create
|
||||||
m_SetMarkFreq = m_AFCMarkFreq = m_MarkFreq = d;
|
m_SetMarkFreq = m_AFCMarkFreq = m_MarkFreq = d;
|
||||||
MakeFilter(HMark, m_Tap, ffBPF, DemSamp, m_MarkFreq-m_FilWidth, m_MarkFreq+m_FilWidth, 60, 1.0);
|
MakeFilter(HMark, m_Tap, ffBPF, DemSamp, m_MarkFreq-m_FilWidth, m_MarkFreq+m_FilWidth, 60, 1.0);
|
||||||
SetIIR(m_iirfw);
|
SetIIR(m_iirfw);
|
||||||
|
|
@ -747,9 +748,11 @@ void CFSKDEM::SetMarkFreq(double d)
|
||||||
if( m_AFCSpaceFreq > m_AFCMarkFreq ) m_Phase.SetShift(m_AFCSpaceFreq - m_AFCMarkFreq);
|
if( m_AFCSpaceFreq > m_AFCMarkFreq ) m_Phase.SetShift(m_AFCSpaceFreq - m_AFCMarkFreq);
|
||||||
m_AA6YQ.SetMarkFreq(m_AFCMarkFreq);
|
m_AA6YQ.SetMarkFreq(m_AFCMarkFreq);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CFSKDEM::SetSpaceFreq(double d)
|
void CFSKDEM::SetSpaceFreq(double d)
|
||||||
{
|
{
|
||||||
|
if ((d - m_AFCMarkFreq) < 4000) { //1.70D prevent divide by zero in M_SlideFFT.Create
|
||||||
m_SetSpaceFreq = m_AFCSpaceFreq = m_SpaceFreq = d;
|
m_SetSpaceFreq = m_AFCSpaceFreq = m_SpaceFreq = d;
|
||||||
MakeFilter(HSpace, m_Tap, ffBPF, DemSamp, m_SpaceFreq-m_FilWidth, m_SpaceFreq+m_FilWidth, 60, 1.0);
|
MakeFilter(HSpace, m_Tap, ffBPF, DemSamp, m_SpaceFreq-m_FilWidth, m_SpaceFreq+m_FilWidth, 60, 1.0);
|
||||||
SetIIR(m_iirfw);
|
SetIIR(m_iirfw);
|
||||||
|
|
@ -757,6 +760,7 @@ void CFSKDEM::SetSpaceFreq(double d)
|
||||||
if( m_AFCSpaceFreq > m_AFCMarkFreq ) m_Phase.SetShift(m_AFCSpaceFreq - m_AFCMarkFreq);
|
if( m_AFCSpaceFreq > m_AFCMarkFreq ) m_Phase.SetShift(m_AFCSpaceFreq - m_AFCMarkFreq);
|
||||||
m_AA6YQ.SetSpaceFreq(m_AFCSpaceFreq);
|
m_AA6YQ.SetSpaceFreq(m_AFCSpaceFreq);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CFSKDEM::AFCMarkFreq(double d)
|
void CFSKDEM::AFCMarkFreq(double d)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ __fastcall TSound::TSound(bool CreateSuspended)
|
||||||
|
|
||||||
m_ReqFifoSize = 0;
|
m_ReqFifoSize = 0;
|
||||||
m_IDDevice = WAVE_MAPPER;
|
m_IDDevice = WAVE_MAPPER;
|
||||||
m_IDOutDevice = WAVE_MAPPER; //AA6YQ 1.6.6
|
m_IDOutDevice = WAVE_MAPPER; //AA6YQ 1.66
|
||||||
m_playmode = 0;
|
m_playmode = 0;
|
||||||
m_susp = 0;
|
m_susp = 0;
|
||||||
m_suspack = 0;
|
m_suspack = 0;
|
||||||
|
|
@ -1074,7 +1074,7 @@ int __fastcall TSound::DrawFFTWater(Graphics::TBitmap *pBitmap, int sw, int XRD)
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
//AA6YQ 1.6.6
|
//AA6YQ 1.66
|
||||||
LPCSTR __fastcall TSound::GetInputSoundcard(unsigned int ID)
|
LPCSTR __fastcall TSound::GetInputSoundcard(unsigned int ID)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
||||||
2
Sound.h
2
Sound.h
|
|
@ -123,7 +123,7 @@ public:
|
||||||
void __fastcall InitWFX(void);
|
void __fastcall InitWFX(void);
|
||||||
|
|
||||||
UINT m_IDDevice;
|
UINT m_IDDevice;
|
||||||
UINT m_IDOutDevice; //AA6YQ 1.6.6
|
UINT m_IDOutDevice; //AA6YQ 1.66
|
||||||
|
|
||||||
int m_playmode;
|
int m_playmode;
|
||||||
int m_susp;
|
int m_susp;
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ __fastcall TVerDspDlg::TVerDspDlg(TComponent* AOwner)
|
||||||
LTNX->Caption =
|
LTNX->Caption =
|
||||||
"------ Programming ------\r\n"
|
"------ Programming ------\r\n"
|
||||||
"Stu, K6TU (Updated 1.66A -> 1.70A)\r\n"
|
"Stu, K6TU (Updated 1.66A -> 1.70A)\r\n"
|
||||||
"Dave, AA6YQ (updated 1.65D -> 1.66G)\r\n"
|
"Dave, AA6YQ (updated 1.65D -> 1.66G, 1.70F)\r\n"
|
||||||
"------ Help, FAQ and Remote mode, etc... ------\r\n"
|
"------ Help, FAQ and Remote mode, etc... ------\r\n"
|
||||||
"Jan, KX2A Ken, VE5KC Bill, KB4IJ Andy, K3UK(KB2EOQ)\r\n"
|
"Jan, KX2A Ken, VE5KC Bill, KB4IJ Andy, K3UK(KB2EOQ)\r\n"
|
||||||
"Bill, K5YG Phil, GU0SUP, Josef, OK2WO Oba, JA7UDE\r\n"
|
"Bill, K5YG Phil, GU0SUP, Josef, OK2WO Oba, JA7UDE\r\n"
|
||||||
|
|
|
||||||
27
cradio.cpp
27
cradio.cpp
|
|
@ -718,11 +718,13 @@ void CCradio::Timer(int tx, int interval)
|
||||||
SendCommand("\\$0000000003");
|
SendCommand("\\$0000000003");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//1.66B AA6YQ
|
//1.66B. 1.70E AA6YQ
|
||||||
case RADIO_POLLFT9000:
|
case RADIO_POLLFT9000:
|
||||||
case RADIO_POLLFT2000:
|
case RADIO_POLLFT2000:
|
||||||
case RADIO_POLLFT950:
|
case RADIO_POLLFT950:
|
||||||
case RADIO_POLLFT450:
|
case RADIO_POLLFT450:
|
||||||
|
case RADIO_POLLFT991:
|
||||||
|
case RADIO_POLLFT891:
|
||||||
m_rxcnt = 0;
|
m_rxcnt = 0;
|
||||||
SendCommand("IF;");
|
SendCommand("IF;");
|
||||||
break;
|
break;
|
||||||
|
|
@ -1035,20 +1037,35 @@ void CCradio::FreqKenwood(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
//AA6YQ 1.66B
|
//AA6YQ 1.66B
|
||||||
|
//G3WYW Fix for FT-991 1.70B
|
||||||
void CCradio::FreqYaesu9K2K(void)
|
void CCradio::FreqYaesu9K2K(void)
|
||||||
{
|
{
|
||||||
//0123456789012
|
//000000000011111111112222222222
|
||||||
//IF00021155000 +001000 0002000008 ;
|
//012345678901234567890123456789
|
||||||
//abcdefghijklmnopqrstuvwxyz1234567890 <---- 桁位置
|
//IF000021155000+0000RTMVCTTS; <= FT991
|
||||||
//f - m 周波数 21.155MHz
|
//IF00021155000+0000RTMVCTTS; <= FT9K2K
|
||||||
|
//abcdefghijklmnopqrstuvwxyz1234567890 <----<2D>@Digit position
|
||||||
|
//f - m Žü”g<E2809D>” freq<65>@21.155MHz
|
||||||
|
|
||||||
ULONG fq = 0;
|
ULONG fq = 0;
|
||||||
|
|
||||||
|
//G3WYW Feb 2016 am I a FT-991 or FT9K2K?
|
||||||
|
if (m_rxbuf[26] == ';')
|
||||||
|
{ //FT9K2K
|
||||||
m_rxbuf[13] = 0;
|
m_rxbuf[13] = 0;
|
||||||
if( sscanf((LPCSTR)&m_rxbuf[5], "%lu", &fq) == 1 ){
|
if( sscanf((LPCSTR)&m_rxbuf[5], "%lu", &fq) == 1 ){
|
||||||
if( fq ) UpdateFreq(double(fq)/1e6);
|
if( fq ) UpdateFreq(double(fq)/1e6);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else //FT991
|
||||||
|
{
|
||||||
|
m_rxbuf[14] = 0;
|
||||||
|
if( sscanf((LPCSTR)&m_rxbuf[5], "%lu", &fq) == 1 ){
|
||||||
|
if( fq ) UpdateFreq(double(fq)/1e6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void CCradio::FreqJST245(void)
|
void CCradio::FreqJST245(void)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
2
cradio.h
2
cradio.h
|
|
@ -87,6 +87,8 @@ enum {
|
||||||
RADIO_POLLFT2000, //1.66B AA6YQ
|
RADIO_POLLFT2000, //1.66B AA6YQ
|
||||||
RADIO_POLLFT950, //1.66B AA6YQ
|
RADIO_POLLFT950, //1.66B AA6YQ
|
||||||
RADIO_POLLFT450, //1.66B AA6YQ
|
RADIO_POLLFT450, //1.66B AA6YQ
|
||||||
|
RADIO_POLLFT991, //1.70E AA6YQ
|
||||||
|
RADIO_POLLFT891, //1.70E AA6YQ
|
||||||
};
|
};
|
||||||
|
|
||||||
class CCradio : public TThread
|
class CCradio : public TThread
|
||||||
|
|
|
||||||
19
radioset.cpp
19
radioset.cpp
|
|
@ -29,7 +29,7 @@
|
||||||
//Define Maker groups; index is used by IsCompatible to select the correct Maker based on PollType (RADIO_POLLx)
|
//Define Maker groups; index is used by IsCompatible to select the correct Maker based on PollType (RADIO_POLLx)
|
||||||
LPCSTR __MK[]={
|
LPCSTR __MK[]={
|
||||||
"Yaesu FT 1000D, 1000MP, 920", //AA6YQ 1.66 cosmetic, MakerIndex=0
|
"Yaesu FT 1000D, 1000MP, 920", //AA6YQ 1.66 cosmetic, MakerIndex=0
|
||||||
"Yaesu FT 9000, 2000, 950, 450", //AA6YQ 1.66 , MakerIndex=1
|
"Yaesu FT 9000, 2000, 991, 891, 950, 450", //AA6YQ 1.66 , MakerIndex=1
|
||||||
"Yaesu FT 736, 817, 847, 857, 897", //AA6YQ 1.66 cosmetic, MakerIndex=2
|
"Yaesu FT 736, 817, 847, 857, 897", //AA6YQ 1.66 cosmetic, MakerIndex=2
|
||||||
"Icom xx=addr 01-7F", // , MakerIndex=3
|
"Icom xx=addr 01-7F", // , MakerIndex=3
|
||||||
"Ten-Tec Omni VI xx=addr 00-64", // , MakerIndex=4
|
"Ten-Tec Omni VI xx=addr 00-64", // , MakerIndex=4
|
||||||
|
|
@ -72,6 +72,8 @@ const POLLDEF __VT1[]={
|
||||||
{ "FT-2000", RADIO_POLLFT2000 }, //1.66B AA6YQ
|
{ "FT-2000", RADIO_POLLFT2000 }, //1.66B AA6YQ
|
||||||
{ "FT-950", RADIO_POLLFT950 }, //1.66B AA6YQ
|
{ "FT-950", RADIO_POLLFT950 }, //1.66B AA6YQ
|
||||||
{ "FT-450", RADIO_POLLFT450 }, //1.66B AA6YQ
|
{ "FT-450", RADIO_POLLFT450 }, //1.66B AA6YQ
|
||||||
|
{ "FT-991", RADIO_POLLFT991 }, //1.70E AA6YQ
|
||||||
|
{ "FT-891", RADIO_POLLFT891 }, //1.70E AA6YQ
|
||||||
{ NULL, 0 },
|
{ NULL, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -125,6 +127,8 @@ const POLLDEF __VTUNKNOWN[]={
|
||||||
{ "YAESU FT-2000", RADIO_POLLFT2000 }, //1.66B AA6YQ
|
{ "YAESU FT-2000", RADIO_POLLFT2000 }, //1.66B AA6YQ
|
||||||
{ "YAESU FT-950", RADIO_POLLFT950 }, //1.66B AA6YQ
|
{ "YAESU FT-950", RADIO_POLLFT950 }, //1.66B AA6YQ
|
||||||
{ "YAESU FT-450", RADIO_POLLFT450 }, //1.66B AA6YQ
|
{ "YAESU FT-450", RADIO_POLLFT450 }, //1.66B AA6YQ
|
||||||
|
{ "YAESU FT-991", RADIO_POLLFT991 }, //1.70E AA6YQ
|
||||||
|
{ "YAESU FT-891", RADIO_POLLFT891 }, //1.70E AA6YQ
|
||||||
{ NULL, 0 },
|
{ NULL, 0 },
|
||||||
};
|
};
|
||||||
const POLLDEF *__VL[]={
|
const POLLDEF *__VL[]={
|
||||||
|
|
@ -151,7 +155,11 @@ __fastcall TRADIOSetDlg::TRADIOSetDlg(TComponent* AOwner)
|
||||||
for( int i = 0; i < m_MMList.GetCount(); i++ ){
|
for( int i = 0; i < m_MMList.GetCount(); i++ ){
|
||||||
PortName->Items->Insert(1, m_MMList.GetItemName(i));
|
PortName->Items->Insert(1, m_MMList.GetItemName(i));
|
||||||
}
|
}
|
||||||
PortName->DropDownCount = PortName->Items->Count;
|
|
||||||
|
//AA6YQ 1.70E
|
||||||
|
//PortName->DropDownCount = PortName->Items->Count;
|
||||||
|
PortName->DropDownCount = 8;
|
||||||
|
|
||||||
m_DisEvent = 0;
|
m_DisEvent = 0;
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
|
|
@ -404,6 +412,12 @@ int __fastcall TRADIOSetDlg::IsCompatible(int PollType, int MakerIndex)
|
||||||
else if (PollType == RADIO_POLLFT450) {
|
else if (PollType == RADIO_POLLFT450) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
else if (PollType == RADIO_POLLFT991) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else if (PollType == RADIO_POLLFT891) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -560,3 +574,4 @@ void __fastcall TRADIOSetDlg::SBHelpClick(TObject *Sender)
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
BIN
radioset.dfm
BIN
radioset.dfm
Binary file not shown.
|
|
@ -108,7 +108,7 @@ private:
|
||||||
int m_DisEvent;
|
int m_DisEvent;
|
||||||
int __fastcall IsXX(void);
|
int __fastcall IsXX(void);
|
||||||
int __fastcall IsSame(LPCSTR v, LPCSTR t);
|
int __fastcall IsSame(LPCSTR v, LPCSTR t);
|
||||||
int __fastcall IsCompatible(int PollType, int MakerIndex); //AA6YQ 1.6.6
|
int __fastcall IsCompatible(int PollType, int MakerIndex); //AA6YQ 1.66
|
||||||
void __fastcall SetMaker(void);
|
void __fastcall SetMaker(void);
|
||||||
void __fastcall UpdateUI(void);
|
void __fastcall UpdateUI(void);
|
||||||
void __fastcall SetVFOList(void);
|
void __fastcall SetVFOList(void);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue