Coder Social home page Coder Social logo

drowe67 / freedv-gui Goto Github PK

View Code? Open in Web Editor NEW
182.0 14.0 49.0 71.45 MB

GUI Application for FreeDV – open source digital voice for HF radio

Home Page: https://freedv.org/

License: GNU Lesser General Public License v2.1

CMake 4.11% Shell 0.42% C 18.19% C++ 72.55% Objective-C++ 0.17% HTML 4.54% TeX 0.01%

freedv-gui's Introduction

Building FreeDV GUI

This document describes how to build the FreeDV GUI program for various operating systems. FreeDV GUI is developed on Ubuntu Linux, and then cross compiled for Windows using Fedora Linux (Fedora has great cross compiling support) and Docker.

Further Reading

Building on Ubuntu Linux

$ sudo apt install libspeexdsp-dev libsamplerate0-dev sox git \
libwxgtk3.2-dev libhamlib-dev libasound2-dev libao-dev \
libgsm1-dev libsndfile1-dev cmake module-assistant build-essential
$ git clone https://github.com/drowe67/freedv-gui.git
$ cd freedv-gui

(if using pipewire/PulseAudio -- recommended and the default) 
$ sudo apt install libpulse-dev
$ ./build_linux.sh

(if using PortAudio)
$ sudo apt install portaudio19-dev
$ ./build_linux.sh portaudio

(Depending on release you may need to use libwxgtk3.0-gtk3-dev instead of libwxgtk3.2-dev.)

Then run with:

$ ./build_linux/src/freedv

Note this builds all libraries locally, nothing is installed on your machine. make install is not required.

Building on Fedora Linux

$ sudo dnf groupinstall "Development Tools"
$ sudo dnf install cmake wxGTK3-devel libsamplerate-devel \
  libsndfile-devel speexdsp-devel hamlib-devel alsa-lib-devel libao-devel \
  gsm-devel gcc-c++ sox
$ git clone https://github.com/drowe67/freedv-gui.git
$ cd freedv-gui

(if using pipewire/PulseAudio -- default and recommended)
$ sudo dnf install pulseaudio-libs-devel
$ ./build_linux.sh

(if using PortAudio)
$ sudo dnf install portaudio-devel
$ ./build_linux.sh portaudio

Then run with:

$ ./build_linux/src/freedv

Building without LPCNet

In preparation for possible future deprecation of FreeDV 2020 and 2020B modes, it is possible to build without requiring the LPCNet library. To do this, pass LPCNET_DISABLE=1 as an environment variable to the build script, i.e.

$ LPCNET_DISABLE=1 ./build_linux.sh

or alternatively, do not pass in LPCNET_BUILD_DIR to cmake if manually executing the build. This also has the side effect of disabling 2020 and 2020B in the user interface, preventing either from being selected.

Note: if you don't already have Codec2 installed on your machine, you will need to pass -DBOOTSTRAP_LPCNET=1 to cmake in order for LPCNet to also be built.

Installing on Linux

You need to install the codec2 and lpcnetfreedv shared libraries, and freedv-gui:

$ cd ~/freedv-gui/codec2/build_linux
$ sudo make install
$ cd ~/freedv-gui/LPCNet/build_linux
$ sudo make install
$ cd ~/freedv-gui/build_linux
$ sudo make install
$ sudo ldconfig

Testing

The wav directory contains test files of modulated audio that you can use to test FreeDV (see the USER_MANUAL).

Building for Windows

Windows releases are built using the LLVM version of MinGW. This allows one to build FreeDV for ARM as well as for Intel Windows systems, including support for 2020 mode (on systems fast enough to acceptably decode it).

Prerequisites

  • CMake >= 3.25.0
  • Linux (tested on Ubuntu 22.04)
    • NOTE: This does not currently work on macOS due to CMake using incorrect library suffixes.
  • NSIS for generating the installer (for example, sudo apt install nsis on Ubuntu)

