Merge branch 'debian/latest' into raspbian/bullseye
This commit is contained in:
		
						commit
						6a25dc0295
					
				|  | @ -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
											
										
									
								
							|  | @ -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 | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										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 */ |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
							
								
								
									
										6
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							|  | @ -1,3 +1,9 @@ | ||||||
|  | qtsoundmodem (0.0.0.71-1) unstable; urgency=medium | ||||||
|  | 
 | ||||||
|  |   * New Upstream Release | ||||||
|  | 
 | ||||||
|  |  -- Dave Hibberd <d@vehibberd.com>  Sun, 17 Dec 2023 14:07:52 +0000 | ||||||
|  | 
 | ||||||
| qtsoundmodem (0.0.0.68-1~bpo11+1) bullseye; urgency=medium | qtsoundmodem (0.0.0.68-1~bpo11+1) bullseye; urgency=medium | ||||||
| 
 | 
 | ||||||
|   * Rebuild for bullseye. |   * Rebuild for bullseye. | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								debian/dirs
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								debian/dirs
									
									
									
									
										vendored
									
									
								
							|  | @ -1 +0,0 @@ | ||||||
| opt/oarc/QtSoundModem |  | ||||||
|  | @ -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); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										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 a new issue
	
	 Dave Hibberd
						Dave Hibberd