New upstream version 0.0.0.71
This commit is contained in:
parent
1407d7b686
commit
c264c0c638
|
@ -54,6 +54,7 @@ extern int CWIDLeft;
|
||||||
extern int CWIDRight;
|
extern int CWIDRight;
|
||||||
extern int CWIDType;
|
extern int CWIDType;
|
||||||
extern bool afterTraffic;
|
extern bool afterTraffic;
|
||||||
|
extern bool darkTheme;
|
||||||
|
|
||||||
extern "C" int RSID_SABM[4];
|
extern "C" int RSID_SABM[4];
|
||||||
extern "C" int RSID_UI[4];
|
extern "C" int RSID_UI[4];
|
||||||
|
@ -115,6 +116,7 @@ void GetPortSettings(int Chan)
|
||||||
|
|
||||||
fx25_mode[Chan] = getAX25Param("FX25", FX25_MODE_RX).toInt();
|
fx25_mode[Chan] = getAX25Param("FX25", FX25_MODE_RX).toInt();
|
||||||
il2p_mode[Chan] = getAX25Param("IL2P", IL2P_MODE_NONE).toInt();
|
il2p_mode[Chan] = getAX25Param("IL2P", IL2P_MODE_NONE).toInt();
|
||||||
|
il2p_crc[Chan] = getAX25Param("IL2PCRC", 0).toInt();
|
||||||
RSID_UI[Chan] = getAX25Param("RSID_UI", 0).toInt();
|
RSID_UI[Chan] = getAX25Param("RSID_UI", 0).toInt();
|
||||||
RSID_SABM[Chan] = getAX25Param("RSID_SABM", 0).toInt();
|
RSID_SABM[Chan] = getAX25Param("RSID_SABM", 0).toInt();
|
||||||
RSID_SetModem[Chan] = getAX25Param("RSID_SetModem", 0).toInt();
|
RSID_SetModem[Chan] = getAX25Param("RSID_SetModem", 0).toInt();
|
||||||
|
@ -303,6 +305,8 @@ void getSettings()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
darkTheme = settings->value("Init/darkTheme", false).toBool();
|
||||||
|
|
||||||
delete(settings);
|
delete(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -347,6 +351,7 @@ void SavePortSettings(int Chan)
|
||||||
saveAX25Param("MyDigiCall", MyDigiCall[Chan]);
|
saveAX25Param("MyDigiCall", MyDigiCall[Chan]);
|
||||||
saveAX25Param("FX25", fx25_mode[Chan]);
|
saveAX25Param("FX25", fx25_mode[Chan]);
|
||||||
saveAX25Param("IL2P", il2p_mode[Chan]);
|
saveAX25Param("IL2P", il2p_mode[Chan]);
|
||||||
|
saveAX25Param("IL2PCRC", il2p_crc[Chan]);
|
||||||
saveAX25Param("RSID_UI", RSID_UI[Chan]);
|
saveAX25Param("RSID_UI", RSID_UI[Chan]);
|
||||||
saveAX25Param("RSID_SABM", RSID_SABM[Chan]);
|
saveAX25Param("RSID_SABM", RSID_SABM[Chan]);
|
||||||
saveAX25Param("RSID_SetModem", RSID_SetModem[Chan]);
|
saveAX25Param("RSID_SetModem", RSID_SetModem[Chan]);
|
||||||
|
@ -463,6 +468,8 @@ void saveSettings()
|
||||||
settings->setValue("Modem/CWIDType", CWIDType);
|
settings->setValue("Modem/CWIDType", CWIDType);
|
||||||
settings->setValue("Modem/afterTraffic", afterTraffic);
|
settings->setValue("Modem/afterTraffic", afterTraffic);
|
||||||
|
|
||||||
|
settings->setValue("Init/darkTheme", darkTheme);
|
||||||
|
|
||||||
saveAX25Params(0);
|
saveAX25Params(0);
|
||||||
saveAX25Params(1);
|
saveAX25Params(1);
|
||||||
saveAX25Params(2);
|
saveAX25Params(2);
|
||||||
|
|
|
@ -737,6 +737,19 @@
|
||||||
<string>Retries</string>
|
<string>Retries</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="CRC_A">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>200</x>
|
||||||
|
<y>280</y>
|
||||||
|
<width>53</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>CRC</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -1445,6 +1458,19 @@
|
||||||
</property>
|
</property>
|
||||||
</item>
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="CRC_B">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>200</x>
|
||||||
|
<y>280</y>
|
||||||
|
<width>53</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>CRC</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QLabel" name="label_88">
|
<widget class="QLabel" name="label_88">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
|
@ -2202,6 +2228,19 @@
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="CRC_C">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>200</x>
|
||||||
|
<y>280</y>
|
||||||
|
<width>53</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>CRC</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QComboBox" name="IL2PModeC">
|
<widget class="QComboBox" name="IL2PModeC">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
|
@ -2956,6 +2995,19 @@
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="CRC_D">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>200</x>
|
||||||
|
<y>280</y>
|
||||||
|
<width>53</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>CRC</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QComboBox" name="IL2PModeD">
|
<widget class="QComboBox" name="IL2PModeD">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
|
@ -3041,6 +3093,9 @@
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Save</string>
|
<string>Save</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="default">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
|
|
@ -1,292 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{4EDE958E-D0AC-37B4-81F7-78313A262DCD}</ProjectGuid>
|
|
||||||
<RootNamespace>QtSoundModem</RootNamespace>
|
|
||||||
<Keyword>QtVS_v304</Keyword>
|
|
||||||
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
|
|
||||||
<WindowsTargetPlatformMinVersion>10.0.19041.0</WindowsTargetPlatformMinVersion>
|
|
||||||
<QtMsBuild Condition="'$(QtMsBuild)'=='' or !Exists('$(QtMsBuild)\qt.targets')">$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<OutputDirectory>release\</OutputDirectory>
|
|
||||||
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
|
|
||||||
<CharacterSet>NotSet</CharacterSet>
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<IntermediateDirectory>release\</IntermediateDirectory>
|
|
||||||
<PrimaryOutput>QtSoundModem</PrimaryOutput>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<OutputDirectory>debug\</OutputDirectory>
|
|
||||||
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
|
|
||||||
<CharacterSet>NotSet</CharacterSet>
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<IntermediateDirectory>debug\</IntermediateDirectory>
|
|
||||||
<PrimaryOutput>QtSoundModem</PrimaryOutput>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
|
|
||||||
<Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." />
|
|
||||||
</Target>
|
|
||||||
<ImportGroup Label="ExtensionSettings" />
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
|
|
||||||
<Import Project="$(QtMsBuild)\qt_defaults.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<IntDir>$(SolutionDir)Intermed\$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<TargetName>QtSoundModem</TargetName>
|
|
||||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
|
||||||
<LinkIncremental>true</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<IntDir>$(SolutionDir)Intermed\$(Platform)\$(Configuration)\\</IntDir>
|
|
||||||
<TargetName>QtSoundModem</TargetName>
|
|
||||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<QtInstall>5.14</QtInstall>
|
|
||||||
<QtModules>core;network;gui;widgets;serialport</QtModules>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<QtInstall>5.14.2</QtInstall>
|
|
||||||
<QtModules>core;network;gui;widgets;serialport</QtModules>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
|
|
||||||
<Import Project="$(QtMsBuild)\qt.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>rsid;.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;release;/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
|
|
||||||
<BrowseInformation>false</BrowseInformation>
|
|
||||||
<DebugInformationFormat>None</DebugInformationFormat>
|
|
||||||
<DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
|
||||||
<ExceptionHandling>Sync</ExceptionHandling>
|
|
||||||
<ObjectFileName>$(IntDir)</ObjectFileName>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<PreprocessToFile>false</PreprocessToFile>
|
|
||||||
<ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
|
||||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>libfftw3f-3.lib;shell32.lib;setupapi.lib;WS2_32.Lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<AdditionalLibraryDirectories>C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<DataExecutionPrevention>true</DataExecutionPrevention>
|
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
|
||||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<OutputFile>$(OutDir)QtSoundModem.exe</OutputFile>
|
|
||||||
<RandomizedBaseAddress>true</RandomizedBaseAddress>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
|
||||||
</Link>
|
|
||||||
<Midl>
|
|
||||||
<DefaultCharType>Unsigned</DefaultCharType>
|
|
||||||
<EnableErrorChecks>None</EnableErrorChecks>
|
|
||||||
<WarningLevel>0</WarningLevel>
|
|
||||||
</Midl>
|
|
||||||
<ResourceCompile>
|
|
||||||
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;NDEBUG;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_NETWORK_LIB;QT_SERIALPORT_LIB;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
</ResourceCompile>
|
|
||||||
<QtMoc>
|
|
||||||
<CompilerFlavor>msvc</CompilerFlavor>
|
|
||||||
<Include>./$(Configuration)/moc_predefs.h</Include>
|
|
||||||
<ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<DynamicSource>output</DynamicSource>
|
|
||||||
<QtMocDir>$(IntDir)</QtMocDir>
|
|
||||||
<QtMocFileName>moc_%(Filename).cpp</QtMocFileName>
|
|
||||||
</QtMoc>
|
|
||||||
<QtRcc>
|
|
||||||
<InitFuncName>QtSoundModem</InitFuncName>
|
|
||||||
<Compression>default</Compression>
|
|
||||||
<ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<QtRccDir>$(IntDir)</QtRccDir>
|
|
||||||
<QtRccFileName>qrc_%(Filename).cpp</QtRccFileName>
|
|
||||||
</QtRcc>
|
|
||||||
<QtUic>
|
|
||||||
<ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<QtUicDir>$(IntDir)</QtUicDir>
|
|
||||||
<QtUicFileName>ui_%(Filename).h</QtUicFileName>
|
|
||||||
</QtUic>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;debug;/include;rsid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
|
|
||||||
<BrowseInformation>false</BrowseInformation>
|
|
||||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
|
||||||
<DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
|
||||||
<ExceptionHandling>Sync</ExceptionHandling>
|
|
||||||
<ObjectFileName>$(IntDir)</ObjectFileName>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<PreprocessToFile>false</PreprocessToFile>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
||||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
|
||||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
<ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>libfftw3f-3.lib;shell32.lib;setupapi.lib;WS2_32.Lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<AdditionalLibraryDirectories>C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<DataExecutionPrevention>true</DataExecutionPrevention>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
|
||||||
<OutputFile>$(OutDir)\QtSoundModem.exe</OutputFile>
|
|
||||||
<RandomizedBaseAddress>true</RandomizedBaseAddress>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
|
||||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
|
||||||
</Link>
|
|
||||||
<Midl>
|
|
||||||
<DefaultCharType>Unsigned</DefaultCharType>
|
|
||||||
<EnableErrorChecks>None</EnableErrorChecks>
|
|
||||||
<WarningLevel>0</WarningLevel>
|
|
||||||
</Midl>
|
|
||||||
<ResourceCompile>
|
|
||||||
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_WIDGETS_LIB;QT_GUI_LIB;QT_NETWORK_LIB;QT_SERIALPORT_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
</ResourceCompile>
|
|
||||||
<QtMoc>
|
|
||||||
<CompilerFlavor>msvc</CompilerFlavor>
|
|
||||||
<Include>./$(Configuration)/moc_predefs.h</Include>
|
|
||||||
<ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<DynamicSource>output</DynamicSource>
|
|
||||||
<QtMocDir>$(IntDir)</QtMocDir>
|
|
||||||
<QtMocFileName>moc_%(Filename).cpp</QtMocFileName>
|
|
||||||
</QtMoc>
|
|
||||||
<QtRcc>
|
|
||||||
<InitFuncName>QtSoundModem</InitFuncName>
|
|
||||||
<Compression>default</Compression>
|
|
||||||
<ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<QtRccDir>$(IntDir)</QtRccDir>
|
|
||||||
<QtRccFileName>qrc_%(Filename).cpp</QtRccFileName>
|
|
||||||
</QtRcc>
|
|
||||||
<QtUic>
|
|
||||||
<ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<QtUicDir>$(IntDir)</QtUicDir>
|
|
||||||
<QtUicFileName>ui_%(Filename).h</QtUicFileName>
|
|
||||||
</QtUic>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="ARDOPC.c" />
|
|
||||||
<ClCompile Include="BusyDetect.c" />
|
|
||||||
<ClCompile Include="Config.cpp" />
|
|
||||||
<ClCompile Include="dw9600.c" />
|
|
||||||
<ClCompile Include="hid.c" />
|
|
||||||
<ClCompile Include="il2p.c">
|
|
||||||
<CompileAs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">CompileAsC</CompileAs>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Modulate.c" />
|
|
||||||
<ClCompile Include="QtSoundModem.cpp" />
|
|
||||||
<ClCompile Include="rsid.c" />
|
|
||||||
<ClCompile Include="RSUnit.c" />
|
|
||||||
<ClCompile Include="SMMain.c" />
|
|
||||||
<ClCompile Include="ShowFilter.cpp" />
|
|
||||||
<ClCompile Include="SoundInput.c" />
|
|
||||||
<ClCompile Include="UZ7HOUtils.c" />
|
|
||||||
<ClCompile Include="ardopSampleArrays.c" />
|
|
||||||
<ClCompile Include="ax25.c" />
|
|
||||||
<ClCompile Include="ax25_agw.c" />
|
|
||||||
<ClCompile Include="ax25_demod.c" />
|
|
||||||
<ClCompile Include="ax25_fec.c" />
|
|
||||||
<ClCompile Include="ax25_l2.c" />
|
|
||||||
<ClCompile Include="ax25_mod.c" />
|
|
||||||
<ClCompile Include="berlekamp.c" />
|
|
||||||
<ClCompile Include="galois.c" />
|
|
||||||
<ClCompile Include="kiss_mode.c" />
|
|
||||||
<ClCompile Include="main.cpp" />
|
|
||||||
<ClCompile Include="ofdm.c" />
|
|
||||||
<ClCompile Include="pktARDOP.c" />
|
|
||||||
<ClCompile Include="rs.c" />
|
|
||||||
<ClCompile Include="sm_main.c" />
|
|
||||||
<ClCompile Include="tcpCode.cpp" />
|
|
||||||
<ClCompile Include="Waveout.c" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtMoc Include="QtSoundModem.h">
|
|
||||||
</QtMoc>
|
|
||||||
<ClInclude Include="UZ7HOStuff.h" />
|
|
||||||
<QtMoc Include="tcpCode.h">
|
|
||||||
</QtMoc>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<CustomBuild Include="debug\moc_predefs.h.cbt">
|
|
||||||
<FileType>Document</FileType>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
|
||||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs>
|
|
||||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >debug\moc_predefs.h</Command>
|
|
||||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generate moc_predefs.h</Message>
|
|
||||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\moc_predefs.h;%(Outputs)</Outputs>
|
|
||||||
</CustomBuild>
|
|
||||||
<CustomBuild Include="release\moc_predefs.h.cbt">
|
|
||||||
<FileType>Document</FileType>
|
|
||||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs>
|
|
||||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >release\moc_predefs.h</Command>
|
|
||||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generate moc_predefs.h</Message>
|
|
||||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\moc_predefs.h;%(Outputs)</Outputs>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
|
||||||
</CustomBuild>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtUic Include="ModemDialog.ui">
|
|
||||||
</QtUic>
|
|
||||||
<QtUic Include="QtSoundModem.ui">
|
|
||||||
</QtUic>
|
|
||||||
<QtUic Include="calibrateDialog.ui">
|
|
||||||
</QtUic>
|
|
||||||
<QtUic Include="devicesDialog.ui">
|
|
||||||
</QtUic>
|
|
||||||
<QtUic Include="filterWindow.ui">
|
|
||||||
</QtUic>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtRcc Include="QtSoundModem.qrc">
|
|
||||||
</QtRcc>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ResourceCompile Include=".\QtSoundModem_resource.rc" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Image Include="QtSoundModem.ico" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
|
|
||||||
<Import Project="$(QtMsBuild)\qt.targets" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="ExtensionTargets" />
|
|
||||||
</Project>
|
|
|
@ -1,288 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>{4EDE958E-D0AC-37B4-81F7-78313A262DCD}</ProjectGuid>
|
|
||||||
<RootNamespace>QtSoundModem</RootNamespace>
|
|
||||||
<Keyword>QtVS_v304</Keyword>
|
|
||||||
<WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
|
|
||||||
<WindowsTargetPlatformMinVersion>10.0.19041.0</WindowsTargetPlatformMinVersion>
|
|
||||||
<QtMsBuild Condition="'$(QtMsBuild)'=='' or !Exists('$(QtMsBuild)\qt.targets')">$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<OutputDirectory>release\</OutputDirectory>
|
|
||||||
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
|
|
||||||
<CharacterSet>NotSet</CharacterSet>
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<IntermediateDirectory>release\</IntermediateDirectory>
|
|
||||||
<PrimaryOutput>QtSoundModem</PrimaryOutput>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
|
||||||
<OutputDirectory>debug\</OutputDirectory>
|
|
||||||
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
|
|
||||||
<CharacterSet>NotSet</CharacterSet>
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<IntermediateDirectory>debug\</IntermediateDirectory>
|
|
||||||
<PrimaryOutput>QtSoundModem</PrimaryOutput>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
|
|
||||||
<Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." />
|
|
||||||
</Target>
|
|
||||||
<ImportGroup Label="ExtensionSettings" />
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
|
|
||||||
<Import Project="$(QtMsBuild)\qt_defaults.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<OutDir>C:\Dev\Msdev2005\projects\QT\QtSoundModem\Win32\Debug\</OutDir>
|
|
||||||
<IntDir>C:\Dev\Msdev2005\projects\QT\QtSoundModem\Intermed\Win32\Debug\</IntDir>
|
|
||||||
<TargetName>QtSoundModem</TargetName>
|
|
||||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
|
||||||
<LinkIncremental>true</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<OutDir>C:\Dev\Msdev2005\projects\QT\QtSoundModem\Win32\Release\</OutDir>
|
|
||||||
<IntDir>C:\Dev\Msdev2005\projects\QT\QtSoundModem\Intermed\Win32\Release\</IntDir>
|
|
||||||
<TargetName>QtSoundModem</TargetName>
|
|
||||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<QtInstall>5.14.2_msvc2017</QtInstall>
|
|
||||||
<QtModules>core;network;gui;widgets;serialport</QtModules>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<QtInstall>5.14.2_msvc2017</QtInstall>
|
|
||||||
<QtModules>core;network;gui;widgets;serialport</QtModules>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.props')">
|
|
||||||
<Import Project="$(QtMsBuild)\qt.props" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>rsid;.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;release;/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
|
|
||||||
<BrowseInformation>false</BrowseInformation>
|
|
||||||
<DebugInformationFormat>None</DebugInformationFormat>
|
|
||||||
<DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
|
||||||
<ExceptionHandling>Sync</ExceptionHandling>
|
|
||||||
<ObjectFileName>$(IntDir)</ObjectFileName>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<PreprocessToFile>false</PreprocessToFile>
|
|
||||||
<ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
|
||||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>libfftw3f-3.lib;shell32.lib;setupapi.lib;WS2_32.Lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<AdditionalLibraryDirectories>C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<DataExecutionPrevention>true</DataExecutionPrevention>
|
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
|
||||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<OutputFile>$(OutDir)\QtSoundModem.exe</OutputFile>
|
|
||||||
<RandomizedBaseAddress>true</RandomizedBaseAddress>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
|
||||||
</Link>
|
|
||||||
<Midl>
|
|
||||||
<DefaultCharType>Unsigned</DefaultCharType>
|
|
||||||
<EnableErrorChecks>None</EnableErrorChecks>
|
|
||||||
<WarningLevel>0</WarningLevel>
|
|
||||||
</Midl>
|
|
||||||
<ResourceCompile>
|
|
||||||
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;NDEBUG;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_NETWORK_LIB;QT_SERIALPORT_LIB;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
</ResourceCompile>
|
|
||||||
<QtMoc>
|
|
||||||
<CompilerFlavor>msvc</CompilerFlavor>
|
|
||||||
<Include>./$(Configuration)/moc_predefs.h</Include>
|
|
||||||
<ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<DynamicSource>output</DynamicSource>
|
|
||||||
<QtMocDir>$(IntDir)</QtMocDir>
|
|
||||||
<QtMocFileName>moc_%(Filename).cpp</QtMocFileName>
|
|
||||||
</QtMoc>
|
|
||||||
<QtRcc>
|
|
||||||
<InitFuncName>QtSoundModem</InitFuncName>
|
|
||||||
<Compression>default</Compression>
|
|
||||||
<ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<QtRccDir>$(IntDir)</QtRccDir>
|
|
||||||
<QtRccFileName>qrc_%(Filename).cpp</QtRccFileName>
|
|
||||||
</QtRcc>
|
|
||||||
<QtUic>
|
|
||||||
<ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<QtUicDir>$(IntDir)</QtUicDir>
|
|
||||||
<QtUicFileName>ui_%(Filename).h</QtUicFileName>
|
|
||||||
</QtUic>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;debug;/include;rsid;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<AssemblerListingLocation>$(IntDir)</AssemblerListingLocation>
|
|
||||||
<BrowseInformation>false</BrowseInformation>
|
|
||||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
|
||||||
<DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
|
||||||
<ExceptionHandling>Sync</ExceptionHandling>
|
|
||||||
<ObjectFileName>$(IntDir)</ObjectFileName>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<PreprocessToFile>false</PreprocessToFile>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
||||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
|
||||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
||||||
<ProgramDataBaseFileName>$(OutDir)</ProgramDataBaseFileName>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>libfftw3f-3.lib;shell32.lib;setupapi.lib;WS2_32.Lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<AdditionalLibraryDirectories>C:\opensslx86\lib;C:\Utils\my_sql\mysql-5.7.25-win32\lib;C:\Utils\postgresqlx86\pgsql\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<DataExecutionPrevention>true</DataExecutionPrevention>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
|
||||||
<OutputFile>$(OutDir)\QtSoundModem.exe</OutputFile>
|
|
||||||
<RandomizedBaseAddress>true</RandomizedBaseAddress>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
|
||||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
|
||||||
</Link>
|
|
||||||
<Midl>
|
|
||||||
<DefaultCharType>Unsigned</DefaultCharType>
|
|
||||||
<EnableErrorChecks>None</EnableErrorChecks>
|
|
||||||
<WarningLevel>0</WarningLevel>
|
|
||||||
</Midl>
|
|
||||||
<ResourceCompile>
|
|
||||||
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;QT_WIDGETS_LIB;QT_GUI_LIB;QT_NETWORK_LIB;QT_SERIALPORT_LIB;QT_CORE_LIB;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
</ResourceCompile>
|
|
||||||
<QtMoc>
|
|
||||||
<CompilerFlavor>msvc</CompilerFlavor>
|
|
||||||
<Include>./$(Configuration)/moc_predefs.h</Include>
|
|
||||||
<ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<DynamicSource>output</DynamicSource>
|
|
||||||
<QtMocDir>$(IntDir)</QtMocDir>
|
|
||||||
<QtMocFileName>moc_%(Filename).cpp</QtMocFileName>
|
|
||||||
</QtMoc>
|
|
||||||
<QtRcc>
|
|
||||||
<InitFuncName>QtSoundModem</InitFuncName>
|
|
||||||
<Compression>default</Compression>
|
|
||||||
<ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<QtRccDir>$(IntDir)</QtRccDir>
|
|
||||||
<QtRccFileName>qrc_%(Filename).cpp</QtRccFileName>
|
|
||||||
</QtRcc>
|
|
||||||
<QtUic>
|
|
||||||
<ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription>
|
|
||||||
<QtUicDir>$(IntDir)</QtUicDir>
|
|
||||||
<QtUicFileName>ui_%(Filename).h</QtUicFileName>
|
|
||||||
</QtUic>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="ARDOPC.c" />
|
|
||||||
<ClCompile Include="BusyDetect.c" />
|
|
||||||
<ClCompile Include="Config.cpp" />
|
|
||||||
<ClCompile Include="hid.c" />
|
|
||||||
<ClCompile Include="Modulate.c" />
|
|
||||||
<ClCompile Include="QtSoundModem.cpp" />
|
|
||||||
<ClCompile Include="rsid.c" />
|
|
||||||
<ClCompile Include="RSUnit.c" />
|
|
||||||
<ClCompile Include="SMMain.c" />
|
|
||||||
<ClCompile Include="ShowFilter.cpp" />
|
|
||||||
<ClCompile Include="SoundInput.c" />
|
|
||||||
<ClCompile Include="UZ7HOUtils.c" />
|
|
||||||
<ClCompile Include="ardopSampleArrays.c" />
|
|
||||||
<ClCompile Include="ax25.c" />
|
|
||||||
<ClCompile Include="ax25_agw.c" />
|
|
||||||
<ClCompile Include="ax25_demod.c" />
|
|
||||||
<ClCompile Include="ax25_fec.c" />
|
|
||||||
<ClCompile Include="ax25_l2.c" />
|
|
||||||
<ClCompile Include="ax25_mod.c" />
|
|
||||||
<ClCompile Include="berlekamp.c" />
|
|
||||||
<ClCompile Include="galois.c" />
|
|
||||||
<ClCompile Include="kiss_mode.c" />
|
|
||||||
<ClCompile Include="main.cpp" />
|
|
||||||
<ClCompile Include="ofdm.c" />
|
|
||||||
<ClCompile Include="pktARDOP.c" />
|
|
||||||
<ClCompile Include="rs.c" />
|
|
||||||
<ClCompile Include="sm_main.c" />
|
|
||||||
<ClCompile Include="tcpCode.cpp" />
|
|
||||||
<ClCompile Include="Waveout.c" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtMoc Include="QtSoundModem.h">
|
|
||||||
</QtMoc>
|
|
||||||
<ClInclude Include="UZ7HOStuff.h" />
|
|
||||||
<QtMoc Include="tcpCode.h">
|
|
||||||
</QtMoc>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<CustomBuild Include="debug\moc_predefs.h.cbt">
|
|
||||||
<FileType>Document</FileType>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
|
||||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs>
|
|
||||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >debug\moc_predefs.h</Command>
|
|
||||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generate moc_predefs.h</Message>
|
|
||||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\moc_predefs.h;%(Outputs)</Outputs>
|
|
||||||
</CustomBuild>
|
|
||||||
<CustomBuild Include="release\moc_predefs.h.cbt">
|
|
||||||
<FileType>Document</FileType>
|
|
||||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs>
|
|
||||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >release\moc_predefs.h</Command>
|
|
||||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Generate moc_predefs.h</Message>
|
|
||||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\moc_predefs.h;%(Outputs)</Outputs>
|
|
||||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
|
||||||
</CustomBuild>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtUic Include="ModemDialog.ui">
|
|
||||||
</QtUic>
|
|
||||||
<QtUic Include="QtSoundModem.ui">
|
|
||||||
</QtUic>
|
|
||||||
<QtUic Include="calibrateDialog.ui">
|
|
||||||
</QtUic>
|
|
||||||
<QtUic Include="devicesDialog.ui">
|
|
||||||
</QtUic>
|
|
||||||
<QtUic Include="filterWindow.ui">
|
|
||||||
</QtUic>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtRcc Include="QtSoundModem.qrc">
|
|
||||||
</QtRcc>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ResourceCompile Include=".\QtSoundModem_resource.rc" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Image Include="QtSoundModem.ico" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
|
|
||||||
<Import Project="$(QtMsBuild)\qt.targets" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Label="ExtensionTargets" />
|
|
||||||
</Project>
|
|
721
QtSoundModem.cpp
721
QtSoundModem.cpp
File diff suppressed because it is too large
Load Diff
2866
QtSoundModem.cpp.bak
2866
QtSoundModem.cpp.bak
File diff suppressed because it is too large
Load Diff
|
@ -29,7 +29,7 @@ public:
|
||||||
~QtSoundModem();
|
~QtSoundModem();
|
||||||
|
|
||||||
void RefreshWaterfall(int snd_ch, unsigned char * Data);
|
void RefreshWaterfall(int snd_ch, unsigned char * Data);
|
||||||
void initWaterfall(int chan, int state);
|
void initWaterfall(int state);
|
||||||
void show_grid();
|
void show_grid();
|
||||||
void checkforCWID();
|
void checkforCWID();
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@ private slots:
|
||||||
|
|
||||||
void CWIDTimer();
|
void CWIDTimer();
|
||||||
void doDevices();
|
void doDevices();
|
||||||
|
void mysetstyle();
|
||||||
void updateFont();
|
void updateFont();
|
||||||
void MinimizetoTray();
|
void MinimizetoTray();
|
||||||
void TrayActivated(QSystemTrayIcon::ActivationReason reason);
|
void TrayActivated(QSystemTrayIcon::ActivationReason reason);
|
||||||
|
@ -111,3 +112,9 @@ protected:
|
||||||
bool eventFilter(QObject *obj, QEvent *event) override;
|
bool eventFilter(QObject *obj, QEvent *event) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#define WaterfallDisplayPixels 80
|
||||||
|
#define WaterfallHeaderPixels 38
|
||||||
|
#define WaterfallTotalPixels WaterfallDisplayPixels + WaterfallHeaderPixels
|
||||||
|
#define WaterfallImageHeight (WaterfallTotalPixels + WaterfallTotalPixels)
|
||||||
|
|
||||||
|
|
159
QtSoundModem.ui
159
QtSoundModem.ui
|
@ -6,8 +6,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>962</width>
|
<width>993</width>
|
||||||
<height>721</height>
|
<height>900</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
|
@ -50,48 +50,6 @@
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QLabel" name="WaterfallB">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>586</y>
|
|
||||||
<width>959</width>
|
|
||||||
<height>80</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>600</width>
|
|
||||||
<height>80</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>5000</width>
|
|
||||||
<height>100</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<pointsize>8</pointsize>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="frameShape">
|
|
||||||
<enum>QFrame::Box</enum>
|
|
||||||
</property>
|
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Plain</enum>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Waterfall</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="label_2">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
|
@ -121,25 +79,25 @@
|
||||||
<number>1500</number>
|
<number>1500</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QLabel" name="WaterfallA">
|
<widget class="QLabel" name="Waterfall">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>80</x>
|
<x>80</x>
|
||||||
<y>488</y>
|
<y>488</y>
|
||||||
<width>881</width>
|
<width>881</width>
|
||||||
<height>80</height>
|
<height>100</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>600</width>
|
<width>600</width>
|
||||||
<height>80</height>
|
<height>100</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>5000</width>
|
<width>5000</width>
|
||||||
<height>100</height>
|
<height>250</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="font">
|
<property name="font">
|
||||||
|
@ -171,9 +129,9 @@
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>690</x>
|
<x>690</x>
|
||||||
<y>0</y>
|
<y>2</y>
|
||||||
<width>73</width>
|
<width>73</width>
|
||||||
<height>16</height>
|
<height>13</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
@ -215,78 +173,6 @@
|
||||||
<number>10</number>
|
<number>10</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QLabel" name="HeaderA">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>25</x>
|
|
||||||
<y>460</y>
|
|
||||||
<width>1076</width>
|
|
||||||
<height>38</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>600</width>
|
|
||||||
<height>10</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>5000</width>
|
|
||||||
<height>100</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<pointsize>8</pointsize>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="frameShape">
|
|
||||||
<enum>QFrame::Box</enum>
|
|
||||||
</property>
|
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Plain</enum>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Waterfall</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="HeaderB">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>560</y>
|
|
||||||
<width>1076</width>
|
|
||||||
<height>38</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>600</width>
|
|
||||||
<height>10</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>5000</width>
|
|
||||||
<height>100</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<pointsize>8</pointsize>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="frameShape">
|
|
||||||
<enum>QFrame::Box</enum>
|
|
||||||
</property>
|
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Plain</enum>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Waterfall</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QTextEdit" name="monWindow">
|
<widget class="QTextEdit" name="monWindow">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
|
@ -412,7 +298,7 @@
|
||||||
<x>600</x>
|
<x>600</x>
|
||||||
<y>2</y>
|
<y>2</y>
|
||||||
<width>87</width>
|
<width>87</width>
|
||||||
<height>16</height>
|
<height>13</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
@ -487,9 +373,9 @@
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>780</x>
|
<x>780</x>
|
||||||
<y>17</y>
|
<y>14</y>
|
||||||
<width>150</width>
|
<width>150</width>
|
||||||
<height>12</height>
|
<height>11</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
|
@ -508,7 +394,7 @@
|
||||||
<x>780</x>
|
<x>780</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>91</width>
|
<width>91</width>
|
||||||
<height>16</height>
|
<height>13</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="font">
|
<property name="font">
|
||||||
|
@ -526,13 +412,32 @@
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QLabel" name="RXLevel2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>780</x>
|
||||||
|
<y>23</y>
|
||||||
|
<width>150</width>
|
||||||
|
<height>11</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::Box</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Sunken</enum>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QMenuBar" name="menuBar">
|
<widget class="QMenuBar" name="menuBar">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>962</width>
|
<width>993</width>
|
||||||
<height>21</height>
|
<height>21</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<LocalDebuggerWorkingDirectory>C:\DevProgs\BPQ32\SMTest</LocalDebuggerWorkingDirectory>
|
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
|
||||||
<LocalDebuggerCommandArguments>
|
|
||||||
</LocalDebuggerCommandArguments>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<LocalDebuggerWorkingDirectory>c:\devprogs\bpq32\SMSAT2</LocalDebuggerWorkingDirectory>
|
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
|
||||||
<LocalDebuggerCommandArguments>< d:\samples.wav</LocalDebuggerCommandArguments>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LocalDebuggerWorkingDirectory>.\debug</LocalDebuggerWorkingDirectory>
|
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LocalDebuggerWorkingDirectory>C:\DevProgs\BPQ32\SMSat</LocalDebuggerWorkingDirectory>
|
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<QtLastBackgroundBuild>2023-08-21T20:12:53.1523329Z</QtLastBackgroundBuild>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="QtSettings">
|
|
||||||
<QtLastBackgroundBuild>2022-03-11T19:38:31.5906689Z</QtLastBackgroundBuild>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<QtLastBackgroundBuild>2023-08-18T07:29:42.4175478Z</QtLastBackgroundBuild>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="QtSettings">
|
|
||||||
<QtLastBackgroundBuild>2022-03-11T19:38:33.3845083Z</QtLastBackgroundBuild>
|
|
||||||
</PropertyGroup>
|
|
||||||
</Project>
|
|
|
@ -1,34 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<LocalDebuggerWorkingDirectory>C:\Devprogs\bpq32\SMSat2</LocalDebuggerWorkingDirectory>
|
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
|
||||||
<LocalDebuggerCommandArguments>
|
|
||||||
</LocalDebuggerCommandArguments>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<LocalDebuggerWorkingDirectory>c:\devprogs\bpq32\SMSAT2</LocalDebuggerWorkingDirectory>
|
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
|
||||||
<LocalDebuggerCommandArguments>< d:\samples.wav</LocalDebuggerCommandArguments>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<LocalDebuggerWorkingDirectory>C:\DevProgs\BPQ32\SMSat</LocalDebuggerWorkingDirectory>
|
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<LocalDebuggerWorkingDirectory>C:\DevProgs\BPQ32\SMSat</LocalDebuggerWorkingDirectory>
|
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<QtLastBackgroundBuild>2022-12-30T15:55:55.0433562Z</QtLastBackgroundBuild>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="QtSettings">
|
|
||||||
<QtLastBackgroundBuild>2022-03-11T19:38:31.5906689Z</QtLastBackgroundBuild>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<QtLastBackgroundBuild>2022-12-30T15:55:55.2283725Z</QtLastBackgroundBuild>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="QtSettings">
|
|
||||||
<QtLastBackgroundBuild>2022-03-11T19:38:33.3845083Z</QtLastBackgroundBuild>
|
|
||||||
</PropertyGroup>
|
|
||||||
</Project>
|
|
|
@ -3,8 +3,7 @@
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<LocalDebuggerWorkingDirectory>C:\DevProgs\BPQ32\SMTest</LocalDebuggerWorkingDirectory>
|
<LocalDebuggerWorkingDirectory>C:\DevProgs\BPQ32\SMTest</LocalDebuggerWorkingDirectory>
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
<LocalDebuggerCommandArguments>
|
<LocalDebuggerCommandArguments>-stylesheet StyleSheet.css</LocalDebuggerCommandArguments>
|
||||||
</LocalDebuggerCommandArguments>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<LocalDebuggerWorkingDirectory>c:\devprogs\bpq32\SMSAT2</LocalDebuggerWorkingDirectory>
|
<LocalDebuggerWorkingDirectory>c:\devprogs\bpq32\SMSAT2</LocalDebuggerWorkingDirectory>
|
||||||
|
@ -12,23 +11,24 @@
|
||||||
<LocalDebuggerCommandArguments>< d:\samples.wav</LocalDebuggerCommandArguments>
|
<LocalDebuggerCommandArguments>< d:\samples.wav</LocalDebuggerCommandArguments>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<LocalDebuggerWorkingDirectory>.\debug</LocalDebuggerWorkingDirectory>
|
<LocalDebuggerWorkingDirectory>C:\DevProgs\BPQ32\SMTest</LocalDebuggerWorkingDirectory>
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
|
<LocalDebuggerCommandArguments>-stylesheet StyleSheet.css</LocalDebuggerCommandArguments>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<LocalDebuggerWorkingDirectory>C:\DevProgs\BPQ32\SMSat</LocalDebuggerWorkingDirectory>
|
<LocalDebuggerWorkingDirectory>C:\DevProgs\BPQ32\SMSat</LocalDebuggerWorkingDirectory>
|
||||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<QtLastBackgroundBuild>2023-09-26T11:58:59.9128543Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2023-10-15T11:35:54.9027336Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="QtSettings">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="QtSettings">
|
||||||
<QtLastBackgroundBuild>2023-09-26T11:59:00.0378577Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2023-10-15T11:35:55.0741785Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<QtLastBackgroundBuild>2023-09-26T11:59:00.1388610Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2023-10-15T11:35:55.2661628Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="QtSettings">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="QtSettings">
|
||||||
<QtLastBackgroundBuild>2023-09-26T11:59:00.2228656Z</QtLastBackgroundBuild>
|
<QtLastBackgroundBuild>2023-10-15T11:35:55.4659021Z</QtLastBackgroundBuild>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
File diff suppressed because it is too large
Load Diff
1381
SMMain-HPLaptop.c
1381
SMMain-HPLaptop.c
File diff suppressed because it is too large
Load Diff
6
SMMain.c
6
SMMain.c
|
@ -32,6 +32,8 @@ along with QtSoundModem. If not, see http://www.gnu.org/licenses
|
||||||
BOOL KISSServ;
|
BOOL KISSServ;
|
||||||
int KISSPort;
|
int KISSPort;
|
||||||
|
|
||||||
|
int NeedWaterfallHeaders = 0;
|
||||||
|
|
||||||
BOOL AGWServ;
|
BOOL AGWServ;
|
||||||
int AGWPort;
|
int AGWPort;
|
||||||
|
|
||||||
|
@ -566,7 +568,7 @@ int Freq_Change(int Chan, int Freq)
|
||||||
tx_freq[Chan] = Freq;
|
tx_freq[Chan] = Freq;
|
||||||
|
|
||||||
pnt_change[Chan] = TRUE;
|
pnt_change[Chan] = TRUE;
|
||||||
wf_pointer(Chan);
|
NeedWaterfallHeaders = TRUE;
|
||||||
|
|
||||||
return Freq;
|
return Freq;
|
||||||
}
|
}
|
||||||
|
@ -1203,7 +1205,7 @@ void CM108_set_ptt(int PTTState)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float amplitudes[4] = { 32767, 32767, 32767, 32767 };
|
float amplitudes[4] = { 32000, 32000, 32000, 32000 };
|
||||||
extern float amplitude;
|
extern float amplitude;
|
||||||
|
|
||||||
void RadioPTT(int snd_ch, BOOL PTTState)
|
void RadioPTT(int snd_ch, BOOL PTTState)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
23
UZ7HOStuff.h
23
UZ7HOStuff.h
|
@ -4,8 +4,8 @@
|
||||||
// My port of UZ7HO's Soundmodem
|
// My port of UZ7HO's Soundmodem
|
||||||
//
|
//
|
||||||
|
|
||||||
#define VersionString "0.0.0.68"
|
#define VersionString "0.0.0.71"
|
||||||
#define VersionBytes {0, 0, 0, 68}
|
#define VersionBytes {0, 0, 0, 71}
|
||||||
|
|
||||||
// Added FX25. 4x100 FEC and V27 not Working and disabled
|
// Added FX25. 4x100 FEC and V27 not Working and disabled
|
||||||
|
|
||||||
|
@ -167,6 +167,18 @@
|
||||||
// Fix Waterfall display when using right channel only
|
// Fix Waterfall display when using right channel only
|
||||||
// Allow PTT device to be added
|
// Allow PTT device to be added
|
||||||
|
|
||||||
|
// .69 Add basic Dark Theme
|
||||||
|
// Fix some timing bugs in Waterfall and RX Level refresh
|
||||||
|
// Only display session table if AGW interface is enabled
|
||||||
|
// Fix operation with both left and right channels in use
|
||||||
|
|
||||||
|
// .70 Restructure Waterfall area to be a single image
|
||||||
|
|
||||||
|
// .71 Add IL2P CRC Mode
|
||||||
|
// Improve reliability of waterfall update
|
||||||
|
// Report and set fx.25 and il2p flags to/from BPQ
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -997,6 +1009,7 @@ extern TAX25Port AX25Port[4][port_num];
|
||||||
|
|
||||||
extern int fx25_mode[4];
|
extern int fx25_mode[4];
|
||||||
extern int il2p_mode[4];
|
extern int il2p_mode[4];
|
||||||
|
extern int il2p_crc[4];
|
||||||
|
|
||||||
extern int tx_fx25_size[4];
|
extern int tx_fx25_size[4];
|
||||||
extern int tx_fx25_size_cnt[4];
|
extern int tx_fx25_size_cnt[4];
|
||||||
|
@ -1098,7 +1111,7 @@ int Add(TStringList * Q, string * Entry);
|
||||||
|
|
||||||
struct il2p_context_s {
|
struct il2p_context_s {
|
||||||
|
|
||||||
enum { IL2P_SEARCHING = 0, IL2P_HEADER, IL2P_PAYLOAD, IL2P_DECODE } state;
|
enum { IL2P_SEARCHING = 0, IL2P_HEADER, IL2P_PAYLOAD, IL2P_CRC, IL2P_DECODE } state;
|
||||||
|
|
||||||
unsigned int acc; // Accumulate most recent 24 bits for sync word matching.
|
unsigned int acc; // Accumulate most recent 24 bits for sync word matching.
|
||||||
// Lower 8 bits are also used for accumulating bytes for
|
// Lower 8 bits are also used for accumulating bytes for
|
||||||
|
@ -1122,8 +1135,12 @@ struct il2p_context_s {
|
||||||
int pc; // Number of bytes placed in above.
|
int pc; // Number of bytes placed in above.
|
||||||
|
|
||||||
int corrected; // Number of symbols corrected by RS FEC.
|
int corrected; // Number of symbols corrected by RS FEC.
|
||||||
|
|
||||||
|
int crccount; // fec chars collected
|
||||||
|
unsigned char crc[4]; // the 4 fec chars
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern int NeedWaterfallHeaders;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
1049
UZ7HOStuff.h.bak
1049
UZ7HOStuff.h.bak
File diff suppressed because it is too large
Load Diff
45
agwlib.h
45
agwlib.h
|
@ -1,45 +0,0 @@
|
||||||
|
|
||||||
#ifndef AGWLIB_H
|
|
||||||
#define AGWLIB_H 1
|
|
||||||
|
|
||||||
|
|
||||||
// Call at beginning to start it up.
|
|
||||||
|
|
||||||
int agwlib_init (char *host, char *port, int (*init_func)(void));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Send commands to TNC.
|
|
||||||
|
|
||||||
|
|
||||||
int agwlib_X_register_callsign (int chan, char *call_from);
|
|
||||||
|
|
||||||
int agwlib_x_unregister_callsign (int chan, char *call_from);
|
|
||||||
|
|
||||||
int agwlib_G_ask_port_information (void);
|
|
||||||
|
|
||||||
int agwlib_C_connect (int chan, char *call_from, char *call_to);
|
|
||||||
|
|
||||||
int agwlib_d_disconnect (int chan, char *call_from, char *call_to);
|
|
||||||
|
|
||||||
int agwlib_D_send_connected_data (int chan, int pid, char *call_from, char *call_to, int data_len, char *data);
|
|
||||||
|
|
||||||
int agwlib_Y_outstanding_frames_for_station (int chan, char *call_from, char *call_to);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// The application must define these.
|
|
||||||
|
|
||||||
void agw_cb_C_connection_received (int chan, char *call_from, char *call_to, int data_len, char *data);
|
|
||||||
void on_C_connection_received (int chan, char *call_from, char *call_to, int incoming, char *data);
|
|
||||||
|
|
||||||
void agw_cb_d_disconnected (int chan, char *call_from, char *call_to, int data_len, char *data);
|
|
||||||
|
|
||||||
void agw_cb_D_connected_data (int chan, char *call_from, char *call_to, int data_len, char *data);
|
|
||||||
|
|
||||||
void agw_cb_G_port_information (int num_chan, char *chan_descriptions[]);
|
|
||||||
|
|
||||||
void agw_cb_Y_outstanding_frames_for_station (int chan, char *call_from, char *call_to, int frame_count);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
8
ais.h
8
ais.h
|
@ -1,8 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
void ais_to_nmea (unsigned char *ais, int ais_len, char *nema, int nema_size);
|
|
||||||
|
|
||||||
int ais_parse (char *sentence, int quiet, char *descr, int descr_size, char *mssi, int mssi_size, double *odlat, double *odlon,
|
|
||||||
float *ofknots, float *ofcourse, float *ofalt_m, char *symtab, char *symbol, char *comment, int comment_size);
|
|
||||||
|
|
||||||
int ais_check_length (int type, int length);
|
|
191
aprs_tt.h
191
aprs_tt.h
|
@ -1,191 +0,0 @@
|
||||||
|
|
||||||
/* aprs_tt.h */
|
|
||||||
|
|
||||||
#ifndef APRS_TT_H
|
|
||||||
#define APRS_TT_H 1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* For holding location format specifications from config file.
|
|
||||||
* Same thing is also useful for macro definitions.
|
|
||||||
* We have exactly the same situation of looking for a pattern
|
|
||||||
* match and extracting fixed size groups of digits.
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct ttloc_s {
|
|
||||||
enum { TTLOC_POINT, TTLOC_VECTOR, TTLOC_GRID, TTLOC_UTM, TTLOC_MGRS, TTLOC_USNG, TTLOC_MACRO, TTLOC_MHEAD, TTLOC_SATSQ, TTLOC_AMBIG } type;
|
|
||||||
|
|
||||||
char pattern[20]; /* e.g. B998, B5bbbdddd, B2xxyy, Byyyxxx, BAxxxx */
|
|
||||||
/* For macros, it should be all fixed digits, */
|
|
||||||
/* and the letters x, y, z. e.g. 911, xxyyyz */
|
|
||||||
|
|
||||||
union {
|
|
||||||
|
|
||||||
struct {
|
|
||||||
double lat; /* Specific locations. */
|
|
||||||
double lon;
|
|
||||||
} point;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
double lat; /* For bearing/direction. */
|
|
||||||
double lon;
|
|
||||||
double scale; /* conversion to meters */
|
|
||||||
} vector;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
double lat0; /* yyy all zeros. */
|
|
||||||
double lon0; /* xxx */
|
|
||||||
double lat9; /* yyy all nines. */
|
|
||||||
double lon9; /* xxx */
|
|
||||||
} grid;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
double scale;
|
|
||||||
double x_offset;
|
|
||||||
double y_offset;
|
|
||||||
long lzone; /* UTM zone, should be 1-60 */
|
|
||||||
char latband; /* Latitude band if specified, otherwise space or - */
|
|
||||||
char hemi; /* UTM Hemisphere, should be 'N' or 'S'. */
|
|
||||||
} utm;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
char zone[8]; /* Zone and square for USNG/MGRS */
|
|
||||||
} mgrs;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
char prefix[24]; /* should be 10, 6, or 4 digits to be */
|
|
||||||
/* prepended to the received sequence. */
|
|
||||||
} mhead;
|
|
||||||
|
|
||||||
struct {
|
|
||||||
char *definition;
|
|
||||||
} macro;
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/* Error codes for sending responses to user. */
|
|
||||||
|
|
||||||
#define TT_ERROR_OK 0 /* Success. */
|
|
||||||
#define TT_ERROR_D_MSG 1 /* D was first char of field. Not implemented yet. */
|
|
||||||
#define TT_ERROR_INTERNAL 2 /* Internal error. Shouldn't be here. */
|
|
||||||
#define TT_ERROR_MACRO_NOMATCH 3 /* No definition for digit sequence. */
|
|
||||||
#define TT_ERROR_BAD_CHECKSUM 4 /* Bad checksum on call. */
|
|
||||||
#define TT_ERROR_INVALID_CALL 5 /* Invalid callsign. */
|
|
||||||
#define TT_ERROR_INVALID_OBJNAME 6 /* Invalid object name. */
|
|
||||||
#define TT_ERROR_INVALID_SYMBOL 7 /* Invalid symbol specification. */
|
|
||||||
#define TT_ERROR_INVALID_LOC 8 /* Invalid location. */
|
|
||||||
#define TT_ERROR_NO_CALL 9 /* No call or object name included. */
|
|
||||||
#define TT_ERROR_INVALID_MHEAD 10 /* Invalid Maidenhead Locator. */
|
|
||||||
#define TT_ERROR_INVALID_SATSQ 11 /* Satellite square must be 4 digits. */
|
|
||||||
#define TT_ERROR_SUFFIX_NO_CALL 12 /* No known callsign for suffix. */
|
|
||||||
|
|
||||||
#define TT_ERROR_MAXP1 13 /* Number of items above. i.e. Last number plus 1. */
|
|
||||||
|
|
||||||
|
|
||||||
#if CONFIG_C /* Is this being included from config.c? */
|
|
||||||
|
|
||||||
/* Must keep in sync with above !!! */
|
|
||||||
|
|
||||||
static const char *tt_msg_id[TT_ERROR_MAXP1] = {
|
|
||||||
"OK",
|
|
||||||
"D_MSG",
|
|
||||||
"INTERNAL",
|
|
||||||
"MACRO_NOMATCH",
|
|
||||||
"BAD_CHECKSUM",
|
|
||||||
"INVALID_CALL",
|
|
||||||
"INVALID_OBJNAME",
|
|
||||||
"INVALID_SYMBOL",
|
|
||||||
"INVALID_LOC",
|
|
||||||
"NO_CALL",
|
|
||||||
"INVALID_MHEAD",
|
|
||||||
"INVALID_SATSQ",
|
|
||||||
"SUFFIX_NO_CALL"
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Configuration options for APRStt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define TT_MAX_XMITS 10
|
|
||||||
|
|
||||||
#define TT_MTEXT_LEN 64
|
|
||||||
|
|
||||||
|
|
||||||
struct tt_config_s {
|
|
||||||
|
|
||||||
int gateway_enabled; /* Send DTMF sequences to APRStt gateway. */
|
|
||||||
|
|
||||||
int obj_recv_chan; /* Channel to listen for tones. */
|
|
||||||
|
|
||||||
int obj_xmit_chan; /* Channel to transmit object report. */
|
|
||||||
/* -1 for none. This could happen if we */
|
|
||||||
/* are only sending to application */
|
|
||||||
/* and/or IGate. */
|
|
||||||
|
|
||||||
int obj_send_to_app; /* send to attached application(s). */
|
|
||||||
|
|
||||||
int obj_send_to_ig; /* send to IGate. */
|
|
||||||
|
|
||||||
char obj_xmit_via[AX25_MAX_REPEATERS * (AX25_MAX_ADDR_LEN+1)];
|
|
||||||
/* e.g. empty or "WIDE2-1,WIDE1-1" */
|
|
||||||
|
|
||||||
int retain_time; /* Seconds to keep information about a user. */
|
|
||||||
|
|
||||||
int num_xmits; /* Number of times to transmit object report. */
|
|
||||||
|
|
||||||
int xmit_delay[TT_MAX_XMITS]; /* Delay between them. */
|
|
||||||
/* e.g. 3 seconds before first transmission then */
|
|
||||||
/* delays of 16, 32, seconds etc. in between repeats. */
|
|
||||||
|
|
||||||
struct ttloc_s *ttloc_ptr; /* Pointer to variable length array of above. */
|
|
||||||
int ttloc_size; /* Number of elements allocated. */
|
|
||||||
int ttloc_len; /* Number of elements actually used. */
|
|
||||||
|
|
||||||
double corral_lat; /* The "corral" for unknown locations. */
|
|
||||||
double corral_lon;
|
|
||||||
double corral_offset;
|
|
||||||
int corral_ambiguity;
|
|
||||||
|
|
||||||
char status[10][TT_MTEXT_LEN]; /* Up to 9 status messages. e.g. "/enroute" */
|
|
||||||
/* Position 0 means none and can't be changed. */
|
|
||||||
|
|
||||||
struct {
|
|
||||||
char method[AX25_MAX_ADDR_LEN]; /* SPEECH or MORSE[-n] */
|
|
||||||
char mtext[TT_MTEXT_LEN]; /* Message text. */
|
|
||||||
} response[TT_ERROR_MAXP1];
|
|
||||||
|
|
||||||
char ttcmd[80]; /* Command to generate custom audible response. */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void aprs_tt_init (struct tt_config_s *p_config, int debug);
|
|
||||||
|
|
||||||
void aprs_tt_button (int chan, char button);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define APRSTT_LOC_DESC_LEN 32 /* Need at least 26 */
|
|
||||||
|
|
||||||
#define APRSTT_DEFAULT_SYMTAB '\\'
|
|
||||||
#define APRSTT_DEFAULT_SYMBOL 'A'
|
|
||||||
|
|
||||||
|
|
||||||
void aprs_tt_dao_to_desc (char *dao, char *str);
|
|
||||||
|
|
||||||
void aprs_tt_sequence (int chan, char *msg);
|
|
||||||
|
|
||||||
int dw_run_cmd (char *cmd, int oneline, char *result, size_t resultsiz);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* end aprs_tt.h */
|
|
|
@ -1,7 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
/* audio_stats.h */
|
|
||||||
|
|
||||||
|
|
||||||
extern void audio_stats (int adev, int nchan, int nsamp, int interval);
|
|
||||||
|
|
47
ax25_agw.c
47
ax25_agw.c
|
@ -515,13 +515,15 @@ void on_AGW_Gs_frame(AGWUser * AGW, struct AGWHeader * Frame, Byte * Data)
|
||||||
{
|
{
|
||||||
// QTSM with a data field is used by QtSM to set/read Modem Params
|
// QTSM with a data field is used by QtSM to set/read Modem Params
|
||||||
|
|
||||||
Byte info[44] = { 0, 255, 24, 3, 100, 15, 6, 0, 1, 0, 0, 0 }; //QTSM Signature
|
Byte info[48] = { 0, 255, 24, 3, 100, 15, 6, 0, 1, 0, 0, 0 }; //QTSM Signature
|
||||||
int Len = 12;
|
int Len = 12;
|
||||||
|
|
||||||
if (Frame->DataLength == 32)
|
if (Frame->DataLength == 32)
|
||||||
{
|
{
|
||||||
// BPQ to QTSM private Format.
|
// BPQ to QTSM private Format.
|
||||||
|
|
||||||
|
// First 4 Freq, 4 to 24 Modem, rest was spare. Use 27-31 for modem control flags (fx.25 il2p etc)
|
||||||
|
|
||||||
int Freq;
|
int Freq;
|
||||||
Byte versionBytes[4] = VersionBytes;
|
Byte versionBytes[4] = VersionBytes;
|
||||||
|
|
||||||
|
@ -569,6 +571,13 @@ void on_AGW_Gs_frame(AGWUser * AGW, struct AGWHeader * Frame, Byte * Data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Data[27] == 2)
|
||||||
|
{
|
||||||
|
fx25_mode[Frame->Port] = Data[28];
|
||||||
|
il2p_mode[Frame->Port] = Data[29];
|
||||||
|
il2p_crc[Frame->Port] = Data[30];
|
||||||
|
}
|
||||||
|
|
||||||
// Return Freq and Modem
|
// Return Freq and Modem
|
||||||
|
|
||||||
memcpy(&info[12], &rx_freq[Frame->Port], 2);
|
memcpy(&info[12], &rx_freq[Frame->Port], 2);
|
||||||
|
@ -577,6 +586,22 @@ void on_AGW_Gs_frame(AGWUser * AGW, struct AGWHeader * Frame, Byte * Data)
|
||||||
memcpy(&info[38], versionBytes, 4);
|
memcpy(&info[38], versionBytes, 4);
|
||||||
|
|
||||||
Len = 44;
|
Len = 44;
|
||||||
|
|
||||||
|
if (Data[27])
|
||||||
|
{
|
||||||
|
// BPQ understands fx25 and il2p fields
|
||||||
|
|
||||||
|
AGW->reportFreqAndModem = 2; // Can report frequency Modem and flags
|
||||||
|
|
||||||
|
|
||||||
|
Len = 48;
|
||||||
|
|
||||||
|
info[44] = 1; // Show includes Modem Flags
|
||||||
|
info[45] = fx25_mode[Frame->Port];
|
||||||
|
info[46] = il2p_mode[Frame->Port];
|
||||||
|
info[47] = il2p_crc[Frame->Port];
|
||||||
|
}
|
||||||
|
|
||||||
AGW_send_to_app(AGW->socket, AGW_Gs_Frame(Frame->Port, info, Len));
|
AGW_send_to_app(AGW->socket, AGW_Gs_Frame(Frame->Port, info, Len));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1337,6 +1362,9 @@ void AGW_Report_Modem_Change(int port)
|
||||||
AGWUser * AGW;
|
AGWUser * AGW;
|
||||||
string * pkt;
|
string * pkt;
|
||||||
|
|
||||||
|
if (soundChannel[port] == 0) // Not in use
|
||||||
|
return;
|
||||||
|
|
||||||
// I think we send to all AGW sockets
|
// I think we send to all AGW sockets
|
||||||
|
|
||||||
for (i = 0; i < AGWConCount; i++)
|
for (i = 0; i < AGWConCount; i++)
|
||||||
|
@ -1345,16 +1373,27 @@ void AGW_Report_Modem_Change(int port)
|
||||||
|
|
||||||
if (AGW->reportFreqAndModem)
|
if (AGW->reportFreqAndModem)
|
||||||
{
|
{
|
||||||
// QTSM 's' Message with a data field is used by QtSM to set/read Modem Params
|
// QTSM 'g' Message with a data field is used by QtSM to set/read Modem Params
|
||||||
|
|
||||||
Byte info[44] = { 0, 255, 24, 3, 100, 15, 6, 0, 1, 0, 0, 0 }; //QTSM Signature
|
Byte info[48] = { 0, 255, 24, 3, 100, 15, 6, 0, 1, 0, 0, 0 }; //QTSM Signature
|
||||||
|
int Len = 44;
|
||||||
|
|
||||||
// Return Freq and Modem
|
// Return Freq and Modem
|
||||||
|
|
||||||
memcpy(&info[12], &rx_freq[port], 2);
|
memcpy(&info[12], &rx_freq[port], 2);
|
||||||
memcpy(&info[16], modes_name[speed[port]], 20);
|
memcpy(&info[16], modes_name[speed[port]], 20);
|
||||||
info[37] = speed[port]; // Index
|
info[37] = speed[port]; // Index
|
||||||
AGW_send_to_app(AGW->socket, AGW_Gs_Frame(port, info, 44));
|
|
||||||
|
if (AGW->reportFreqAndModem == 2)
|
||||||
|
{
|
||||||
|
Len = 48;
|
||||||
|
|
||||||
|
info[44] = 1; // Show includes Modem Flags
|
||||||
|
info[45] = fx25_mode[port];
|
||||||
|
info[46] = il2p_mode[port];
|
||||||
|
info[47] = il2p_crc[port];
|
||||||
|
}
|
||||||
|
AGW_send_to_app(AGW->socket, AGW_Gs_Frame(port, info, Len));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -142,6 +142,7 @@ short active_rx_freq[5] = { 1700, 1700,1700,1700,1700 };
|
||||||
|
|
||||||
int fx25_mode[4] = { 0, 0, 0, 0 };
|
int fx25_mode[4] = { 0, 0, 0, 0 };
|
||||||
int il2p_mode[4] = { 0, 0, 0, 0 };
|
int il2p_mode[4] = { 0, 0, 0, 0 };
|
||||||
|
int il2p_crc[4] = { 0, 0, 0, 0 };
|
||||||
|
|
||||||
int pnt_change[5] = { 0 };
|
int pnt_change[5] = { 0 };
|
||||||
float src_buf[5][2048];
|
float src_buf[5][2048];
|
||||||
|
|
88
ax25_link.h
88
ax25_link.h
|
@ -1,88 +0,0 @@
|
||||||
|
|
||||||
/* ax25_link.h */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef AX25_LINK_H
|
|
||||||
#define AX25_LINK_H 1
|
|
||||||
|
|
||||||
#include "ax25_pad.h" // for AX25_MAX_INFO_LEN
|
|
||||||
|
|
||||||
#include "dlq.h" // for dlq_item_t
|
|
||||||
|
|
||||||
#include "config.h" // for struct misc_config_s
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Limits and defaults for parameters.
|
|
||||||
|
|
||||||
|
|
||||||
#define AX25_N1_PACLEN_MIN 1 // Max bytes in Information part of frame.
|
|
||||||
#define AX25_N1_PACLEN_DEFAULT 256 // some v2.0 implementations have 128
|
|
||||||
#define AX25_N1_PACLEN_MAX AX25_MAX_INFO_LEN // from ax25_pad.h
|
|
||||||
|
|
||||||
|
|
||||||
#define AX25_N2_RETRY_MIN 1 // Number of times to retry before giving up.
|
|
||||||
#define AX25_N2_RETRY_DEFAULT 10
|
|
||||||
#define AX25_N2_RETRY_MAX 15
|
|
||||||
|
|
||||||
|
|
||||||
#define AX25_T1V_FRACK_MIN 1 // Number of seconds to wait before retrying.
|
|
||||||
#define AX25_T1V_FRACK_DEFAULT 3 // KPC-3+ has 4. TM-D710A has 3.
|
|
||||||
#define AX25_T1V_FRACK_MAX 15
|
|
||||||
|
|
||||||
|
|
||||||
#define AX25_K_MAXFRAME_BASIC_MIN 1 // Window size - number of I frames to send before waiting for ack.
|
|
||||||
#define AX25_K_MAXFRAME_BASIC_DEFAULT 4
|
|
||||||
#define AX25_K_MAXFRAME_BASIC_MAX 7
|
|
||||||
|
|
||||||
#define AX25_K_MAXFRAME_EXTENDED_MIN 1
|
|
||||||
#define AX25_K_MAXFRAME_EXTENDED_DEFAULT 32
|
|
||||||
#define AX25_K_MAXFRAME_EXTENDED_MAX 63 // In theory 127 but I'm restricting as explained in SREJ handling.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Call once at startup time.
|
|
||||||
|
|
||||||
void ax25_link_init (struct misc_config_s *pconfig);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// IMPORTANT:
|
|
||||||
|
|
||||||
// These functions must be called on a single thread, one at a time.
|
|
||||||
// The Data Link Queue (DLQ) is used to serialize events from multiple sources.
|
|
||||||
|
|
||||||
// Maybe the dispatch switch should be moved to ax25_link.c so they can all
|
|
||||||
// be made static and they can't be called from the wrong place accidentally.
|
|
||||||
|
|
||||||
void dl_connect_request (dlq_item_t *E);
|
|
||||||
|
|
||||||
void dl_disconnect_request (dlq_item_t *E);
|
|
||||||
|
|
||||||
void dl_data_request (dlq_item_t *E);
|
|
||||||
|
|
||||||
void dl_register_callsign (dlq_item_t *E);
|
|
||||||
|
|
||||||
void dl_unregister_callsign (dlq_item_t *E);
|
|
||||||
|
|
||||||
void dl_outstanding_frames_request (dlq_item_t *E);
|
|
||||||
|
|
||||||
void dl_client_cleanup (dlq_item_t *E);
|
|
||||||
|
|
||||||
|
|
||||||
void lm_data_indication (dlq_item_t *E);
|
|
||||||
|
|
||||||
void lm_seize_confirm (dlq_item_t *E);
|
|
||||||
|
|
||||||
void lm_channel_busy (dlq_item_t *E);
|
|
||||||
|
|
||||||
|
|
||||||
void dl_timer_expiry (void);
|
|
||||||
|
|
||||||
|
|
||||||
double ax25_link_get_next_timer_expiry (void);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* end ax25_link.h */
|
|
File diff suppressed because it is too large
Load Diff
55
ax25_pad2.h
55
ax25_pad2.h
|
@ -1,55 +0,0 @@
|
||||||
/*-------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* Name: ax25_pad2.h
|
|
||||||
*
|
|
||||||
* Purpose: Header file for using ax25_pad2.c
|
|
||||||
* ax25_pad dealt only with UI frames.
|
|
||||||
* This adds a facility for the other types: U, s, I.
|
|
||||||
*
|
|
||||||
*------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#ifndef AX25_PAD2_H
|
|
||||||
#define AX25_PAD2_H 1
|
|
||||||
|
|
||||||
#include "ax25_pad.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if AX25MEMDEBUG // to investigate a memory leak problem
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
packet_t ax25_u_frame_debug (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, cmdres_t cr, ax25_frame_type_t ftype, int pf, int pid, unsigned char *pinfo, int info_len, char *src_file, int src_line);
|
|
||||||
|
|
||||||
packet_t ax25_s_frame_debug (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, cmdres_t cr, ax25_frame_type_t ftype, int modulo, int nr, int pf, unsigned char *pinfo, int info_len, char *src_file, int src_line);
|
|
||||||
|
|
||||||
packet_t ax25_i_frame_debug (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, cmdres_t cr, int modulo, int nr, int ns, int pf, int pid, unsigned char *pinfo, int info_len, char *src_file, int src_line);
|
|
||||||
|
|
||||||
|
|
||||||
#define ax25_u_frame(a,n,c,f,p,q,i,l) ax25_u_frame_debug(a,n,c,f,p,q,i,l,__FILE__,__LINE__)
|
|
||||||
|
|
||||||
#define ax25_s_frame(a,n,c,f,m,r,p,i,l) ax25_s_frame_debug(a,n,c,f,m,r,p,i,l,__FILE__,__LINE__)
|
|
||||||
|
|
||||||
#define ax25_i_frame(a,n,c,m,r,s,p,q,i,l) ax25_i_frame_debug(a,n,c,m,r,s,p,q,i,l,__FILE__,__LINE__)
|
|
||||||
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
packet_t ax25_u_frame (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, cmdres_t cr, ax25_frame_type_t ftype, int pf, int pid, unsigned char *pinfo, int info_len);
|
|
||||||
|
|
||||||
packet_t ax25_s_frame (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, cmdres_t cr, ax25_frame_type_t ftype, int modulo, int nr, int pf, unsigned char *pinfo, int info_len);
|
|
||||||
|
|
||||||
packet_t ax25_i_frame (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, cmdres_t cr, int modulo, int nr, int ns, int pf, int pid, unsigned char *pinfo, int info_len);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* AX25_PAD2_H */
|
|
||||||
|
|
||||||
/* end ax25_pad2.h */
|
|
||||||
|
|
||||||
|
|
6
beacon.h
6
beacon.h
|
@ -1,6 +0,0 @@
|
||||||
|
|
||||||
/* beacon.h */
|
|
||||||
|
|
||||||
void beacon_init (struct audio_s *pmodem, struct misc_config_s *pconfig, struct igate_config_s *pigate);
|
|
||||||
|
|
||||||
void beacon_tracker_set_debug (int level);
|
|
|
@ -1,62 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
#ifndef CDIGIPEATER_H
|
|
||||||
#define CDIGIPEATER_H 1
|
|
||||||
|
|
||||||
#include "regex.h"
|
|
||||||
|
|
||||||
#include "direwolf.h" /* for MAX_CHANS */
|
|
||||||
#include "ax25_pad.h" /* for packet_t */
|
|
||||||
#include "audio.h" /* for radio channel properties */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Information required for Connected mode digipeating.
|
|
||||||
*
|
|
||||||
* The configuration file reader fills in this information
|
|
||||||
* and it is passed to cdigipeater_init at application start up time.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
struct cdigi_config_s {
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Rules for each of the [from_chan][to_chan] combinations.
|
|
||||||
*/
|
|
||||||
int enabled[MAX_CHANS][MAX_CHANS]; // Is it enabled for from/to pair?
|
|
||||||
|
|
||||||
int has_alias[MAX_CHANS][MAX_CHANS]; // If there was no alias in the config file,
|
|
||||||
// the structure below will not be set up
|
|
||||||
// properly and an attempt to use it could
|
|
||||||
// result in a crash. (fixed v1.5)
|
|
||||||
// Not needed for [APRS] DIGIPEAT because
|
|
||||||
// the alias is mandatory there.
|
|
||||||
regex_t alias[MAX_CHANS][MAX_CHANS];
|
|
||||||
|
|
||||||
char *cfilter_str[MAX_CHANS][MAX_CHANS];
|
|
||||||
// NULL or optional Packet Filter strings such as "t/m".
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Call once at application start up time.
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern void cdigipeater_init (struct audio_s *p_audio_config, struct cdigi_config_s *p_cdigi_config);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Call this for each packet received.
|
|
||||||
* Suitable packets will be queued for transmission.
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern void cdigipeater (int from_chan, packet_t pp);
|
|
||||||
|
|
||||||
|
|
||||||
/* Make statistics available. */
|
|
||||||
|
|
||||||
int cdigipeater_get_count (int from_chan, int to_chan);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* end cdigipeater.h */
|
|
||||||
|
|
5
cm108.h
5
cm108.h
|
@ -1,5 +0,0 @@
|
||||||
/* Dire Wolf cm108.h */
|
|
||||||
|
|
||||||
extern void cm108_find_ptt (char *output_audio_device, char *ptt_device, int ptt_device_size);
|
|
||||||
|
|
||||||
extern int cm108_set_gpio_pin (char *name, int num, int state);
|
|
262
config.h
262
config.h
|
@ -1,262 +0,0 @@
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* Name: config.h
|
|
||||||
*
|
|
||||||
* Purpose:
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
*
|
|
||||||
*-----------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef CONFIG_H
|
|
||||||
#define CONFIG_H 1
|
|
||||||
|
|
||||||
#include "audio.h" /* for struct audio_s */
|
|
||||||
#include "digipeater.h" /* for struct digi_config_s */
|
|
||||||
#include "cdigipeater.h" /* for struct cdigi_config_s */
|
|
||||||
#include "aprs_tt.h" /* for struct tt_config_s */
|
|
||||||
#include "igate.h" /* for struct igate_config_s */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* All the leftovers.
|
|
||||||
* This wasn't thought out. It just happened.
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum beacon_type_e { BEACON_IGNORE, BEACON_POSITION, BEACON_OBJECT, BEACON_TRACKER, BEACON_CUSTOM, BEACON_IGATE };
|
|
||||||
|
|
||||||
enum sendto_type_e { SENDTO_XMIT, SENDTO_IGATE, SENDTO_RECV };
|
|
||||||
|
|
||||||
|
|
||||||
#define MAX_BEACONS 30
|
|
||||||
#define MAX_KISS_TCP_PORTS (MAX_CHANS+1)
|
|
||||||
|
|
||||||
struct misc_config_s {
|
|
||||||
|
|
||||||
int agwpe_port; /* TCP Port number for the "AGW TCPIP Socket Interface" */
|
|
||||||
|
|
||||||
// Previously we allowed only a single TCP port for KISS.
|
|
||||||
// An increasing number of people want to run multiple radios.
|
|
||||||
// Unfortunately, most applications don't know how to deal with multi-radio TNCs.
|
|
||||||
// They ignore the channel on receive and always transmit to channel 0.
|
|
||||||
// Running multiple instances of direwolf is a work-around but this leads to
|
|
||||||
// more complex configuration and we lose the cross-channel digipeating capability.
|
|
||||||
// In release 1.7 we add a new feature to assign a single radio channel to a TCP port.
|
|
||||||
// e.g.
|
|
||||||
// KISSPORT 8001 # default, all channels. Radio channel = KISS channel.
|
|
||||||
//
|
|
||||||
// KISSPORT 7000 0 # Only radio channel 0 for receive.
|
|
||||||
// # Transmit to radio channel 0, ignoring KISS channel.
|
|
||||||
//
|
|
||||||
// KISSPORT 7001 1 # Only radio channel 1 for receive. KISS channel set to 0.
|
|
||||||
// # Transmit to radio channel 1, ignoring KISS channel.
|
|
||||||
|
|
||||||
int kiss_port[MAX_KISS_TCP_PORTS]; /* TCP Port number for the "TCP KISS" protocol. */
|
|
||||||
int kiss_chan[MAX_KISS_TCP_PORTS]; /* Radio Channel number for this port or -1 for all. */
|
|
||||||
|
|
||||||
int kiss_copy; /* Data from network KISS client is copied to all others. */
|
|
||||||
int enable_kiss_pt; /* Enable pseudo terminal for KISS. */
|
|
||||||
/* Want this to be off by default because it hangs */
|
|
||||||
/* after a while if nothing is reading from other end. */
|
|
||||||
|
|
||||||
char kiss_serial_port[20];
|
|
||||||
/* Serial port name for our end of the */
|
|
||||||
/* virtual null modem for native Windows apps. */
|
|
||||||
/* Version 1.5 add same capability for Linux. */
|
|
||||||
|
|
||||||
int kiss_serial_speed; /* Speed, in bps, for the KISS serial port. */
|
|
||||||
/* If 0, just leave what was already there. */
|
|
||||||
|
|
||||||
int kiss_serial_poll; /* When using Bluetooth KISS, the /dev/rfcomm0 device */
|
|
||||||
/* will appear and disappear as the remote application */
|
|
||||||
/* opens and closes the virtual COM port. */
|
|
||||||
/* When this is non-zero, we will check periodically to */
|
|
||||||
/* see if the device has appeared and we will open it. */
|
|
||||||
|
|
||||||
char gpsnmea_port[20]; /* Serial port name for reading NMEA sentences from GPS. */
|
|
||||||
/* e.g. COM22, /dev/ttyACM0 */
|
|
||||||
|
|
||||||
int gpsnmea_speed; /* Speed for above, baud, default 4800. */
|
|
||||||
|
|
||||||
char gpsd_host[20]; /* Host for gpsd server. */
|
|
||||||
/* e.g. localhost, 192.168.1.2 */
|
|
||||||
|
|
||||||
int gpsd_port; /* Port number for gpsd server. */
|
|
||||||
/* Default is 2947. */
|
|
||||||
|
|
||||||
|
|
||||||
char waypoint_serial_port[20]; /* Serial port name for sending NMEA waypoint sentences */
|
|
||||||
/* to a GPS map display or other mapping application. */
|
|
||||||
/* e.g. COM22, /dev/ttyACM0 */
|
|
||||||
/* Currently no option for setting non-standard speed. */
|
|
||||||
/* This was done in 2014 and no one has complained yet. */
|
|
||||||
|
|
||||||
char waypoint_udp_hostname[80]; /* Destination host when using UDP. */
|
|
||||||
|
|
||||||
int waypoint_udp_portnum; /* UDP port. */
|
|
||||||
|
|
||||||
int waypoint_formats; /* Which sentence formats should be generated? */
|
|
||||||
|
|
||||||
#define WPL_FORMAT_NMEA_GENERIC 0x01 /* N $GPWPL */
|
|
||||||
#define WPL_FORMAT_GARMIN 0x02 /* G $PGRMW */
|
|
||||||
#define WPL_FORMAT_MAGELLAN 0x04 /* M $PMGNWPL */
|
|
||||||
#define WPL_FORMAT_KENWOOD 0x08 /* K $PKWDWPL */
|
|
||||||
#define WPL_FORMAT_AIS 0x10 /* A !AIVDM */
|
|
||||||
|
|
||||||
|
|
||||||
int log_daily_names; /* True to generate new log file each day. */
|
|
||||||
|
|
||||||
char log_path[80]; /* Either directory or full file name depending on above. */
|
|
||||||
|
|
||||||
int dns_sd_enabled; /* DNS Service Discovery announcement enabled. */
|
|
||||||
char dns_sd_name[64]; /* Name announced on dns-sd; defaults to "Dire Wolf on <hostname>" */
|
|
||||||
|
|
||||||
int sb_configured; /* TRUE if SmartBeaconing is configured. */
|
|
||||||
int sb_fast_speed; /* MPH */
|
|
||||||
int sb_fast_rate; /* seconds */
|
|
||||||
int sb_slow_speed; /* MPH */
|
|
||||||
int sb_slow_rate; /* seconds */
|
|
||||||
int sb_turn_time; /* seconds */
|
|
||||||
int sb_turn_angle; /* degrees */
|
|
||||||
int sb_turn_slope; /* degrees * MPH */
|
|
||||||
|
|
||||||
// AX.25 connected mode.
|
|
||||||
|
|
||||||
int frack; /* Number of seconds to wait for ack to transmission. */
|
|
||||||
|
|
||||||
int retry; /* Number of times to retry before giving up. */
|
|
||||||
|
|
||||||
int paclen; /* Max number of bytes in information part of frame. */
|
|
||||||
|
|
||||||
int maxframe_basic; /* Max frames to send before ACK. mod 8 "Window" size. */
|
|
||||||
|
|
||||||
int maxframe_extended; /* Max frames to send before ACK. mod 128 "Window" size. */
|
|
||||||
|
|
||||||
int maxv22; /* Maximum number of unanswered SABME frames sent before */
|
|
||||||
/* switching to SABM. This is to handle the case of an old */
|
|
||||||
/* TNC which simply ignores SABME rather than replying with FRMR. */
|
|
||||||
|
|
||||||
char **v20_addrs; /* Stations known to understand only AX.25 v2.0 so we don't */
|
|
||||||
/* waste time trying v2.2 first. */
|
|
||||||
|
|
||||||
int v20_count; /* Number of station addresses in array above. */
|
|
||||||
|
|
||||||
char **noxid_addrs; /* Stations known not to understand XID command so don't */
|
|
||||||
/* waste time sending it and eventually giving up. */
|
|
||||||
/* AX.25 for Linux is the one known case, so far, where */
|
|
||||||
/* SABME is implemented but XID is not. */
|
|
||||||
|
|
||||||
int noxid_count; /* Number of station addresses in array above. */
|
|
||||||
|
|
||||||
|
|
||||||
// Beacons.
|
|
||||||
|
|
||||||
int num_beacons; /* Number of beacons defined. */
|
|
||||||
|
|
||||||
struct beacon_s {
|
|
||||||
|
|
||||||
enum beacon_type_e btype; /* Position or object. */
|
|
||||||
|
|
||||||
int lineno; /* Line number from config file for later error messages. */
|
|
||||||
|
|
||||||
enum sendto_type_e sendto_type;
|
|
||||||
|
|
||||||
/* SENDTO_XMIT - Usually beacons go to a radio transmitter. */
|
|
||||||
/* chan, below is the channel number. */
|
|
||||||
/* SENDTO_IGATE - Send to IGate, probably to announce my position */
|
|
||||||
/* rather than relying on someone else to hear */
|
|
||||||
/* me on the radio and report me. */
|
|
||||||
/* SENDTO_RECV - Pretend this was heard on the specified */
|
|
||||||
/* radio channel. Mostly for testing. It is a */
|
|
||||||
/* convenient way to send packets to attached apps. */
|
|
||||||
|
|
||||||
int sendto_chan; /* Transmit or simulated receive channel for above. Should be 0 for IGate. */
|
|
||||||
|
|
||||||
int delay; /* Seconds to delay before first transmission. */
|
|
||||||
|
|
||||||
int slot; /* Seconds after hour for slotted time beacons. */
|
|
||||||
/* If specified, it overrides any 'delay' value. */
|
|
||||||
|
|
||||||
int every; /* Time between transmissions, seconds. */
|
|
||||||
/* Remains fixed for PBEACON and OBEACON. */
|
|
||||||
/* Dynamically adjusted for TBEACON. */
|
|
||||||
|
|
||||||
time_t next; /* Unix time to transmit next one. */
|
|
||||||
|
|
||||||
char *source; /* NULL or explicit AX.25 source address to use */
|
|
||||||
/* instead of the mycall value for the channel. */
|
|
||||||
|
|
||||||
char *dest; /* NULL or explicit AX.25 destination to use */
|
|
||||||
/* instead of the software version such as APDW11. */
|
|
||||||
|
|
||||||
int compress; /* Use more compact form? */
|
|
||||||
|
|
||||||
char objname[10]; /* Object name. Any printable characters. */
|
|
||||||
|
|
||||||
char *via; /* Path, e.g. "WIDE1-1,WIDE2-1" or NULL. */
|
|
||||||
|
|
||||||
char *custom_info; /* Info part for handcrafted custom beacon. */
|
|
||||||
/* Ignore the rest below if this is set. */
|
|
||||||
|
|
||||||
char *custom_infocmd; /* Command to generate info part. */
|
|
||||||
/* Again, other options below are then ignored. */
|
|
||||||
|
|
||||||
int messaging; /* Set messaging attribute for position report. */
|
|
||||||
/* i.e. Data Type Indicator of '=' rather than '!' */
|
|
||||||
|
|
||||||
double lat; /* Latitude and longitude. */
|
|
||||||
double lon;
|
|
||||||
int ambiguity; /* Number of lower digits to trim from location. 0 (default), 1, 2, 3, 4. */
|
|
||||||
float alt_m; /* Altitude in meters. */
|
|
||||||
|
|
||||||
char symtab; /* Symbol table: / or \ or overlay character. */
|
|
||||||
char symbol; /* Symbol code. */
|
|
||||||
|
|
||||||
float power; /* For PHG. */
|
|
||||||
float height; /* HAAT in feet */
|
|
||||||
float gain; /* Original protocol spec was unclear. */
|
|
||||||
/* Addendum 1.1 clarifies it is dBi not dBd. */
|
|
||||||
|
|
||||||
char dir[3]; /* 1 or 2 of N,E,W,S, or empty for omni. */
|
|
||||||
|
|
||||||
float freq; /* MHz. */
|
|
||||||
float tone; /* Hz. */
|
|
||||||
float offset; /* MHz. */
|
|
||||||
|
|
||||||
char *comment; /* Comment or NULL. */
|
|
||||||
char *commentcmd; /* Command to append more to Comment or NULL. */
|
|
||||||
|
|
||||||
|
|
||||||
} beacon[MAX_BEACONS];
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#define MIN_IP_PORT_NUMBER 1024
|
|
||||||
#define MAX_IP_PORT_NUMBER 49151
|
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_AGWPE_PORT 8000 /* Like everyone else. */
|
|
||||||
#define DEFAULT_KISS_PORT 8001 /* Above plus 1. */
|
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_NULLMODEM "COM3" /* should be equiv. to /dev/ttyS2 on Cygwin */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern void config_init (char *fname, struct audio_s *p_modem,
|
|
||||||
struct digi_config_s *digi_config,
|
|
||||||
struct cdigi_config_s *cdigi_config,
|
|
||||||
struct tt_config_s *p_tt_config,
|
|
||||||
struct igate_config_s *p_igate_config,
|
|
||||||
struct misc_config_s *misc_config);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* CONFIG_H */
|
|
||||||
|
|
||||||
/* end config.h */
|
|
||||||
|
|
||||||
|
|
|
@ -1,201 +0,0 @@
|
||||||
[General]
|
|
||||||
geometry="@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0z\0\0\0\t\0\0\x4=\0\0\x2\xf9\0\0\0{\0\0\0(\0\0\x4<\0\0\x2\xf8\0\0\0\0\0\0\0\0\x5\0\0\0\0{\0\0\0(\0\0\x4<\0\0\x2\xf8)"
|
|
||||||
windowState=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\0\0\0\x3\xc2\0\0\x2\xb9\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\0)
|
|
||||||
PSKWindow=@Rect(46 499 366 140)
|
|
||||||
FontFamily=Courier New
|
|
||||||
PointSize=12
|
|
||||||
Weight=50
|
|
||||||
|
|
||||||
[AX25_A]
|
|
||||||
Retries=15
|
|
||||||
HiToneRaise=0
|
|
||||||
Maxframe=3
|
|
||||||
FrackTime=5
|
|
||||||
IdleTime=180
|
|
||||||
SlotTime=100
|
|
||||||
Persist=128
|
|
||||||
RespTime=1500
|
|
||||||
TXFrmMode=1
|
|
||||||
FrameCollector=6
|
|
||||||
ExcludeCallsigns=
|
|
||||||
ExcludeAPRSFrmType=
|
|
||||||
KISSOptimization=0
|
|
||||||
DynamicFrack=0
|
|
||||||
BitRecovery=0
|
|
||||||
NonAX25Frm=0
|
|
||||||
MEMRecovery=200
|
|
||||||
IPOLL=80
|
|
||||||
MyDigiCall=
|
|
||||||
FX25=1
|
|
||||||
IL2P=2
|
|
||||||
RSID_UI=0
|
|
||||||
RSID_SABM=0
|
|
||||||
RSID_SetModem=0
|
|
||||||
|
|
||||||
[Init]
|
|
||||||
SoundMode=0
|
|
||||||
UDPClientPort=8888
|
|
||||||
UDPServerPort=8884
|
|
||||||
TXPort=8884
|
|
||||||
UDPServer=0
|
|
||||||
UDPHost=192.168.1.255
|
|
||||||
TXSampleRate=12000
|
|
||||||
RXSampleRate=12000
|
|
||||||
SndRXDeviceName="CABLE-B OUTPUT (VB-AUDIO CABLE "
|
|
||||||
SndTXDeviceName=CABLE-B INPUT (VB-AUDIO CABLE B
|
|
||||||
SCO=0
|
|
||||||
DualPTT=1
|
|
||||||
TXRotate=0
|
|
||||||
DispMode=1
|
|
||||||
PTT=
|
|
||||||
PTTBAUD=19200
|
|
||||||
PTTMode=1
|
|
||||||
PTTOffString=
|
|
||||||
PTTOnString=
|
|
||||||
pttGPIOPin=17
|
|
||||||
pttGPIOPinR=17
|
|
||||||
CM108Addr=0xD8C:0x08
|
|
||||||
HamLibPort=4532
|
|
||||||
HamLibHost=127.0.0.1
|
|
||||||
MinimizetoTray=1
|
|
||||||
multiCore=1
|
|
||||||
Wisdom=(fftw-3.3.5 fftwf_wisdom #x9e7d4dee #xdb14fed1 #x34bf76a4 #xeb6e8fdf\n (fftwf_codelet_n2fv_12_avx 0 #x10048 #x10048 #x0 #xb0767e46 #x8d41dd22 #x439264a0 #x18435a99)\n (fftwf_rdft_rank0_register 0 #x11048 #x11048 #x0 #xff75c762 #x3a0ee093 #x5b78d592 #x6b6be60e)\n (fftwf_codelet_t2fv_2_avx 0 #x11048 #x11048 #x0 #x34057a74 #x664db78f #xa9524ebc #x606afd88)\n (fftwf_dft_nop_register 0 #x11048 #x11048 #x0 #x4a593e24 #xb5f06ddf #xf11fe7f2 #xc010b545)\n (fftwf_dft_bluestein_register 0 #x11048 #x11048 #x0 #x5e17c068 #x1682c5d6 #x89dd79be #x9b951c0f)\n (fftwf_dft_vrank_geq1_register 0 #x10048 #x10048 #x0 #x2fce15e1 #x178d4f4d #x1e956a41 #xf3fd6b80)\n (fftwf_codelet_t1fuv_4_sse2 0 #x11048 #x11048 #x0 #x2fb84bc5 #x2792028e #x8ec66ed5 #x47b5f7dc)\n (fftwf_dft_buffered_register 0 #x11048 #x11048 #x0 #x4f8e87b4 #xec4f2fa0 #x79fe76a1 #xa16e32a5)\n (fftwf_dft_vrank_geq1_register 0 #x11048 #x11048 #x0 #x8a9c355b #xb6dbadad #xbac1daac #xa866ceb3)\n (fftwf_dft_r2hc_register 0 #x11048 #x11048 #x0 #x576d5db6 #xa6a15f8a #x875d87d5 #x7561a866)\n (fftwf_codelet_t1fv_6_avx 0 #x10048 #x10048 #x0 #xd9db29d8 #x3302fcf3 #x19ce6e5d #x869fc341)\n (fftwf_dft_vrank_geq1_register 0 #x11048 #x11048 #x0 #xf7abab03 #x5f0e79b1 #x1b8367ad #xe5028f2c)\n (fftwf_codelet_t1fv_12_avx 0 #x10048 #x10048 #x0 #x0b0d3933 #x08267d12 #x45613873 #xde496efe)\n)\n
|
|
||||||
WaterfallMin=0
|
|
||||||
WaterfallMax=3300
|
|
||||||
|
|
||||||
[AX25_B]
|
|
||||||
Retries=15
|
|
||||||
HiToneRaise=0
|
|
||||||
Maxframe=3
|
|
||||||
FrackTime=5
|
|
||||||
IdleTime=180
|
|
||||||
SlotTime=100
|
|
||||||
Persist=128
|
|
||||||
RespTime=1500
|
|
||||||
TXFrmMode=1
|
|
||||||
FrameCollector=6
|
|
||||||
ExcludeCallsigns=
|
|
||||||
ExcludeAPRSFrmType=
|
|
||||||
KISSOptimization=0
|
|
||||||
DynamicFrack=0
|
|
||||||
BitRecovery=0
|
|
||||||
NonAX25Frm=0
|
|
||||||
MEMRecovery=200
|
|
||||||
IPOLL=80
|
|
||||||
MyDigiCall=
|
|
||||||
FX25=1
|
|
||||||
IL2P=2
|
|
||||||
RSID_UI=0
|
|
||||||
RSID_SABM=0
|
|
||||||
RSID_SetModem=0
|
|
||||||
|
|
||||||
[Modem]
|
|
||||||
NRRcvrPairs1=2
|
|
||||||
NRRcvrPairs2=2
|
|
||||||
NRRcvrPairs3=0
|
|
||||||
NRRcvrPairs4=2
|
|
||||||
RcvrShift1=50
|
|
||||||
RcvrShift2=30
|
|
||||||
RcvrShift3=30
|
|
||||||
RcvrShift4=30
|
|
||||||
ModemType1=4
|
|
||||||
ModemType2=14
|
|
||||||
ModemType3=0
|
|
||||||
ModemType4=14
|
|
||||||
soundChannel1=1
|
|
||||||
soundChannel2=1
|
|
||||||
soundChannel3=0
|
|
||||||
soundChannel4=0
|
|
||||||
DCDThreshold=40
|
|
||||||
rxOffset=-100
|
|
||||||
PreEmphasisAll1=0
|
|
||||||
PreEmphasisAll2=0
|
|
||||||
PreEmphasisAll3=0
|
|
||||||
PreEmphasisAll4=0
|
|
||||||
PreEmphasisDB1=0
|
|
||||||
PreEmphasisDB2=0
|
|
||||||
PreEmphasisDB3=0
|
|
||||||
PreEmphasisDB4=0
|
|
||||||
TxDelay1=250
|
|
||||||
TxDelay2=250
|
|
||||||
TxDelay3=250
|
|
||||||
TxDelay4=250
|
|
||||||
TxTail1=50
|
|
||||||
TxTail2=50
|
|
||||||
TxTail3=50
|
|
||||||
TxTail4=50
|
|
||||||
CWIDCall=
|
|
||||||
CWIDInterval=0
|
|
||||||
CWIDLeft=0
|
|
||||||
CWIDRight=0
|
|
||||||
CWIDType=1
|
|
||||||
RXFreq1=1700
|
|
||||||
RXFreq2=1700
|
|
||||||
RXFreq3=500
|
|
||||||
RXFreq4=1700
|
|
||||||
CWIDMark=
|
|
||||||
afterTraffic=false
|
|
||||||
|
|
||||||
[AGWHost]
|
|
||||||
Server=1
|
|
||||||
Port=8000
|
|
||||||
|
|
||||||
[KISS]
|
|
||||||
Server=0
|
|
||||||
Port=8105
|
|
||||||
|
|
||||||
[AX25_C]
|
|
||||||
Retries=15
|
|
||||||
HiToneRaise=0
|
|
||||||
Maxframe=3
|
|
||||||
FrackTime=5
|
|
||||||
IdleTime=180
|
|
||||||
SlotTime=100
|
|
||||||
Persist=128
|
|
||||||
RespTime=1500
|
|
||||||
TXFrmMode=1
|
|
||||||
FrameCollector=6
|
|
||||||
ExcludeCallsigns=
|
|
||||||
ExcludeAPRSFrmType=
|
|
||||||
KISSOptimization=0
|
|
||||||
DynamicFrack=0
|
|
||||||
BitRecovery=0
|
|
||||||
NonAX25Frm=0
|
|
||||||
MEMRecovery=200
|
|
||||||
IPOLL=80
|
|
||||||
MyDigiCall=
|
|
||||||
FX25=1
|
|
||||||
IL2P=0
|
|
||||||
RSID_UI=0
|
|
||||||
RSID_SABM=0
|
|
||||||
RSID_SetModem=0
|
|
||||||
|
|
||||||
[Window]
|
|
||||||
Waterfall1=1
|
|
||||||
Waterfall2=1
|
|
||||||
|
|
||||||
[AX25_D]
|
|
||||||
Retries=15
|
|
||||||
HiToneRaise=0
|
|
||||||
Maxframe=3
|
|
||||||
FrackTime=5
|
|
||||||
IdleTime=180
|
|
||||||
SlotTime=100
|
|
||||||
Persist=128
|
|
||||||
RespTime=1500
|
|
||||||
TXFrmMode=1
|
|
||||||
FrameCollector=6
|
|
||||||
ExcludeCallsigns=
|
|
||||||
ExcludeAPRSFrmType=
|
|
||||||
KISSOptimization=0
|
|
||||||
DynamicFrack=0
|
|
||||||
BitRecovery=0
|
|
||||||
NonAX25Frm=0
|
|
||||||
MEMRecovery=200
|
|
||||||
IPOLL=80
|
|
||||||
MyDigiCall=
|
|
||||||
FX25=1
|
|
||||||
IL2P=0
|
|
||||||
RSID_UI=0
|
|
||||||
RSID_SABM=0
|
|
||||||
RSID_SetModem=0
|
|
|
@ -1,12 +0,0 @@
|
||||||
#define _MSC_EXTENSIONS
|
|
||||||
#define _INTEGRAL_MAX_BITS 64
|
|
||||||
#define _MSC_VER 1916
|
|
||||||
#define _MSC_FULL_VER 191627050
|
|
||||||
#define _MSC_BUILD 0
|
|
||||||
#define _WIN32
|
|
||||||
#define _M_IX86 600
|
|
||||||
#define _M_IX86_FP 2
|
|
||||||
#define _CPPRTTI
|
|
||||||
#define _DEBUG
|
|
||||||
#define _MT
|
|
||||||
#define _DLL
|
|
|
@ -1,7 +1,7 @@
|
||||||
#define _MSC_EXTENSIONS
|
#define _MSC_EXTENSIONS
|
||||||
#define _INTEGRAL_MAX_BITS 64
|
#define _INTEGRAL_MAX_BITS 64
|
||||||
#define _MSC_VER 1916
|
#define _MSC_VER 1916
|
||||||
#define _MSC_FULL_VER 191627043
|
#define _MSC_FULL_VER 191627045
|
||||||
#define _MSC_BUILD 0
|
#define _MSC_BUILD 0
|
||||||
#define _WIN32
|
#define _WIN32
|
||||||
#define _M_IX86 600
|
#define _M_IX86 600
|
||||||
|
|
150
decode_aprs.h
150
decode_aprs.h
|
@ -1,150 +0,0 @@
|
||||||
|
|
||||||
/* decode_aprs.h */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef DECODE_APRS_H
|
|
||||||
|
|
||||||
#define DECODE_APRS_H 1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef G_UNKNOWN
|
|
||||||
#include "latlong.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef AX25_MAX_ADDR_LEN
|
|
||||||
#include "ax25_pad.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef APRSTT_LOC_DESC_LEN
|
|
||||||
#include "aprs_tt.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef struct decode_aprs_s {
|
|
||||||
|
|
||||||
int g_quiet; /* Suppress error messages when decoding. */
|
|
||||||
|
|
||||||
char g_src[AX25_MAX_ADDR_LEN];
|
|
||||||
|
|
||||||
char g_dest[AX25_MAX_ADDR_LEN];
|
|
||||||
|
|
||||||
char g_data_type_desc[100]; /* APRS data type description. Telemetry descriptions get pretty long. */
|
|
||||||
|
|
||||||
char g_symbol_table; /* The Symbol Table Identifier character selects one */
|
|
||||||
/* of the two Symbol Tables, or it may be used as */
|
|
||||||
/* single-character (alpha or numeric) overlay, as follows: */
|
|
||||||
|
|
||||||
/* / Primary Symbol Table (mostly stations) */
|
|
||||||
|
|
||||||
/* \ Alternate Symbol Table (mostly Objects) */
|
|
||||||
|
|
||||||
/* 0-9 Numeric overlay. Symbol from Alternate Symbol */
|
|
||||||
/* Table (uncompressed lat/long data format) */
|
|
||||||
|
|
||||||
/* a-j Numeric overlay. Symbol from Alternate */
|
|
||||||
/* Symbol Table (compressed lat/long data */
|
|
||||||
/* format only). i.e. a-j maps to 0-9 */
|
|
||||||
|
|
||||||
/* A-Z Alpha overlay. Symbol from Alternate Symbol Table */
|
|
||||||
|
|
||||||
|
|
||||||
char g_symbol_code; /* Where the Symbol Table Identifier is 0-9 or A-Z (or a-j */
|
|
||||||
/* with compressed position data only), the symbol comes from */
|
|
||||||
/* the Alternate Symbol Table, and is overlaid with the */
|
|
||||||
/* identifier (as a single digit or a capital letter). */
|
|
||||||
|
|
||||||
char g_aprstt_loc[APRSTT_LOC_DESC_LEN]; /* APRStt location from !DAO! */
|
|
||||||
|
|
||||||
double g_lat, g_lon; /* Location, degrees. Negative for South or West. */
|
|
||||||
/* Set to G_UNKNOWN if missing or error. */
|
|
||||||
|
|
||||||
char g_maidenhead[12]; /* 4 or 6 (or 8?) character maidenhead locator. */
|
|
||||||
|
|
||||||
char g_name[12]; /* Object or item name. Max. 9 characters. */
|
|
||||||
|
|
||||||
char g_addressee[12]; /* Addressee for a "message." Max. 9 characters. */
|
|
||||||
/* Also for Directed Station Query which is a */
|
|
||||||
/* special case of message. */
|
|
||||||
|
|
||||||
enum message_subtype_e { message_subtype_invalid = 0,
|
|
||||||
message_subtype_message,
|
|
||||||
message_subtype_ack,
|
|
||||||
message_subtype_rej,
|
|
||||||
message_subtype_telem_parm,
|
|
||||||
message_subtype_telem_unit,
|
|
||||||
message_subtype_telem_eqns,
|
|
||||||
message_subtype_telem_bits,
|
|
||||||
message_subtype_directed_query
|
|
||||||
} g_message_subtype; /* Various cases of the overloaded "message." */
|
|
||||||
|
|
||||||
char g_message_number[12]; /* Message number. Should be 1 - 5 alphanumeric characters if used. */
|
|
||||||
/* Addendum 1.1 has new format {mm} or {mm}aa with only two */
|
|
||||||
/* characters for message number and an ack riding piggyback. */
|
|
||||||
|
|
||||||
float g_speed_mph; /* Speed in MPH. */
|
|
||||||
/* The APRS transmission uses knots so watch out for */
|
|
||||||
/* conversions when sending and receiving APRS packets. */
|
|
||||||
|
|
||||||
float g_course; /* 0 = North, 90 = East, etc. */
|
|
||||||
|
|
||||||
int g_power; /* Transmitter power in watts. */
|
|
||||||
|
|
||||||
int g_height; /* Antenna height above average terrain, feet. */
|
|
||||||
|
|
||||||
int g_gain; /* Antenna gain in dB. */
|
|
||||||
|
|
||||||
char g_directivity[12]; /* Direction of max signal strength */
|
|
||||||
|
|
||||||
float g_range; /* Precomputed radio range in miles. */
|
|
||||||
|
|
||||||
float g_altitude_ft; /* Feet above median sea level. */
|
|
||||||
/* I used feet here because the APRS specification */
|
|
||||||
/* has units of feet for alititude. Meters would be */
|
|
||||||
/* more natural to the other 96% of the world. */
|
|
||||||
|
|
||||||
char g_mfr[80]; /* Manufacturer or application. */
|
|
||||||
|
|
||||||
char g_mic_e_status[32]; /* MIC-E message. */
|
|
||||||
|
|
||||||
double g_freq; /* Frequency, MHz */
|
|
||||||
|
|
||||||
float g_tone; /* CTCSS tone, Hz, one fractional digit */
|
|
||||||
|
|
||||||
int g_dcs; /* Digital coded squelch, print as 3 octal digits. */
|
|
||||||
|
|
||||||
int g_offset; /* Transmit offset, kHz */
|
|
||||||
|
|
||||||
|
|
||||||
char g_query_type[12]; /* General Query: APRS, IGATE, WX, ... */
|
|
||||||
/* Addressee is NOT set. */
|
|
||||||
|
|
||||||
/* Directed Station Query: exactly 5 characters. */
|
|
||||||
/* APRSD, APRST, PING?, ... */
|
|
||||||
/* Addressee is set. */
|
|
||||||
|
|
||||||
double g_footprint_lat; /* A general query may contain a foot print. */
|
|
||||||
double g_footprint_lon; /* Set all to G_UNKNOWN if not used. */
|
|
||||||
float g_footprint_radius; /* Radius in miles. */
|
|
||||||
|
|
||||||
char g_query_callsign[12]; /* Directed query may contain callsign. */
|
|
||||||
/* e.g. tell me all objects from that callsign. */
|
|
||||||
|
|
||||||
|
|
||||||
char g_weather[500]; /* Weather. Can get quite long. Rethink max size. */
|
|
||||||
|
|
||||||
char g_telemetry[256]; /* Telemetry data. Rethink max size. */
|
|
||||||
|
|
||||||
char g_comment[256]; /* Comment. */
|
|
||||||
|
|
||||||
} decode_aprs_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern void decode_aprs (decode_aprs_t *A, packet_t pp, int quiet, char *third_party_src);
|
|
||||||
|
|
||||||
extern void decode_aprs_print (decode_aprs_t *A);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
10
dedupe.h
10
dedupe.h
|
@ -1,10 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
void dedupe_init (int ttl);
|
|
||||||
|
|
||||||
void dedupe_remember (packet_t pp, int chan);
|
|
||||||
|
|
||||||
int dedupe_check (packet_t pp, int chan);
|
|
||||||
|
|
||||||
|
|
||||||
/* end dedupe.h */
|
|
17
demod.h
17
demod.h
|
@ -1,17 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
/* demod.h */
|
|
||||||
|
|
||||||
#include "audio.h" /* for struct audio_s */
|
|
||||||
#include "ax25_pad.h" /* for alevel_t */
|
|
||||||
|
|
||||||
|
|
||||||
int demod_init (struct audio_s *pa);
|
|
||||||
|
|
||||||
int demod_get_sample (int a);
|
|
||||||
|
|
||||||
void demod_process_sample (int chan, int subchan, int sam);
|
|
||||||
|
|
||||||
void demod_print_agc (int chan, int subchan);
|
|
||||||
|
|
||||||
alevel_t demod_get_audio_level (int chan, int subchan);
|
|
|
@ -1,8 +0,0 @@
|
||||||
|
|
||||||
/* demod_afsk.h */
|
|
||||||
|
|
||||||
|
|
||||||
void demod_afsk_init (int samples_per_sec, int baud, int mark_freq,
|
|
||||||
int space_freq, char profile, struct demodulator_state_s *D);
|
|
||||||
|
|
||||||
void demod_afsk_process_sample (int chan, int subchan, int sam, struct demodulator_state_s *D);
|
|
|
@ -1,7 +0,0 @@
|
||||||
|
|
||||||
/* demod_psk.h */
|
|
||||||
|
|
||||||
|
|
||||||
void demod_psk_init (enum modem_t modem_type, enum v26_e v26_alt, int samples_per_sec, int bps, char profile, struct demodulator_state_s *D);
|
|
||||||
|
|
||||||
void demod_psk_process_sample (int chan, int subchan, int sam, struct demodulator_state_s *D);
|
|
|
@ -151,7 +151,7 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>20</x>
|
<x>20</x>
|
||||||
<y>304</y>
|
<y>304</y>
|
||||||
<width>251</width>
|
<width>231</width>
|
||||||
<height>17</height>
|
<height>17</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
@ -582,6 +582,19 @@
|
||||||
<string>to</string>
|
<string>to</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="darkTheme">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>260</x>
|
||||||
|
<y>304</y>
|
||||||
|
<width>161</width>
|
||||||
|
<height>17</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Dark Theme</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QGroupBox" name="groupBox_2">
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
|
|
78
digipeater.h
78
digipeater.h
|
@ -1,78 +0,0 @@
|
||||||
|
|
||||||
#ifndef DIGIPEATER_H
|
|
||||||
#define DIGIPEATER_H 1
|
|
||||||
|
|
||||||
#include "regex.h"
|
|
||||||
|
|
||||||
#include "direwolf.h" /* for MAX_CHANS */
|
|
||||||
#include "ax25_pad.h" /* for packet_t */
|
|
||||||
#include "audio.h" /* for radio channel properties */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Information required for digipeating.
|
|
||||||
*
|
|
||||||
* The configuration file reader fills in this information
|
|
||||||
* and it is passed to digipeater_init at application start up time.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
struct digi_config_s {
|
|
||||||
|
|
||||||
|
|
||||||
int dedupe_time; /* Don't digipeat duplicate packets */
|
|
||||||
/* within this number of seconds. */
|
|
||||||
|
|
||||||
#define DEFAULT_DEDUPE 30
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Rules for each of the [from_chan][to_chan] combinations.
|
|
||||||
*/
|
|
||||||
|
|
||||||
regex_t alias[MAX_CHANS][MAX_CHANS];
|
|
||||||
|
|
||||||
regex_t wide[MAX_CHANS][MAX_CHANS];
|
|
||||||
|
|
||||||
int enabled[MAX_CHANS][MAX_CHANS];
|
|
||||||
|
|
||||||
enum preempt_e { PREEMPT_OFF, PREEMPT_DROP, PREEMPT_MARK, PREEMPT_TRACE } preempt[MAX_CHANS][MAX_CHANS];
|
|
||||||
|
|
||||||
// ATGP is an ugly hack for the specific need of ATGP which needs more that 8 digipeaters.
|
|
||||||
// DO NOT put this in the User Guide. On a need to know basis.
|
|
||||||
|
|
||||||
char atgp[MAX_CHANS][MAX_CHANS][AX25_MAX_ADDR_LEN];
|
|
||||||
|
|
||||||
char *filter_str[MAX_CHANS+1][MAX_CHANS+1];
|
|
||||||
// NULL or optional Packet Filter strings such as "t/m".
|
|
||||||
// Notice the size of arrays is one larger than normal.
|
|
||||||
// That extra position is for the IGate.
|
|
||||||
|
|
||||||
int regen[MAX_CHANS][MAX_CHANS]; // Regenerate packet.
|
|
||||||
// Sort of like digipeating but passed along unchanged.
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Call once at application start up time.
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern void digipeater_init (struct audio_s *p_audio_config, struct digi_config_s *p_digi_config);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Call this for each packet received.
|
|
||||||
* Suitable packets will be queued for transmission.
|
|
||||||
*/
|
|
||||||
|
|
||||||
extern void digipeater (int from_chan, packet_t pp);
|
|
||||||
|
|
||||||
void digi_regen (int from_chan, packet_t pp);
|
|
||||||
|
|
||||||
|
|
||||||
/* Make statistics available. */
|
|
||||||
|
|
||||||
int digipeater_get_count (int from_chan, int to_chan);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* end digipeater.h */
|
|
||||||
|
|
148
dlq.h
148
dlq.h
|
@ -1,148 +0,0 @@
|
||||||
|
|
||||||
/*------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* Module: dlq.h
|
|
||||||
*
|
|
||||||
*---------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#ifndef DLQ_H
|
|
||||||
#define DLQ_H 1
|
|
||||||
|
|
||||||
#include "ax25_pad.h"
|
|
||||||
#include "audio.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* A transmit or receive data block for connected mode. */
|
|
||||||
|
|
||||||
typedef struct cdata_s {
|
|
||||||
int magic; /* For integrity checking. */
|
|
||||||
|
|
||||||
#define TXDATA_MAGIC 0x09110911
|
|
||||||
|
|
||||||
struct cdata_s *next; /* Pointer to next when part of a list. */
|
|
||||||
|
|
||||||
int pid; /* Protocol id. */
|
|
||||||
|
|
||||||
int size; /* Number of bytes allocated. */
|
|
||||||
|
|
||||||
int len; /* Number of bytes actually used. */
|
|
||||||
|
|
||||||
char data[]; /* Variable length data. */
|
|
||||||
|
|
||||||
} cdata_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Types of things that can be in queue. */
|
|
||||||
|
|
||||||
typedef enum dlq_type_e {DLQ_REC_FRAME, DLQ_CONNECT_REQUEST, DLQ_DISCONNECT_REQUEST, DLQ_XMIT_DATA_REQUEST, DLQ_REGISTER_CALLSIGN, DLQ_UNREGISTER_CALLSIGN, DLQ_OUTSTANDING_FRAMES_REQUEST, DLQ_CHANNEL_BUSY, DLQ_SEIZE_CONFIRM, DLQ_CLIENT_CLEANUP} dlq_type_t;
|
|
||||||
|
|
||||||
|
|
||||||
/* A queue item. */
|
|
||||||
|
|
||||||
// TODO: call this event rather than item.
|
|
||||||
// TODO: should add fences.
|
|
||||||
|
|
||||||
typedef struct dlq_item_s {
|
|
||||||
|
|
||||||
struct dlq_item_s *nextp; /* Next item in queue. */
|
|
||||||
|
|
||||||
dlq_type_t type; /* Type of item. */
|
|
||||||
/* See enum definition above. */
|
|
||||||
|
|
||||||
int chan; /* Radio channel of origin. */
|
|
||||||
|
|
||||||
// I'm not worried about amount of memory used but this might be a
|
|
||||||
// little clearer if a union was used for the different event types.
|
|
||||||
|
|
||||||
// Used for received frame.
|
|
||||||
|
|
||||||
int subchan; /* Winning "subchannel" when using multiple */
|
|
||||||
/* decoders on one channel. */
|
|
||||||
/* Special case, -1 means DTMF decoder. */
|
|
||||||
/* Maybe we should have a different type in this case? */
|
|
||||||
|
|
||||||
int slice; /* Winning slicer. */
|
|
||||||
|
|
||||||
packet_t pp; /* Pointer to frame structure. */
|
|
||||||
|
|
||||||
alevel_t alevel; /* Audio level. */
|
|
||||||
|
|
||||||
int is_fx25; /* Was it from FX.25? */
|
|
||||||
|
|
||||||
retry_t retries; /* Effort expended to get a valid CRC. */
|
|
||||||
/* Bits changed for regular AX.25. */
|
|
||||||
/* Number of bytes fixed for FX.25. */
|
|
||||||
|
|
||||||
char spectrum[MAX_SUBCHANS*MAX_SLICERS+1]; /* "Spectrum" display for multi-decoders. */
|
|
||||||
|
|
||||||
// Used by requests from a client application, connect, etc.
|
|
||||||
|
|
||||||
char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN];
|
|
||||||
|
|
||||||
int num_addr; /* Range 2 .. 10. */
|
|
||||||
|
|
||||||
int client;
|
|
||||||
|
|
||||||
|
|
||||||
// Used only by client request to transmit connected data.
|
|
||||||
|
|
||||||
cdata_t *txdata;
|
|
||||||
|
|
||||||
// Used for channel activity change.
|
|
||||||
// It is useful to know when the channel is busy either for carrier detect
|
|
||||||
// or when we are transmitting.
|
|
||||||
|
|
||||||
int activity; /* OCTYPE_PTT for my transmission start/end. */
|
|
||||||
/* OCTYPE_DCD if we hear someone else. */
|
|
||||||
|
|
||||||
int status; /* 1 for active or 0 for quiet. */
|
|
||||||
|
|
||||||
} dlq_item_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void dlq_init (void);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void dlq_rec_frame (int chan, int subchan, int slice, packet_t pp, alevel_t alevel, int is_fx25, retry_t retries, char *spectrum);
|
|
||||||
|
|
||||||
void dlq_connect_request (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, int chan, int client, int pid);
|
|
||||||
|
|
||||||
void dlq_disconnect_request (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, int chan, int client);
|
|
||||||
|
|
||||||
void dlq_outstanding_frames_request (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, int chan, int client);
|
|
||||||
|
|
||||||
void dlq_xmit_data_request (char addrs[AX25_MAX_ADDRS][AX25_MAX_ADDR_LEN], int num_addr, int chan, int client, int pid, char *xdata_ptr, int xdata_len);
|
|
||||||
|
|
||||||
void dlq_register_callsign (char addr[AX25_MAX_ADDR_LEN], int chan, int client);
|
|
||||||
|
|
||||||
void dlq_unregister_callsign (char addr[AX25_MAX_ADDR_LEN], int chan, int client);
|
|
||||||
|
|
||||||
void dlq_channel_busy (int chan, int activity, int status);
|
|
||||||
|
|
||||||
void dlq_seize_confirm (int chan);
|
|
||||||
|
|
||||||
void dlq_client_cleanup (int client);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int dlq_wait_while_empty (double timeout_val);
|
|
||||||
|
|
||||||
struct dlq_item_s *dlq_remove (void);
|
|
||||||
|
|
||||||
void dlq_delete (struct dlq_item_s *pitem);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cdata_t *cdata_new (int pid, char *data, int len);
|
|
||||||
|
|
||||||
void cdata_delete (cdata_t *txdata);
|
|
||||||
|
|
||||||
void cdata_check_leak (void);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* end dlq.h */
|
|
|
@ -1,7 +0,0 @@
|
||||||
|
|
||||||
#if (USE_AVAHI_CLIENT|USE_MACOS_DNSSD)
|
|
||||||
|
|
||||||
char *dns_sd_default_service_name(void);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
10
dns_sd_dw.h
10
dns_sd_dw.h
|
@ -1,10 +0,0 @@
|
||||||
|
|
||||||
#if (USE_AVAHI_CLIENT|USE_MACOS_DNSSD)
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#define DNS_SD_SERVICE "_kiss-tnc._tcp"
|
|
||||||
|
|
||||||
void dns_sd_announce (struct misc_config_s *mc);
|
|
||||||
|
|
||||||
#endif // USE_AVAHI_CLIENT
|
|
18
dtime_now.h
18
dtime_now.h
|
@ -1,18 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
extern double dtime_realtime (void);
|
|
||||||
|
|
||||||
extern double dtime_monotonic (void);
|
|
||||||
|
|
||||||
|
|
||||||
void timestamp_now (char *result, int result_size, int show_ms);
|
|
||||||
|
|
||||||
void timestamp_user_format (char *result, int result_size, char *user_format);
|
|
||||||
|
|
||||||
void timestamp_filename (char *result, int result_size);
|
|
||||||
|
|
||||||
|
|
||||||
// FIXME: remove temp workaround.
|
|
||||||
// Needs many scattered updates.
|
|
||||||
|
|
||||||
#define dtime_now dtime_realtime
|
|
14
dtmf.h
14
dtmf.h
|
@ -1,14 +0,0 @@
|
||||||
/* dtmf.h */
|
|
||||||
|
|
||||||
|
|
||||||
#include "audio.h"
|
|
||||||
|
|
||||||
void dtmf_init (struct audio_s *p_audio_config, int amp);
|
|
||||||
|
|
||||||
char dtmf_sample (int c, float input);
|
|
||||||
|
|
||||||
int dtmf_send (int chan, char *str, int speed, int txdelay, int txtail);
|
|
||||||
|
|
||||||
|
|
||||||
/* end dtmf.h */
|
|
||||||
|
|
1
dw9600.c
1
dw9600.c
|
@ -25,6 +25,7 @@ typedef struct TStringList_T
|
||||||
|
|
||||||
extern int fx25_mode[4];
|
extern int fx25_mode[4];
|
||||||
extern int il2p_mode[4];
|
extern int il2p_mode[4];
|
||||||
|
extern int il2p_crc[4];
|
||||||
extern short rx_baudrate[5];
|
extern short rx_baudrate[5];
|
||||||
|
|
||||||
#define FX25_MODE_NONE 0
|
#define FX25_MODE_NONE 0
|
||||||
|
|
61
dwgps.h
61
dwgps.h
|
@ -1,61 +0,0 @@
|
||||||
|
|
||||||
/* dwgps.h */
|
|
||||||
|
|
||||||
#ifndef DWGPS_H
|
|
||||||
#define DWGPS_H 1
|
|
||||||
|
|
||||||
|
|
||||||
#include <time.h>
|
|
||||||
#include "config.h" /* for struct misc_config_s */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Values for fix, equivalent to values from libgps.
|
|
||||||
* -2 = not initialized.
|
|
||||||
* -1 = error communicating with GPS receiver.
|
|
||||||
* 0 = nothing heard yet.
|
|
||||||
* 1 = had signal but lost it.
|
|
||||||
* 2 = 2D.
|
|
||||||
* 3 = 3D.
|
|
||||||
*
|
|
||||||
* Undefined float & double values are set to G_UNKNOWN.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
enum dwfix_e { DWFIX_NOT_INIT= -2, DWFIX_ERROR= -1, DWFIX_NOT_SEEN=0, DWFIX_NO_FIX=1, DWFIX_2D=2, DWFIX_3D=3 };
|
|
||||||
|
|
||||||
typedef enum dwfix_e dwfix_t;
|
|
||||||
|
|
||||||
typedef struct dwgps_info_s {
|
|
||||||
time_t timestamp; /* When last updated. System time. */
|
|
||||||
dwfix_t fix; /* Quality of position fix. */
|
|
||||||
double dlat; /* Latitude. Valid if fix >= 2. */
|
|
||||||
double dlon; /* Longitude. Valid if fix >= 2. */
|
|
||||||
float speed_knots; /* libgps uses meters/sec but we use GPS usual knots. */
|
|
||||||
float track; /* What is difference between track and course? */
|
|
||||||
float altitude; /* meters above mean sea level. Valid if fix == 3. */
|
|
||||||
} dwgps_info_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void dwgps_init (struct misc_config_s *pconfig, int debug);
|
|
||||||
|
|
||||||
void dwgps_clear (dwgps_info_t *gpsinfo);
|
|
||||||
|
|
||||||
dwfix_t dwgps_read (dwgps_info_t *gpsinfo);
|
|
||||||
|
|
||||||
void dwgps_print (char *msg, dwgps_info_t *gpsinfo);
|
|
||||||
|
|
||||||
void dwgps_term (void);
|
|
||||||
|
|
||||||
void dwgps_set_data (dwgps_info_t *gpsinfo);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* DWGPS_H 1 */
|
|
||||||
|
|
||||||
/* end dwgps.h */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
22
dwgpsd.h
22
dwgpsd.h
|
@ -1,22 +0,0 @@
|
||||||
|
|
||||||
/* dwgpsd.h - For communicating with daemon */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef DWGPSD_H
|
|
||||||
#define DWGPSD_H 1
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
|
|
||||||
int dwgpsd_init (struct misc_config_s *pconfig, int debug);
|
|
||||||
|
|
||||||
void dwgpsd_term (void);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* end dwgpsd.h */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
32
dwgpsnmea.h
32
dwgpsnmea.h
|
@ -1,32 +0,0 @@
|
||||||
|
|
||||||
/* dwgpsnmea.h - For reading NMEA sentences over serial port */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef DWGPSNMEA_H
|
|
||||||
#define DWGPSNMEA_H 1
|
|
||||||
|
|
||||||
#include "dwgps.h" /* for dwfix_t */
|
|
||||||
#include "config.h"
|
|
||||||
#include "serial_port.h" /* for MYFDTYPE */
|
|
||||||
|
|
||||||
|
|
||||||
int dwgpsnmea_init (struct misc_config_s *pconfig, int debug);
|
|
||||||
|
|
||||||
MYFDTYPE dwgpsnmea_get_fd(char *wp_port_name, int speed);
|
|
||||||
|
|
||||||
void dwgpsnmea_term (void);
|
|
||||||
|
|
||||||
|
|
||||||
dwfix_t dwgpsnmea_gprmc (char *sentence, int quiet, double *odlat, double *odlon, float *oknots, float *ocourse);
|
|
||||||
|
|
||||||
dwfix_t dwgpsnmea_gpgga (char *sentence, int quiet, double *odlat, double *odlon, float *oalt, int *onsat);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* end dwgpsnmea.h */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
21
dwsock.h
21
dwsock.h
|
@ -1,21 +0,0 @@
|
||||||
|
|
||||||
/* dwsock.h - Socket helper functions. */
|
|
||||||
|
|
||||||
#ifndef DWSOCK_H
|
|
||||||
#define DWSOCK_H 1
|
|
||||||
|
|
||||||
#define DWSOCK_IPADDR_LEN 48 // Size of string to hold IPv4 or IPv6 address.
|
|
||||||
// I think 40 would be adequate but we'll make
|
|
||||||
// it a little larger just to be safe.
|
|
||||||
// Use INET6_ADDRSTRLEN (from netinet/in.h) instead?
|
|
||||||
|
|
||||||
int dwsock_init (void);
|
|
||||||
|
|
||||||
int dwsock_connect (char *hostname, char *port, char *description, int allow_ipv6, int debug, char ipaddr_str[DWSOCK_IPADDR_LEN]);
|
|
||||||
/* ipaddr_str needs to be at least SOCK_IPADDR_LEN bytes */
|
|
||||||
|
|
||||||
char *dwsock_ia_to_text (int Family, void * pAddr, char * pStringBuf, size_t StringBufSize);
|
|
||||||
|
|
||||||
void dwsock_close (int fd);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,17 +0,0 @@
|
||||||
|
|
||||||
int encode_position (int messaging, int compressed, double lat, double lon, int ambiguity, int alt_ft,
|
|
||||||
char symtab, char symbol,
|
|
||||||
int power, int height, int gain, char *dir,
|
|
||||||
int course, int speed_knots,
|
|
||||||
float freq, float tone, float offset,
|
|
||||||
char *comment,
|
|
||||||
char *presult, size_t result_size);
|
|
||||||
|
|
||||||
int encode_object (char *name, int compressed, time_t thyme, double lat, double lon, int ambiguity,
|
|
||||||
char symtab, char symbol,
|
|
||||||
int power, int height, int gain, char *dir,
|
|
||||||
int course, int speed_knots,
|
|
||||||
float freq, float tone, float offset, char *comment,
|
|
||||||
char *presult, size_t result_size);
|
|
||||||
|
|
||||||
int encode_message (char *addressee, char *text, char *id, char *presult, size_t result_size);
|
|
11
fcs_calc.h
11
fcs_calc.h
|
@ -1,11 +0,0 @@
|
||||||
|
|
||||||
/* fcs_calc.h */
|
|
||||||
|
|
||||||
|
|
||||||
unsigned short fcs_calc (unsigned char *data, int len);
|
|
||||||
|
|
||||||
unsigned short crc16 (unsigned char *data, int len, unsigned short seed);
|
|
||||||
|
|
||||||
/* end fcs_calc.h */
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
/* 1200 bits/sec with Audio sample rate = 11025 */
|
|
||||||
/* Mark freq = 1200, Space freq = 2200 */
|
|
||||||
|
|
||||||
static const signed short m_sin_table[9] = { 0 , 7347 , 11257 , 9899 , 3909 , -3909 , -9899 , -11257 , -7347 };
|
|
||||||
static const signed short m_cos_table[9] = { 11431 , 8756 , 1984 , -5715 , -10741 , -10741 , -5715 , 1984 , 8756 };
|
|
||||||
static const signed short s_sin_table[9] = { 0 , 10950 , 6281 , -7347 , -10496 , 1327 , 11257 , 5130 , -8314 };
|
|
||||||
static const signed short s_cos_table[9] = { 11431 , 3278 , -9550 , -8756 , 4527 , 11353 , 1984 , -10215 , -7844 };
|
|
|
@ -1,15 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
#ifndef FSK_GEN_FILTER_H
|
|
||||||
#define FSK_GEN_FILTER_H 1
|
|
||||||
|
|
||||||
#include "audio.h"
|
|
||||||
#include "fsk_demod_state.h"
|
|
||||||
|
|
||||||
void fsk_gen_filter (int samples_per_sec,
|
|
||||||
int baud,
|
|
||||||
int mark_freq, int space_freq,
|
|
||||||
char profile,
|
|
||||||
struct demodulator_state_s *D);
|
|
||||||
|
|
||||||
#endif
|
|
17
gen_tone.h
17
gen_tone.h
|
@ -1,17 +0,0 @@
|
||||||
/*
|
|
||||||
* gen_tone.h
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
int gen_tone_init (struct audio_s *pp, int amp, int gen_packets);
|
|
||||||
|
|
||||||
|
|
||||||
//int gen_tone_open (int nchan, int sample_rate, int bit_rate, int f1, int f2, int amp, char *fname);
|
|
||||||
|
|
||||||
//int gen_tone_open_fd (int nchan, int sample_rate, int bit_rate, int f1, int f2, int amp, int fd) ;
|
|
||||||
|
|
||||||
//int gen_tone_close (void);
|
|
||||||
|
|
||||||
void tone_gen_put_bit (int chan, int dat);
|
|
||||||
|
|
||||||
void gen_tone_put_sample (int chan, int a, int sam);
|
|
501
grm_sym.h
501
grm_sym.h
|
@ -1,501 +0,0 @@
|
||||||
|
|
||||||
/*
|
|
||||||
* grm_sym.h
|
|
||||||
*
|
|
||||||
* Symbol codes for use in $PGRMWPL sentence.
|
|
||||||
*
|
|
||||||
* Copied from
|
|
||||||
* Garmin Device Interface Specification
|
|
||||||
* May 19, 2006
|
|
||||||
* Drawing Number: 001-00063-00 Rev. C
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
typedef unsigned short symbol_type_t;
|
|
||||||
|
|
||||||
enum symbol_type_e
|
|
||||||
{
|
|
||||||
/*---------------------------------------------------------------
|
|
||||||
Marine symbols
|
|
||||||
---------------------------------------------------------------*/
|
|
||||||
sym_anchor = 0, /* white anchor symbol */
|
|
||||||
sym_bell = 1, /* white bell symbol */
|
|
||||||
sym_diamond_grn = 2, /* green diamond symbol */
|
|
||||||
sym_diamond_red = 3, /* red diamond symbol */
|
|
||||||
sym_dive1 = 4, /* diver down flag 1 */
|
|
||||||
sym_dive2 = 5, /* diver down flag 2 */
|
|
||||||
sym_dollar = 6, /* white dollar symbol */
|
|
||||||
sym_fish = 7, /* white fish symbol */
|
|
||||||
sym_fuel = 8, /* white fuel symbol */
|
|
||||||
sym_horn = 9, /* white horn symbol */
|
|
||||||
sym_house = 10, /* white house symbol */
|
|
||||||
sym_knife = 11, /* white knife & fork symbol */
|
|
||||||
sym_light = 12, /* white light symbol */
|
|
||||||
sym_mug = 13, /* white mug symbol */
|
|
||||||
sym_skull = 14, /* white skull and crossbones symbol*/
|
|
||||||
sym_square_grn = 15, /* green square symbol */
|
|
||||||
sym_square_red = 16, /* red square symbol */
|
|
||||||
sym_wbuoy = 17, /* white buoy waypoint symbol */
|
|
||||||
sym_wpt_dot = 18, /* waypoint dot */
|
|
||||||
sym_wreck = 19, /* white wreck symbol */
|
|
||||||
sym_null = 20, /* null symbol (transparent) */
|
|
||||||
sym_mob = 21, /* man overboard symbol */
|
|
||||||
sym_buoy_ambr = 22, /* amber map buoy symbol */
|
|
||||||
sym_buoy_blck = 23, /* black map buoy symbol */
|
|
||||||
sym_buoy_blue = 24, /* blue map buoy symbol */
|
|
||||||
sym_buoy_grn = 25, /* green map buoy symbol */
|
|
||||||
sym_buoy_grn_red = 26, /* green/red map buoy symbol */
|
|
||||||
sym_buoy_grn_wht = 27, /* green/white map buoy symbol */
|
|
||||||
sym_buoy_orng = 28, /* orange map buoy symbol */
|
|
||||||
sym_buoy_red = 29, /* red map buoy symbol */
|
|
||||||
sym_buoy_red_grn = 30, /* red/green map buoy symbol */
|
|
||||||
sym_buoy_red_wht = 31, /* red/white map buoy symbol */
|
|
||||||
sym_buoy_violet = 32, /* violet map buoy symbol */
|
|
||||||
sym_buoy_wht = 33, /* white map buoy symbol */
|
|
||||||
sym_buoy_wht_grn = 34, /* white/green map buoy symbol */
|
|
||||||
sym_buoy_wht_red = 35, /* white/red map buoy symbol */
|
|
||||||
sym_dot = 36, /* white dot symbol */
|
|
||||||
sym_rbcn = 37, /* radio beacon symbol */
|
|
||||||
sym_boat_ramp = 150, /* boat ramp symbol */
|
|
||||||
sym_camp = 151, /* campground symbol */
|
|
||||||
sym_restrooms = 152, /* restrooms symbol */
|
|
||||||
sym_showers = 153, /* shower symbol */
|
|
||||||
sym_drinking_wtr = 154, /* drinking water symbol */
|
|
||||||
sym_phone = 155, /* telephone symbol */
|
|
||||||
sym_1st_aid = 156, /* first aid symbol */
|
|
||||||
sym_info = 157, /* information symbol */
|
|
||||||
sym_parking = 158, /* parking symbol */
|
|
||||||
sym_park = 159, /* park symbol */
|
|
||||||
sym_picnic = 160, /* picnic symbol */
|
|
||||||
sym_scenic = 161, /* scenic area symbol */
|
|
||||||
sym_skiing = 162, /* skiing symbol */
|
|
||||||
sym_swimming = 163, /* swimming symbol */
|
|
||||||
sym_dam = 164, /* dam symbol */
|
|
||||||
sym_controlled = 165, /* controlled area symbol */
|
|
||||||
sym_danger = 166, /* danger symbol */
|
|
||||||
sym_restricted = 167, /* restricted area symbol */
|
|
||||||
sym_null_2 = 168, /* null symbol */
|
|
||||||
sym_ball = 169, /* ball symbol */
|
|
||||||
sym_car = 170, /* car symbol */
|
|
||||||
sym_deer = 171, /* deer symbol */
|
|
||||||
sym_shpng_cart = 172, /* shopping cart symbol */
|
|
||||||
sym_lodging = 173, /* lodging symbol */
|
|
||||||
sym_mine = 174, /* mine symbol */
|
|
||||||
sym_trail_head = 175, /* trail head symbol */
|
|
||||||
sym_truck_stop = 176, /* truck stop symbol */
|
|
||||||
sym_user_exit = 177, /* user exit symbol */
|
|
||||||
sym_flag = 178, /* flag symbol */
|
|
||||||
sym_circle_x = 179, /* circle with x in the center */
|
|
||||||
sym_open_24hr = 180, /* open 24 hours symbol */
|
|
||||||
sym_fhs_facility = 181, /* U Fishing Hot Spots(tm) Facility */
|
|
||||||
sym_bot_cond = 182, /* Bottom Conditions */
|
|
||||||
sym_tide_pred_stn = 183, /* Tide/Current Prediction Station */
|
|
||||||
sym_anchor_prohib = 184, /* U anchor prohibited symbol */
|
|
||||||
sym_beacon = 185, /* U beacon symbol */
|
|
||||||
sym_coast_guard = 186, /* U coast guard symbol */
|
|
||||||
sym_reef = 187, /* U reef symbol */
|
|
||||||
sym_weedbed = 188, /* U weedbed symbol */
|
|
||||||
sym_dropoff = 189, /* U dropoff symbol */
|
|
||||||
sym_dock = 190, /* U dock symbol */
|
|
||||||
sym_marina = 191, /* U marina symbol */
|
|
||||||
sym_bait_tackle = 192, /* U bait and tackle symbol */
|
|
||||||
sym_stump = 193, /* U stump symbol */
|
|
||||||
/*---------------------------------------------------------------
|
|
||||||
User customizable symbols
|
|
||||||
The values from sym_begin_custom to sym_end_custom inclusive are
|
|
||||||
reserved for the identification of user customizable symbols.
|
|
||||||
---------------------------------------------------------------*/
|
|
||||||
sym_begin_custom = 7680, /* first user customizable symbol */
|
|
||||||
sym_end_custom = 8191, /* last user customizable symbol */
|
|
||||||
/*---------------------------------------------------------------
|
|
||||||
Land symbols
|
|
||||||
---------------------------------------------------------------*/
|
|
||||||
sym_is_hwy = 8192, /* interstate hwy symbol */
|
|
||||||
sym_us_hwy = 8193, /* us hwy symbol */
|
|
||||||
sym_st_hwy = 8194, /* state hwy symbol */
|
|
||||||
sym_mi_mrkr = 8195, /* mile marker symbol */
|
|
||||||
sym_trcbck = 8196, /* TracBack (feet) symbol */
|
|
||||||
sym_golf = 8197, /* golf symbol */
|
|
||||||
sym_sml_cty = 8198, /* small city symbol */
|
|
||||||
sym_med_cty = 8199, /* medium city symbol */
|
|
||||||
sym_lrg_cty = 8200, /* large city symbol */
|
|
||||||
sym_freeway = 8201, /* intl freeway hwy symbol */
|
|
||||||
sym_ntl_hwy = 8202, /* intl national hwy symbol */
|
|
||||||
sym_cap_cty = 8203, /* capitol city symbol (star) */
|
|
||||||
sym_amuse_pk = 8204, /* amusement park symbol */
|
|
||||||
sym_bowling = 8205, /* bowling symbol */
|
|
||||||
sym_car_rental = 8206, /* car rental symbol */
|
|
||||||
sym_car_repair = 8207, /* car repair symbol */
|
|
||||||
sym_fastfood = 8208, /* fast food symbol */
|
|
||||||
sym_fitness = 8209, /* fitness symbol */
|
|
||||||
sym_movie = 8210, /* movie symbol */
|
|
||||||
sym_museum = 8211, /* museum symbol */
|
|
||||||
sym_pharmacy = 8212, /* pharmacy symbol */
|
|
||||||
sym_pizza = 8213, /* pizza symbol */
|
|
||||||
sym_post_ofc = 8214, /* post office symbol */
|
|
||||||
sym_rv_park = 8215, /* RV park symbol */
|
|
||||||
sym_school = 8216, /* school symbol */
|
|
||||||
sym_stadium = 8217, /* stadium symbol */
|
|
||||||
sym_store = 8218, /* dept. store symbol */
|
|
||||||
sym_zoo = 8219, /* zoo symbol */
|
|
||||||
sym_gas_plus = 8220, /* convenience store symbol */
|
|
||||||
sym_faces = 8221, /* live theater symbol */
|
|
||||||
sym_ramp_int = 8222, /* ramp intersection symbol */
|
|
||||||
sym_st_int = 8223, /* street intersection symbol */
|
|
||||||
sym_weigh_sttn = 8226, /* inspection/weigh station symbol */
|
|
||||||
sym_toll_booth = 8227, /* toll booth symbol */
|
|
||||||
sym_elev_pt = 8228, /* elevation point symbol */
|
|
||||||
sym_ex_no_srvc = 8229, /* exit without services symbol */
|
|
||||||
sym_geo_place_mm = 8230, /* Geographic place name, man-made */
|
|
||||||
sym_geo_place_wtr = 8231, /* Geographic place name, water */
|
|
||||||
sym_geo_place_lnd = 8232, /* Geographic place name, land */
|
|
||||||
sym_bridge = 8233, /* bridge symbol */
|
|
||||||
sym_building = 8234, /* building symbol */
|
|
||||||
sym_cemetery = 8235, /* cemetery symbol */
|
|
||||||
sym_church = 8236, /* church symbol */
|
|
||||||
sym_civil = 8237, /* civil location symbol */
|
|
||||||
sym_crossing = 8238, /* crossing symbol */
|
|
||||||
sym_hist_town = 8239, /* historical town symbol */
|
|
||||||
sym_levee = 8240, /* levee symbol */
|
|
||||||
sym_military = 8241, /* military location symbol */
|
|
||||||
sym_oil_field = 8242, /* oil field symbol */
|
|
||||||
sym_tunnel = 8243, /* tunnel symbol */
|
|
||||||
sym_beach = 8244, /* beach symbol */
|
|
||||||
sym_forest = 8245, /* forest symbol */
|
|
||||||
sym_summit = 8246, /* summit symbol */
|
|
||||||
sym_lrg_ramp_int = 8247, /* large ramp intersection symbol */
|
|
||||||
sym_lrg_ex_no_srvc = 8248, /* large exit without services smbl */
|
|
||||||
sym_badge = 8249, /* police/official badge symbol */
|
|
||||||
sym_cards = 8250, /* gambling/casino symbol */
|
|
||||||
sym_snowski = 8251, /* snow skiing symbol */
|
|
||||||
sym_iceskate = 8252, /* ice skating symbol */
|
|
||||||
sym_wrecker = 8253, /* tow truck (wrecker) symbol */
|
|
||||||
sym_border = 8254, /* border crossing (port of entry) */
|
|
||||||
sym_geocache = 8255, /* geocache location */
|
|
||||||
sym_geocache_fnd = 8256, /* found geocache */
|
|
||||||
sym_cntct_smiley = 8257, /* Rino contact symbol, "smiley" */
|
|
||||||
sym_cntct_ball_cap = 8258, /* Rino contact symbol, "ball cap" */
|
|
||||||
sym_cntct_big_ears = 8259, /* Rino contact symbol, "big ear" */
|
|
||||||
sym_cntct_spike = 8260, /* Rino contact symbol, "spike" */
|
|
||||||
sym_cntct_goatee = 8261, /* Rino contact symbol, "goatee" */
|
|
||||||
sym_cntct_afro = 8262, /* Rino contact symbol, "afro" */
|
|
||||||
sym_cntct_dreads = 8263, /* Rino contact symbol, "dreads" */
|
|
||||||
sym_cntct_female1 = 8264, /* Rino contact symbol, "female 1" */
|
|
||||||
sym_cntct_female2 = 8265, /* Rino contact symbol, "female 2" */
|
|
||||||
sym_cntct_female3 = 8266, /* Rino contact symbol, "female 3" */
|
|
||||||
sym_cntct_ranger = 8267, /* Rino contact symbol, "ranger" */
|
|
||||||
sym_cntct_kung_fu = 8268, /* Rino contact symbol, "kung fu" */
|
|
||||||
sym_cntct_sumo = 8269, /* Rino contact symbol, "sumo" */
|
|
||||||
sym_cntct_pirate = 8270, /* Rino contact symbol, "pirate" */
|
|
||||||
sym_cntct_biker = 8271, /* Rino contact symbol, "biker" */
|
|
||||||
sym_cntct_alien = 8272, /* Rino contact symbol, "alien" */
|
|
||||||
sym_cntct_bug = 8273, /* Rino contact symbol, "bug" */
|
|
||||||
sym_cntct_cat = 8274, /* Rino contact symbol, "cat" */
|
|
||||||
sym_cntct_dog = 8275, /* Rino contact symbol, "dog" */
|
|
||||||
sym_cntct_pig = 8276, /* Rino contact symbol, "pig" */
|
|
||||||
sym_hydrant = 8282, /* water hydrant symbol */
|
|
||||||
sym_flag_blue = 8284, /* blue flag symbol */
|
|
||||||
sym_flag_green = 8285, /* green flag symbol */
|
|
||||||
sym_flag_red = 8286, /* red flag symbol */
|
|
||||||
sym_pin_blue = 8287, /* blue pin symbol */
|
|
||||||
sym_pin_green = 8288, /* green pin symbol */
|
|
||||||
sym_pin_red = 8289, /* red pin symbol */
|
|
||||||
sym_block_blue = 8290, /* blue block symbol */
|
|
||||||
sym_block_green = 8291, /* green block symbol */
|
|
||||||
sym_block_red = 8292, /* red block symbol */
|
|
||||||
sym_bike_trail = 8293, /* bike trail symbol */
|
|
||||||
sym_circle_red = 8294, /* red circle symbol */
|
|
||||||
sym_circle_green = 8295, /* green circle symbol */
|
|
||||||
sym_circle_blue = 8296, /* blue circle symbol */
|
|
||||||
sym_diamond_blue = 8299, /* blue diamond symbol */
|
|
||||||
sym_oval_red = 8300, /* red oval symbol */
|
|
||||||
sym_oval_green = 8301, /* green oval symbol */
|
|
||||||
sym_oval_blue = 8302, /* blue oval symbol */
|
|
||||||
sym_rect_red = 8303, /* red rectangle symbol */
|
|
||||||
sym_rect_green = 8304, /* green rectangle symbol */
|
|
||||||
sym_rect_blue = 8305, /* blue rectangle symbol */
|
|
||||||
sym_square_blue = 8308, /* blue square symbol */
|
|
||||||
sym_letter_a_red = 8309, /* red letter 'A' symbol */
|
|
||||||
sym_letter_b_red = 8310, /* red letter 'B' symbol */
|
|
||||||
sym_letter_c_red = 8311, /* red letter 'C' symbol */
|
|
||||||
sym_letter_d_red = 8312, /* red letter 'D' symbol */
|
|
||||||
sym_letter_a_green = 8313, /* green letter 'A' symbol */
|
|
||||||
sym_letter_c_green = 8314, /* green letter 'C' symbol */
|
|
||||||
sym_letter_b_green = 8315, /* green letter 'B' symbol */
|
|
||||||
sym_letter_d_green = 8316, /* green letter 'D' symbol */
|
|
||||||
sym_letter_a_blue = 8317, /* blue letter 'A' symbol */
|
|
||||||
sym_letter_b_blue = 8318, /* blue letter 'B' symbol */
|
|
||||||
sym_letter_c_blue = 8319, /* blue letter 'C' symbol */
|
|
||||||
sym_letter_d_blue = 8320, /* blue letter 'D' symbol */
|
|
||||||
sym_number_0_red = 8321, /* red number '0' symbol */
|
|
||||||
sym_number_1_red = 8322, /* red number '1' symbol */
|
|
||||||
sym_number_2_red = 8323, /* red number '2' symbol */
|
|
||||||
sym_number_3_red = 8324, /* red number '3' symbol */
|
|
||||||
sym_number_4_red = 8325, /* red number '4' symbol */
|
|
||||||
sym_number_5_red = 8326, /* red number '5' symbol */
|
|
||||||
sym_number_6_red = 8327, /* red number '6' symbol */
|
|
||||||
sym_number_7_red = 8328, /* red number '7' symbol */
|
|
||||||
sym_number_8_red = 8329, /* red number '8' symbol */
|
|
||||||
sym_number_9_red = 8330, /* red number '9' symbol */
|
|
||||||
sym_number_0_green = 8331, /* green number '0' symbol */
|
|
||||||
sym_number_1_green = 8332, /* green number '1' symbol */
|
|
||||||
sym_number_2_green = 8333, /* green number '2' symbol */
|
|
||||||
sym_number_3_green = 8334, /* green number '3' symbol */
|
|
||||||
sym_number_4_green = 8335, /* green number '4' symbol */
|
|
||||||
sym_number_5_green = 8336, /* green number '5' symbol */
|
|
||||||
sym_number_6_green = 8337, /* green number '6' symbol */
|
|
||||||
sym_number_7_green = 8338, /* green number '7' symbol */
|
|
||||||
sym_number_8_green = 8339, /* green number '8' symbol */
|
|
||||||
sym_number_9_green = 8340, /* green number '9' symbol */
|
|
||||||
sym_number_0_blue = 8341, /* blue number '0' symbol */
|
|
||||||
sym_number_1_blue = 8342, /* blue number '1' symbol */
|
|
||||||
sym_number_2_blue = 8343, /* blue number '2' symbol */
|
|
||||||
sym_number_3_blue = 8344, /* blue number '3' symbol */
|
|
||||||
sym_number_4_blue = 8345, /* blue number '4' symbol */
|
|
||||||
sym_number_5_blue = 8346, /* blue number '5' symbol */
|
|
||||||
sym_number_6_blue = 8347, /* blue number '6' symbol */
|
|
||||||
sym_number_7_blue = 8348, /* blue number '7' symbol */
|
|
||||||
sym_number_8_blue = 8349, /* blue number '8' symbol */
|
|
||||||
sym_number_9_blue = 8350, /* blue number '9' symbol */
|
|
||||||
sym_triangle_blue = 8351, /* blue triangle symbol */
|
|
||||||
sym_triangle_green = 8352, /* green triangle symbol */
|
|
||||||
sym_triangle_red = 8353, /* red triangle symbol */
|
|
||||||
sym_food_asian = 8359, /* asian food symbol */
|
|
||||||
sym_food_deli = 8360, /* deli symbol */
|
|
||||||
sym_food_italian = 8361, /* italian food symbol */
|
|
||||||
sym_food_seafood = 8362, /* seafood symbol */
|
|
||||||
sym_food_steak = 8363, /* steak symbol */
|
|
||||||
/*---------------------------------------------------------------
|
|
||||||
Aviation symbols
|
|
||||||
---------------------------------------------------------------*/
|
|
||||||
sym_airport = 16384, /* airport symbol */
|
|
||||||
sym_int = 16385, /* intersection symbol */
|
|
||||||
sym_ndb = 16386, /* non-directional beacon symbol */
|
|
||||||
sym_vor = 16387, /* VHF omni-range symbol */
|
|
||||||
sym_heliport = 16388, /* heliport symbol */
|
|
||||||
sym_private = 16389, /* private field symbol */
|
|
||||||
sym_soft_fld = 16390, /* soft field symbol */
|
|
||||||
sym_tall_tower = 16391, /* tall tower symbol */
|
|
||||||
sym_short_tower = 16392, /* short tower symbol */
|
|
||||||
sym_glider = 16393, /* glider symbol */
|
|
||||||
sym_ultralight = 16394, /* ultralight symbol */
|
|
||||||
sym_parachute = 16395, /* parachute symbol */
|
|
||||||
sym_vortac = 16396, /* VOR/TACAN symbol */
|
|
||||||
sym_vordme = 16397, /* VOR-DME symbol */
|
|
||||||
sym_faf = 16398, /* first approach fix */
|
|
||||||
sym_lom = 16399, /* localizer outer marker */
|
|
||||||
sym_map = 16400, /* missed approach point */
|
|
||||||
sym_tacan = 16401, /* TACAN symbol */
|
|
||||||
sym_seaplane = 16402, /* Seaplane Base */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Mapping from APRS symbols to Garmin.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// TODO: NEEDS MORE WORK!!!
|
|
||||||
|
|
||||||
|
|
||||||
#define SYMTAB_SIZE 95
|
|
||||||
|
|
||||||
#define sym_default sym_diamond_grn
|
|
||||||
|
|
||||||
|
|
||||||
static const symbol_type_t grm_primary_symtab[SYMTAB_SIZE] = {
|
|
||||||
|
|
||||||
sym_default, // 00 --no-symbol--
|
|
||||||
sym_cntct_ranger, // ! 01 Police, Sheriff
|
|
||||||
sym_default, // " 02 reserved (was rain)
|
|
||||||
sym_rbcn, // # 03 DIGI (white center)
|
|
||||||
sym_phone, // $ 04 PHONE
|
|
||||||
sym_rbcn, // % 05 DX CLUSTER
|
|
||||||
sym_rbcn, // & 06 HF GATEway
|
|
||||||
sym_glider, // ' 07 Small AIRCRAFT
|
|
||||||
sym_rbcn, // ( 08 Mobile Satellite Station
|
|
||||||
sym_default, // ) 09 Wheelchair (handicapped)
|
|
||||||
sym_car, // * 10 SnowMobile
|
|
||||||
sym_1st_aid, // + 11 Red Cross
|
|
||||||
sym_cntct_ball_cap, // , 12 Boy Scouts
|
|
||||||
sym_house, // - 13 House QTH (VHF)
|
|
||||||
sym_default, // . 14 X
|
|
||||||
sym_default, // / 15 Red Dot
|
|
||||||
sym_default, // 0 16 # circle (obsolete)
|
|
||||||
sym_default, // 1 17 TBD
|
|
||||||
sym_default, // 2 18 TBD
|
|
||||||
sym_default, // 3 19 TBD
|
|
||||||
sym_default, // 4 20 TBD
|
|
||||||
sym_default, // 5 21 TBD
|
|
||||||
sym_default, // 6 22 TBD
|
|
||||||
sym_default, // 7 23 TBD
|
|
||||||
sym_default, // 8 24 TBD
|
|
||||||
sym_default, // 9 25 TBD
|
|
||||||
sym_default, // : 26 FIRE
|
|
||||||
sym_camp, // ; 27 Campground (Portable ops)
|
|
||||||
sym_cntct_biker, // < 28 Motorcycle
|
|
||||||
sym_default, // = 29 RAILROAD ENGINE
|
|
||||||
sym_car, // > 30 CAR
|
|
||||||
sym_default, // ? 31 SERVER for Files
|
|
||||||
sym_default, // @ 32 HC FUTURE predict (dot)
|
|
||||||
sym_1st_aid, // A 33 Aid Station
|
|
||||||
sym_rbcn, // B 34 BBS or PBBS
|
|
||||||
sym_boat_ramp, // C 35 Canoe
|
|
||||||
sym_default, // D 36
|
|
||||||
sym_default, // E 37 EYEBALL (Eye catcher!)
|
|
||||||
sym_default, // F 38 Farm Vehicle (tractor)
|
|
||||||
sym_default, // G 39 Grid Square (6 digit)
|
|
||||||
sym_lodging, // H 40 HOTEL (blue bed symbol)
|
|
||||||
sym_rbcn, // I 41 TcpIp on air network stn
|
|
||||||
sym_default, // J 42
|
|
||||||
sym_school, // K 43 School
|
|
||||||
sym_default, // L 44 PC user
|
|
||||||
sym_default, // M 45 MacAPRS
|
|
||||||
sym_default, // N 46 NTS Station
|
|
||||||
sym_parachute, // O 47 BALLOON
|
|
||||||
sym_cntct_ranger, // P 48 Police
|
|
||||||
sym_default, // Q 49 TBD
|
|
||||||
sym_rv_park, // R 50 REC. VEHICLE
|
|
||||||
sym_glider, // S 51 SHUTTLE
|
|
||||||
sym_default, // T 52 SSTV
|
|
||||||
sym_car, // U 53 BUS
|
|
||||||
sym_cntct_biker, // V 54 ATV
|
|
||||||
sym_default, // W 55 National WX Service Site
|
|
||||||
sym_default, // X 56 HELO
|
|
||||||
sym_default, // Y 57 YACHT (sail)
|
|
||||||
sym_default, // Z 58 WinAPRS
|
|
||||||
sym_cntct_smiley, // [ 59 Human/Person (HT)
|
|
||||||
sym_triangle_green, // \ 60 TRIANGLE(DF station)
|
|
||||||
sym_default, // ] 61 MAIL/PostOffice(was PBBS)
|
|
||||||
sym_glider, // ^ 62 LARGE AIRCRAFT
|
|
||||||
sym_default, // _ 63 WEATHER Station (blue)
|
|
||||||
sym_rbcn, // ` 64 Dish Antenna
|
|
||||||
sym_1st_aid, // a 65 AMBULANCE
|
|
||||||
sym_cntct_biker, // b 66 BIKE
|
|
||||||
sym_default, // c 67 Incident Command Post
|
|
||||||
sym_hydrant, // d 68 Fire dept
|
|
||||||
sym_deer, // e 69 HORSE (equestrian)
|
|
||||||
sym_hydrant, // f 70 FIRE TRUCK
|
|
||||||
sym_glider, // g 71 Glider
|
|
||||||
sym_1st_aid, // h 72 HOSPITAL
|
|
||||||
sym_default, // i 73 IOTA (islands on the air)
|
|
||||||
sym_car, // j 74 JEEP
|
|
||||||
sym_car, // k 75 TRUCK
|
|
||||||
sym_default, // l 76 Laptop
|
|
||||||
sym_rbcn, // m 77 Mic-E Repeater
|
|
||||||
sym_default, // n 78 Node (black bulls-eye)
|
|
||||||
sym_default, // o 79 EOC
|
|
||||||
sym_cntct_dog, // p 80 ROVER (puppy, or dog)
|
|
||||||
sym_default, // q 81 GRID SQ shown above 128 m
|
|
||||||
sym_rbcn, // r 82 Repeater
|
|
||||||
sym_default, // s 83 SHIP (pwr boat)
|
|
||||||
sym_truck_stop, // t 84 TRUCK STOP
|
|
||||||
sym_truck_stop, // u 85 TRUCK (18 wheeler)
|
|
||||||
sym_car, // v 86 VAN
|
|
||||||
sym_drinking_wtr, // w 87 WATER station
|
|
||||||
sym_default, // x 88 xAPRS (Unix)
|
|
||||||
sym_tall_tower, // y 89 YAGI @ QTH
|
|
||||||
sym_default, // z 90 TBD
|
|
||||||
sym_default, // { 91
|
|
||||||
sym_default, // | 92 TNC Stream Switch
|
|
||||||
sym_default, // } 93
|
|
||||||
sym_default }; // ~ 94 TNC Stream Switch
|
|
||||||
|
|
||||||
static const symbol_type_t grm_alternate_symtab[SYMTAB_SIZE] = {
|
|
||||||
|
|
||||||
sym_default, // 00 --no-symbol--
|
|
||||||
sym_default, // ! 01 EMERGENCY (!)
|
|
||||||
sym_default, // " 02 reserved
|
|
||||||
sym_default, // # 03 OVERLAY DIGI (green star)
|
|
||||||
sym_default, // $ 04 Bank or ATM (green box)
|
|
||||||
sym_default, // % 05 Power Plant with overlay
|
|
||||||
sym_rbcn, // & 06 I=Igte IGate R=RX T=1hopTX 2=2hopTX
|
|
||||||
sym_default, // ' 07 Crash (& now Incident sites)
|
|
||||||
sym_default, // ( 08 CLOUDY (other clouds w ovrly)
|
|
||||||
sym_hydrant, // ) 09 Firenet MEO, MODIS Earth Obs.
|
|
||||||
sym_default, // * 10 SNOW (& future ovrly codes)
|
|
||||||
sym_default, // + 11 Church
|
|
||||||
sym_cntct_female1, // , 12 Girl Scouts
|
|
||||||
sym_house, // - 13 House (H=HF) (O = Op Present)
|
|
||||||
sym_default, // . 14 Ambiguous (Big Question mark)
|
|
||||||
sym_default, // / 15 Waypoint Destination
|
|
||||||
sym_default, // 0 16 CIRCLE (E/I/W=IRLP/Echolink/WIRES)
|
|
||||||
sym_default, // 1 17
|
|
||||||
sym_default, // 2 18
|
|
||||||
sym_default, // 3 19
|
|
||||||
sym_default, // 4 20
|
|
||||||
sym_default, // 5 21
|
|
||||||
sym_default, // 6 22
|
|
||||||
sym_default, // 7 23
|
|
||||||
sym_default, // 8 24 802.11 or other network node
|
|
||||||
sym_default, // 9 25 Gas Station (blue pump)
|
|
||||||
sym_default, // : 26 Hail (& future ovrly codes)
|
|
||||||
sym_park, // ; 27 Park/Picnic area
|
|
||||||
sym_default, // < 28 ADVISORY (one WX flag)
|
|
||||||
sym_rbcn, // = 29 APRStt Touchtone (DTMF users)
|
|
||||||
sym_car, // > 30 OVERLAID CAR
|
|
||||||
sym_default, // ? 31 INFO Kiosk (Blue box with ?)
|
|
||||||
sym_default, // @ 32 HURRICANE/Trop-Storm
|
|
||||||
sym_default, // A 33 overlayBOX DTMF & RFID & XO
|
|
||||||
sym_default, // B 34 Blwng Snow (& future codes)
|
|
||||||
sym_coast_guard, // C 35 Coast Guard
|
|
||||||
sym_default, // D 36 Drizzle (proposed APRStt)
|
|
||||||
sym_default, // E 37 Smoke (& other vis codes)
|
|
||||||
sym_default, // F 38 Freezng rain (&future codes)
|
|
||||||
sym_default, // G 39 Snow Shwr (& future ovrlys)
|
|
||||||
sym_default, // H 40 Haze (& Overlay Hazards)
|
|
||||||
sym_default, // I 41 Rain Shower
|
|
||||||
sym_default, // J 42 Lightning (& future ovrlys)
|
|
||||||
sym_rbcn, // K 43 Kenwood HT (W)
|
|
||||||
sym_light, // L 44 Lighthouse
|
|
||||||
sym_default, // M 45 MARS (A=Army,N=Navy,F=AF)
|
|
||||||
sym_default, // N 46 Navigation Buoy
|
|
||||||
sym_default, // O 47 Rocket
|
|
||||||
sym_default, // P 48 Parking
|
|
||||||
sym_default, // Q 49 QUAKE
|
|
||||||
sym_default, // R 50 Restaurant
|
|
||||||
sym_rbcn, // S 51 Satellite/Pacsat
|
|
||||||
sym_default, // T 52 Thunderstorm
|
|
||||||
sym_default, // U 53 SUNNY
|
|
||||||
sym_default, // V 54 VORTAC Nav Aid
|
|
||||||
sym_default, // W 55 # NWS site (NWS options)
|
|
||||||
sym_pharmacy, // X 56 Pharmacy Rx (Apothicary)
|
|
||||||
sym_rbcn, // Y 57 Radios and devices
|
|
||||||
sym_default, // Z 58
|
|
||||||
sym_default, // [ 59 W.Cloud (& humans w Ovrly)
|
|
||||||
sym_default, // \ 60 New overlayable GPS symbol
|
|
||||||
sym_default, // ] 61
|
|
||||||
sym_glider, // ^ 62 # Aircraft (shows heading)
|
|
||||||
sym_default, // _ 63 # WX site (green digi)
|
|
||||||
sym_default, // ` 64 Rain (all types w ovrly)
|
|
||||||
sym_default, // a 65 ARRL, ARES, WinLINK
|
|
||||||
sym_default, // b 66 Blwng Dst/Snd (& others)
|
|
||||||
sym_default, // c 67 CD triangle RACES/SATERN/etc
|
|
||||||
sym_default, // d 68 DX spot by callsign
|
|
||||||
sym_default, // e 69 Sleet (& future ovrly codes)
|
|
||||||
sym_default, // f 70 Funnel Cloud
|
|
||||||
sym_default, // g 71 Gale Flags
|
|
||||||
sym_default, // h 72 Store. or HAMFST Hh=HAM store
|
|
||||||
sym_default, // i 73 BOX or points of Interest
|
|
||||||
sym_default, // j 74 WorkZone (Steam Shovel)
|
|
||||||
sym_car, // k 75 Special Vehicle SUV,ATV,4x4
|
|
||||||
sym_default, // l 76 Areas (box,circles,etc)
|
|
||||||
sym_default, // m 77 Value Sign (3 digit display)
|
|
||||||
sym_default, // n 78 OVERLAY TRIANGLE
|
|
||||||
sym_default, // o 79 small circle
|
|
||||||
sym_default, // p 80 Prtly Cldy (& future ovrlys)
|
|
||||||
sym_default, // q 81
|
|
||||||
sym_restrooms, // r 82 Restrooms
|
|
||||||
sym_default, // s 83 OVERLAY SHIP/boat (top view)
|
|
||||||
sym_default, // t 84 Tornado
|
|
||||||
sym_car, // u 85 OVERLAID TRUCK
|
|
||||||
sym_car, // v 86 OVERLAID Van
|
|
||||||
sym_default, // w 87 Flooding
|
|
||||||
sym_wreck, // x 88 Wreck or Obstruction ->X<-
|
|
||||||
sym_default, // y 89 Skywarn
|
|
||||||
sym_default, // z 90 OVERLAID Shelter
|
|
||||||
sym_default, // { 91 Fog (& future ovrly codes)
|
|
||||||
sym_default, // | 92 TNC Stream Switch
|
|
||||||
sym_default, // } 93
|
|
||||||
sym_default }; // ~ 94 TNC Stream Switch
|
|
||||||
|
|
17
hdlc_send.h
17
hdlc_send.h
|
@ -1,17 +0,0 @@
|
||||||
|
|
||||||
/* hdlc_send.h */
|
|
||||||
|
|
||||||
// In version 1.7 an extra layer of abstraction was added here.
|
|
||||||
// Rather than calling hdlc_send_frame, we now use another function
|
|
||||||
// which sends AX.25, FX.25, or IL2P depending on
|
|
||||||
|
|
||||||
#include "ax25_pad.h"
|
|
||||||
#include "audio.h"
|
|
||||||
|
|
||||||
int layer2_send_frame (int chan, packet_t pp, int bad_fcs, struct audio_s *audio_config_p);
|
|
||||||
|
|
||||||
int layer2_preamble_postamble (int chan, int flags, int finish, struct audio_s *audio_config_p);
|
|
||||||
|
|
||||||
/* end hdlc_send.h */
|
|
||||||
|
|
||||||
|
|
128
igate.h
128
igate.h
|
@ -1,128 +0,0 @@
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* Name: igate.h
|
|
||||||
*
|
|
||||||
* Purpose: Interface to the Internet Gateway functions.
|
|
||||||
*
|
|
||||||
*-----------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef IGATE_H
|
|
||||||
#define IGATE_H 1
|
|
||||||
|
|
||||||
|
|
||||||
#include "ax25_pad.h"
|
|
||||||
#include "digipeater.h"
|
|
||||||
#include "audio.h"
|
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_IGATE_PORT 14580
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct igate_config_s {
|
|
||||||
|
|
||||||
/*
|
|
||||||
* For logging into the IGate server.
|
|
||||||
*/
|
|
||||||
char t2_server_name[40]; /* Tier 2 IGate server name. */
|
|
||||||
|
|
||||||
int t2_server_port; /* Typically 14580. */
|
|
||||||
|
|
||||||
char t2_login[AX25_MAX_ADDR_LEN];/* e.g. WA9XYZ-15 */
|
|
||||||
/* Note that the ssid could be any two alphanumeric */
|
|
||||||
/* characters not just 1 thru 15. */
|
|
||||||
/* Could be same or different than the radio call(s). */
|
|
||||||
/* Not sure what the consequences would be. */
|
|
||||||
|
|
||||||
char t2_passcode[8]; /* Max. 5 digits. Could be "-1". */
|
|
||||||
|
|
||||||
char *t2_filter; /* Optional filter for IS -> RF direction. */
|
|
||||||
/* This is the "server side" filter. */
|
|
||||||
/* A better name would be subscription or something */
|
|
||||||
/* like that because we can only ask for more. */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* For transmitting.
|
|
||||||
*/
|
|
||||||
int tx_chan; /* Radio channel for transmitting. */
|
|
||||||
/* 0=first, etc. -1 for none. */
|
|
||||||
/* Presently IGate can transmit on only a single channel. */
|
|
||||||
/* A future version might generalize this. */
|
|
||||||
/* Each transmit channel would have its own client side filtering. */
|
|
||||||
|
|
||||||
char tx_via[80]; /* VIA path for transmitting third party packets. */
|
|
||||||
/* Usual text representation. */
|
|
||||||
/* Must start with "," if not empty so it can */
|
|
||||||
/* simply be inserted after the destination address. */
|
|
||||||
|
|
||||||
int max_digi_hops; /* Maximum number of digipeater hops possible for via path. */
|
|
||||||
/* Derived from the SSID when last character of address is a digit. */
|
|
||||||
/* e.g. "WIDE1-1,WIDE5-2" would be 3. */
|
|
||||||
/* This is useful to know so we can determine how many */
|
|
||||||
/* stations we might be able to reach. */
|
|
||||||
|
|
||||||
int tx_limit_1; /* Max. packets to transmit in 1 minute. */
|
|
||||||
|
|
||||||
int tx_limit_5; /* Max. packets to transmit in 5 minutes. */
|
|
||||||
|
|
||||||
int igmsp; /* Number of message sender position reports to allow. */
|
|
||||||
/* Common practice is to default to 1. */
|
|
||||||
/* We allow additional flexibility of 0 to disable feature */
|
|
||||||
/* or a small number to allow more. */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Receiver to IS data options.
|
|
||||||
*/
|
|
||||||
int rx2ig_dedupe_time; /* seconds. 0 to disable. */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Special SATgate mode to delay packets heard directly.
|
|
||||||
*/
|
|
||||||
int satgate_delay; /* seconds. 0 to disable. */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#define IGATE_TX_LIMIT_1_DEFAULT 6
|
|
||||||
#define IGATE_TX_LIMIT_1_MAX 20
|
|
||||||
|
|
||||||
#define IGATE_TX_LIMIT_5_DEFAULT 20
|
|
||||||
#define IGATE_TX_LIMIT_5_MAX 80
|
|
||||||
|
|
||||||
#define IGATE_RX2IG_DEDUPE_TIME 0 /* Issue 85. 0 means disable dupe checking in RF>IS direction. */
|
|
||||||
/* See comments in rx_to_ig_remember & rx_to_ig_allow. */
|
|
||||||
/* Currently there is no configuration setting to change this. */
|
|
||||||
|
|
||||||
#define DEFAULT_SATGATE_DELAY 10
|
|
||||||
#define MIN_SATGATE_DELAY 5
|
|
||||||
#define MAX_SATGATE_DELAY 30
|
|
||||||
|
|
||||||
|
|
||||||
/* Call this once at startup */
|
|
||||||
|
|
||||||
void igate_init (struct audio_s *p_audio_config, struct igate_config_s *p_igate_config, struct digi_config_s *p_digi_config, int debug_level);
|
|
||||||
|
|
||||||
/* Call this with each packet received from the radio. */
|
|
||||||
|
|
||||||
void igate_send_rec_packet (int chan, packet_t recv_pp);
|
|
||||||
|
|
||||||
/* This when digipeater transmits. Set bydigi to 1 . */
|
|
||||||
|
|
||||||
void ig_to_tx_remember (packet_t pp, int chan, int bydigi);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Get statistics for IGATE status beacon. */
|
|
||||||
|
|
||||||
int igate_get_msg_cnt (void);
|
|
||||||
|
|
||||||
int igate_get_pkt_cnt (void);
|
|
||||||
|
|
||||||
int igate_get_upl_cnt (void);
|
|
||||||
|
|
||||||
int igate_get_dnl_cnt (void);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
176
il2p.c
176
il2p.c
|
@ -42,11 +42,44 @@ along with QtSoundModem. If not, see http://www.gnu.org/licenses
|
||||||
|
|
||||||
// IP2P receive code (il2p_rec_bit) is called from the bit receiving code in ax25_demod.c, so includes parallel decoders
|
// IP2P receive code (il2p_rec_bit) is called from the bit receiving code in ax25_demod.c, so includes parallel decoders
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "UZ7HOStuff.h"
|
#include "UZ7HOStuff.h"
|
||||||
|
|
||||||
|
#include <stdint.h> // for uint64_t
|
||||||
|
|
||||||
|
// Oct 2023 Nino has added an optional crc
|
||||||
|
|
||||||
|
// Hamming(7,4) Encoding Table
|
||||||
|
// Enter this table with the 4-bit value to be encoded.
|
||||||
|
// Returns 7-bit encoded value, with high bit zero'd.
|
||||||
|
|
||||||
|
uint8_t Hamming74EncodeTable[16] = { 0x0, 0x71, 0x62, 0x13, 0x54, 0x25, 0x36, 0x47, 0x38, 0x49, 0x5a, 0x2b, 0x6c, 0x1d, 0xe, 0x7f };
|
||||||
|
|
||||||
|
// Hamming(7,4) Decoding Table
|
||||||
|
// Enter this table with 7-bit encoded value, high bit masked.
|
||||||
|
// Returns 4-bit decoded value.
|
||||||
|
|
||||||
|
uint16_t Hamming74DecodeTable[128] = { \
|
||||||
|
0x0, 0x0, 0x0, 0x3, 0x0, 0x5, 0xe, 0x7, \
|
||||||
|
0x0, 0x9, 0xe, 0xb, 0xe, 0xd, 0xe, 0xe, \
|
||||||
|
0x0, 0x3, 0x3, 0x3, 0x4, 0xd, 0x6, 0x3, \
|
||||||
|
0x8, 0xd, 0xa, 0x3, 0xd, 0xd, 0xe, 0xd, \
|
||||||
|
0x0, 0x5, 0x2, 0xb, 0x5, 0x5, 0x6, 0x5, \
|
||||||
|
0x8, 0xb, 0xb, 0xb, 0xc, 0x5, 0xe, 0xb, \
|
||||||
|
0x8, 0x1, 0x6, 0x3, 0x6, 0x5, 0x6, 0x6, \
|
||||||
|
0x8, 0x8, 0x8, 0xb, 0x8, 0xd, 0x6, 0xf, \
|
||||||
|
0x0, 0x9, 0x2, 0x7, 0x4, 0x7, 0x7, 0x7, \
|
||||||
|
0x9, 0x9, 0xa, 0x9, 0xc, 0x9, 0xe, 0x7, \
|
||||||
|
0x4, 0x1, 0xa, 0x3, 0x4, 0x4, 0x4, 0x7, \
|
||||||
|
0xa, 0x9, 0xa, 0xa, 0x4, 0xd, 0xa, 0xf, \
|
||||||
|
0x2, 0x1, 0x2, 0x2, 0xc, 0x5, 0x2, 0x7, \
|
||||||
|
0xc, 0x9, 0x2, 0xb, 0xc, 0xc, 0xc, 0xf, \
|
||||||
|
0x1, 0x1, 0x2, 0x1, 0x4, 0x1, 0x6, 0xf, \
|
||||||
|
0x8, 0x1, 0xa, 0xf, 0xc, 0xf, 0xf, 0xf };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void Debugprintf(const char * format, ...);
|
void Debugprintf(const char * format, ...);
|
||||||
int SMUpdatePhaseConstellation(int chan, float * Phases, float * Mags, int intPSKPhase, int Count);
|
int SMUpdatePhaseConstellation(int chan, float * Phases, float * Mags, int intPSKPhase, int Count);
|
||||||
|
|
||||||
|
@ -109,7 +142,6 @@ int MaxMagIndex = 0;
|
||||||
#ifndef FX25_H
|
#ifndef FX25_H
|
||||||
#define FX25_H
|
#define FX25_H
|
||||||
|
|
||||||
#include <stdint.h> // for uint64_t
|
|
||||||
|
|
||||||
extern unsigned int pskStates[4];
|
extern unsigned int pskStates[4];
|
||||||
|
|
||||||
|
@ -343,6 +375,7 @@ struct packet_s {
|
||||||
unsigned char frame_data[AX25_MAX_PACKET_LEN + 1];
|
unsigned char frame_data[AX25_MAX_PACKET_LEN + 1];
|
||||||
/* Raw frame contents, without the CRC. */
|
/* Raw frame contents, without the CRC. */
|
||||||
|
|
||||||
|
unsigned char crc[4]; // received crc
|
||||||
|
|
||||||
int magic2; /* Will get stomped on if above overflows. */
|
int magic2; /* Will get stomped on if above overflows. */
|
||||||
};
|
};
|
||||||
|
@ -1015,6 +1048,39 @@ void multi_modem_process_rec_packet(int snd_ch, int subchan, int slice, packet_t
|
||||||
|
|
||||||
sprintf(Mode, "IL2P %d", centreFreq);
|
sprintf(Mode, "IL2P %d", centreFreq);
|
||||||
|
|
||||||
|
// check crc if enabled
|
||||||
|
|
||||||
|
if (il2p_crc[snd_ch])
|
||||||
|
{
|
||||||
|
unsigned short CRCMSG;
|
||||||
|
unsigned short CRCCALC;
|
||||||
|
uint8_t crc[4];
|
||||||
|
|
||||||
|
// check crc if enabled
|
||||||
|
|
||||||
|
// The four encoded CRC bytes are arranged :
|
||||||
|
// | CRC3 | CRC2 | CRC1 | CRC0 | but we store as received, so F->crc[0] is CRC3
|
||||||
|
// CRC3 encoded from high nibble of 16 - bit CRC value (from crc2)
|
||||||
|
// CRC0 encoded from low nibble of 16 - bit CRC value (from crc1)
|
||||||
|
|
||||||
|
crc[0] = Hamming74DecodeTable[(pp->crc[0] & 0x7f)];
|
||||||
|
crc[1] = Hamming74DecodeTable[(pp->crc[1] & 0x7f)];
|
||||||
|
crc[2] = Hamming74DecodeTable[(pp->crc[2] & 0x7f)];
|
||||||
|
crc[3] = Hamming74DecodeTable[(pp->crc[3] & 0x7f)];
|
||||||
|
|
||||||
|
CRCMSG = crc[0] << 12 | crc[1] << 8 | crc[2] << 4 | crc[3];
|
||||||
|
|
||||||
|
CRCCALC = get_fcs(pp->frame_data, pp->frame_len);
|
||||||
|
|
||||||
|
if (CRCCALC != CRCMSG)
|
||||||
|
{
|
||||||
|
Debugprintf("CRC Error Decoder %d Received %x Sent %x", subchan, CRCCALC, CRCMSG);
|
||||||
|
// freeString(data);
|
||||||
|
// ax25_delete(pp);
|
||||||
|
// return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
stringAdd(data, pp->frame_data, pp->frame_len + 2); // QTSM assumes a CRC
|
stringAdd(data, pp->frame_data, pp->frame_len + 2); // QTSM assumes a CRC
|
||||||
|
|
||||||
ax25_delete(pp);
|
ax25_delete(pp);
|
||||||
|
@ -3151,6 +3217,13 @@ int il2p_type_1_header(packet_t pp, int max_fec, unsigned char *hdr)
|
||||||
ax25_get_addr_no_ssid(pp, AX25_SOURCE, src_addr);
|
ax25_get_addr_no_ssid(pp, AX25_SOURCE, src_addr);
|
||||||
int src_ssid = ax25_get_ssid(pp, AX25_SOURCE);
|
int src_ssid = ax25_get_ssid(pp, AX25_SOURCE);
|
||||||
|
|
||||||
|
if ((pp->frame_data[6] & 0x80) == (pp->frame_data[13] & 0x80))
|
||||||
|
{
|
||||||
|
// Both C bits are the same (ax.25 v1) so can't be sent as type 1 as will be changed
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
unsigned char *a = (unsigned char *)dst_addr;
|
unsigned char *a = (unsigned char *)dst_addr;
|
||||||
for (int i = 0; *a != '\0'; i++, a++) {
|
for (int i = 0; *a != '\0'; i++, a++) {
|
||||||
if (*a < ' ' || *a > '_') {
|
if (*a < ' ' || *a > '_') {
|
||||||
|
@ -3919,7 +3992,7 @@ void il2p_rec_bit(int chan, int subchan, int slice, int dbit)
|
||||||
//assert(slice >= 0 && slice < MAX_SLICERS);
|
//assert(slice >= 0 && slice < MAX_SLICERS);
|
||||||
F = il2p_context[chan][subchan][slice] = (struct il2p_context_s *)malloc(sizeof(struct il2p_context_s));
|
F = il2p_context[chan][subchan][slice] = (struct il2p_context_s *)malloc(sizeof(struct il2p_context_s));
|
||||||
//assert(F != NULL);
|
//assert(F != NULL);
|
||||||
memset(F, 0, sizeof(struct il2p_context_s));
|
memset(F, 0, sizeof(struct il2p_context_s));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Accumulate most recent 24 bits received. Most recent is LSB.
|
// Accumulate most recent 24 bits received. Most recent is LSB.
|
||||||
|
@ -4008,9 +4081,21 @@ void il2p_rec_bit(int chan, int subchan, int slice, int dbit)
|
||||||
F->pc = 0;
|
F->pc = 0;
|
||||||
F->state = IL2P_PAYLOAD;
|
F->state = IL2P_PAYLOAD;
|
||||||
}
|
}
|
||||||
else if (F->eplen == 0) { // No payload.
|
else if (F->eplen == 0)
|
||||||
|
{
|
||||||
|
// No payload.
|
||||||
|
|
||||||
F->pc = 0;
|
F->pc = 0;
|
||||||
F->state = IL2P_DECODE;
|
|
||||||
|
if (il2p_crc[chan])
|
||||||
|
{
|
||||||
|
// enter collect crc state
|
||||||
|
|
||||||
|
F->crccount = 0;
|
||||||
|
F->state = IL2P_CRC;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
F->state = IL2P_DECODE;
|
||||||
}
|
}
|
||||||
else { // Error.
|
else { // Error.
|
||||||
|
|
||||||
|
@ -4039,16 +4124,47 @@ void il2p_rec_bit(int chan, int subchan, int slice, int dbit)
|
||||||
else {
|
else {
|
||||||
F->spayload[F->pc++] = (~F->acc) & 0xff;
|
F->spayload[F->pc++] = (~F->acc) & 0xff;
|
||||||
}
|
}
|
||||||
if (F->pc == F->eplen) {
|
if (F->pc == F->eplen)
|
||||||
|
{
|
||||||
|
// got frame. See if need crc
|
||||||
|
|
||||||
// TODO?: for symmetry it seems like we should clarify the payload before combining.
|
if (il2p_crc[chan])
|
||||||
|
{
|
||||||
|
// enter collect crc state
|
||||||
|
|
||||||
F->state = IL2P_DECODE;
|
F->crccount = 0;
|
||||||
|
F->state = IL2P_CRC;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
F->state = IL2P_DECODE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IL2P_CRC:
|
||||||
|
|
||||||
|
F->bc++;
|
||||||
|
if (F->bc == 8)
|
||||||
|
{
|
||||||
|
// full byte has been collected.
|
||||||
|
F->bc = 0;
|
||||||
|
if (!F->polarity)
|
||||||
|
F->crc[F->crccount++] = F->acc & 0xff;
|
||||||
|
else
|
||||||
|
F->crc[F->crccount++] = (~F->acc) & 0xff;
|
||||||
|
|
||||||
|
if (F->crccount == 4)
|
||||||
|
{
|
||||||
|
// have all crc bytes. enter DECODE
|
||||||
|
|
||||||
|
F->state = IL2P_DECODE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
case IL2P_DECODE:
|
case IL2P_DECODE:
|
||||||
|
|
||||||
// We get here after a good header and any payload has been collected.
|
// We get here after a good header and any payload has been collected.
|
||||||
// Processing is delayed by one bit but I think it makes the logic cleaner.
|
// Processing is delayed by one bit but I think it makes the logic cleaner.
|
||||||
// During unit testing be sure to send an extra bit to flush it out at the end.
|
// During unit testing be sure to send an extra bit to flush it out at the end.
|
||||||
|
@ -4077,6 +4193,18 @@ void il2p_rec_bit(int chan, int subchan, int slice, int dbit)
|
||||||
|
|
||||||
// TODO: Could we put last 3 arguments in packet object rather than passing around separately?
|
// TODO: Could we put last 3 arguments in packet object rather than passing around separately?
|
||||||
|
|
||||||
|
// if using crc pass received crc to packet object
|
||||||
|
|
||||||
|
if (il2p_crc[chan])
|
||||||
|
{
|
||||||
|
//copy crc bytes to packet object
|
||||||
|
|
||||||
|
pp->crc[0] = F->crc[0];
|
||||||
|
pp->crc[1] = F->crc[1];
|
||||||
|
pp->crc[2] = F->crc[2];
|
||||||
|
pp->crc[3] = F->crc[3];
|
||||||
|
}
|
||||||
|
|
||||||
multi_modem_process_rec_packet(chan, subchan, slice, pp, alevel, retries, is_fx25, slice, centreFreq[chan]);
|
multi_modem_process_rec_packet(chan, subchan, slice, pp, alevel, retries, is_fx25, slice, centreFreq[chan]);
|
||||||
}
|
}
|
||||||
} // end block for local variables.
|
} // end block for local variables.
|
||||||
|
@ -4269,13 +4397,19 @@ static void send_bit(int chan, int b, int polarity);
|
||||||
*
|
*
|
||||||
*--------------------------------------------------------------*/
|
*--------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
string * il2p_send_frame(int chan, packet_t pp, int max_fec, int polarity)
|
string * il2p_send_frame(int chan, packet_t pp, int max_fec, int polarity)
|
||||||
{
|
{
|
||||||
unsigned char encoded[IL2P_MAX_PACKET_SIZE];
|
unsigned char encoded[IL2P_MAX_PACKET_SIZE] = "";
|
||||||
string * packet = newString();
|
string * packet = newString();
|
||||||
int preamblecount;
|
int preamblecount;
|
||||||
unsigned char preamble[1024];
|
unsigned char preamble[1024];
|
||||||
|
|
||||||
|
// The data includes the 2 byte crc but length doesn't
|
||||||
|
|
||||||
|
uint8_t crc1 = pp->frame_data[pp->frame_len]; // Low 8 bits
|
||||||
|
uint8_t crc2 = pp->frame_data[pp->frame_len + 1]; // High 8 bits
|
||||||
|
|
||||||
encoded[0] = (IL2P_SYNC_WORD >> 16) & 0xff;
|
encoded[0] = (IL2P_SYNC_WORD >> 16) & 0xff;
|
||||||
encoded[1] = (IL2P_SYNC_WORD >> 8) & 0xff;
|
encoded[1] = (IL2P_SYNC_WORD >> 8) & 0xff;
|
||||||
encoded[2] = (IL2P_SYNC_WORD) & 0xff;
|
encoded[2] = (IL2P_SYNC_WORD) & 0xff;
|
||||||
|
@ -4289,6 +4423,24 @@ string * il2p_send_frame(int chan, packet_t pp, int max_fec, int polarity)
|
||||||
|
|
||||||
elen += IL2P_SYNC_WORD_SIZE;
|
elen += IL2P_SYNC_WORD_SIZE;
|
||||||
|
|
||||||
|
// if we are using crc add it now. elen should point to end of data
|
||||||
|
// crc should be at pp->frame_data[pp->frame_len]
|
||||||
|
|
||||||
|
if (il2p_crc[chan])
|
||||||
|
{
|
||||||
|
// The four encoded CRC bytes are arranged :
|
||||||
|
// | CRC3 | CRC2 | CRC1 | CRC0 |
|
||||||
|
|
||||||
|
// CRC3 encoded from high nibble of 16 - bit CRC value (from crc2)
|
||||||
|
// CRC0 encoded from low nibble of 16 - bit CRC value (from crc1)
|
||||||
|
|
||||||
|
encoded[elen++] = Hamming74EncodeTable[crc2 >> 4];
|
||||||
|
encoded[elen++] = Hamming74EncodeTable[crc2 & 0xf];
|
||||||
|
encoded[elen++] = Hamming74EncodeTable[crc1 >> 4];
|
||||||
|
encoded[elen++] = Hamming74EncodeTable[crc1 &0xf];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
number_of_bits_sent[chan] = 0;
|
number_of_bits_sent[chan] = 0;
|
||||||
|
|
||||||
if (il2p_get_debug() >= 1) {
|
if (il2p_get_debug() >= 1) {
|
||||||
|
@ -4366,7 +4518,7 @@ string * fill_il2p_data(int snd_ch, string * data)
|
||||||
// Call il2p_send_frame to build the bit stream
|
// Call il2p_send_frame to build the bit stream
|
||||||
|
|
||||||
pp->frame_len = data->Length - 2; // Included CRC
|
pp->frame_len = data->Length - 2; // Included CRC
|
||||||
memcpy(pp->frame_data, data->Data, data->Length);
|
memcpy(pp->frame_data, data->Data, data->Length); // Copy the crc in case we are going to send it
|
||||||
|
|
||||||
result = il2p_send_frame(snd_ch, pp, 1, 0);
|
result = il2p_send_frame(snd_ch, pp, 1, 0);
|
||||||
|
|
||||||
|
|
4502
il2p.c.bak
4502
il2p.c.bak
File diff suppressed because it is too large
Load Diff
24
kiss.h
24
kiss.h
|
@ -1,24 +0,0 @@
|
||||||
|
|
||||||
/*
|
|
||||||
* Name: kiss.h
|
|
||||||
*
|
|
||||||
* This is for the pseudo terminal KISS interface.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "ax25_pad.h" /* for packet_t */
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include "kiss_frame.h" // for struct kissport_status_s
|
|
||||||
|
|
||||||
|
|
||||||
void kisspt_init (struct misc_config_s *misc_config);
|
|
||||||
|
|
||||||
void kisspt_send_rec_packet (int chan, int kiss_cmd, unsigned char *fbuf, int flen,
|
|
||||||
struct kissport_status_s *notused1, int notused2);
|
|
||||||
|
|
||||||
void kisspt_set_debug (int n);
|
|
||||||
|
|
||||||
|
|
||||||
/* end kiss.h */
|
|
126
kiss_frame.h
126
kiss_frame.h
|
@ -1,126 +0,0 @@
|
||||||
|
|
||||||
/* kiss_frame.h */
|
|
||||||
|
|
||||||
#ifndef KISS_FRAME_H
|
|
||||||
#define KISS_FRAME_H
|
|
||||||
|
|
||||||
|
|
||||||
#include "audio.h" /* for struct audio_s */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The first byte of a KISS frame has:
|
|
||||||
* channel in upper nybble.
|
|
||||||
* command in lower nybble.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define KISS_CMD_DATA_FRAME 0
|
|
||||||
#define KISS_CMD_TXDELAY 1
|
|
||||||
#define KISS_CMD_PERSISTENCE 2
|
|
||||||
#define KISS_CMD_SLOTTIME 3
|
|
||||||
#define KISS_CMD_TXTAIL 4
|
|
||||||
#define KISS_CMD_FULLDUPLEX 5
|
|
||||||
#define KISS_CMD_SET_HARDWARE 6
|
|
||||||
#define XKISS_CMD_DATA 12 // Not supported. http://he.fi/pub/oh7lzb/bpq/multi-kiss.pdf
|
|
||||||
#define XKISS_CMD_POLL 14 // Not supported.
|
|
||||||
#define KISS_CMD_END_KISS 15
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Special characters used by SLIP protocol.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define FEND 0xC0
|
|
||||||
#define FESC 0xDB
|
|
||||||
#define TFEND 0xDC
|
|
||||||
#define TFESC 0xDD
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
enum kiss_state_e {
|
|
||||||
KS_SEARCHING = 0, /* Looking for FEND to start KISS frame. */
|
|
||||||
/* Must be 0 so we can simply zero whole structure to initialize. */
|
|
||||||
KS_COLLECTING}; /* In process of collecting KISS frame. */
|
|
||||||
|
|
||||||
|
|
||||||
#define MAX_KISS_LEN 2048 /* Spec calls for at least 1024. */
|
|
||||||
/* Might want to make it longer to accommodate */
|
|
||||||
/* maximum packet length. */
|
|
||||||
|
|
||||||
#define MAX_NOISE_LEN 100
|
|
||||||
|
|
||||||
typedef struct kiss_frame_s {
|
|
||||||
|
|
||||||
enum kiss_state_e state;
|
|
||||||
|
|
||||||
unsigned char kiss_msg[MAX_KISS_LEN];
|
|
||||||
/* Leading FEND is optional. */
|
|
||||||
/* Contains escapes and ending FEND. */
|
|
||||||
int kiss_len;
|
|
||||||
|
|
||||||
unsigned char noise[MAX_NOISE_LEN];
|
|
||||||
int noise_len;
|
|
||||||
|
|
||||||
} kiss_frame_t;
|
|
||||||
|
|
||||||
|
|
||||||
// This is used only for TCPKISS but it put in kissnet.h,
|
|
||||||
// there would be a circular dependency between the two header files.
|
|
||||||
// Each KISS TCP port has its own status block.
|
|
||||||
|
|
||||||
struct kissport_status_s {
|
|
||||||
|
|
||||||
struct kissport_status_s *pnext; // To next in list.
|
|
||||||
|
|
||||||
volatile int arg2; // temp for passing second arg into
|
|
||||||
// kissnet_listen_thread
|
|
||||||
|
|
||||||
int tcp_port; // default 8001
|
|
||||||
|
|
||||||
int chan; // Radio channel for this tcp port.
|
|
||||||
// -1 for all.
|
|
||||||
|
|
||||||
// The default is a limit of 3 client applications at the same time.
|
|
||||||
// You can increase the limit by changing the line below.
|
|
||||||
// A larger number consumes more resources so don't go crazy by making it larger than needed.
|
|
||||||
// TODO: Should this be moved to direwolf.h so max number of audio devices
|
|
||||||
// client apps are in the same place?
|
|
||||||
|
|
||||||
#define MAX_NET_CLIENTS 3
|
|
||||||
|
|
||||||
int client_sock[MAX_NET_CLIENTS];
|
|
||||||
/* File descriptor for socket for */
|
|
||||||
/* communication with client application. */
|
|
||||||
/* Set to -1 if not connected. */
|
|
||||||
/* (Don't use SOCKET type because it is unsigned.) */
|
|
||||||
|
|
||||||
kiss_frame_t kf[MAX_NET_CLIENTS];
|
|
||||||
/* Accumulated KISS frame and state of decoder. */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef KISSUTIL
|
|
||||||
void kiss_frame_init (struct audio_s *pa);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int kiss_encapsulate (unsigned char *in, int ilen, unsigned char *out);
|
|
||||||
|
|
||||||
int kiss_unwrap (unsigned char *in, int ilen, unsigned char *out);
|
|
||||||
|
|
||||||
void kiss_rec_byte (kiss_frame_t *kf, unsigned char ch, int debug, struct kissport_status_s *kps, int client,
|
|
||||||
void (*sendfun)(int chan, int kiss_cmd, unsigned char *fbuf, int flen, struct kissport_status_s *onlykps, int onlyclient));
|
|
||||||
|
|
||||||
typedef enum fromto_e { FROM_CLIENT=0, TO_CLIENT=1 } fromto_t;
|
|
||||||
|
|
||||||
void kiss_process_msg (unsigned char *kiss_msg, int kiss_len, int debug, struct kissport_status_s *kps, int client,
|
|
||||||
void (*sendfun)(int chan, int kiss_cmd, unsigned char *fbuf, int flen, struct kissport_status_s *onlykps, int onlyclient));
|
|
||||||
|
|
||||||
void kiss_debug_print (fromto_t fromto, char *special, unsigned char *pmsg, int msg_len);
|
|
||||||
|
|
||||||
|
|
||||||
#endif // KISS_FRAME_H
|
|
||||||
|
|
||||||
|
|
||||||
/* end kiss_frame.h */
|
|
|
@ -245,7 +245,6 @@ void ProcessKISSFrame(void * socket, UCHAR * Msg, int Len)
|
||||||
Add(&KISS.buffer[Chan], TXMSG);
|
Add(&KISS.buffer[Chan], TXMSG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case KISS_DATA:
|
case KISS_DATA:
|
||||||
|
|
29
kissnet.h
29
kissnet.h
|
@ -1,29 +0,0 @@
|
||||||
|
|
||||||
/*
|
|
||||||
* Name: kissnet.h
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef KISSNET_H
|
|
||||||
#define KISSNET_H
|
|
||||||
|
|
||||||
#include "ax25_pad.h" /* for packet_t */
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include "kiss_frame.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void kissnet_init (struct misc_config_s *misc_config);
|
|
||||||
|
|
||||||
void kissnet_send_rec_packet (int chan, int kiss_cmd, unsigned char *fbuf, int flen,
|
|
||||||
struct kissport_status_s *onlykps, int onlyclient);
|
|
||||||
|
|
||||||
void kiss_net_set_debug (int n);
|
|
||||||
|
|
||||||
void kissnet_copy (unsigned char *kiss_msg, int kiss_len, int chan, int cmd, struct kissport_status_s *from_kps, int from_client);
|
|
||||||
|
|
||||||
|
|
||||||
#endif // KISSNET_H
|
|
||||||
|
|
||||||
/* end kissnet.h */
|
|
23
kissserial.h
23
kissserial.h
|
@ -1,23 +0,0 @@
|
||||||
|
|
||||||
/*
|
|
||||||
* Name: kissserial.h
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "ax25_pad.h" /* for packet_t */
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
#include "kiss_frame.h"
|
|
||||||
|
|
||||||
|
|
||||||
void kissserial_init (struct misc_config_s *misc_config);
|
|
||||||
|
|
||||||
void kissserial_send_rec_packet (int chan, int kiss_cmd, unsigned char *fbuf, int flen,
|
|
||||||
struct kissport_status_s *notused1, int notused2);
|
|
||||||
|
|
||||||
|
|
||||||
void kissserial_set_debug (int n);
|
|
||||||
|
|
||||||
|
|
||||||
/* end kissserial.h */
|
|
24
latlong.h
24
latlong.h
|
@ -1,24 +0,0 @@
|
||||||
|
|
||||||
/* latlong.h */
|
|
||||||
|
|
||||||
|
|
||||||
/* Use this value for unknown latitude/longitude or other values. */
|
|
||||||
|
|
||||||
#define G_UNKNOWN (-999999)
|
|
||||||
|
|
||||||
|
|
||||||
void latitude_to_str (double dlat, int ambiguity, char *slat);
|
|
||||||
void longitude_to_str (double dlong, int ambiguity, char *slong);
|
|
||||||
|
|
||||||
void latitude_to_comp_str (double dlat, char *clat);
|
|
||||||
void longitude_to_comp_str (double dlon, char *clon);
|
|
||||||
|
|
||||||
void latitude_to_nmea (double dlat, char *slat, char *hemi);
|
|
||||||
void longitude_to_nmea (double dlong, char *slong, char *hemi);
|
|
||||||
|
|
||||||
double latitude_from_nmea (char *pstr, char *phemi);
|
|
||||||
double longitude_from_nmea (char *pstr, char *phemi);
|
|
||||||
|
|
||||||
double ll_distance_km (double lat1, double lon1, double lat2, double lon2);
|
|
||||||
|
|
||||||
int ll_from_grid_square (char *maidenhead, double *dlat, double *dlon);
|
|
19
log.h
19
log.h
|
@ -1,19 +0,0 @@
|
||||||
|
|
||||||
/* log.h */
|
|
||||||
|
|
||||||
|
|
||||||
#include "hdlc_rec2.h" // for retry_t
|
|
||||||
|
|
||||||
#include "decode_aprs.h" // for decode_aprs_t
|
|
||||||
|
|
||||||
#include "ax25_pad.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void log_init (int daily_names, char *path);
|
|
||||||
|
|
||||||
void log_write (int chan, decode_aprs_t *A, packet_t pp, alevel_t alevel, retry_t retries);
|
|
||||||
|
|
||||||
void log_rr_bits (decode_aprs_t *A, packet_t pp);
|
|
||||||
|
|
||||||
void log_term (void);
|
|
4
main.cpp
4
main.cpp
|
@ -53,6 +53,8 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
qDebug() << Title;
|
qDebug() << Title;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (nonGUIMode)
|
if (nonGUIMode)
|
||||||
a = new QCoreApplication(argc, argv);
|
a = new QCoreApplication(argc, argv);
|
||||||
else
|
else
|
||||||
|
@ -60,6 +62,7 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
getSettings();
|
getSettings();
|
||||||
|
|
||||||
|
|
||||||
t = new workerThread;
|
t = new workerThread;
|
||||||
|
|
||||||
if (nonGUIMode == 0)
|
if (nonGUIMode == 0)
|
||||||
|
@ -85,4 +88,3 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
276
mgn_icon.h
276
mgn_icon.h
|
@ -1,276 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* MGN_icon.h
|
|
||||||
*
|
|
||||||
* Waypoint icon codes for use in the $PMGNWPL sentence.
|
|
||||||
*
|
|
||||||
* Derived from Data Transmission Protocol For Magellan Products - version 2.11, March 2003
|
|
||||||
*
|
|
||||||
* http://www.gpsinformation.org/mag-proto-2-11.pdf
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* That's 13 years ago. There should be something newer available but I can't find it.
|
|
||||||
*
|
|
||||||
* The is based on the newer models at the time. Earlier models had shorter incompatible icon lists.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define MGN_crossed_square "a"
|
|
||||||
#define MGN_box "b"
|
|
||||||
#define MGN_house "c"
|
|
||||||
#define MGN_aerial "d"
|
|
||||||
#define MGN_airport "e"
|
|
||||||
#define MGN_amusement_park "f"
|
|
||||||
#define MGN_ATM "g"
|
|
||||||
#define MGN_auto_repair "h"
|
|
||||||
#define MGN_boating "I"
|
|
||||||
#define MGN_camping "j"
|
|
||||||
#define MGN_exit_ramp "k"
|
|
||||||
#define MGN_first_aid "l"
|
|
||||||
#define MGN_nav_aid "m"
|
|
||||||
#define MGN_buoy "n"
|
|
||||||
#define MGN_fuel "o"
|
|
||||||
#define MGN_garden "p"
|
|
||||||
#define MGN_golf "q"
|
|
||||||
#define MGN_hotel "r"
|
|
||||||
#define MGN_hunting_fishing "s"
|
|
||||||
#define MGN_large_city "t"
|
|
||||||
#define MGN_lighthouse "u"
|
|
||||||
#define MGN_major_city "v"
|
|
||||||
#define MGN_marina "w"
|
|
||||||
#define MGN_medium_city "x"
|
|
||||||
#define MGN_museum "y"
|
|
||||||
#define MGN_obstruction "z"
|
|
||||||
#define MGN_park "aa"
|
|
||||||
#define MGN_resort "ab"
|
|
||||||
#define MGN_restaurant "ac"
|
|
||||||
#define MGN_rock "ad"
|
|
||||||
#define MGN_scuba "ae"
|
|
||||||
#define MGN_RV_service "af"
|
|
||||||
#define MGN_shooting "ag"
|
|
||||||
#define MGN_sight_seeing "ah"
|
|
||||||
#define MGN_small_city "ai"
|
|
||||||
#define MGN_sounding "aj"
|
|
||||||
#define MGN_sports_arena "ak"
|
|
||||||
#define MGN_tourist_info "al"
|
|
||||||
#define MGN_truck_service "am"
|
|
||||||
#define MGN_winery "an"
|
|
||||||
#define MGN_wreck "ao"
|
|
||||||
#define MGN_zoo "ap"
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Mapping from APRS symbols to Magellan.
|
|
||||||
*
|
|
||||||
* This is a bit of a challenge because there
|
|
||||||
* are no icons for moving objects.
|
|
||||||
* We can use airport for flying things but
|
|
||||||
* what about wheeled transportation devices?
|
|
||||||
*/
|
|
||||||
|
|
||||||
// TODO: NEEDS MORE WORK!!!
|
|
||||||
|
|
||||||
|
|
||||||
#define MGN_default MGN_crossed_square
|
|
||||||
|
|
||||||
#define SYMTAB_SIZE 95
|
|
||||||
|
|
||||||
static const char mgn_primary_symtab[SYMTAB_SIZE][3] = {
|
|
||||||
|
|
||||||
MGN_default, // 00 --no-symbol--
|
|
||||||
MGN_default, // ! 01 Police, Sheriff
|
|
||||||
MGN_default, // " 02 reserved (was rain)
|
|
||||||
MGN_aerial, // # 03 DIGI (white center)
|
|
||||||
MGN_default, // $ 04 PHONE
|
|
||||||
MGN_aerial, // % 05 DX CLUSTER
|
|
||||||
MGN_aerial, // & 06 HF GATEway
|
|
||||||
MGN_airport, // ' 07 Small AIRCRAFT
|
|
||||||
MGN_aerial, // ( 08 Mobile Satellite Station
|
|
||||||
MGN_default, // ) 09 Wheelchair (handicapped)
|
|
||||||
MGN_default, // * 10 SnowMobile
|
|
||||||
MGN_default, // + 11 Red Cross
|
|
||||||
MGN_default, // , 12 Boy Scouts
|
|
||||||
MGN_house, // - 13 House QTH (VHF)
|
|
||||||
MGN_default, // . 14 X
|
|
||||||
MGN_default, // / 15 Red Dot
|
|
||||||
MGN_default, // 0 16 # circle (obsolete)
|
|
||||||
MGN_default, // 1 17 TBD
|
|
||||||
MGN_default, // 2 18 TBD
|
|
||||||
MGN_default, // 3 19 TBD
|
|
||||||
MGN_default, // 4 20 TBD
|
|
||||||
MGN_default, // 5 21 TBD
|
|
||||||
MGN_default, // 6 22 TBD
|
|
||||||
MGN_default, // 7 23 TBD
|
|
||||||
MGN_default, // 8 24 TBD
|
|
||||||
MGN_default, // 9 25 TBD
|
|
||||||
MGN_default, // : 26 FIRE
|
|
||||||
MGN_camping, // ; 27 Campground (Portable ops)
|
|
||||||
MGN_default, // < 28 Motorcycle
|
|
||||||
MGN_default, // = 29 RAILROAD ENGINE
|
|
||||||
MGN_default, // > 30 CAR
|
|
||||||
MGN_default, // ? 31 SERVER for Files
|
|
||||||
MGN_default, // @ 32 HC FUTURE predict (dot)
|
|
||||||
MGN_first_aid, // A 33 Aid Station
|
|
||||||
MGN_aerial, // B 34 BBS or PBBS
|
|
||||||
MGN_boating, // C 35 Canoe
|
|
||||||
MGN_default, // D 36
|
|
||||||
MGN_default, // E 37 EYEBALL (Eye catcher!)
|
|
||||||
MGN_default, // F 38 Farm Vehicle (tractor)
|
|
||||||
MGN_default, // G 39 Grid Square (6 digit)
|
|
||||||
MGN_hotel, // H 40 HOTEL (blue bed symbol)
|
|
||||||
MGN_aerial, // I 41 TcpIp on air network stn
|
|
||||||
MGN_default, // J 42
|
|
||||||
MGN_default, // K 43 School
|
|
||||||
MGN_default, // L 44 PC user
|
|
||||||
MGN_default, // M 45 MacAPRS
|
|
||||||
MGN_aerial, // N 46 NTS Station
|
|
||||||
MGN_airport, // O 47 BALLOON
|
|
||||||
MGN_default, // P 48 Police
|
|
||||||
MGN_default, // Q 49 TBD
|
|
||||||
MGN_RV_service, // R 50 REC. VEHICLE
|
|
||||||
MGN_airport, // S 51 SHUTTLE
|
|
||||||
MGN_default, // T 52 SSTV
|
|
||||||
MGN_default, // U 53 BUS
|
|
||||||
MGN_default, // V 54 ATV
|
|
||||||
MGN_default, // W 55 National WX Service Site
|
|
||||||
MGN_default, // X 56 HELO
|
|
||||||
MGN_boating, // Y 57 YACHT (sail)
|
|
||||||
MGN_default, // Z 58 WinAPRS
|
|
||||||
MGN_default, // [ 59 Human/Person (HT)
|
|
||||||
MGN_default, // \ 60 TRIANGLE(DF station)
|
|
||||||
MGN_default, // ] 61 MAIL/PostOffice(was PBBS)
|
|
||||||
MGN_airport, // ^ 62 LARGE AIRCRAFT
|
|
||||||
MGN_default, // _ 63 WEATHER Station (blue)
|
|
||||||
MGN_aerial, // ` 64 Dish Antenna
|
|
||||||
MGN_default, // a 65 AMBULANCE
|
|
||||||
MGN_default, // b 66 BIKE
|
|
||||||
MGN_default, // c 67 Incident Command Post
|
|
||||||
MGN_default, // d 68 Fire dept
|
|
||||||
MGN_zoo, // e 69 HORSE (equestrian)
|
|
||||||
MGN_default, // f 70 FIRE TRUCK
|
|
||||||
MGN_airport, // g 71 Glider
|
|
||||||
MGN_default, // h 72 HOSPITAL
|
|
||||||
MGN_default, // i 73 IOTA (islands on the air)
|
|
||||||
MGN_default, // j 74 JEEP
|
|
||||||
MGN_default, // k 75 TRUCK
|
|
||||||
MGN_default, // l 76 Laptop
|
|
||||||
MGN_aerial, // m 77 Mic-E Repeater
|
|
||||||
MGN_default, // n 78 Node (black bulls-eye)
|
|
||||||
MGN_default, // o 79 EOC
|
|
||||||
MGN_zoo, // p 80 ROVER (puppy, or dog)
|
|
||||||
MGN_default, // q 81 GRID SQ shown above 128 m
|
|
||||||
MGN_aerial, // r 82 Repeater
|
|
||||||
MGN_default, // s 83 SHIP (pwr boat)
|
|
||||||
MGN_default, // t 84 TRUCK STOP
|
|
||||||
MGN_default, // u 85 TRUCK (18 wheeler)
|
|
||||||
MGN_default, // v 86 VAN
|
|
||||||
MGN_default, // w 87 WATER station
|
|
||||||
MGN_aerial, // x 88 xAPRS (Unix)
|
|
||||||
MGN_aerial, // y 89 YAGI @ QTH
|
|
||||||
MGN_default, // z 90 TBD
|
|
||||||
MGN_default, // { 91
|
|
||||||
MGN_default, // | 92 TNC Stream Switch
|
|
||||||
MGN_default, // } 93
|
|
||||||
MGN_default }; // ~ 94 TNC Stream Switch
|
|
||||||
|
|
||||||
|
|
||||||
static const char mgn_alternate_symtab[SYMTAB_SIZE][3] = {
|
|
||||||
|
|
||||||
MGN_default, // 00 --no-symbol--
|
|
||||||
MGN_default, // ! 01 EMERGENCY (!)
|
|
||||||
MGN_default, // " 02 reserved
|
|
||||||
MGN_aerial, // # 03 OVERLAY DIGI (green star)
|
|
||||||
MGN_ATM, // $ 04 Bank or ATM (green box)
|
|
||||||
MGN_default, // % 05 Power Plant with overlay
|
|
||||||
MGN_aerial, // & 06 I=Igte IGate R=RX T=1hopTX 2=2hopTX
|
|
||||||
MGN_default, // ' 07 Crash (& now Incident sites)
|
|
||||||
MGN_default, // ( 08 CLOUDY (other clouds w ovrly)
|
|
||||||
MGN_aerial, // ) 09 Firenet MEO, MODIS Earth Obs.
|
|
||||||
MGN_default, // * 10 SNOW (& future ovrly codes)
|
|
||||||
MGN_default, // + 11 Church
|
|
||||||
MGN_default, // , 12 Girl Scouts
|
|
||||||
MGN_house, // - 13 House (H=HF) (O = Op Present)
|
|
||||||
MGN_default, // . 14 Ambiguous (Big Question mark)
|
|
||||||
MGN_default, // / 15 Waypoint Destination
|
|
||||||
MGN_default, // 0 16 CIRCLE (E/I/W=IRLP/Echolink/WIRES)
|
|
||||||
MGN_default, // 1 17
|
|
||||||
MGN_default, // 2 18
|
|
||||||
MGN_default, // 3 19
|
|
||||||
MGN_default, // 4 20
|
|
||||||
MGN_default, // 5 21
|
|
||||||
MGN_default, // 6 22
|
|
||||||
MGN_default, // 7 23
|
|
||||||
MGN_aerial, // 8 24 802.11 or other network node
|
|
||||||
MGN_fuel, // 9 25 Gas Station (blue pump)
|
|
||||||
MGN_default, // : 26 Hail (& future ovrly codes)
|
|
||||||
MGN_park, // ; 27 Park/Picnic area
|
|
||||||
MGN_default, // < 28 ADVISORY (one WX flag)
|
|
||||||
MGN_default, // = 29 APRStt Touchtone (DTMF users)
|
|
||||||
MGN_default, // > 30 OVERLAID CAR
|
|
||||||
MGN_tourist_info, // ? 31 INFO Kiosk (Blue box with ?)
|
|
||||||
MGN_default, // @ 32 HURRICANE/Trop-Storm
|
|
||||||
MGN_box, // A 33 overlayBOX DTMF & RFID & XO
|
|
||||||
MGN_default, // B 34 Blwng Snow (& future codes)
|
|
||||||
MGN_boating, // C 35 Coast Guard
|
|
||||||
MGN_default, // D 36 Drizzle (proposed APRStt)
|
|
||||||
MGN_default, // E 37 Smoke (& other vis codes)
|
|
||||||
MGN_default, // F 38 Freezng rain (&future codes)
|
|
||||||
MGN_default, // G 39 Snow Shwr (& future ovrlys)
|
|
||||||
MGN_default, // H 40 Haze (& Overlay Hazards)
|
|
||||||
MGN_default, // I 41 Rain Shower
|
|
||||||
MGN_default, // J 42 Lightning (& future ovrlys)
|
|
||||||
MGN_default, // K 43 Kenwood HT (W)
|
|
||||||
MGN_lighthouse, // L 44 Lighthouse
|
|
||||||
MGN_default, // M 45 MARS (A=Army,N=Navy,F=AF)
|
|
||||||
MGN_buoy, // N 46 Navigation Buoy
|
|
||||||
MGN_airport, // O 47 Rocket
|
|
||||||
MGN_default, // P 48 Parking
|
|
||||||
MGN_default, // Q 49 QUAKE
|
|
||||||
MGN_restaurant, // R 50 Restaurant
|
|
||||||
MGN_aerial, // S 51 Satellite/Pacsat
|
|
||||||
MGN_default, // T 52 Thunderstorm
|
|
||||||
MGN_default, // U 53 SUNNY
|
|
||||||
MGN_nav_aid, // V 54 VORTAC Nav Aid
|
|
||||||
MGN_default, // W 55 # NWS site (NWS options)
|
|
||||||
MGN_default, // X 56 Pharmacy Rx (Apothicary)
|
|
||||||
MGN_aerial, // Y 57 Radios and devices
|
|
||||||
MGN_default, // Z 58
|
|
||||||
MGN_default, // [ 59 W.Cloud (& humans w Ovrly)
|
|
||||||
MGN_default, // \ 60 New overlayable GPS symbol
|
|
||||||
MGN_default, // ] 61
|
|
||||||
MGN_airport, // ^ 62 # Aircraft (shows heading)
|
|
||||||
MGN_default, // _ 63 # WX site (green digi)
|
|
||||||
MGN_default, // ` 64 Rain (all types w ovrly)
|
|
||||||
MGN_aerial, // a 65 ARRL, ARES, WinLINK
|
|
||||||
MGN_default, // b 66 Blwng Dst/Snd (& others)
|
|
||||||
MGN_default, // c 67 CD triangle RACES/SATERN/etc
|
|
||||||
MGN_default, // d 68 DX spot by callsign
|
|
||||||
MGN_default, // e 69 Sleet (& future ovrly codes)
|
|
||||||
MGN_default, // f 70 Funnel Cloud
|
|
||||||
MGN_default, // g 71 Gale Flags
|
|
||||||
MGN_default, // h 72 Store. or HAMFST Hh=HAM store
|
|
||||||
MGN_box, // i 73 BOX or points of Interest
|
|
||||||
MGN_default, // j 74 WorkZone (Steam Shovel)
|
|
||||||
MGN_default, // k 75 Special Vehicle SUV,ATV,4x4
|
|
||||||
MGN_default, // l 76 Areas (box,circles,etc)
|
|
||||||
MGN_default, // m 77 Value Sign (3 digit display)
|
|
||||||
MGN_default, // n 78 OVERLAY TRIANGLE
|
|
||||||
MGN_default, // o 79 small circle
|
|
||||||
MGN_default, // p 80 Prtly Cldy (& future ovrlys)
|
|
||||||
MGN_default, // q 81
|
|
||||||
MGN_default, // r 82 Restrooms
|
|
||||||
MGN_default, // s 83 OVERLAY SHIP/boat (top view)
|
|
||||||
MGN_default, // t 84 Tornado
|
|
||||||
MGN_default, // u 85 OVERLAID TRUCK
|
|
||||||
MGN_default, // v 86 OVERLAID Van
|
|
||||||
MGN_default, // w 87 Flooding
|
|
||||||
MGN_wreck, // x 88 Wreck or Obstruction ->X<-
|
|
||||||
MGN_default, // y 89 Skywarn
|
|
||||||
MGN_default, // z 90 OVERLAID Shelter
|
|
||||||
MGN_default, // { 91 Fog (& future ovrly codes)
|
|
||||||
MGN_default, // | 92 TNC Stream Switch
|
|
||||||
MGN_default, // } 93
|
|
||||||
MGN_default }; // ~ 94 TNC Stream Switch
|
|
||||||
|
|
20
mheard.h
20
mheard.h
|
@ -1,20 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
/* mheard.h */
|
|
||||||
|
|
||||||
#include "decode_aprs.h" // for decode_aprs_t
|
|
||||||
|
|
||||||
|
|
||||||
void mheard_init (int debug);
|
|
||||||
|
|
||||||
void mheard_save_rf (int chan, decode_aprs_t *A, packet_t pp, alevel_t alevel, retry_t retries);
|
|
||||||
|
|
||||||
void mheard_save_is (char *ptext);
|
|
||||||
|
|
||||||
int mheard_count (int max_hops, int time_limit);
|
|
||||||
|
|
||||||
int mheard_was_recently_nearby (char *role, char *callsign, int time_limit, int max_hops, double dlat, double dlon, double km);
|
|
||||||
|
|
||||||
void mheard_set_msp (char *callsign, int num);
|
|
||||||
|
|
||||||
int mheard_get_msp (char *callsign);
|
|
8
morse.h
8
morse.h
|
@ -1,8 +0,0 @@
|
||||||
/* morse.h */
|
|
||||||
|
|
||||||
int morse_init (struct audio_s *audio_config_p, int amp) ;
|
|
||||||
|
|
||||||
int morse_send (int chan, char *str, int wpm, int txdelay, int txtail);
|
|
||||||
|
|
||||||
#define MORSE_DEFAULT_WPM 10
|
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
/* multi_modem.h */
|
|
||||||
|
|
||||||
#ifndef MULTI_MODEM_H
|
|
||||||
#define MULTI_MODEM 1
|
|
||||||
|
|
||||||
/* Needed for typedef retry_t. */
|
|
||||||
#include "hdlc_rec2.h"
|
|
||||||
|
|
||||||
/* Needed for struct audio_s */
|
|
||||||
#include "audio.h"
|
|
||||||
|
|
||||||
|
|
||||||
void multi_modem_init (struct audio_s *pmodem);
|
|
||||||
|
|
||||||
void multi_modem_process_sample (int c, int audio_sample);
|
|
||||||
|
|
||||||
int multi_modem_get_dc_average (int chan);
|
|
||||||
|
|
||||||
// Deprecated. Replace with ...packet
|
|
||||||
void multi_modem_process_rec_frame (int chan, int subchan, int slice, unsigned char *fbuf, int flen, alevel_t alevel, retry_t retries, int is_fx25);
|
|
||||||
|
|
||||||
void multi_modem_process_rec_packet (int chan, int subchan, int slice, packet_t pp, alevel_t alevel, retry_t retries, int is_fx25);
|
|
||||||
|
|
||||||
#endif
|
|
13
pfilter.h
13
pfilter.h
|
@ -1,13 +0,0 @@
|
||||||
|
|
||||||
/* pfilter.h */
|
|
||||||
|
|
||||||
|
|
||||||
#include "igate.h" // for igate_config_s
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void pfilter_init (struct igate_config_s *p_igate_config, int debug_level);
|
|
||||||
|
|
||||||
int pfilter (int from_chan, int to_chan, char *filter, packet_t pp, int is_aprs);
|
|
||||||
|
|
||||||
int is_telem_metadata (char *infop);
|
|
26
ptt.h
26
ptt.h
|
@ -1,26 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
#ifndef PTT_H
|
|
||||||
#define PTT_H 1
|
|
||||||
|
|
||||||
|
|
||||||
#include "audio.h" /* for struct audio_s and definitions for octype values */
|
|
||||||
|
|
||||||
|
|
||||||
void ptt_set_debug(int debug);
|
|
||||||
|
|
||||||
void ptt_init (struct audio_s *p_modem);
|
|
||||||
|
|
||||||
void ptt_set (int octype, int chan, int ptt);
|
|
||||||
|
|
||||||
void ptt_term (void);
|
|
||||||
|
|
||||||
int get_input (int it, int chan);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* end ptt.h */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
6
recv.h
6
recv.h
|
@ -1,6 +0,0 @@
|
||||||
|
|
||||||
/* recv.h */
|
|
||||||
|
|
||||||
void recv_init (struct audio_s *pa);
|
|
||||||
|
|
||||||
void recv_process (void);
|
|
15
redecode.h
15
redecode.h
|
@ -1,15 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
#ifndef REDECODE_H
|
|
||||||
#define REDECODE_H 1
|
|
||||||
|
|
||||||
#include "rrbb.h"
|
|
||||||
|
|
||||||
|
|
||||||
extern void redecode_init (struct audio_s *p_audio_config);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* end redecode.h */
|
|
||||||
|
|
94
rpack.h
94
rpack.h
|
@ -1,94 +0,0 @@
|
||||||
|
|
||||||
/*------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* File: rpack.h
|
|
||||||
*
|
|
||||||
* Purpose: Definition of Garmin Rino message format.
|
|
||||||
*
|
|
||||||
* References: http://www.radio-active.net.au/web3/APRS/Resources/RINO
|
|
||||||
*
|
|
||||||
* http://www.radio-active.net.au/web3/APRS/Resources/RINO/OnAir
|
|
||||||
*
|
|
||||||
*---------------------------------------------------------------*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef RPACK_H
|
|
||||||
#define RPACK_H 1
|
|
||||||
|
|
||||||
|
|
||||||
#define RPACK_FRAME_LEN 168
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef RPACK_C /* Expose private details */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Transmission order is LSB first.
|
|
||||||
|
|
||||||
struct __attribute__((__packed__)) rpack_s {
|
|
||||||
|
|
||||||
int lat; // Latitude.
|
|
||||||
// Signed integer. Scaled by 2**30/90.
|
|
||||||
|
|
||||||
int lon; // Longitude. Same encoding.
|
|
||||||
|
|
||||||
char unknown1; // Unproven theory: altitude.
|
|
||||||
char unknown2;
|
|
||||||
|
|
||||||
unsigned name0:6; // 10 character name.
|
|
||||||
unsigned name1:6; // Bit packing is implementation dependent.
|
|
||||||
unsigned name2:6; // Should rewrite to be more portable.
|
|
||||||
unsigned name3:6;
|
|
||||||
unsigned name4:6;
|
|
||||||
unsigned name5:6;
|
|
||||||
unsigned name6:6;
|
|
||||||
unsigned name7:6;
|
|
||||||
unsigned name8:6;
|
|
||||||
unsigned name9:6;
|
|
||||||
|
|
||||||
unsigned symbol:5;
|
|
||||||
|
|
||||||
unsigned unknown3:7;
|
|
||||||
|
|
||||||
|
|
||||||
// unsigned crc:16; // Safe bet this is CRC for error checking.
|
|
||||||
|
|
||||||
unsigned char crc1;
|
|
||||||
unsigned char crc2;
|
|
||||||
|
|
||||||
char dummy[3]; // Total size should be 24 bytes if no gaps.
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#else /* Show only public interface. */
|
|
||||||
|
|
||||||
|
|
||||||
struct rpack_s {
|
|
||||||
char stuff[24];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void rpack_set_bit (struct rpack_s *rp, int position, int value);
|
|
||||||
|
|
||||||
int rpack_is_valid (struct rpack_s *rp);
|
|
||||||
|
|
||||||
int rpack_get_bit (struct rpack_s *rp, int position);
|
|
||||||
|
|
||||||
double rpack_get_lat (struct rpack_s *rp);
|
|
||||||
|
|
||||||
double rpack_get_lon (struct rpack_s *rp);
|
|
||||||
|
|
||||||
int rpack_get_symbol (struct rpack_s *rp);
|
|
||||||
|
|
||||||
void rpack_get_name (struct rpack_s *rp, char *str);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* end rpack.h */
|
|
||||||
|
|
92
rrbb.h
92
rrbb.h
|
@ -1,92 +0,0 @@
|
||||||
|
|
||||||
#ifndef RRBB_H
|
|
||||||
|
|
||||||
#define RRBB_H
|
|
||||||
|
|
||||||
|
|
||||||
#define FASTER13 1 // Don't pack 8 samples per byte.
|
|
||||||
|
|
||||||
|
|
||||||
//typedef short slice_t;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Maximum size (in bytes) of an AX.25 frame including the 2 octet FCS.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define MAX_FRAME_LEN ((AX25_MAX_PACKET_LEN) + 2)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Maximum number of bits in AX.25 frame excluding the flags.
|
|
||||||
* Adequate for extreme case of bit stuffing after every 5 bits
|
|
||||||
* which could never happen.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define MAX_NUM_BITS (MAX_FRAME_LEN * 8 * 6 / 5)
|
|
||||||
|
|
||||||
typedef struct rrbb_s {
|
|
||||||
int magic1;
|
|
||||||
struct rrbb_s* nextp; /* Next pointer to maintain a queue. */
|
|
||||||
|
|
||||||
int chan; /* Radio channel from which it was received. */
|
|
||||||
int subchan; /* Which modem when more than one per channel. */
|
|
||||||
int slice; /* Which slicer. */
|
|
||||||
|
|
||||||
alevel_t alevel; /* Received audio level at time of frame capture. */
|
|
||||||
unsigned int len; /* Current number of samples in array. */
|
|
||||||
|
|
||||||
int is_scrambled; /* Is data scrambled G3RUH / K9NG style? */
|
|
||||||
int descram_state; /* Descrambler state before first data bit of frame. */
|
|
||||||
int prev_descram; /* Previous descrambled bit. */
|
|
||||||
|
|
||||||
unsigned char fdata[MAX_NUM_BITS];
|
|
||||||
|
|
||||||
int magic2;
|
|
||||||
} *rrbb_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
rrbb_t rrbb_new (int chan, int subchan, int slice, int is_scrambled, int descram_state, int prev_descram);
|
|
||||||
|
|
||||||
void rrbb_clear (rrbb_t b, int is_scrambled, int descram_state, int prev_descram);
|
|
||||||
|
|
||||||
|
|
||||||
static inline /*__attribute__((always_inline))*/ void rrbb_append_bit (rrbb_t b, const unsigned char val)
|
|
||||||
{
|
|
||||||
if (b->len >= MAX_NUM_BITS) {
|
|
||||||
return; /* Silently discard if full. */
|
|
||||||
}
|
|
||||||
b->fdata[b->len] = val;
|
|
||||||
b->len++;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline /*__attribute__((always_inline))*/ unsigned char rrbb_get_bit (const rrbb_t b, const int ind)
|
|
||||||
{
|
|
||||||
return (b->fdata[ind]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void rrbb_chop8 (rrbb_t b);
|
|
||||||
|
|
||||||
int rrbb_get_len (rrbb_t b);
|
|
||||||
|
|
||||||
//void rrbb_flip_bit (rrbb_t b, unsigned int ind);
|
|
||||||
|
|
||||||
void rrbb_delete (rrbb_t b);
|
|
||||||
|
|
||||||
void rrbb_set_nextp (rrbb_t b, rrbb_t np);
|
|
||||||
rrbb_t rrbb_get_nextp (rrbb_t b);
|
|
||||||
|
|
||||||
int rrbb_get_chan (rrbb_t b);
|
|
||||||
int rrbb_get_subchan (rrbb_t b);
|
|
||||||
int rrbb_get_slice (rrbb_t b);
|
|
||||||
|
|
||||||
void rrbb_set_audio_level (rrbb_t b, alevel_t alevel);
|
|
||||||
alevel_t rrbb_get_audio_level (rrbb_t b);
|
|
||||||
|
|
||||||
int rrbb_get_is_scrambled (rrbb_t b);
|
|
||||||
int rrbb_get_descram_state (rrbb_t b);
|
|
||||||
int rrbb_get_prev_descram (rrbb_t b);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,32 +0,0 @@
|
||||||
/* serial_port.h */
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef SERIAL_PORT_H
|
|
||||||
#define SERIAL_PORT_H 1
|
|
||||||
|
|
||||||
|
|
||||||
#if __WIN32__
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
typedef HANDLE MYFDTYPE;
|
|
||||||
#define MYFDERROR INVALID_HANDLE_VALUE
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
typedef int MYFDTYPE;
|
|
||||||
#define MYFDERROR (-1)
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
extern MYFDTYPE serial_port_open (char *devicename, int baud);
|
|
||||||
|
|
||||||
extern int serial_port_write (MYFDTYPE fd, char *str, int len);
|
|
||||||
|
|
||||||
extern int serial_port_get1 (MYFDTYPE fd);
|
|
||||||
|
|
||||||
extern void serial_port_close (MYFDTYPE fd);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
32
server.h
32
server.h
|
@ -1,32 +0,0 @@
|
||||||
|
|
||||||
/*
|
|
||||||
* Name: server.h
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "ax25_pad.h" /* for packet_t */
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
|
|
||||||
void server_set_debug (int n);
|
|
||||||
|
|
||||||
void server_init (struct audio_s *audio_config_p, struct misc_config_s *misc_config);
|
|
||||||
|
|
||||||
void server_send_rec_packet (int chan, packet_t pp, unsigned char *fbuf, int flen);
|
|
||||||
|
|
||||||
void server_send_monitored (int chan, packet_t pp, int own_xmit);
|
|
||||||
|
|
||||||
int server_callsign_registered_by_client (char *callsign);
|
|
||||||
|
|
||||||
|
|
||||||
void server_link_established (int chan, int client, char *remote_call, char *own_call, int incoming);
|
|
||||||
|
|
||||||
void server_link_terminated (int chan, int client, char *remote_call, char *own_call, int timeout);
|
|
||||||
|
|
||||||
void server_rec_conn_data (int chan, int client, char *remote_call, char *own_call, int pid, char *data_ptr, int data_len);
|
|
||||||
|
|
||||||
void server_outstanding_frames_reply (int chan, int client, char *own_call, char *remote_call, int count);
|
|
||||||
|
|
||||||
|
|
||||||
/* end server.h */
|
|
19
sm_main.c
19
sm_main.c
|
@ -27,7 +27,6 @@ void make_core_BPF(UCHAR snd_ch, short freq, short width);
|
||||||
void make_core_TXBPF(UCHAR snd_ch, float freq, float width);
|
void make_core_TXBPF(UCHAR snd_ch, float freq, float width);
|
||||||
void make_core_INTR(UCHAR snd_ch);
|
void make_core_INTR(UCHAR snd_ch);
|
||||||
void make_core_LPF(UCHAR snd_ch, short width);
|
void make_core_LPF(UCHAR snd_ch, short width);
|
||||||
void wf_pointer(int snd_ch);
|
|
||||||
void dw9600ProcessSample(int snd_ch, short Sample);
|
void dw9600ProcessSample(int snd_ch, short Sample);
|
||||||
void init_RUH48(int snd_ch);
|
void init_RUH48(int snd_ch);
|
||||||
void init_RUH96(int snd_ch);
|
void init_RUH96(int snd_ch);
|
||||||
|
@ -65,11 +64,8 @@ int TXPort = 8884;
|
||||||
|
|
||||||
BOOL Firstwaterfall = 1;
|
BOOL Firstwaterfall = 1;
|
||||||
BOOL Secondwaterfall = 1;
|
BOOL Secondwaterfall = 1;
|
||||||
|
|
||||||
int multiCore = FALSE;
|
int multiCore = FALSE;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BOOL MinOnStart = 0;
|
BOOL MinOnStart = 0;
|
||||||
//RS TReedSolomon;
|
//RS TReedSolomon;
|
||||||
// Form1 TForm1;
|
// Form1 TForm1;
|
||||||
|
@ -728,7 +724,7 @@ void init_speed(int snd_ch)
|
||||||
form1.show_freq_a;
|
form1.show_freq_a;
|
||||||
form1.show_freq_b;
|
form1.show_freq_b;
|
||||||
*/
|
*/
|
||||||
wf_pointer(snd_ch);
|
NeedWaterfallHeaders = TRUE;
|
||||||
|
|
||||||
CheckPSKWindows();
|
CheckPSKWindows();
|
||||||
}
|
}
|
||||||
|
@ -863,6 +859,8 @@ void runModemthread(void * param)
|
||||||
|
|
||||||
// I think this processes a buffer of samples
|
// I think this processes a buffer of samples
|
||||||
|
|
||||||
|
int Toggle = 0;
|
||||||
|
|
||||||
void BufferFull(short * Samples, int nSamples) // These are Stereo Samples
|
void BufferFull(short * Samples, int nSamples) // These are Stereo Samples
|
||||||
{
|
{
|
||||||
word i, i1, j;
|
word i, i1, j;
|
||||||
|
@ -1064,6 +1062,8 @@ void BufferFull(short * Samples, int nSamples) // These are Stereo Samples
|
||||||
|
|
||||||
// Collect samples for both channels if needed
|
// Collect samples for both channels if needed
|
||||||
|
|
||||||
|
Toggle++;
|
||||||
|
|
||||||
Needed = FFTSize - fftCount;
|
Needed = FFTSize - fftCount;
|
||||||
|
|
||||||
if (Needed <= rx_bufsize)
|
if (Needed <= rx_bufsize)
|
||||||
|
@ -1076,7 +1076,8 @@ void BufferFull(short * Samples, int nSamples) // These are Stereo Samples
|
||||||
data1 += 2;
|
data1 += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
doWaterfall(FirstWaterfallChan);
|
if ((Toggle & 1) || (UsingBothChannels == 0))
|
||||||
|
doWaterfall(FirstWaterfallChan);
|
||||||
|
|
||||||
if (data2)
|
if (data2)
|
||||||
{
|
{
|
||||||
|
@ -1085,9 +1086,13 @@ void BufferFull(short * Samples, int nSamples) // These are Stereo Samples
|
||||||
*ptr2++ = *data2;
|
*ptr2++ = *data2;
|
||||||
data2 += 2;
|
data2 += 2;
|
||||||
}
|
}
|
||||||
doWaterfall(1);
|
if (((Toggle & 1) == 0))
|
||||||
|
doWaterfall(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Firstwaterfall || Secondwaterfall)
|
||||||
|
displayWaterfall();
|
||||||
|
|
||||||
remainingSamples = rx_bufsize - Needed;
|
remainingSamples = rx_bufsize - Needed;
|
||||||
fftCount = 0;
|
fftCount = 0;
|
||||||
|
|
||||||
|
|
19
symbols.h
19
symbols.h
|
@ -1,19 +0,0 @@
|
||||||
|
|
||||||
/* symbols.h */
|
|
||||||
|
|
||||||
void symbols_init (void);
|
|
||||||
|
|
||||||
void symbols_list (void);
|
|
||||||
|
|
||||||
void symbols_from_dest_or_src (char dti, char *src, char *dest, char *symtab, char *symbol);
|
|
||||||
|
|
||||||
int symbols_into_dest (char symtab, char symbol, char *dest);
|
|
||||||
|
|
||||||
void symbols_get_description (char symtab, char symbol, char *description, size_t desc_size);
|
|
||||||
|
|
||||||
int symbols_code_from_description (char overlay, char *description, char *symtab, char *symbol);
|
|
||||||
|
|
||||||
void symbols_to_tones (char symtab, char symbol, char *tones, size_t tonessize);
|
|
||||||
|
|
||||||
|
|
||||||
/* end symbols.h */
|
|
15
telemetry.h
15
telemetry.h
|
@ -1,15 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
/* telemetry.h */
|
|
||||||
|
|
||||||
void telemetry_data_original (char *station, char *info, int quiet, char *output, size_t outputsize, char *comment, size_t commentsize);
|
|
||||||
|
|
||||||
void telemetry_data_base91 (char *station, char *cdata, char *output, size_t outputsize);
|
|
||||||
|
|
||||||
void telemetry_name_message (char *station, char *msg);
|
|
||||||
|
|
||||||
void telemetry_unit_label_message (char *station, char *msg);
|
|
||||||
|
|
||||||
void telemetry_coefficents_message (char *station, char *msg, int quiet);
|
|
||||||
|
|
||||||
void telemetry_bit_sense_message (char *station, char *msg, int quiet);
|
|
41
tq.h
41
tq.h
|
@ -1,41 +0,0 @@
|
||||||
|
|
||||||
/*------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* Module: tq.h
|
|
||||||
*
|
|
||||||
* Purpose: Transmit queue - hold packets for transmission until the channel is clear.
|
|
||||||
*
|
|
||||||
*---------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#ifndef TQ_H
|
|
||||||
#define TQ_H 1
|
|
||||||
|
|
||||||
#include "ax25_pad.h"
|
|
||||||
#include "audio.h"
|
|
||||||
|
|
||||||
#define TQ_NUM_PRIO 2 /* Number of priorities. */
|
|
||||||
|
|
||||||
#define TQ_PRIO_0_HI 0
|
|
||||||
#define TQ_PRIO_1_LO 1
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void tq_init (struct audio_s *audio_config_p);
|
|
||||||
|
|
||||||
void tq_append (int chan, int prio, packet_t pp);
|
|
||||||
|
|
||||||
void lm_data_request (int chan, int prio, packet_t pp);
|
|
||||||
|
|
||||||
void lm_seize_request (int chan);
|
|
||||||
|
|
||||||
void tq_wait_while_empty (int chan);
|
|
||||||
|
|
||||||
packet_t tq_remove (int chan, int prio);
|
|
||||||
|
|
||||||
packet_t tq_peek (int chan, int prio);
|
|
||||||
|
|
||||||
int tq_count (int chan, int prio, char *source, char *dest, int bytes);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* end tq.h */
|
|
38
tt_text.h
38
tt_text.h
|
@ -1,38 +0,0 @@
|
||||||
|
|
||||||
/* tt_text.h */
|
|
||||||
|
|
||||||
|
|
||||||
/* Encode normal human readable to DTMF representation. */
|
|
||||||
|
|
||||||
int tt_text_to_multipress (const char *text, int quiet, char *buttons);
|
|
||||||
|
|
||||||
int tt_text_to_two_key (const char *text, int quiet, char *buttons);
|
|
||||||
|
|
||||||
int tt_text_to_call10 (const char *text, int quiet, char *buttons);
|
|
||||||
|
|
||||||
int tt_text_to_mhead (const char *text, int quiet, char *buttons, size_t buttonsiz);
|
|
||||||
|
|
||||||
int tt_text_to_satsq (const char *text, int quiet, char *buttons, size_t buttonsiz);
|
|
||||||
|
|
||||||
int tt_text_to_ascii2d (const char *text, int quiet, char *buttons);
|
|
||||||
|
|
||||||
|
|
||||||
/* Decode DTMF to normal human readable form. */
|
|
||||||
|
|
||||||
int tt_multipress_to_text (const char *buttons, int quiet, char *text);
|
|
||||||
|
|
||||||
int tt_two_key_to_text (const char *buttons, int quiet, char *text);
|
|
||||||
|
|
||||||
int tt_call10_to_text (const char *buttons, int quiet, char *text);
|
|
||||||
|
|
||||||
int tt_call5_suffix_to_text (const char *buttons, int quiet, char *text);
|
|
||||||
|
|
||||||
int tt_mhead_to_text (const char *buttons, int quiet, char *text, size_t textsiz);
|
|
||||||
|
|
||||||
int tt_satsq_to_text (const char *buttons, int quiet, char *text);
|
|
||||||
|
|
||||||
int tt_ascii2d_to_text (const char *buttons, int quiet, char *text);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* end tt_text.h */
|
|
15
tt_user.h
15
tt_user.h
|
@ -1,15 +0,0 @@
|
||||||
|
|
||||||
/* tt_user.h */
|
|
||||||
|
|
||||||
|
|
||||||
#include "audio.h"
|
|
||||||
|
|
||||||
void tt_user_init (struct audio_s *p_audio_config, struct tt_config_s *p);
|
|
||||||
|
|
||||||
int tt_user_heard (char *callsign, int ssid, char overlay, char symbol, char *loc_text, double latitude,
|
|
||||||
double longitude, int ambiguity, char *freq, char *ctcss, char *comment, char mic_e, char *dao);
|
|
||||||
|
|
||||||
int tt_3char_suffix_search (char *suffix, char *callsign);
|
|
||||||
|
|
||||||
void tt_user_background (void);
|
|
||||||
void tt_user_dump (void);
|
|
21
version.h
21
version.h
|
@ -1,21 +0,0 @@
|
||||||
|
|
||||||
/* Dire Wolf version 1.6 */
|
|
||||||
|
|
||||||
// Put in destination field to identify the equipment used.
|
|
||||||
|
|
||||||
#define APP_TOCALL "APDW" // Assigned by WB4APR in tocalls.txt
|
|
||||||
|
|
||||||
// This now comes from compile command line options.
|
|
||||||
|
|
||||||
//#define MAJOR_VERSION 1
|
|
||||||
//#define MINOR_VERSION 6
|
|
||||||
//#define EXTRA_VERSION "Beta Test"
|
|
||||||
|
|
||||||
|
|
||||||
// For user-defined data format.
|
|
||||||
// APRS protocol spec Chapter 18 and http://www.aprs.org/aprs11/expfmts.txt
|
|
||||||
|
|
||||||
#define USER_DEF_USER_ID 'D' // user id D for direwolf
|
|
||||||
|
|
||||||
#define USER_DEF_TYPE_AIS 'A' // data type A for AIS NMEA sentence
|
|
||||||
#define USER_DEF_TYPE_EAS 'E' // data type E for EAS broadcasts
|
|
24
waypoint.h
24
waypoint.h
|
@ -1,24 +0,0 @@
|
||||||
|
|
||||||
/*
|
|
||||||
* Name: waypoint.h
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "ax25_pad.h" /* for packet_t */
|
|
||||||
|
|
||||||
#include "config.h" /* for struct misc_config_s */
|
|
||||||
|
|
||||||
|
|
||||||
void waypoint_init (struct misc_config_s *misc_config);
|
|
||||||
|
|
||||||
void waypoint_set_debug (int n);
|
|
||||||
|
|
||||||
void waypoint_send_sentence (char *wname_in, double dlat, double dlong, char symtab, char symbol,
|
|
||||||
float alt, float course, float speed, char *comment_in);
|
|
||||||
|
|
||||||
void waypoint_send_ais (char *sentence);
|
|
||||||
|
|
||||||
void waypoint_term ();
|
|
||||||
|
|
||||||
|
|
||||||
/* end waypoint.h */
|
|
32
xid.h
32
xid.h
|
@ -1,32 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
/* xid.h */
|
|
||||||
|
|
||||||
|
|
||||||
#include "ax25_pad.h" // for enum ax25_modulo_e
|
|
||||||
|
|
||||||
|
|
||||||
struct xid_param_s {
|
|
||||||
|
|
||||||
int full_duplex;
|
|
||||||
|
|
||||||
// Order is important because negotiation keeps the lower value of
|
|
||||||
// REJ (srej_none), SREJ (default without negotiation), Multi-SREJ (if both agree).
|
|
||||||
|
|
||||||
enum srej_e { srej_none=0, srej_single=1, srej_multi=2, srej_not_specified=3 } srej;
|
|
||||||
|
|
||||||
enum ax25_modulo_e modulo;
|
|
||||||
|
|
||||||
int i_field_length_rx; /* In bytes. XID has it in bits. */
|
|
||||||
|
|
||||||
int window_size_rx;
|
|
||||||
|
|
||||||
int ack_timer; /* "T1" in mSec. */
|
|
||||||
|
|
||||||
int retries; /* "N1" */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
int xid_parse (unsigned char *info, int info_len, struct xid_param_s *result, char *desc, int desc_size);
|
|
||||||
|
|
||||||
int xid_encode (struct xid_param_s *param, unsigned char *info, cmdres_t cr);
|
|
27
xmit.h
27
xmit.h
|
@ -1,27 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
#ifndef XMIT_H
|
|
||||||
#define XMIT_H 1
|
|
||||||
|
|
||||||
#include "audio.h" /* for struct audio_s */
|
|
||||||
|
|
||||||
|
|
||||||
extern void xmit_init (struct audio_s *p_modem, int debug_xmit_packet);
|
|
||||||
|
|
||||||
extern void xmit_set_txdelay (int channel, int value);
|
|
||||||
|
|
||||||
extern void xmit_set_persist (int channel, int value);
|
|
||||||
|
|
||||||
extern void xmit_set_slottime (int channel, int value);
|
|
||||||
|
|
||||||
extern void xmit_set_txtail (int channel, int value);
|
|
||||||
|
|
||||||
extern void xmit_set_fulldup (int channel, int value);
|
|
||||||
|
|
||||||
|
|
||||||
extern int xmit_speak_it (char *script, int c, char *msg);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* end xmit.h */
|
|
||||||
|
|
Loading…
Reference in New Issue