Instructions

  1. Download LLVM MinGW at https://github.com/mstorsjo/llvm-mingw/releases/.
  2. Decompress into your preferred location. For example: tar xvf llvm-mingw-20220906-ucrt-ubuntu-18.04-x86_64.tar.xz (The exact filename here will depend on the file downloaded in step (1). Note that for best results, you should use a build containing "ucrt" in the file name corresponding to the platform which you're building the Windows binary from.)
  3. Add LLVM MinGW to your PATH: export PATH=/path/to/llvm-mingw-20220906-ucrt-ubuntu-18.04-x86_64/bin:$PATH. (The folder containing the LLVM tools is typically named the same as the file downloaded in step (2) minus the extension.)
  4. Create a build folder inside freedv-gui: mkdir build_windows
  5. Run CMake to configure the FreeDV build: cd build_windows && cmake -DCMAKE_TOOLCHAIN_FILE=${PWD}/../cross-compile/freedv-mingw-llvm-[architecture].cmake ..
    • Valid architectures are: aarch64 (64 bit ARM), i686 (32 bit Intel/AMD), x86_64 (64 bit Intel/AMD)
  6. Build FreeDV as normal: make (You can also add -j[num] to the end of this command to use multiple cores and shorten the build time.)
  7. Create FreeDV installer: make package

Known Issues

  • NSIS-related issues:
    • ARM installers will not properly register in Windows despite installing properly. You can still run the application manually by navigating to C:\Program Files\FreeDV [version]\ using File Explorer and double-clicking on freedv.exe.

Building and installing on macOS

Using MacPorts, most of the appropriate dependencies can be installed by:

$ sudo port install automake git libtool sox +universal cmake

and on Homebrew:

$ brew install automake libtool git sox cmake

Once the dependencies are installed, you can then run the build_osx.sh script inside the source tree to build FreeDV and associated libraries (codec2, LPCNet, hamlib). A FreeDV.app app bundle will be created inside the build_osx/src folder which can be copied to your system's Applications folder.

freedv-gui's People

Contributors

aknrdureegaesr avatar ashley-b avatar bwarden avatar cybork42 avatar darksidelemm avatar dforsi avatar drowe67 avatar hobbes1069 avatar jimt avatar maitbot avatar ra1nb0w avatar tmiw avatar uweham avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

freedv-gui's Issues

horus_open and horus_rx require additional arguments

horus_open and horus_rx in codec2 were recently modified to require additional arguments. This causes compile to fail for both git and the released tar.gz source file.

/home/digger/src/freedv-gui-1.4/src/fdmdv2_main.cpp: In member function ‘virtual void MainFrame::OnTogBtnOnOff(wxCommandEvent&)’: /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.cpp:2684:51: error: too few arguments to function ‘horus* horus_open(int, int)’ 2684 | g_horus = horus_open(HORUS_MODE_BINARY); | ^ In file included from /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.h:72, from /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.cpp:23: /home/digger/src/freedv-gui-1.4/codec2/src/horus_api.h:44:15: note: declared here 44 | struct horus *horus_open (int mode, int Rs); | ^~~~~~~~~~ /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.cpp: In function ‘void per_frame_rx_processing(FIFO*, FIFO*)’: /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.cpp:4139:55: error: too few arguments to function ‘int horus_rx(horus*, char*, short int*, int)’ 4139 | if (horus_rx(g_horus, ascii_out, input_buf)) { | ^ In file included from /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.h:72, from /home/digger/src/freedv-gui-1.4/src/fdmdv2_main.cpp:23: /home/digger/src/freedv-gui-1.4/codec2/src/horus_api.h:53:15: note: declared here 53 | int horus_rx (struct horus *hstates, char ascii_out[], short demod_in[], int quadrature); | ^~~~~~~~

Feature Request: PTT Input

Sigi dg9bfc writes:

in freedv soft you have ptt out on a comport (to key external rig) ... so far so good

can you add also a PTT IN via CTS on a comport??

reason is ... i now use freedv on qo100 with sdr console ... and in normal ssb i key the sdr radio with usb/serial converter (ftdi chip) with a pullup resistor and pulling the cts pin to ground

Feature Request: Ouput Volume control

Tom, N4FWD, has requested an output volume control for driving his radio from FreeDV:

there is no "volume" control for the transmit output of
FreeDV. That shortcoming would be mitigated if FreeDV used PulseAudio.
Honestly, I should not be forced to modify the radio's internal
settings just to accommodate FreeDV. The audio drive should be set in
software and not in the rig.

[Feature Request] Ability to use a different configuration depending on location

I was resetting my FreeDV configuration back to my "home" setup (Hermes Lite 2 SDR via a virtual sound card) after operating portable this past weekend and realized that this would be something that might be useful for others as well. Figured I'd put it here as a TODO for me (or someone else) to get to eventually. :)

Anyway, here's what I'm thinking so far. Feel free to update as needed.

Configuration options that should be updated on a per-location basis:

  • Sound card configuration
  • PTT configuration
  • PSK Reporter grid square
  • Regular text field (if PSK Reporter not used)

Configuration options that should remain the same regardless of location:

  • PSK Reporter callsign (?)
  • Audio filters
  • All remaining options in Tools->Options.

Ubuntu 18.10 high resolution screen

Frank VK5BF reported:

At greater than 2560/1440, we get problems with fonts size on an Ubuntu 18 machine:

  1. Starts out with a small rectangular display
  2. Tool-Filter crashes with an assert
  3. Sample rate hidden on Audio Config and Options dialog
  4. Main screen axis labels are obscured

800xa mode does not work in 151 devel

title says it all
in 141 devel the mode 800xa just works fine
in 151 devel it locks (signal to noise jumps up and it shows timing and delta frequency) ,, but no audio comes out of my speakers (tested in fullduplex over sat qo100)
all other modes do work fine
settings in both versions are the same
no idea why in 151 i have no audio out in that mode
win10 4 gig ram
greetz sigi dg9bfc

golay23.h required

the latest commit requires

:info:build /opt/local/var/macports/build/ports_science_freedv-gui/freedv-gui/work/freedv-gui-ee194ba1eb944c2de17b0c829e0b6ee53b109c8e/src/callsign_encoder.h:28:10: fatal error: 'golay23.h' file not found
:info:build #include "golay23.h"
:info:build          ^~~~~~~~~~~

voice keyer wave file format

Voice keyer will use wave file even if it's format (8 or 16 kHz) is not correct

  1. Trap if wave file format not correct, and notify user.
  2. Note a different wave file is required for 2020 (16kHz) and other modes (8kHz)

FreeDV 2400B

Nice to meet you, I am a Japanese amateur radio
I am JH0PCF Hiro.
Currently testing FreeDV 1.4.0.
Among them, only the 2400B mode does not generate a signal
Do you need any special equipment

Input sound hangs

Expression 'err' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 3355
Expression 'ContinuePoll( self, StreamDirection_In, &pollTimeout, &pollCapture )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 3907
Expression 'PaAlsaStream_WaitForFrames( stream, &framesAvail, &xrun )' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 4285

(all modes)

Assertion failed on Fedora 29

Ok, I always do all my devel work on a separate login so this morning I cloned freedv-gui/brad-2020 from my regular account and did a build using the internal build method and got:

freedv: /home/richard/git/freedv-gui/src/fdmdv2_main.cpp:4082: void txRxProcessing(): Assertion `ret != -1' failed.

as soon as I clicked "Start"

PSK Reporter encoding/decoding improvements

@drowe67, I'm creating this issue to brainstorm some thoughts I had for improving the PSK Reporter functionality. As of now, it uses Golay(23,12) for encoding, which falls hard on its face with channel noise other than 0dB (per local full duplex testing). I'm considering the following possibilities:

  • Use normal Hadamard (not augmented) code with k=3, so a single character using the current PSK Reporter character set is encoded as two bytes of 7 bits each (the MSB is always 0 based on examples I've seen online, so we may be more tolerant of errors in certain cases).
  • Interleave each coded character's bits. This would mean four bytes are needed to interleave two characters, eight for four, etc. In theory this should improve error correction, but I'm not sure by how much.
  • Multi-pass decoding, possibly taking into account context-specific clues. (For instance, assuming 50% of the callsigns in existence are US callsigns, there's a 50% chance that the first 1-2 characters are K, N, W or AA-AL. Thus, perhaps we can weight possible candidates if we have more than a few bit errors.) This might take a lot more thinking and research to pull off, though.

Anyway, I haven't fully fleshed these out yet, so I'd be interested in suggestions or thoughts about the above.

build error with clang (macOS)

I am trying to update the port on macports but unfortunately the build fail with error: templates must have C++ linkage using clang. Full log at this gist.

Versions used:

  • codec2 b1ff0a55 (from macports)
  • lpcnetfreedv d97a3529 (from macports)
  • freedv-gui 7cd03db

Software used:

  • macOS 10.14.6 18G84
  • Xcode 10.3 10G8
  • Apple LLVM version 10.0.1 (clang-1001.0.46.4)

codec2 and lpcnetfreedv build correctly from macports. Just a mismatch on the name of lpcnetfreedv on cmake find_package but this is another story.

There is some placement errors on CMakeLists.txt and Info.plist but I will make a PR after this issue.

FreeDV About using Hamlib on Windows

FreeDV About using Hamlib on Windows

PTT control of transceiver using Hamlib
Set to control and control with Test PTT
Check what you can do and press the start button
Start receiving FreeDV.
Then press PTT to start sending
The transmitter is not a digitally modulated signal
The analog signal from the microphone is used as it is for the transmitter input.
It is input and the radio wave of analog SSB is emitted.

The version I am currently using is the Windows version.
The sound device uses two sets of USB audio devices.
This issue may be occurring in my own environment
FreeDV1.5.1 Ver1.4.1 had the same symptom.

stopping after 1-2 minutes

Tom, N4FWD, reports:

I set up FreeDV and the Icom to listen to the incoming signals. The
intent is to see if there are any other users of FreeDV. So, I have
FreeDV in decode/monitoring mode as I work through the various bands.
After around a minute (or maybe 2), FreeDV stops monitoring. The
spectrum display goes blank. I have to manually stop the listening
mode and restart it to get the spectrum display activated again. It is
annoying to have to restart the decode session.

Waterfall maintenance

Requirements:

  1. Ensure bandwidth of waterfall is sufficient to visualise fading at up to 2 Hz (we can provide test signals).

[Feature Request] repeater function

If we had a port or 2 that could serve as raw bitstream transfer between 2 freedv apps. Just to recondition the signal without going threw the codec.

Cool app ;)

overscan on Scatter diagam

I have been testing the latest Win 64 build (Version 1,5,1 devel FreeDV git hash 2578d57) via VAC loopback, checking the operation of clipping and found that the unclipped 700D produced overscan on Scatter Screen (the points are outside the black screen and show up in the white border).The indicated SNR was 39dB.

All other modes were OK with 700E showing a SNR of 40dB and still displaying scatter screen correctly,

Peter VK5APR

FreeDV 2020 TODO

  1. Check Speex noise suppressor works at 16 kHz
  2. Check mic and speaker Filters work
  3. Are levels correct? Speaker out tab shows signals (like wia sample) clipping on decode, which looks high to me (David).

automatic detection of serial port permissions issues on Linux

A common trap for PTT using a serial port (HamLib or Serial PTT) is lack of permissions. This fix is usually adding your user to the dialout group. It would be nice to automatically detect permissions issues and report by a pop up window during serial port configuration/testing.

macOS 10.14 darkmode bad view

The following is an example of bad behaviour of the bars on macOS 10.14 with dark mode enabled.
Screenshot 2019-08-12 at 20 03 15
Seems a sort of transparency because in the background I see the window behind freedv-gui.

Ubuntu 18 and HiRes display

Submitted by Frank VK5BF via the Codec 2 mailing list.

When running on a high resolution screen (3200x1800) many any of the fields are partially hidden. The problem is not there with a lower resolution setting (Ubuntu-mate 18.10)

Screenshot at 2019-11-24 13-54-34

command line freedv-gui to support testing

A way to run freedv-gui from the command line, put it into a mode (e.g 700D), set up input and output sound cards, and feed a signal through it. This way basic freedv-gui operation can be tested using a GitHub action.

  1. Not sure what happens to the actual screen on a headless GitHub action machine.
  2. Rx only is OK for a first pass.
  3. ALSA loopback sound cards could be used to simulate real sound card hardware (see codec2/unittest/tnc* tests for examples).
  4. Sox could be used for command line sample I/O from sound cards to files.

Compile error on Raspbian "Buster"

Hi,

i tried to build the latest freedv on an Raspberry Pi 3 on Raspbian "Buster".
Codec2 and LPCNet seems to build well, but when compiling freedv-gui, the build process stops at about 25% with the following error:

/home/pi/projects/freedv-gui/src/fdmdv2_main.cpp: In function ‘void __cpuid(int*, int)’:
/home/pi/projects/freedv-gui/src/fdmdv2_main.cpp:4490:6: error: impossible constraint in ‘asm’
     );
      ^
make[2]: *** [src/CMakeFiles/freedv.dir/build.make:128: src/CMakeFiles/freedv.dir/fdmdv2_main.cpp.o] Fehler 1

Maybe this part of code isn't supported on ARM targets.

Any solutions how to solve?

Thanks in advance.

Regards, Thorsten

Feature request: Add CAT frequency control.

It is not possible to control a radios frequency/VFO's via CAT control.

I think that 4 Steps up and down in Khz from these frequencies as required by the bandwidth of the selected mode with reasonable spacing should be a nice feature.

The frequencies listed serves as "home frequency" it should be possible to "step" up or down from those.

I suggest these, they are directly from the IARU Region 1 bandplans :
3630 kHz - Digital Voice Centre of Activity
7070 kHz - Digital Voice Centre of Activity
10140 kHz - In the digimodes window.
14130 kHz - Digital Voice Centre of Activity
18150 kHz - Digital Voice Centre of Activity
21180 kHz - Digital Voice Centre of Activity
24960 kHz - Digital Voice Centre of Activity
28330 kHz - Digital Voice Centre of Activity
50.630 Digital Voice (DV) calling
70.3125 or
70.3250

It should also follow the proper USB or LSB rules.

Click to tune resolution

From Steve:

One thing I noticed is the Mouse frequency centering is very course.
You can't finesse it to ± values around the center.
Maybe needs a zoom feature added for OFDM.

I'd suggest just scaling, e.g. if the centre is 1500 Hz, clicking on -1400Hz will shift -10Hz rather than -100.

FreeDV 2020 Audio buzzing when switching to analog

From Mike, G4ABP:

Matt, G6WPJ, has also observed a bug when 2020 is selected, and you switch to analog to transmit SSB. We don't switch to SSB very often, so no one else had observed this. I have however repeated Matt's tests and found the same thing. Usually after a short (but variable) time, a buzzing sound appears on the transmitted audio. Matt's speculation is that a buffer is getting overwritten somewhere. Before Matt's report, I have also observed the same buzzing phenomena when transmitting 2020 tests, which occurred after 10 minutes, but I have not been able to repeat this.

No text decode for 1600 mode

During testing of FreeDV 1.5.3 Siegfried Jackstien discovered that no text was being decoded by FreeDV in 1600 mode. On further investigation, it looks like Codec2 properly calls my_get_next_tx_char() to transmit the text but the following if block (freedv_1600.c lines 207-210) never calls my_put_next_rx_char():

                n_ascii = varicode_decode(&f->varicode_dec_states, &ascii_out, abit, 1, 1);
                if (n_ascii && (f->freedv_put_next_rx_char != NULL)) {
                    (*f->freedv_put_next_rx_char)(f->callback_state, ascii_out);
                }

Test procedure:

  1. Start FreeDV with PSK Reporter functionality turned off and in full duplex mode.
  2. Ensure radio AF levels are zero to mute receive audio.
  3. Set the FreeDV application to use 1600 mode (700D/E/2020 do not exhibit the issue).

Expected behavior: Text begins to appear in the text field at the bottom of the main GUI.
Actual behavior: Generally no text. Rarely characters appear in the text field at the bottom due to corruption between TX and RX.

Codec2 branch tested: https://github.com/drowe67/codec2/tree/dr-2020-passthrough

Last version compilation of FreeDV on RaspberryPI

Hello David,

I have just downloaded last release of FreeDV on my RaspberryPI. As you know, till now and since last July, it was possible to compile and use FreeDV on RaspberryPI3 without the FreeDV GUI (freedv_tx and freedv_rx run very well in home-made wrapper).
I was curious to see the effect on the PI of you last adjustments on GUI (with a little attention on RaspberryPI4), but unfortunately today the new version compilation stops in an neverending idle status at this point :

[....]

-- LPCNet version: 0.1
-- Looking for available CPU optimizations on Linux/BSD system...
-- neon processor flags found or enabled.

... stops working here and only CTRL+C solve the issue

Can you help ?
Thnak-you
Ugo

Crashing when USB devices removed

Configure FreeDV with a radio and headset (two card configuration):

  1. With all USB devices connected click on Start and FreeDV runs OK
  2. Press Stop and remove one USB device
  3. Click on Start and all sorts or error messages pop up and it crashes.

I've taken an initial look at the startRxStream. This is complex code and could use some refactoring. Backing out of any failed function calls is tricky, so many structures to delete/pull down.. To deal specifically with this bug, suggest a sanity check at the top to check the available PortAudio devices and confirm they are as expected, and bail early before everything is allocated.

This is a fairly important issue, as we would like to avoid any circumstances where FreeDV can crash. Messing with USB devices is common, so it would be good to trap this.

Misc Maintenance issues

This software needs some maintenance and refactoring, any help with the following would be greatly appreciated. In no particular order:

  1. Remove unnecessary PortAudio Wrapper layer
  2. break fdmdv2_main.cpp into smaller files
  3. Rename src files from fdmdv2_* -> freedv_* (or maybe remove prefix)
  4. Align license text in source files with LGPL

Default Audio devices

It would be nice if freedv-gui worked out of the box without any audio device config. So for fresh installs:

  1. Single card rx-only setup
  2. Using the default system play and rec devices
  3. Set tx devices to "none".

So the new user could:

  1. ./freedv (or click on app in Windows)
  2. Select modem and Press 'Start" and it would start decoding off air signals (or canned files)

A variation for this (especially in Linux) would be a command line option to decode a wave file:

./freedv --mode 2020 all_2020.wav

Compiling with clang-cl

Just a FYI.

I know this project is rather gcc/MinGW centric. Some #ifdef _MSC_VER in the code seems to indicate MSVC is supported,
but trying that, it fails miserably.

Trying with clang-cl instead, also fails on mundane things like of __cpuid():

In file included from dlg_audiooptions.cpp:22:
In file included from ./fdmdv2_main.h:68:
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\intrin.h(61,25): error: too few arguments provided to
      function-like macro invocation
void __cpuid(int[4], int);
                        ^
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\cpuid.h(223,9): note: macro '__cpuid' defined here
#define __cpuid(__leaf, __eax, __ebx, __ecx, __edx) \
        ^
In file included from dlg_audiooptions.cpp:22:
In file included from ./fdmdv2_main.h:68:
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\intrin.h(61,6): error: variable has incomplete type 'void'
void __cpuid(int[4], int);
     ^
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\intrin.h(519,35): error: too few arguments provided to
      function-like macro invocation
__cpuid(int __info[4], int __level) {
                                  ^
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\cpuid.h(223,9): note: macro '__cpuid' defined here
#define __cpuid(__leaf, __eax, __ebx, __ecx, __edx) \
        ^
In file included from dlg_audiooptions.cpp:22:
In file included from ./fdmdv2_main.h:68:
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\intrin.h(519,1): error: variable has incomplete type 'void'
__cpuid(int __info[4], int __level) {
^
f:\ProgramFiler\LLVM-10-32bit\lib\clang\10.0.0\include\intrin.h(520,3): error: expected expression
  __asm__ ("cpuid" : "=a"(__info[0]), "=b" (__info[1]), "=c"(__info[2]), "=d"(__info[3])
  ^

But patching it into:

--- a/src/fdmdv2_main.h 2020-09-04 12:44:39
+++ b/src/fdmdv2_main.h 2020-09-04 13:29:47
@@ -52,8 +52,10 @@

 #include <stdint.h>
 #include <speex/speex_preprocess.h>
-#if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86)
-#include <cpuid.h>
+#if defined(_MSC_VER)
+  #include <intrin.h> // used for AVX checking
+  #include <cpuid.h>
+#elif defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86)
+  #include <cpuid.h>
 #endif
 #ifdef _WIN32
 #include <windows.h>
@@ -63,11 +65,6 @@
 #include <dlfcn.h>
 #endif

-#ifdef _MSC_VER
-// used for AVX checking
-#include <intrin.h>
-#endif
-

The dlg_audiooptions.cpp (and other) files compile fine.

700D tuning aid

700D requires you to be +/- 20Hz. Some sort of tuning aid would be useful

Feature request:External PTT input

First of all thanks for great application.

This feature is probably the same what was allready asked,but..

External serial PTT in would be great improvment.

Wild idea to support ie. "zello" bluetooth mic which would make mobile operation simple.

Audio in /out and ptt on same package.

Thanks for the good work !!
Br,Jarno / OH3GAI

AVX detection via cpuid causes segfault on x86_64

This inline asm, while ok in 32-bit, corrupts the state of the RDI register in 64-bit mode:

freedv-gui/src/fdmdv2_main.cpp

Lines 4498 to 4503 in b097ce7

__asm__ __volatile__(
"xchg %%ebx, %%edi;"
"cpuid;"
"xchg %%ebx, %%edi;"
:"=a" (cpuinfo[0]), "=D" (cpuinfo[1]), "=c" (cpuinfo[2]), "=d" (cpuinfo[3])
:"0" (info)

Depending on compiler optimizations (e.g. inlining), this can cause a segfault when checking isAvxPresent:
if(!isAvxPresent)

Rewriting to use __cpuid() as provided by cpuid.h solves the issue.

Eye Diagram flat

On 800XA the Scatter plot (which runs in Eye diagram mode) is flat when tested with this off air signal. This may have been caused by some recent maintenance of the scatter diagram code in #85.

Feature Request: expanded frequency offset range

Is it possible using the pilot one on the receive side to either have the software center on the pilot or using frequency control through CAT have the software shift the radio to center the pilot. Asking this for use on EME and satellite.

FreeDV 1.5.1 build program on Windows 10 Don't stand up

FreeDV1.5.1 source code
Using fedora cross-compilation
Create an executable program for Windows
Install on Windows 10
When I try to run it, I get an error and cannot run it
The error message is as follows.
It worked fine with FreeDV 1.5.0
Is there anything unusual?

Mismath bitween the program and libraly build versions detected
The Library Used 3.0 (wchar_t,compiler with C++ ABI 1013,wxcontainers.compatible with 2.8),
and your program Used 3.0 (wchar_t,compiler with C++ ABI 1014,wxcontainers.compatible with 2.8)

FreeDV 700D squelch

There is a recommendation from the UK user group that the 700D squelch be improved, Mike G4ABP writes: "We are all finding that we need to switch it off to get unbroken audio." I (David) have also found the same thing.

I think it's due to muting when LDPC FEC fails to decode https://github.com/drowe67/codec2/blob/master/src/freedv_api.c#L2211

FreeDV 2020 may also works the same way https://github.com/drowe67/codec2/blob/master/src/freedv_api.c#L2413, and may also benefit from removing the LDPC decode condition.

Waterfall bandwidth for in Doppler

The waterfall time resolution doesn't show the effect of Doppler above roughly 1 Hz, e.g. barber poll effects. There is some time averaging in the waterfall code that may be the cause of this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.