Font-dependent width in toolbar
This commit is contained in:
parent
bcb47717b5
commit
b636274b3b
256
Software/HelperTools/SignalIDSamplerates/.cproject
Normal file
256
Software/HelperTools/SignalIDSamplerates/.cproject
Normal file
@ -0,0 +1,256 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
|
||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||
|
||||
<cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.2118587971">
|
||||
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.2118587971" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||
|
||||
<externalSettings/>
|
||||
|
||||
<extensions>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
</extensions>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
|
||||
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.2118587971" name="Debug" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="cdt.managedbuild.config.gnu.exe.debug">
|
||||
|
||||
<folderInfo id="cdt.managedbuild.config.gnu.exe.debug.2118587971." name="/" resourcePath="">
|
||||
|
||||
<toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.1873591644" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.debug">
|
||||
|
||||
<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.1811214834" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/>
|
||||
|
||||
<builder buildPath="${workspace_loc:/SignalIDSamplerates}/Debug" id="cdt.managedbuild.target.gnu.builder.exe.debug.1564235544" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.debug"/>
|
||||
|
||||
<tool id="cdt.managedbuild.tool.gnu.archiver.base.1348364703" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
||||
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1167532039" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug">
|
||||
|
||||
<option id="gnu.cpp.compiler.exe.debug.option.optimization.level.1104651228" name="Optimization Level" superClass="gnu.cpp.compiler.exe.debug.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
|
||||
|
||||
<option defaultValue="gnu.cpp.compiler.debugging.level.max" id="gnu.cpp.compiler.exe.debug.option.debugging.level.1222841339" name="Debug Level" superClass="gnu.cpp.compiler.exe.debug.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/>
|
||||
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.266560721" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.2042313583" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug">
|
||||
|
||||
<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.exe.debug.option.optimization.level.1307505016" name="Optimization Level" superClass="gnu.c.compiler.exe.debug.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
|
||||
|
||||
<option defaultValue="gnu.c.debugging.level.max" id="gnu.c.compiler.exe.debug.option.debugging.level.1981297588" name="Debug Level" superClass="gnu.c.compiler.exe.debug.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/>
|
||||
|
||||
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.381929295" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.407773137" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/>
|
||||
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.1838910139" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug">
|
||||
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.121550916" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
|
||||
</inputType>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="cdt.managedbuild.tool.gnu.assembler.exe.debug.938829554" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.debug">
|
||||
|
||||
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1588140857" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||
|
||||
</tool>
|
||||
|
||||
</toolChain>
|
||||
|
||||
</folderInfo>
|
||||
|
||||
<sourceEntries>
|
||||
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
|
||||
|
||||
</sourceEntries>
|
||||
|
||||
</configuration>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
|
||||
</cconfiguration>
|
||||
|
||||
<cconfiguration id="cdt.managedbuild.config.gnu.exe.release.2067076035">
|
||||
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.release.2067076035" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||
|
||||
<externalSettings/>
|
||||
|
||||
<extensions>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
|
||||
</extensions>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
|
||||
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.release.2067076035" name="Release" optionalBuildProperties="" parent="cdt.managedbuild.config.gnu.exe.release">
|
||||
|
||||
<folderInfo id="cdt.managedbuild.config.gnu.exe.release.2067076035." name="/" resourcePath="">
|
||||
|
||||
<toolChain id="cdt.managedbuild.toolchain.gnu.exe.release.234790444" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.release">
|
||||
|
||||
<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.release.1733878166" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.release"/>
|
||||
|
||||
<builder buildPath="${workspace_loc:/SignalIDSamplerates}/Release" id="cdt.managedbuild.target.gnu.builder.exe.release.527109837" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.exe.release"/>
|
||||
|
||||
<tool id="cdt.managedbuild.tool.gnu.archiver.base.711380308" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
||||
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.405853418" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.exe.release">
|
||||
|
||||
<option id="gnu.cpp.compiler.exe.release.option.optimization.level.756591664" name="Optimization Level" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
|
||||
|
||||
<option defaultValue="gnu.cpp.compiler.debugging.level.none" id="gnu.cpp.compiler.exe.release.option.debugging.level.866507122" name="Debug Level" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/>
|
||||
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.388380894" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.1310733818" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release">
|
||||
|
||||
<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.779300110" name="Optimization Level" superClass="gnu.c.compiler.exe.release.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
|
||||
|
||||
<option defaultValue="gnu.c.debugging.level.none" id="gnu.c.compiler.exe.release.option.debugging.level.1906990630" name="Debug Level" superClass="gnu.c.compiler.exe.release.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/>
|
||||
|
||||
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1517881410" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.1210134901" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/>
|
||||
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.release.278742790" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.release">
|
||||
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1368940988" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
|
||||
</inputType>
|
||||
|
||||
</tool>
|
||||
|
||||
<tool id="cdt.managedbuild.tool.gnu.assembler.exe.release.1281186340" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.exe.release">
|
||||
|
||||
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.902387081" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||
|
||||
</tool>
|
||||
|
||||
</toolChain>
|
||||
|
||||
</folderInfo>
|
||||
|
||||
<sourceEntries>
|
||||
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
|
||||
|
||||
</sourceEntries>
|
||||
|
||||
</configuration>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
|
||||
</cconfiguration>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
|
||||
<project id="SignalIDSamplerates.cdt.managedbuild.target.gnu.exe.1278463665" name="Executable" projectType="cdt.managedbuild.target.gnu.exe"/>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.2067076035;cdt.managedbuild.config.gnu.exe.release.2067076035.;cdt.managedbuild.tool.gnu.c.compiler.exe.release.1310733818;cdt.managedbuild.tool.gnu.c.compiler.input.1517881410">
|
||||
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
|
||||
</scannerConfigBuildInfo>
|
||||
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.2118587971;cdt.managedbuild.config.gnu.exe.debug.2118587971.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.debug.1167532039;cdt.managedbuild.tool.gnu.cpp.compiler.input.266560721">
|
||||
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
|
||||
</scannerConfigBuildInfo>
|
||||
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.debug.2118587971;cdt.managedbuild.config.gnu.exe.debug.2118587971.;cdt.managedbuild.tool.gnu.c.compiler.exe.debug.2042313583;cdt.managedbuild.tool.gnu.c.compiler.input.381929295">
|
||||
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
|
||||
</scannerConfigBuildInfo>
|
||||
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.exe.release.2067076035;cdt.managedbuild.config.gnu.exe.release.2067076035.;cdt.managedbuild.tool.gnu.cpp.compiler.exe.release.405853418;cdt.managedbuild.tool.gnu.cpp.compiler.input.388380894">
|
||||
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
|
||||
</scannerConfigBuildInfo>
|
||||
|
||||
</storageModule>
|
||||
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
|
||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||
|
||||
<storageModule moduleId="refreshScope" versionNumber="2">
|
||||
|
||||
<configuration configurationName="Debug">
|
||||
|
||||
<resource resourceType="PROJECT" workspacePath="/SignalIDSamplerates"/>
|
||||
|
||||
</configuration>
|
||||
|
||||
<configuration configurationName="Release">
|
||||
|
||||
<resource resourceType="PROJECT" workspacePath="/SignalIDSamplerates"/>
|
||||
|
||||
</configuration>
|
||||
|
||||
</storageModule>
|
||||
|
||||
</cproject>
|
1
Software/HelperTools/SignalIDSamplerates/.gitignore
vendored
Normal file
1
Software/HelperTools/SignalIDSamplerates/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/Debug/
|
27
Software/HelperTools/SignalIDSamplerates/.project
Normal file
27
Software/HelperTools/SignalIDSamplerates/.project
Normal file
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>SignalIDSamplerates</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<triggers>clean,full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<project>
|
||||
|
||||
<configuration id="cdt.managedbuild.config.gnu.exe.debug.2118587971" name="Debug">
|
||||
|
||||
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
|
||||
|
||||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
||||
|
||||
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
|
||||
|
||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||
|
||||
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-580598439797579494" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||
|
||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||
|
||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||
|
||||
</provider>
|
||||
|
||||
</extension>
|
||||
|
||||
</configuration>
|
||||
|
||||
<configuration id="cdt.managedbuild.config.gnu.exe.release.2067076035" name="Release">
|
||||
|
||||
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
|
||||
|
||||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
||||
|
||||
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
|
||||
|
||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||
|
||||
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-580598439797579494" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||
|
||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||
|
||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||
|
||||
</provider>
|
||||
|
||||
</extension>
|
||||
|
||||
</configuration>
|
||||
|
||||
</project>
|
@ -0,0 +1,117 @@
|
||||
//============================================================================
|
||||
// Name : SignalIDSamplerates.cpp
|
||||
// Author :
|
||||
// Version :
|
||||
// Copyright : Your copyright notice
|
||||
// Description : Hello World in C++, Ansi-style
|
||||
//============================================================================
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <cstdlib>
|
||||
#include <limits>
|
||||
using namespace std;
|
||||
|
||||
constexpr int32_t freqRange = 20000000;
|
||||
constexpr int32_t freqStep = 4000;
|
||||
constexpr int32_t FPGA_CLK = 102400000;
|
||||
constexpr int32_t IF_freq = 250000;
|
||||
constexpr int32_t minAliasDistance = 100000;
|
||||
|
||||
constexpr uint8_t minPrescaler = 112;
|
||||
constexpr uint8_t maxPrescaler = 180;
|
||||
constexpr uint8_t maxPrescalers = 5;
|
||||
|
||||
int bestDistance;
|
||||
vector<int> bestPrescalers;
|
||||
|
||||
int Alias(int f, int f_s) {
|
||||
// move into f_s range
|
||||
f %= f_s;
|
||||
if (f < 0) {
|
||||
f += f_s;
|
||||
}
|
||||
// fold at half the samplerate
|
||||
if(f >= f_s / 2) {
|
||||
f = f_s - f;
|
||||
}
|
||||
return f;
|
||||
}
|
||||
|
||||
int DistanceToIF(double f, double f_s) {
|
||||
auto alias = Alias(f, f_s);
|
||||
return abs(int(alias - IF_freq));
|
||||
}
|
||||
|
||||
int farthestDistanceForFrequency(double f, vector<int> &prescalers) {
|
||||
int highestDistance = numeric_limits<int>::min();
|
||||
|
||||
for(auto p : prescalers) {
|
||||
double f_s = (double) FPGA_CLK / p;
|
||||
auto dist = DistanceToIF(f, f_s);
|
||||
if(dist > highestDistance) {
|
||||
highestDistance = dist;
|
||||
}
|
||||
}
|
||||
return highestDistance;
|
||||
}
|
||||
|
||||
void checkPrescalers(vector<int> &prescalers) {
|
||||
// cout << "Checking [" << prescalers[0];
|
||||
// for (auto i = prescalers.begin() + 1; i != prescalers.end(); i++) {
|
||||
// cout << ',' << *i;
|
||||
// }
|
||||
// cout << "]... ";
|
||||
int lowestDistance = numeric_limits<int>::max();
|
||||
for(int freq = minAliasDistance + freqStep;freq < freqRange; freq += freqStep) {
|
||||
int dist = farthestDistanceForFrequency(IF_freq + freq, prescalers);
|
||||
if(dist < lowestDistance) {
|
||||
lowestDistance = dist;
|
||||
}
|
||||
if(freq > 2*IF_freq + minAliasDistance) {
|
||||
int dist = farthestDistanceForFrequency(IF_freq - freq, prescalers);
|
||||
if(dist < lowestDistance) {
|
||||
lowestDistance = dist;
|
||||
}
|
||||
}
|
||||
if(lowestDistance < bestDistance) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// cout << lowestDistance << endl;
|
||||
if(lowestDistance > bestDistance) {
|
||||
bestDistance = lowestDistance;
|
||||
bestPrescalers = prescalers;
|
||||
}
|
||||
}
|
||||
|
||||
void recursivePrescalersTest(vector<int> &prescalers, int depth) {
|
||||
if(prescalers.size() >= depth) {
|
||||
checkPrescalers(prescalers);
|
||||
} else {
|
||||
prescalers.push_back(0);
|
||||
int start = minPrescaler;
|
||||
if(prescalers.size() > 1) {
|
||||
start = prescalers[prescalers.size() - 2] + 1;
|
||||
}
|
||||
for (int i = start; i <= maxPrescaler; i++) {
|
||||
prescalers.back() = i;
|
||||
recursivePrescalersTest(prescalers, depth);
|
||||
}
|
||||
prescalers.pop_back();
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
vector<int> prescalers = {112};
|
||||
for(int d = 2;d<=maxPrescalers;d++) {
|
||||
bestDistance = 0;
|
||||
recursivePrescalersTest(prescalers, d);
|
||||
cout << "Depth " << d <<": best distance: " << bestDistance << " Prescalers: [" << bestPrescalers[0];
|
||||
for (auto i = bestPrescalers.begin() + 1; i != bestPrescalers.end(); i++) {
|
||||
cout << ',' << *i;
|
||||
}
|
||||
cout << "]" << endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -87,13 +87,7 @@ bool SIUnitEdit::eventFilter(QObject *, QEvent *event)
|
||||
} else if(event->type() == QEvent::FocusIn) {
|
||||
// online found clumsy way to select all text when clicked!?!
|
||||
// just selectAll() alone does _not_ work!
|
||||
QTimer::singleShot(0, this, &QLineEdit::selectAll);
|
||||
/*
|
||||
* However, this widget does not loose focus when clicking on a smith chart from here
|
||||
* At the same time, clicking on x-y plot does loose focus as expected
|
||||
* This behaviour existed before this mod, but it was not obvious due to properties of placeholdertext
|
||||
*/
|
||||
|
||||
QTimer::singleShot(0, this, &SIUnitEdit::continueEditing);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -102,8 +96,7 @@ void SIUnitEdit::setValueQuiet(double value)
|
||||
{
|
||||
_value = value;
|
||||
clear();
|
||||
setPlaceholderText(Unit::ToString(value, unit, prefixes, precision)); // didn't remove it because maybe needed elsewhere
|
||||
setText(Unit::ToString(value, unit, prefixes, precision)); // because selectAll() only affects setText() (placeholder text is igonred)
|
||||
setPlaceholderText(Unit::ToString(value, unit, prefixes, precision));
|
||||
}
|
||||
|
||||
void SIUnitEdit::parseNewValue(double factor)
|
||||
@ -130,7 +123,7 @@ void SIUnitEdit::parseNewValue(double factor)
|
||||
} else {
|
||||
qWarning() << "SIUnit conversion failure:" << input;
|
||||
}
|
||||
// clear(); // removed due to funny behaviour when clicking repeatedly between start, center, span, stop, but without editing anything
|
||||
clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,9 +24,10 @@ signals:
|
||||
void focusLost();
|
||||
protected:
|
||||
bool eventFilter(QObject *obj, QEvent *event) override;
|
||||
private slots:
|
||||
void continueEditing();
|
||||
private:
|
||||
void parseNewValue(double factor);
|
||||
void continueEditing();
|
||||
QString unit, prefixes;
|
||||
int precision;
|
||||
double _value;
|
||||
|
@ -73,7 +73,9 @@ SpectrumAnalyzer::SpectrumAnalyzer(AppWindow *window)
|
||||
// Sweep toolbar
|
||||
auto tb_sweep = new QToolBar("Sweep");
|
||||
auto eStart = new SIUnitEdit("Hz", " kMG", 6);
|
||||
eStart->setFixedWidth(100);
|
||||
// calculate width required with expected string length
|
||||
auto width = QFontMetrics(eStart->font()).width("3.00000GHz") + 15;
|
||||
eStart->setFixedWidth(width);
|
||||
eStart->setToolTip("Start frequency");
|
||||
connect(eStart, &SIUnitEdit::valueChanged, this, &SpectrumAnalyzer::SetStartFreq);
|
||||
connect(this, &SpectrumAnalyzer::startFreqChanged, eStart, &SIUnitEdit::setValueQuiet);
|
||||
@ -81,7 +83,7 @@ SpectrumAnalyzer::SpectrumAnalyzer(AppWindow *window)
|
||||
tb_sweep->addWidget(eStart);
|
||||
|
||||
auto eCenter = new SIUnitEdit("Hz", " kMG", 6);
|
||||
eCenter->setFixedWidth(100);
|
||||
eCenter->setFixedWidth(width);
|
||||
eCenter->setToolTip("Center frequency");
|
||||
connect(eCenter, &SIUnitEdit::valueChanged, this, &SpectrumAnalyzer::SetCenterFreq);
|
||||
connect(this, &SpectrumAnalyzer::centerFreqChanged, eCenter, &SIUnitEdit::setValueQuiet);
|
||||
@ -89,7 +91,7 @@ SpectrumAnalyzer::SpectrumAnalyzer(AppWindow *window)
|
||||
tb_sweep->addWidget(eCenter);
|
||||
|
||||
auto eStop = new SIUnitEdit("Hz", " kMG", 6);
|
||||
eStop->setFixedWidth(100);
|
||||
eStop->setFixedWidth(width);
|
||||
eStop->setToolTip("Stop frequency");
|
||||
connect(eStop, &SIUnitEdit::valueChanged, this, &SpectrumAnalyzer::SetStopFreq);
|
||||
connect(this, &SpectrumAnalyzer::stopFreqChanged, eStop, &SIUnitEdit::setValueQuiet);
|
||||
@ -97,7 +99,7 @@ SpectrumAnalyzer::SpectrumAnalyzer(AppWindow *window)
|
||||
tb_sweep->addWidget(eStop);
|
||||
|
||||
auto eSpan = new SIUnitEdit("Hz", " kMG", 6);
|
||||
eSpan->setFixedWidth(100);
|
||||
eSpan->setFixedWidth(width);
|
||||
eSpan->setToolTip("Span");
|
||||
connect(eSpan, &SIUnitEdit::valueChanged, this, &SpectrumAnalyzer::SetSpan);
|
||||
connect(this, &SpectrumAnalyzer::spanChanged, eSpan, &SIUnitEdit::setValueQuiet);
|
||||
@ -212,7 +214,7 @@ SpectrumAnalyzer::SpectrumAnalyzer(AppWindow *window)
|
||||
tb_trackgen->addWidget(dbm);
|
||||
|
||||
auto tgOffset = new SIUnitEdit("Hz", " kMG", 6);
|
||||
tgOffset->setFixedWidth(100);
|
||||
tgOffset->setFixedWidth(width);
|
||||
tgOffset->setToolTip("Tracking generator offset");
|
||||
connect(tgOffset, &SIUnitEdit::valueChanged, this, &SpectrumAnalyzer::SetTGOffset);
|
||||
connect(this, &SpectrumAnalyzer::TGOffsetChanged, tgOffset, &SIUnitEdit::setValueQuiet);
|
||||
@ -223,7 +225,7 @@ SpectrumAnalyzer::SpectrumAnalyzer(AppWindow *window)
|
||||
tb_trackgen->addWidget(normalize.enable);
|
||||
connect(normalize.enable, &QCheckBox::toggled, this, &SpectrumAnalyzer::EnableNormalization);
|
||||
normalize.Level = new SIUnitEdit("dBm", " ", 3);
|
||||
normalize.Level->setFixedWidth(100);
|
||||
normalize.Level->setFixedWidth(width);
|
||||
normalize.Level->setValue(0);
|
||||
normalize.Level->setToolTip("Level to normalize to");
|
||||
tb_trackgen->addWidget(new QLabel("To:"));
|
||||
|
@ -171,10 +171,11 @@ VNA::VNA(AppWindow *window)
|
||||
|
||||
|
||||
// Sweep toolbar
|
||||
int wid = 80; // propose slight reduction, to fit more widgets comfortably
|
||||
auto tb_sweep = new QToolBar("Sweep");
|
||||
auto eStart = new SIUnitEdit("Hz", " kMG", 6);
|
||||
eStart->setFixedWidth(wid);
|
||||
// calculate width required with expected string length
|
||||
auto width = QFontMetrics(eStart->font()).width("3.00000GHz") + 15;
|
||||
eStart->setFixedWidth(width);
|
||||
eStart->setToolTip("Start frequency");
|
||||
connect(eStart, &SIUnitEdit::valueChanged, this, &VNA::SetStartFreq);
|
||||
connect(this, &VNA::startFreqChanged, eStart, &SIUnitEdit::setValueQuiet);
|
||||
@ -182,7 +183,7 @@ VNA::VNA(AppWindow *window)
|
||||
tb_sweep->addWidget(eStart);
|
||||
|
||||
auto eCenter = new SIUnitEdit("Hz", " kMG", 6);
|
||||
eCenter->setFixedWidth(wid);
|
||||
eCenter->setFixedWidth(width);
|
||||
eCenter->setToolTip("Center frequency");
|
||||
connect(eCenter, &SIUnitEdit::valueChanged, this, &VNA::SetCenterFreq);
|
||||
connect(this, &VNA::centerFreqChanged, eCenter, &SIUnitEdit::setValueQuiet);
|
||||
@ -190,7 +191,7 @@ VNA::VNA(AppWindow *window)
|
||||
tb_sweep->addWidget(eCenter);
|
||||
|
||||
auto eStop = new SIUnitEdit("Hz", " kMG", 6);
|
||||
eStop->setFixedWidth(wid);
|
||||
eStop->setFixedWidth(width);
|
||||
eStop->setToolTip("Stop frequency");
|
||||
connect(eStop, &SIUnitEdit::valueChanged, this, &VNA::SetStopFreq);
|
||||
connect(this, &VNA::stopFreqChanged, eStop, &SIUnitEdit::setValueQuiet);
|
||||
@ -198,7 +199,7 @@ VNA::VNA(AppWindow *window)
|
||||
tb_sweep->addWidget(eStop);
|
||||
|
||||
auto eSpan = new SIUnitEdit("Hz", " kMG", 6);
|
||||
eSpan->setFixedWidth(wid);
|
||||
eSpan->setFixedWidth(width);
|
||||
eSpan->setToolTip("Span");
|
||||
connect(eSpan, &SIUnitEdit::valueChanged, this, &VNA::SetSpan);
|
||||
connect(this, &VNA::spanChanged, eSpan, &SIUnitEdit::setValueQuiet);
|
||||
@ -226,7 +227,8 @@ VNA::VNA(AppWindow *window)
|
||||
// Acquisition toolbar
|
||||
auto tb_acq = new QToolBar("Acquisition");
|
||||
auto dbm = new QDoubleSpinBox();
|
||||
dbm->setFixedWidth(80); // propose slight reduction, to fit more widgets when App not maximized
|
||||
width = QFontMetrics(dbm->font()).width("-30.00dBm") + 20;
|
||||
dbm->setFixedWidth(width);
|
||||
dbm->setRange(-100.0, 100.0);
|
||||
dbm->setSingleStep(0.25);
|
||||
dbm->setSuffix("dbm");
|
||||
|
Loading…
Reference in New Issue
Block a user