initial commit
This commit is contained in:
parent
ca631192f6
commit
279a8cb5cc
|
|
@ -0,0 +1,152 @@
|
|||
<?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="org.eclipse.cdt.msvc.exe.debug.1269692248">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.eclipse.cdt.msvc.exe.debug.1269692248" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="org.eclipse.cdt.core.PE" 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.GLDErrorParser" 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" description="" id="org.eclipse.cdt.msvc.exe.debug.1269692248" name="Debug" parent="org.eclipse.cdt.msvc.exe.debug">
|
||||
<folderInfo id="org.eclipse.cdt.msvc.exe.debug.1269692248." name="/" resourcePath="">
|
||||
<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.base.1844325428" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.base">
|
||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.PE" id="cdt.managedbuild.target.gnu.platform.mingw.base.729717436" name="Debug Platform" osList="win32" superClass="cdt.managedbuild.target.gnu.platform.mingw.base"/>
|
||||
<builder buildPath="${workspace_loc:/PiScan}/Debug" id="cdt.managedbuild.tool.gnu.builder.mingw.base.350386915" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.base.1978254852" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.base">
|
||||
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1600420711" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.1296063352" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base.1512875702" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base">
|
||||
<option id="gnu.cpp.compiler.option.optimization.level.686636409" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
|
||||
<option id="gnu.cpp.compiler.option.debugging.level.1502636174" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.base.588778588" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.base">
|
||||
<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1620383574" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
<option id="gnu.c.compiler.option.debugging.level.1472931725" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.2026632253" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.base.1436114147" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.base">
|
||||
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.279730097" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
</inputType>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base.1226747069" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base"/>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="tests" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="tests"/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
<cconfiguration id="org.eclipse.cdt.msvc.exe.release.1257106539">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.eclipse.cdt.msvc.exe.release.1257106539" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="org.eclipse.cdt.core.VCErrorParser" 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" description="" id="org.eclipse.cdt.msvc.exe.release.1257106539" name="Release" parent="org.eclipse.cdt.msvc.exe.release">
|
||||
<folderInfo id="org.eclipse.cdt.msvc.exe.release.1257106539." name="/" resourcePath="">
|
||||
<toolChain id="org.eclipse.cdt.msvc.toolchain.exe.release.1578959370" name="Microsoft Visual C++" superClass="org.eclipse.cdt.msvc.toolchain.exe.release">
|
||||
<targetPlatform id="org.eclipse.cdt.msvc.targetPlatform.exe.release.564544038" superClass="org.eclipse.cdt.msvc.targetPlatform.exe.release"/>
|
||||
<builder buildPath="${workspace_loc:/PiScan}/Release" id="org.eclipse.cdt.msvc.builder.1827392905" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.msvc.builder"/>
|
||||
<tool id="org.eclipse.cdt.msvc.cl.c.exe.release.2010414816" name="C Compiler (cl)" superClass="org.eclipse.cdt.msvc.cl.c.exe.release">
|
||||
<option id="org.eclipse.cdt.msvc.cl.option.optimization.526281005" name="Optimization" superClass="org.eclipse.cdt.msvc.cl.option.optimization"/>
|
||||
<option id="org.eclipse.cdt.msvc.cl.option.debugFormat.1409909211" name="Debug Information Format" superClass="org.eclipse.cdt.msvc.cl.option.debugFormat"/>
|
||||
<inputType id="org.eclipse.cdt.msvc.cl.inputType.c.909856244" superClass="org.eclipse.cdt.msvc.cl.inputType.c"/>
|
||||
</tool>
|
||||
<tool id="org.eclipse.cdt.msvc.cl.exe.release.671589545" name="C++ Compiler (cl)" superClass="org.eclipse.cdt.msvc.cl.exe.release">
|
||||
<option id="org.eclipse.cdt.msvc.cl.option.optimization.1680624972" name="Optimization" superClass="org.eclipse.cdt.msvc.cl.option.optimization"/>
|
||||
<option id="org.eclipse.cdt.msvc.cl.option.debugFormat.1426624844" name="Debug Information Format" superClass="org.eclipse.cdt.msvc.cl.option.debugFormat"/>
|
||||
</tool>
|
||||
<tool id="org.eclipse.cdt.msvc.rc.exe.release.1356646353" name="Resource Compiler (rc)" superClass="org.eclipse.cdt.msvc.rc.exe.release">
|
||||
<inputType id="org.eclipse.cdt.msvc.rc.inputType.116051672" superClass="org.eclipse.cdt.msvc.rc.inputType"/>
|
||||
</tool>
|
||||
<tool id="org.eclipse.cdt.msvc.link.exe.release.2021917065" name="Linker (link)" superClass="org.eclipse.cdt.msvc.link.exe.release">
|
||||
<inputType id="org.eclipse.cdt.msvc.link.inputType.1112679524" superClass="org.eclipse.cdt.msvc.link.inputType"/>
|
||||
</tool>
|
||||
<tool id="org.eclipse.cdt.msvc.lib.760093122" name="Library Manager (lib)" superClass="org.eclipse.cdt.msvc.lib"/>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="tests" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="tests"/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
<cconfiguration id="org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512" moduleId="org.eclipse.cdt.core.settings" name="Unit Test">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="org.eclipse.cdt.core.PE" 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.GLDErrorParser" 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" description="" id="org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512" name="Unit Test" parent="org.eclipse.cdt.msvc.exe.debug">
|
||||
<folderInfo id="org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512." name="/" resourcePath="">
|
||||
<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.base.491521230" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.base">
|
||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.PE" id="cdt.managedbuild.target.gnu.platform.mingw.base.1360764793" name="Debug Platform" osList="win32" superClass="cdt.managedbuild.target.gnu.platform.mingw.base"/>
|
||||
<builder buildPath="${workspace_loc:/PiScan}/Debug" id="cdt.managedbuild.tool.gnu.builder.mingw.base.1422690571" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.base.1709814381" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.base">
|
||||
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.664076039" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.688697597" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base.1907299642" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base">
|
||||
<option id="gnu.cpp.compiler.option.optimization.level.1318829421" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
|
||||
<option id="gnu.cpp.compiler.option.debugging.level.1683126504" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.base.627603712" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.base">
|
||||
<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1298681086" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
|
||||
<option id="gnu.c.compiler.option.debugging.level.942825776" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1146674144" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.base.814286050" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.base">
|
||||
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.247875979" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
</inputType>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base.205916764" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base"/>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="src/tuner.c|src/scanner.c|src/piscan.c|tests" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
<entry excluding="test_tuner_thread.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="tests"/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="PiScan.org.eclipse.cdt.msvc.projectType.exe.174168727" name="Executable" projectType="org.eclipse.cdt.msvc.projectType.exe"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
<scannerConfigBuildInfo instanceId="org.eclipse.cdt.msvc.exe.debug.759942400;org.eclipse.cdt.msvc.exe.debug.759942400.;org.eclipse.cdt.msvc.cl.c.exe.debug.531517175;org.eclipse.cdt.msvc.cl.inputType.c.1417506842">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.msw.build.clScannerInfo"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="org.eclipse.cdt.msvc.exe.debug.1269692248;org.eclipse.cdt.msvc.exe.debug.1269692248.;org.eclipse.cdt.msvc.cl.c.exe.debug.155781993;org.eclipse.cdt.msvc.cl.inputType.c.805721291">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.msw.build.clScannerInfo"/>
|
||||
</scannerConfigBuildInfo>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
<storageModule moduleId="refreshScope"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||
</cproject>
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
###############################################################################
|
||||
# Set default behavior to automatically normalize line endings.
|
||||
###############################################################################
|
||||
* text=auto
|
||||
|
||||
###############################################################################
|
||||
# Set default behavior for command prompt diff.
|
||||
#
|
||||
# This is need for earlier builds of msysgit that does not have it on by
|
||||
# default for csharp files.
|
||||
# Note: This is only used by command line
|
||||
###############################################################################
|
||||
#*.cs diff=csharp
|
||||
|
||||
###############################################################################
|
||||
# Set the merge driver for project and solution files
|
||||
#
|
||||
# Merging from the command prompt will add diff markers to the files if there
|
||||
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||
# the diff markers are never inserted). Diff markers may cause the following
|
||||
# file extensions to fail to load in VS. An alternative would be to treat
|
||||
# these files as binary and thus will always conflict and require user
|
||||
# intervention with every merge. To do so, just uncomment the entries below
|
||||
###############################################################################
|
||||
#*.sln merge=binary
|
||||
#*.csproj merge=binary
|
||||
#*.vbproj merge=binary
|
||||
#*.vcxproj merge=binary
|
||||
#*.vcproj merge=binary
|
||||
#*.dbproj merge=binary
|
||||
#*.fsproj merge=binary
|
||||
#*.lsproj merge=binary
|
||||
#*.wixproj merge=binary
|
||||
#*.modelproj merge=binary
|
||||
#*.sqlproj merge=binary
|
||||
#*.wwaproj merge=binary
|
||||
|
||||
###############################################################################
|
||||
# behavior for image files
|
||||
#
|
||||
# image files are treated as binary by default.
|
||||
###############################################################################
|
||||
#*.jpg binary
|
||||
#*.png binary
|
||||
#*.gif binary
|
||||
|
||||
###############################################################################
|
||||
# diff behavior for common document formats
|
||||
#
|
||||
# Convert binary document formats to text before diffing them. This feature
|
||||
# is only available from the command line. Turn it on by uncommenting the
|
||||
# entries below.
|
||||
###############################################################################
|
||||
#*.doc diff=astextplain
|
||||
#*.DOC diff=astextplain
|
||||
#*.docx diff=astextplain
|
||||
#*.DOCX diff=astextplain
|
||||
#*.dot diff=astextplain
|
||||
#*.DOT diff=astextplain
|
||||
#*.pdf diff=astextplain
|
||||
#*.PDF diff=astextplain
|
||||
#*.rtf diff=astextplain
|
||||
#*.RTF diff=astextplain
|
||||
|
|
@ -0,0 +1,243 @@
|
|||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
[Xx]64/
|
||||
[Xx]86/
|
||||
[Bb]uild/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
|
||||
# Visual Studio 2015 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUNIT
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# DNX
|
||||
project.lock.json
|
||||
artifacts/
|
||||
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_i.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
|
||||
# TODO: Un-comment the next line if you do not want to checkin
|
||||
# your web deploy settings because they may include unencrypted
|
||||
# passwords
|
||||
#*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/packages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/packages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/packages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignoreable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directory
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
[Ss]tyle[Cc]op.*
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
node_modules/
|
||||
orleans.codegen.cs
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# LightSwitch generated files
|
||||
GeneratedArtifacts/
|
||||
ModelManifest.xml
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
/Unit Test/
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>PiScan</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.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
eclipse.preferences.version=1
|
||||
environment/buildEnvironmentInclude/org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512/CPATH/delimiter=;
|
||||
environment/buildEnvironmentInclude/org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512/CPATH/operation=remove
|
||||
environment/buildEnvironmentInclude/org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512/C_INCLUDE_PATH/delimiter=;
|
||||
environment/buildEnvironmentInclude/org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512/C_INCLUDE_PATH/operation=remove
|
||||
environment/buildEnvironmentInclude/org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512/append=true
|
||||
environment/buildEnvironmentInclude/org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512/appendContributed=true
|
||||
environment/buildEnvironmentInclude/org.eclipse.cdt.msvc.exe.debug.1269692248/CPATH/delimiter=;
|
||||
environment/buildEnvironmentInclude/org.eclipse.cdt.msvc.exe.debug.1269692248/CPATH/operation=remove
|
||||
environment/buildEnvironmentInclude/org.eclipse.cdt.msvc.exe.debug.1269692248/C_INCLUDE_PATH/delimiter=;
|
||||
environment/buildEnvironmentInclude/org.eclipse.cdt.msvc.exe.debug.1269692248/C_INCLUDE_PATH/operation=remove
|
||||
environment/buildEnvironmentInclude/org.eclipse.cdt.msvc.exe.debug.1269692248/append=true
|
||||
environment/buildEnvironmentInclude/org.eclipse.cdt.msvc.exe.debug.1269692248/appendContributed=true
|
||||
environment/buildEnvironmentLibrary/org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512/LIBRARY_PATH/delimiter=;
|
||||
environment/buildEnvironmentLibrary/org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512/LIBRARY_PATH/operation=remove
|
||||
environment/buildEnvironmentLibrary/org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512/append=true
|
||||
environment/buildEnvironmentLibrary/org.eclipse.cdt.msvc.exe.debug.1269692248.1652501512/appendContributed=true
|
||||
environment/buildEnvironmentLibrary/org.eclipse.cdt.msvc.exe.debug.1269692248/LIBRARY_PATH/delimiter=;
|
||||
environment/buildEnvironmentLibrary/org.eclipse.cdt.msvc.exe.debug.1269692248/LIBRARY_PATH/operation=remove
|
||||
environment/buildEnvironmentLibrary/org.eclipse.cdt.msvc.exe.debug.1269692248/append=true
|
||||
environment/buildEnvironmentLibrary/org.eclipse.cdt.msvc.exe.debug.1269692248/appendContributed=true
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,576 @@
|
|||
/* $Id: drv_MatrixOrbitalGX.c 975 2009-02-27 18:50:20Z abbas $
|
||||
* $URL: https://ssl.bulix.org/svn/lcd4linux/trunk/drv_MatrixOrbitalGX.c $
|
||||
*
|
||||
* driver for Matrix Orbital GX Series Graphic(240x64) displays from matrixorbital.com
|
||||
*
|
||||
* Copyright (C) 2009 Abbas Kosan <abbaskosan@gmail.com>
|
||||
* Copyright (C) 2005, 2006, 2007 The LCD4Linux Team
|
||||
* <lcd4linux-devel@users.sourceforge.net>
|
||||
*
|
||||
* This file is part of LCD4Linux.
|
||||
*
|
||||
* LCD4Linux is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* LCD4Linux is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* MODIFIED for use in PiScan
|
||||
*/
|
||||
|
||||
/*
|
||||
*
|
||||
* exported fuctions:
|
||||
*
|
||||
* struct DRIVER drv_MatrixOrbitalGX
|
||||
*
|
||||
*/
|
||||
|
||||
//#include "config.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
//#include <termios.h>
|
||||
//#include <fcntl.h>
|
||||
//#include <sys/ioctl.h>
|
||||
//#include <sys/time.h>
|
||||
|
||||
#include <usb.h>
|
||||
/*
|
||||
#include "debug.h"
|
||||
#include "cfg.h"
|
||||
#include "qprintf.h"
|
||||
#include "udelay.h"
|
||||
#include "plugin.h"
|
||||
#include "widget.h"
|
||||
#include "widget_text.h"
|
||||
#include "widget_icon.h"
|
||||
#include "widget_bar.h"
|
||||
#include "drv.h"
|
||||
|
||||
#include "drv_generic_graphic.h"
|
||||
*/
|
||||
#define MatrixOrbitalGX_VENDOR 0x1b3d
|
||||
#define MatrixOrbitalGX_DEVICE_1 0x000a
|
||||
#define MatrixOrbitalGX_DEVICE_2 0x000b
|
||||
#define MatrixOrbitalGX_DEVICE_3 0x000c
|
||||
|
||||
/********Matrix Orbital GX Series*********/
|
||||
#define INTERFACE_ 0
|
||||
#define BULK_OUT_ENDPOINT 0x05
|
||||
#define BULK_IN_ENDPOINT 0x82
|
||||
|
||||
#define SCREEN_H 64
|
||||
#define SCREEN_W 240
|
||||
#define SCREEN_SIZE (SCREEN_H * SCREEN_W)
|
||||
/*****************************************/
|
||||
|
||||
#if 1
|
||||
#define DEBUG(x) debug("%s(): %s", __FUNCTION__, x);
|
||||
#else
|
||||
#define DEBUG(x)
|
||||
#endif
|
||||
|
||||
|
||||
static char Name[] = "MatrixOrbitalGX";
|
||||
static unsigned char *MOGX_framebuffer;
|
||||
|
||||
/* used to display white text on blue background or inverse */
|
||||
static unsigned char invert = 0x00;
|
||||
static unsigned char backlight_RGB = 0;
|
||||
|
||||
static usb_dev_handle *lcd_dev;
|
||||
|
||||
/*
|
||||
int mygetch(void)
|
||||
{
|
||||
struct termios oldt, newt;
|
||||
int ch;
|
||||
tcgetattr( STDIN_FILENO, &oldt );
|
||||
newt = oldt;
|
||||
newt.c_lflag &= ~( ICANON | ECHO );
|
||||
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
|
||||
ch = getchar();
|
||||
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
|
||||
return ch;
|
||||
}
|
||||
*/
|
||||
|
||||
/****************************************/
|
||||
/*** hardware dependant functions ***/
|
||||
/****************************************/
|
||||
|
||||
static int drv_MOGX_open(void)
|
||||
{
|
||||
struct usb_bus *busses, *bus;
|
||||
struct usb_device *dev;
|
||||
char driver[1024];
|
||||
char product[1024];
|
||||
char manufacturer[1024];
|
||||
char serialnumber[1024];
|
||||
int ret;
|
||||
|
||||
lcd_dev = NULL;
|
||||
|
||||
info("%s: scanning for Matrix Orbital GX Series LCD...", Name);
|
||||
|
||||
usb_set_debug(0);
|
||||
|
||||
usb_init();
|
||||
usb_find_busses();
|
||||
usb_find_devices();
|
||||
busses = usb_get_busses();
|
||||
|
||||
for (bus = busses; bus; bus = bus->next) {
|
||||
for (dev = bus->devices; dev; dev = dev->next) {
|
||||
if ((dev->descriptor.idVendor == MatrixOrbitalGX_VENDOR) &&
|
||||
((dev->descriptor.idProduct == MatrixOrbitalGX_DEVICE_1) ||
|
||||
(dev->descriptor.idProduct == MatrixOrbitalGX_DEVICE_2) ||
|
||||
(dev->descriptor.idProduct == MatrixOrbitalGX_DEVICE_3))) {
|
||||
|
||||
/* At the moment, I have information for only this LCD */
|
||||
if (dev->descriptor.idProduct == MatrixOrbitalGX_DEVICE_2)
|
||||
backlight_RGB = 0;
|
||||
|
||||
info("%s: found Matrix Orbital GX Series LCD on bus %s device %s", Name, bus->dirname, dev->filename);
|
||||
|
||||
lcd_dev = usb_open(dev);
|
||||
|
||||
ret = usb_get_driver_np(lcd_dev, 0, driver, sizeof(driver));
|
||||
|
||||
if (ret == 0) {
|
||||
info("%s: interface 0 already claimed by '%s'", Name, driver);
|
||||
info("%s: attempting to detach driver...", Name);
|
||||
if (usb_detach_kernel_driver_np(lcd_dev, 0) < 0) {
|
||||
error("%s: usb_detach_kernel_driver_np() failed!", Name);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
usb_set_configuration(lcd_dev, 1);
|
||||
usleep(100);
|
||||
|
||||
if (usb_claim_interface(lcd_dev, 0) < 0) {
|
||||
error("%s: usb_claim_interface() failed!", Name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
usb_set_altinterface(lcd_dev, 0);
|
||||
|
||||
usb_get_string_simple(lcd_dev, dev->descriptor.iProduct, product, sizeof(product));
|
||||
usb_get_string_simple(lcd_dev, dev->descriptor.iManufacturer, manufacturer, sizeof(manufacturer));
|
||||
usb_get_string_simple(lcd_dev, dev->descriptor.iSerialNumber, serialnumber, sizeof(serialnumber));
|
||||
|
||||
info("%s: Manufacturer='%s' Product='%s' SerialNumber='%s'", Name, manufacturer, product, serialnumber);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
error("%s: could not find a Matrix Orbital GX Series LCD", Name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void drv_MOGX_send(const unsigned char *data, const unsigned int size)
|
||||
{
|
||||
int __attribute__ ((unused)) ret;
|
||||
|
||||
//unsigned char rcv_buffer[64] = "";
|
||||
|
||||
ret = usb_bulk_write(lcd_dev, BULK_OUT_ENDPOINT, (char *) data, size, 1000);
|
||||
|
||||
//info("%s written %d bytes\n", __FUNCTION__, ret);
|
||||
|
||||
//ret = usb_bulk_read(lcd_dev, BULK_IN_ENDPOINT, (char *) rcv_buffer,64,1000);
|
||||
|
||||
//printf("\nReply : ");
|
||||
//for (i=0;i<ret;i++)
|
||||
//printf("%3x",rcv_buffer[i]);
|
||||
}
|
||||
|
||||
static int drv_MOGX_close(void)
|
||||
{
|
||||
/* close whatever port you've opened */
|
||||
usb_release_interface(lcd_dev, 0);
|
||||
usb_close(lcd_dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Send framebuffer to lcd */
|
||||
static void drv_MOGX_update_lcd()
|
||||
{
|
||||
unsigned char cmd[3852] = { 0x38, 0x46, 0x42, 0x46, 0x50, 0x00, 0x00, 0x07, 0x80, 0xff, 0xff };
|
||||
/*
|
||||
index : index of pixel_byte in cmd[]
|
||||
bit : pixel of each pixel_byte
|
||||
x : index of pixel in framebuffer
|
||||
pixel_byte : each 8 pixel in framebuffer = 1 byte
|
||||
*/
|
||||
int index, bit, x = 0;
|
||||
unsigned int cmd_length = 0;
|
||||
unsigned char pixel_byte;
|
||||
|
||||
//info("In %s\n", __FUNCTION__);
|
||||
|
||||
for (index = 0; index < (SCREEN_SIZE / 8); index++) {
|
||||
pixel_byte = 0x00;
|
||||
for (bit = 7; bit >= 0; bit--) {
|
||||
if (MOGX_framebuffer[x] ^ invert)
|
||||
pixel_byte |= (1 << bit);
|
||||
else
|
||||
pixel_byte &= ~(1 << bit);
|
||||
x++;
|
||||
}
|
||||
|
||||
if (pixel_byte == 0xc0) {
|
||||
cmd[11 + cmd_length] = 0xdb;
|
||||
cmd_length++;
|
||||
cmd[11 + cmd_length] = 0xdc;
|
||||
cmd_length++;
|
||||
} else if (pixel_byte == 0xdb) {
|
||||
cmd[11 + cmd_length] = 0xdb;
|
||||
cmd_length++;
|
||||
cmd[11 + cmd_length] = 0xdd;
|
||||
cmd_length++;
|
||||
} else {
|
||||
cmd[11 + cmd_length] = pixel_byte;
|
||||
cmd_length++;
|
||||
}
|
||||
}
|
||||
/* finish command */
|
||||
cmd[11 + cmd_length] = 0xc0;
|
||||
|
||||
//info("In %s - %s \n", __FUNCTION__, cmd_img);
|
||||
/* send command which includes framebuffer */
|
||||
drv_MOGX_send(cmd, cmd_length + 12);
|
||||
}
|
||||
|
||||
static void drv_MOGX_blit(const int row, const int col, const int height, const int width)
|
||||
{
|
||||
int r, c;
|
||||
|
||||
for (r = row; r < row + height; r++) {
|
||||
for (c = col; c < col + width; c++)
|
||||
MOGX_framebuffer[r * SCREEN_W + c] = drv_generic_graphic_black(r, c);
|
||||
}
|
||||
drv_MOGX_update_lcd();
|
||||
}
|
||||
|
||||
void drv_MOGX_clear(void)
|
||||
{
|
||||
//info("In %s\n", __FUNCTION__);
|
||||
memset(MOGX_framebuffer, 0x00, SCREEN_SIZE);
|
||||
/* clear the screen */
|
||||
drv_MOGX_update_lcd();
|
||||
}
|
||||
|
||||
/* TODO : I am not sure for contrast function (command)
|
||||
Don't try to adjust contrast until contrast function is checked and fixed
|
||||
*/
|
||||
/*
|
||||
static int drv_MOGX_contrast(int contrast)
|
||||
{
|
||||
unsigned char cmd[11] = {0x18,0x4c,0x43,0x53,0x43,0x00,0x00,0x00,0x01,0x00,0xc0};
|
||||
|
||||
// adjust limits according to the display
|
||||
if (contrast < 0)
|
||||
contrast = 0;
|
||||
if (contrast > 255)
|
||||
contrast = 255;
|
||||
|
||||
// send contrast command
|
||||
cmd[9] = contrast;
|
||||
drv_MOGX_send(cmd, 11);
|
||||
|
||||
return contrast;
|
||||
}
|
||||
*/
|
||||
|
||||
/* backlight function used in plugin */
|
||||
static int drv_MOGX_backlight(int backlight)
|
||||
{
|
||||
unsigned char cmd[13] = { 0x18, 0x4c, 0x43, 0x53, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xc0 };
|
||||
|
||||
if (backlight < 0)
|
||||
backlight = 0;
|
||||
if (backlight >= 255)
|
||||
backlight = 255;
|
||||
|
||||
cmd[10] = backlight;
|
||||
drv_MOGX_send(cmd, 13);
|
||||
|
||||
return backlight;
|
||||
}
|
||||
|
||||
/* backlightRGB function used in plugin */
|
||||
static int drv_MOGX_backlightRGB(int backlight_R, int backlight_G, int backlight_B)
|
||||
{
|
||||
/*
|
||||
TODO : Function should be tested for three color LCD
|
||||
*/
|
||||
//unsigned char cmd1[11] = {0x18,0x4c,0x43,0x53,0x42,0x00,0x00,0x00,0x01,0xff,0xc0};
|
||||
unsigned char cmd2[13] = { 0x18, 0x4c, 0x43, 0x53, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xc0 };
|
||||
|
||||
if (backlight_R < 0)
|
||||
backlight_R = 0;
|
||||
if (backlight_R >= 255)
|
||||
backlight_R = 255;
|
||||
|
||||
if (backlight_G < 0)
|
||||
backlight_G = 0;
|
||||
if (backlight_G >= 255)
|
||||
backlight_G = 255;
|
||||
|
||||
if (backlight_B < 0)
|
||||
backlight_B = 0;
|
||||
if (backlight_B >= 255)
|
||||
backlight_B = 255;
|
||||
|
||||
//cmd1[9] = backlight;
|
||||
cmd2[9] = backlight_R;
|
||||
cmd2[10] = backlight_G;
|
||||
cmd2[11] = backlight_B;
|
||||
//drv_MOGX_send(cmd1, 11);
|
||||
drv_MOGX_send(cmd2, 13);
|
||||
|
||||
return backlight_R + backlight_G + backlight_B;
|
||||
}
|
||||
|
||||
/* start graphic display */
|
||||
static int drv_MOGX_start(const char *section, const __attribute__ ((unused))
|
||||
int quiet)
|
||||
{
|
||||
char *s;
|
||||
int value1, value2, value3;
|
||||
|
||||
/* read display size from config */
|
||||
s = cfg_get(section, "Size", NULL);
|
||||
if (s == NULL || *s == '\0') {
|
||||
error("%s: no '%s.Size' entry from %s", Name, section, cfg_source());
|
||||
return -1;
|
||||
}
|
||||
|
||||
DROWS = -1;
|
||||
DCOLS = -1;
|
||||
if (sscanf(s, "%dx%d", &DCOLS, &DROWS) != 2 || DCOLS < 1 || DROWS < 1) {
|
||||
error("%s: bad %s.Size '%s' from %s", Name, section, s, cfg_source());
|
||||
return -1;
|
||||
}
|
||||
|
||||
s = cfg_get(section, "Font", "6x8");
|
||||
if (s == NULL || *s == '\0') {
|
||||
error("%s: no '%s.Font' entry from %s", Name, section, cfg_source());
|
||||
return -1;
|
||||
}
|
||||
|
||||
XRES = -1;
|
||||
YRES = -1;
|
||||
if (sscanf(s, "%dx%d", &XRES, &YRES) != 2 || XRES < 1 || YRES < 1) {
|
||||
error("%s: bad %s.Font '%s' from %s", Name, section, s, cfg_source());
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Fixme: provider other fonts someday... */
|
||||
if (XRES != 6 && YRES != 8) {
|
||||
error("%s: bad Font '%s' from %s (only 6x8 at the moment)", Name, s, cfg_source());
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (cfg_number(section, "Invert", 0, 0, 1, &value1) > 0)
|
||||
if (value1 > 0) {
|
||||
info("%s: Display is inverted", Name);
|
||||
invert = 0x01;
|
||||
}
|
||||
|
||||
/* open communication with the display */
|
||||
if (drv_MOGX_open() < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Init framebuffer buffer */
|
||||
MOGX_framebuffer = (unsigned char *) malloc(SCREEN_SIZE * sizeof(unsigned char));
|
||||
if (!MOGX_framebuffer) {
|
||||
error("%s: framebuffer could not be allocated: malloc() failed", Name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
memset(MOGX_framebuffer, 0x00, SCREEN_SIZE);
|
||||
//info("%s framebuffer zeroed", __FUNCTION__);
|
||||
|
||||
/* TODO : I am not sure for contrast function (command)
|
||||
Don't try to adjust contrast until contrast function is checked and fixed
|
||||
*/
|
||||
/*
|
||||
if (cfg_number(section, "Contrast", 0, 0, 255, &value1) > 0) {
|
||||
info("%s: Setting contrast to %d", Name, value1);
|
||||
drv_MOGX_contrast(value1);
|
||||
}
|
||||
*/
|
||||
/* if lcd has three color backlight call the backlightRGB function */
|
||||
if (backlight_RGB) {
|
||||
if ((cfg_number(section, "Backlight_R", 0, 0, 255, &value1) > 0) &&
|
||||
(cfg_number(section, "Backlight_G", 0, 0, 255, &value2) > 0) &&
|
||||
(cfg_number(section, "Backlight_B", 0, 0, 255, &value3) > 0)) {
|
||||
info("%s: Setting backlight to %d,%d,%d (RGB)", Name, value1, value2, value3);
|
||||
drv_MOGX_backlightRGB(value1, value2, value3);
|
||||
}
|
||||
} else {
|
||||
if ((cfg_number(section, "Backlight", 0, 0, 255, &value1) > 0)) {
|
||||
info("%s: Setting backlight to %d", Name, value1);
|
||||
drv_MOGX_backlight(value1);
|
||||
}
|
||||
}
|
||||
|
||||
//info("In %s\n", __FUNCTION__);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/****************************************/
|
||||
/*** plugins ***/
|
||||
/****************************************/
|
||||
/* TODO : I am not sure for contrast function (command)
|
||||
Don't try to adjust contrast until contrast function is checked and fixed
|
||||
*/
|
||||
/*
|
||||
static void plugin_contrast(RESULT * result, RESULT * arg1)
|
||||
{
|
||||
double contrast;
|
||||
|
||||
contrast = drv_MOGX_contrast(R2N(arg1));
|
||||
SetResult(&result, R_NUMBER, &contrast);
|
||||
}
|
||||
*/
|
||||
/*
|
||||
static void plugin_backlight(RESULT * result, RESULT * arg1)
|
||||
{
|
||||
double backlight;
|
||||
|
||||
backlight = drv_MOGX_backlight(R2N(arg1));
|
||||
SetResult(&result, R_NUMBER, &backlight);
|
||||
}
|
||||
|
||||
static void plugin_backlightRGB(RESULT * result, RESULT * arg1, RESULT * arg2, RESULT * arg3)
|
||||
{
|
||||
double backlight;
|
||||
|
||||
backlight = drv_MOGX_backlightRGB(R2N(arg1), R2N(arg2), R2N(arg3));
|
||||
SetResult(&result, R_NUMBER, &backlight);
|
||||
}
|
||||
*/
|
||||
/****************************************/
|
||||
/*** widget callbacks ***/
|
||||
/****************************************/
|
||||
|
||||
|
||||
/* using drv_generic_text_draw(W) */
|
||||
/* using drv_generic_text_icon_draw(W) */
|
||||
/* using drv_generic_text_bar_draw(W) */
|
||||
/* using drv_generic_gpio_draw(W) */
|
||||
|
||||
|
||||
/****************************************/
|
||||
/*** exported functions ***/
|
||||
/****************************************/
|
||||
|
||||
|
||||
/* list models */
|
||||
int drv_MOGX_list(void)
|
||||
{
|
||||
printf("Matrix Orbital GX Series driver");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* initialize driver & display */
|
||||
int drv_MOGX_init(const char *section, const int quiet)
|
||||
{
|
||||
int ret;
|
||||
|
||||
//info("%s: %s", Name, "$Rev: 2$");
|
||||
//info("Matrix Orbital GX Series LCD initialization\n");
|
||||
|
||||
/* real worker functions */
|
||||
// drv_generic_graphic_real_blit = drv_MOGX_blit;
|
||||
|
||||
/* start display */
|
||||
if ((ret = drv_MOGX_start(section, quiet)) != 0)
|
||||
return ret;
|
||||
|
||||
/* initialize generic graphic driver */
|
||||
/* if ((ret = drv_generic_graphic_init(section, Name)) != 0)
|
||||
return ret;
|
||||
*/
|
||||
/* if (!quiet) {
|
||||
char buffer[40];
|
||||
qprintf(buffer, sizeof(buffer), "%s %dx%d", Name, DCOLS, DROWS);
|
||||
if (drv_generic_graphic_greet(buffer, "http://www.matrixorbital.com")) {
|
||||
sleep(3);
|
||||
drv_generic_graphic_clear();
|
||||
}
|
||||
}
|
||||
*/
|
||||
/* register plugins */
|
||||
/* TODO : I am not sure for contrast function (command)
|
||||
Don't try to adjust contrast until contrast function is checked and fixed
|
||||
*/
|
||||
//AddFunction("LCD::contrast", 1, plugin_contrast);
|
||||
/* if (backlight_RGB)
|
||||
AddFunction("LCD::backlightRGB", 3, plugin_backlightRGB);
|
||||
else
|
||||
AddFunction("LCD::backlight", 1, plugin_backlight);
|
||||
*/
|
||||
//info("In %s\n", __FUNCTION__);
|
||||
|
||||
memset(MOGX_framebuffer, 0x00, SCREEN_SIZE);
|
||||
//DEBUG("zeroed");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* close driver & display */
|
||||
int drv_MOGX_quit(const __attribute__ ((unused))
|
||||
int quiet)
|
||||
{
|
||||
info("%s: shutting down.", Name);
|
||||
|
||||
/* clear display */
|
||||
drv_MOGX_clear();
|
||||
|
||||
drv_generic_graphic_quit();
|
||||
|
||||
//debug("closing connection");
|
||||
drv_MOGX_close();
|
||||
|
||||
if (MOGX_framebuffer) {
|
||||
free(MOGX_framebuffer);
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
/* use this one for a graphic display */
|
||||
/*DRIVER drv_MatrixOrbitalGX = {
|
||||
.name = Name,
|
||||
.list = drv_MOGX_list,
|
||||
.init = drv_MOGX_init,
|
||||
.quit = drv_MOGX_quit,
|
||||
};
|
||||
*/
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,5 @@
|
|||
// Font data for Lucida Console 16pt
|
||||
extern const uint_8 lucidaConsole_16ptBitmaps[];
|
||||
extern const FONT_INFO lucidaConsole_16ptFontInfo;
|
||||
extern const FONT_CHAR_INFO lucidaConsole_16ptDescriptors[];
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,5 @@
|
|||
// Font data for Lucida Console 8pt
|
||||
extern const uint_8 lucidaConsole_8ptBitmaps[];
|
||||
extern const FONT_INFO lucidaConsole_8ptFontInfo;
|
||||
extern const FONT_CHAR_INFO lucidaConsole_8ptDescriptors[];
|
||||
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
/*
|
||||
* graphic_lcd.c
|
||||
*
|
||||
* Created on: Jun 3, 2018
|
||||
* Author: kidsr
|
||||
*/
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* piscan.c
|
||||
*
|
||||
* Created on: May 30, 2018
|
||||
* Author: Ezra Taimuty-Loomis
|
||||
*/
|
||||
|
||||
/* includes */
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
//#include <librtlsdr.h>
|
||||
//TODO revise or replace this dependency
|
||||
#include "../../rtl-sdr/src/rtl_fm.c"
|
||||
|
||||
#include "scanner.h"
|
||||
#include "scan_tree.h"
|
||||
#include "tuner.h"
|
||||
|
||||
/* defines */
|
||||
|
||||
|
||||
/* global variable declarations */
|
||||
|
||||
|
||||
/* function declarations */
|
||||
|
||||
|
||||
/* main function */
|
||||
int main(void){
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,151 @@
|
|||
/*
|
||||
* scan_tree.c
|
||||
*
|
||||
* Created on: May 31, 2018
|
||||
* Author: Ezra Taimuty-Loomis
|
||||
*/
|
||||
|
||||
/*
|
||||
* Definitions for the scan tree data structure
|
||||
*/
|
||||
|
||||
/* Includes */
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <io.h>
|
||||
#include <errno.h>
|
||||
|
||||
//#include "../../rtl-sdr/src/rtl_fm.c"
|
||||
#include "scan_tree.h"
|
||||
|
||||
/* Definitions */
|
||||
|
||||
|
||||
const char *getSysType(enum system_type type){
|
||||
switch(type){
|
||||
case ANALOG: return "Analog";
|
||||
case P25: return "P25";
|
||||
case DMR: return "DMR";
|
||||
default: return "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
const char *getMode(enum modulation mode){
|
||||
switch(mode){
|
||||
case FM: return "FM";
|
||||
case NFM: return "NFM";
|
||||
case AM: return "AM";
|
||||
case USB: return "USB";
|
||||
case LSB: return "LSB";
|
||||
case RAW: return "RAW";
|
||||
default: return "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//typedef struct channel_fm {
|
||||
// char mode[] = "FM";
|
||||
// struct channel chan;
|
||||
// void (*mode_demod)(struct demod_state*) = &fm_demod;
|
||||
// //chan.mode_demod = &fm_demod;
|
||||
//};
|
||||
//
|
||||
//typedef struct channel_nfm {
|
||||
// char mode[] = "FM";
|
||||
// struct channel chan;
|
||||
// void (*mode_demod)(struct demod_state*) = &fm_demod;
|
||||
//};
|
||||
//
|
||||
//typedef struct channel_am {
|
||||
// char mode[] = "AM";
|
||||
// struct channel chan;
|
||||
// void (*mode_demod)(struct demod_state*) = &am_demod;
|
||||
//};
|
||||
|
||||
|
||||
|
||||
/* Methods */
|
||||
int system_save(struct system *sys, char prf_dir[]){
|
||||
char *sys_path = malloc(sizeof(*prf_dir) + MAX_TAG_LENGTH + 2);
|
||||
memset(sys_path, 0, sizeof(*prf_dir) + MAX_TAG_LENGTH + 2);
|
||||
strcat(sys_path, prf_dir);
|
||||
strcat(sys_path, "/");
|
||||
strcat(sys_path, sys->tag);
|
||||
|
||||
mkdir(sys_path);
|
||||
|
||||
char *sys_filename = malloc(sizeof(*sys_path) + sizeof(SYS_FILE_EXT) + 1);
|
||||
memset(sys_filename, 0, sizeof(*sys_path) + sizeof(SYS_FILE_EXT) + 1);
|
||||
strcat(sys_filename, sys_path);
|
||||
strcat(sys_filename, SYS_FILE_EXT);
|
||||
|
||||
fprintf(stdout, "\tOpening \"%s\"", sys_filename);
|
||||
FILE *outfile = fopen(sys_filename, "w");
|
||||
if (outfile == NULL) {
|
||||
fprintf(stderr, "File open error\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
fwrite(sys, sizeof(struct system), 1, outfile);
|
||||
|
||||
fclose(outfile);
|
||||
free(sys_path);
|
||||
free(sys_filename);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int scan_profile_load(struct scan_profile *sp, char dir[]){
|
||||
return 0;
|
||||
}
|
||||
|
||||
int scan_profile_save(struct scan_profile *sp, char dir[]) {
|
||||
int err = mkdir(dir);
|
||||
if (err != 0) {
|
||||
fprintf(stderr, "Could not make directory \"%s\": code %i\n", dir, err);
|
||||
if (err == EEXIST)
|
||||
fprintf(stderr, "\tDirectory already exists\n");
|
||||
//else return 0;
|
||||
}
|
||||
|
||||
char *sp_path = malloc(sizeof(*dir) + MAX_TAG_LENGTH + 1);
|
||||
memset(sp_path, 0, sizeof(*dir) + MAX_TAG_LENGTH + 1);
|
||||
strcat(sp_path, dir);
|
||||
strcat(sp_path, sp->name);
|
||||
|
||||
err = mkdir(sp_path);
|
||||
if (err != 0) {
|
||||
fprintf(stderr, "Could not make directory \"%s\": code %i\n", sp_path, err);
|
||||
if (err == EEXIST)
|
||||
fprintf(stderr, "\tDirectory already exists\n");
|
||||
//else return 0;
|
||||
}
|
||||
|
||||
char *sp_filename = malloc(sizeof(*sp_path) + sizeof(SP_FILE_EXT) + 1);
|
||||
memset(sp_filename, 0, sizeof(*sp_path) + sizeof(SP_FILE_EXT) + 1);
|
||||
strcat(sp_filename, sp_path);
|
||||
|
||||
strcat(sp_filename, SP_FILE_EXT);
|
||||
fprintf(stdout, "Opening file \"%s\"\n", sp_filename);
|
||||
FILE *outfile = fopen(sp_filename, "w");
|
||||
if (outfile == NULL) {
|
||||
fprintf(stderr, "File open error\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
err = fwrite(sp, sizeof(struct scan_profile), 1, outfile);
|
||||
|
||||
for(int i = 0; i < sp->num_systems; i++)
|
||||
system_save(&sp->systems[i], sp_path);
|
||||
|
||||
fclose(outfile);
|
||||
free(sp_path);
|
||||
free(sp_filename);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
/*
|
||||
* scan_tree.h
|
||||
*
|
||||
* Created on: Jun 2, 2018
|
||||
* Author: kidsr
|
||||
*/
|
||||
|
||||
#ifndef SCAN_TREE_H_
|
||||
#define SCAN_TREE_H_
|
||||
|
||||
#include <time.h>
|
||||
|
||||
//#include "scan_tree.c"
|
||||
#define MAX_TAG_LENGTH 32
|
||||
#define MAX_FILENAME_LENGTH MAX_TAG_LENGTH + 4
|
||||
#define SP_FILE_EXT ".sp"
|
||||
#define SYS_FILE_EXT ".scn"
|
||||
#define CHAN_FILE_EXT ".chan"
|
||||
|
||||
enum system_type {
|
||||
ANALOG = 0,
|
||||
P25,
|
||||
DMR
|
||||
};
|
||||
|
||||
const char *getSysType(enum system_type type);
|
||||
|
||||
enum modulation {
|
||||
FM = 0,
|
||||
NFM,
|
||||
AM,
|
||||
USB,
|
||||
LSB,
|
||||
RAW
|
||||
};
|
||||
|
||||
const char *getMode(enum modulation mode);
|
||||
|
||||
typedef struct channel {
|
||||
char *tag;
|
||||
uint32_t freq;
|
||||
enum modulation mode;
|
||||
int delay_enabled;
|
||||
time_t sigloss_start_time;
|
||||
//void (*mode_demod)(struct demod_state*);
|
||||
} channel_t;
|
||||
|
||||
typedef struct entry {
|
||||
char *tag;
|
||||
} entry_t;
|
||||
|
||||
typedef struct system {
|
||||
char *tag;
|
||||
enum system_type type;
|
||||
int channel_count;
|
||||
channel_t **channels;
|
||||
void (*scan)(struct system*);
|
||||
} system_t;
|
||||
|
||||
struct scan_profile {
|
||||
char *name;
|
||||
struct system *systems;
|
||||
int num_systems;
|
||||
};
|
||||
|
||||
int scan_profile_load(struct scan_profile *sp, char dir[]);
|
||||
int scan_profile_save(struct scan_profile *sp, char dir[]);
|
||||
|
||||
#endif /* SCAN_TREE_H_ */
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* scanner.c
|
||||
*
|
||||
* Created on: May 31, 2018
|
||||
* Author: Ezra Taimuty-Loomis
|
||||
*/
|
||||
|
||||
/*
|
||||
* Implementation of scanning procedures for each system type
|
||||
*/
|
||||
|
||||
/* Includes */
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "../../rtl-sdr/src/rtl_fm.c"
|
||||
#include "../../rtl-sdr/include/rtl-sdr.h"
|
||||
|
||||
#include "scan_tree.h"
|
||||
#include "scanner.h"
|
||||
|
||||
/* Constants */
|
||||
#define SCAN_DELAY_TIMEOUT 2000 //2000ms timeout
|
||||
|
||||
/* Global variables */
|
||||
|
||||
|
||||
/* Methods */
|
||||
|
||||
void analog_scan(const struct system *sys, struct tuning_interface *tuner){
|
||||
for(int cur = 0; cur < sys->channel_count; cur++) {
|
||||
// TODO code for updating interface
|
||||
fprintf(stderr, "Scanning %s\n", sys->tag);
|
||||
|
||||
// TODO thread sync
|
||||
tuner->dongle->freq = sys->channels[cur].freq;
|
||||
|
||||
switch(sys->channels[cur].mode){
|
||||
case AM:
|
||||
tuner->demod->mode_demod = &am_demod;
|
||||
break;
|
||||
case NFM:
|
||||
case FM:
|
||||
default:
|
||||
tuner->demod->mode_demod = &fm_demod;
|
||||
break;
|
||||
}
|
||||
|
||||
while(!tuner->tuned);
|
||||
|
||||
//if(tuner->demod->)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void p25_scan(struct system *sys){
|
||||
// TODO for future implementation
|
||||
}
|
||||
|
||||
void dmr_scan(struct system *sys){
|
||||
// TODO for future implementation
|
||||
//struct tuning_interface ti;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* scanner.h
|
||||
*
|
||||
* Created on: Jun 3, 2018
|
||||
* Author: kidsr
|
||||
*/
|
||||
|
||||
#ifndef SRC_SCANNER_H_
|
||||
#define SRC_SCANNER_H_
|
||||
|
||||
void analog_scan(const struct system *sys, struct tuning_interface *tuner);
|
||||
void p25_scan(struct system *sys);
|
||||
void dmr_scan(struct system *sys);
|
||||
|
||||
#endif /* SRC_SCANNER_H_ */
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
/*
|
||||
* tuner.c
|
||||
*
|
||||
* Created on: Jun 2, 2018
|
||||
* Author: kidsr
|
||||
*/
|
||||
|
||||
#include "tuner.h"
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* tuner.h
|
||||
*
|
||||
* Created on: Jun 3, 2018
|
||||
* Author: kidsr
|
||||
*/
|
||||
|
||||
#ifndef SRC_TUNER_H_
|
||||
#define SRC_TUNER_H_
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
#include "../../rtl-sdr/src/rtl_fm.c"
|
||||
#include "../../rtl-sdr/include/rtl-sdr.h"
|
||||
|
||||
typedef struct tuning_interface {
|
||||
int ready = 0;
|
||||
int tuned = 0;
|
||||
struct dongle_state *dongle;
|
||||
struct demod_state *demod;
|
||||
//struct agc_state *agc;
|
||||
struct controller_state *controller;
|
||||
struct output_state *output;
|
||||
pthread_t thread;
|
||||
}tuner_t;
|
||||
|
||||
#endif /* SRC_TUNER_H_ */
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
/*
|
||||
* test_scan_tree.c
|
||||
*
|
||||
* Created on: Jun 2, 2018
|
||||
* Author: Ezra Taimuty-Loomis
|
||||
*/
|
||||
|
||||
/*
|
||||
* Program to test scan tree implementation
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "../src/scan_tree.h"
|
||||
|
||||
|
||||
struct scan_profile generated_profile;
|
||||
struct scan_profile loaded_profile;
|
||||
|
||||
char test_directory[] = "./profiles/";
|
||||
|
||||
void init_test_sys_1(struct system *sys){
|
||||
fprintf(stdout, "Initializing system 1\n");
|
||||
sys->tag = "Analog system 1";
|
||||
sys->type = ANALOG;
|
||||
sys->channel_count = 0;
|
||||
sys->channels = malloc(10 * sizeof(struct channel*));
|
||||
uint32_t freq = 470000000;
|
||||
for(int i = 0; i < 10; i++){
|
||||
sys->channels[i] = malloc(sizeof(struct channel));
|
||||
char num[3];
|
||||
sys->channels[i]->tag = malloc(16 * sizeof(char) + 1);
|
||||
memset(sys->channels[i]->tag, 0, 16 * sizeof(char) + 1);
|
||||
itoa(i, num, 10);
|
||||
strcat(sys->channels[i]->tag, "Channel ");
|
||||
strcat(sys->channels[i]->tag, num);
|
||||
//sys->channels[i]->tag = out;
|
||||
sys->channels[i]->freq = freq;
|
||||
sys->channels[i]->delay_enabled = i % 2;
|
||||
sys->channels[i]->mode = i % 3;
|
||||
sys->channel_count++;
|
||||
freq += 12500;
|
||||
}
|
||||
}
|
||||
|
||||
void init_test_prf(struct scan_profile *sp){
|
||||
fprintf(stdout, "Initializing test profile\n");
|
||||
sp->name = "Test profile 1";
|
||||
struct system sys1;
|
||||
init_test_sys_1(&sys1);
|
||||
fprintf(stdout, "System 1 initialized\n");
|
||||
|
||||
|
||||
sp->num_systems = 1;
|
||||
sp->systems = malloc(1 * sizeof(struct system));
|
||||
sp->systems[0] = sys1;
|
||||
|
||||
}
|
||||
|
||||
void print_analog_sys(struct system *sys){
|
||||
fprintf(stdout, "System: %s\n\tType: %s\n\tChannels:\n", sys->tag, getSysType(sys->type));
|
||||
for(int i = 0; i < sys->channel_count; i++){
|
||||
fprintf(stdout, "\t\t%i: %s\n", i, sys->channels[i]->tag);
|
||||
fprintf(stdout, "\t\t\t%lfMHz\n\t\t\tMode: %s\n\t\t\tDelay: %i\n",
|
||||
(sys->channels[i]->freq/1000000.0),
|
||||
getMode(sys->channels[i]->mode),
|
||||
sys->channels[i]->delay_enabled);
|
||||
}
|
||||
}
|
||||
|
||||
int main(void){
|
||||
|
||||
|
||||
init_test_prf(&generated_profile);
|
||||
fprintf(stdout, "Profile initialized\nPrinting systems\n");
|
||||
|
||||
for(int i = 0; i < generated_profile.num_systems; i++){
|
||||
switch(generated_profile.systems[i].type){
|
||||
case P25:
|
||||
break;
|
||||
case DMR:
|
||||
break;
|
||||
case ANALOG:
|
||||
default:
|
||||
print_analog_sys(&generated_profile.systems[i]);
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(stdout, "Saving file\n");
|
||||
if(scan_profile_save(&generated_profile, test_directory))
|
||||
fprintf(stdout, "Saved successfully\n");
|
||||
|
||||
fprintf(stdout, "Loading scan file\n");
|
||||
scan_profile_load(&loaded_profile, test_directory);
|
||||
|
||||
system("pause");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* test_tuner_thread.c
|
||||
*
|
||||
* Created on: May 30, 2018
|
||||
* Author: Ezra Taimuty-Loomis
|
||||
*/
|
||||
|
||||
/*
|
||||
* program to test tuner + demod control implementation
|
||||
* will be mirrored in main source after designing here
|
||||
*/
|
||||
|
||||
/* includes */
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
//TODO revise or replace this dependency
|
||||
#include "../../rtl-sdr/src/rtl_fm.c"
|
||||
|
||||
/* defines */
|
||||
|
||||
|
||||
/* global variable declarations */
|
||||
|
||||
|
||||
//struct tuning_interface tuner;
|
||||
|
||||
/* function declarations */
|
||||
|
||||
int main(void){
|
||||
return 0;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue