pull/2/head
Ryzerth 2020-07-19 18:09:59 +02:00
rodzic cbf0b6290d
commit 09d874a385
10 zmienionych plików z 70 dodań i 55 usunięć

Wyświetl plik

@ -6,11 +6,6 @@ set(CMAKE_BUILD_TYPE "RelWithDebInfo")
# Compiler config
set(CMAKE_CXX_FLAGS "-O2 /std:c++17")
# HackRF
include_directories(sdrpp "C:/Program Files/PothosSDR/include/libhackrf/")
link_directories(sdrpp "C:/Program Files/PothosSDR/lib/")
link_libraries(hackrf)
# Volk
include_directories(sdrpp "C:/Program Files/PothosSDR/include/volk/")
link_libraries(volk)

41
readme.md 100644
Wyświetl plik

@ -0,0 +1,41 @@
## SDR++, The bloat-free SDR software.
SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.
# Current Features
* Uses SoapySDR for wide hardware support
* Hardware accelerated graphics (OpenGL + ImGui)
* SIMD accelerated DSP (parts of the DSP are still missing)
* Cross-platform
* Full waterfall update when possible. Makes browsing signals easier and more pleasant
# Comming soon
* Multi-VFO
* Plugins
* Digital demodulators and decoders
## Building on Windows
# Requirements
* cmake
* vcpkg (for the packages listed below)
* fftw3
* portaudio
* glfw
* glew
* PothosSDR (for libvolk and SoapySDR)
```
mkdir build
cd build
cmake .. "-DCMAKE_TOOLCHAIN_FILE=C:/Users/Alex/vcpkg/scripts/buildsystems/vcpkg.cmake" -G "Visual Studio 15 2017 Win64"
cmake --build . --config Release
```
## Building on Linux
comming soon :)
## Building on OSX
comming soon as well :)
## Contributing
Feel free to issue pull request and report bugs via the github issues.
I will soon publish a contributing.md listing the code style to use.

BIN
res/icons/logo.png 100644

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 39 KiB

Wyświetl plik

@ -4,6 +4,7 @@
#include <imgui/stb_image.h>
namespace icons {
ImTextureID LOGO;
ImTextureID PLAY;
ImTextureID STOP;
ImTextureID PLAY_RAW;
@ -24,6 +25,7 @@ namespace icons {
}
void load() {
LOGO = (ImTextureID)loadTexture("res/icons/logo.png");
PLAY_RAW = (ImTextureID)loadTexture("res/icons/play_raw.png");
STOP_RAW = (ImTextureID)loadTexture("res/icons/stop_raw.png");
}

Wyświetl plik

@ -4,6 +4,7 @@
#include <GL/glew.h>
namespace icons {
extern ImTextureID LOGO;
extern ImTextureID PLAY;
extern ImTextureID STOP;
extern ImTextureID PLAY_RAW;

Wyświetl plik

@ -7,6 +7,7 @@
#include <main_window.h>
#include <styles.h>
#include <icons.h>
#include <version.h>
#ifdef _WIN32
@ -34,7 +35,7 @@ int main() {
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // Required on Mac
// Create window with graphics context
GLFWwindow* window = glfwCreateWindow(1280, 720, "SDR++ v0.1.0 (Built at " __TIME__ ", " __DATE__ ")", NULL, NULL);
GLFWwindow* window = glfwCreateWindow(1280, 720, "SDR++ v" VERSION_STR " (Built at " __TIME__ ", " __DATE__ ")", NULL, NULL);
if (window == NULL)
return 1;
glfwMakeContextCurrent(window);

Wyświetl plik

@ -211,13 +211,6 @@ void drawWindow() {
fSel.setFrequency(wtf.getCenterFrequency() + wtf.getVFOOfset());
}
// vfoFreq = wtf.getVFOOfset() + freq;
// if (vfoFreq != lastVfoFreq) {
// lastVfoFreq = vfoFreq;
// sigPath.setVFOFrequency(vfoFreq - freq);
// }
if (volume != lastVolume) {
lastVolume = volume;
sigPath.setVolume(volume);
@ -239,26 +232,6 @@ void drawWindow() {
bw = sampleRate;
}
// if (ImGui::BeginMenuBar())
// {
// if (ImGui::BeginMenu("File"))
// {
// ImGui::EndMenu();
// }
// if (ImGui::BeginMenu("Edit"))
// {
// ImGui::MenuItem("Show Example Window", "", &showExample);
// ImGui::EndMenu();
// }
// ImGui::EndMenuBar();
// }
if (showExample) {
ImGui::ShowDemoWindow();
}
ImVec2 vMin = ImGui::GetWindowContentRegionMin();
ImVec2 vMax = ImGui::GetWindowContentRegionMax();
@ -290,12 +263,16 @@ void drawWindow() {
fSel.draw();
ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 8);
ImGui::SameLine(ImGui::GetWindowWidth() - 40);
ImGui::Image(icons::LOGO, ImVec2(30, 30));
ImGui::Columns(3, "WindowColumns", false);
ImVec2 winSize = ImGui::GetWindowSize();
ImGui::SetColumnWidth(0, 300);
ImGui::SetColumnWidth(1, winSize.x - 300 - 50);
ImGui::SetColumnWidth(2, 50);
ImGui::SetColumnWidth(1, winSize.x - 300 - 60);
ImGui::SetColumnWidth(2, 60);
// Left Column
ImGui::BeginChild("Left Column");
@ -303,7 +280,14 @@ void drawWindow() {
if (ImGui::CollapsingHeader("Source")) {
ImGui::PushItemWidth(ImGui::GetWindowSize().x);
ImGui::Combo("##_0_", &devId, soapy.txtDevList.c_str());
ImGui::Combo("##_1_", &srId, soapy.txtSampleRateList.c_str());
if (!playing) {
ImGui::Combo("##_1_", &srId, soapy.txtSampleRateList.c_str());
}
else {
ImGui::Text("%s Samples/s", soapy.txtSampleRateList.c_str());
}
if (ImGui::Button("Refresh")) {
soapy.refresh();
@ -380,23 +364,26 @@ void drawWindow() {
ImGui::NextColumn();
ImGui::Text("Zoom");
ImGui::NewLine();
ImGui::VSliderFloat("##_7_", ImVec2(20.0f, 150.0f), &bw, 1000.0f, sampleRate, "");
ImGui::Text("Max");
ImGui::NewLine();
ImGui::Text("Max");
ImGui::VSliderFloat("##_8_", ImVec2(20.0f, 150.0f), &fftMax, -100.0f, 0.0f, "");
ImGui::Text("Min");
ImGui::NewLine();
ImGui::Text("Min");
ImGui::VSliderFloat("##_9_", ImVec2(20.0f, 150.0f), &fftMin, -100.0f, 0.0f, "");
if (bw != lastBW) {
lastBW = bw;
wtf.setViewOffset(wtf.getVFOOfset());
wtf.setViewBandwidth(bw);
wtf.setViewOffset(wtf.getVFOOfset());
}
wtf.setFFTMin(fftMin);
wtf.setFFTMax(fftMax);
wtf.setWaterfallMin(fftMin);

Wyświetl plik

@ -32,17 +32,6 @@ void SignalPath::init(uint64_t sampleRate, int fftRate, int fftSize, dsp::stream
audio.init(&audioResamp.output, 16);
}
dsp::DCBiasRemover dcBiasRemover;
dsp::Splitter split;
dsp::BlockDecimator fftBlockDec;
dsp::HandlerSink fftHandlerSink;
dsp::VFO mainVFO;
dsp::FMDemodulator demod;
dsp::AMDemodulator amDemod;
dsp::FloatResampler audioResamp;
io::AudioSink audio;
void SignalPath::setSampleRate(float sampleRate) {
dcBiasRemover.stop();
split.stop();

Wyświetl plik

@ -13,8 +13,4 @@ void setImguiStyle(ImGuiIO& io) {
ImGui::StyleColorsDark();
//ImGui::StyleColorsLight();
//ImGui::GetStyle().Colors[ImGuiCol_Header] = ImVec4(0.235f, 0.235f, 0.235f, 1.0f);
//ImGui::GetStyle().Colors[ImGuiCol_HeaderHovered] = ImVec4(0.235f, 0.235f, 0.235f, 1.0f);
//ImGui::GetStyle().Colors[ImGuiCol_HeaderActive] = ImVec4(0.235f, 0.235f, 0.235f, 1.0f);
}

3
src/version.h 100644
Wyświetl plik

@ -0,0 +1,3 @@
#pragma once
#define VERSION_STR "0.2.1_alpha"