15 Commits

Author SHA1 Message Date
Dr.-Ing. Johannes Pohl
cb88c5f0a0 Migrate to PyQt6 (#1072) 2025-12-16 15:24:57 +01:00
Dr. Johannes Pohl
aa95d20b9b Blacken code (#1076) 2023-10-30 17:51:41 +01:00
Johannes Pohl
197a4f0afc Speed up unittests 2020-03-07 11:18:42 +01:00
Johannes Pohl
794fbc18da Add GUI for higher order modulations (#666) 2019-10-11 12:54:23 +02:00
Johannes Pohl
1e90427655 Use SDR native IQ formats (#652) 2019-05-29 13:22:53 +02:00
Johannes Pohl
e633a788ad Enhance accuracy of automatic interpretation (#550)
* rename signalFunctions -> signal_functions

* basic methods for auto interpretation

* cythonize k means

* reorder tests

* remove check and update gitignore

* estimate tolerance and implement score for choosing modulation type

* use absdiff

* remove comment

* cythonize messsage segmentation

* improve message segementation and add test for xavax

* integrate OOK special case

* add check if psk is possible

* integrate xavax and improve score

* improve noise detection

* add test for noise detection multiple messages

* improve noise detection

* homematic fix: use percetange of signal length instead of num flanks

* homematic has some trash at start of messages, which counts as flanks
* additonally set score to 0 if found only one bit length lower 5

* calculate minimum bit length from tolerance

* improve noise noise detection

* refactor limit and propose new limit calculation

* improve minimum bit length penalty

* only increase score for mod_type if bit length surpasses a minimum
* this way scoring loop later becomes easier and
* score is more accurate as there is no division needed which does
  not scale well with the length of message vectors

* remove demodulated complex files and demod live in tests

* remove enocean.coco

* add a new check to prevent PSK misclassification

* add tolerance unit test
* use z=2 for finding outlier free max in tolerance estimation

* prevent numpy warnings

* adapt threshold of unit test

* normalize the score by dividing by plateau vector length

* improve OOK segmentation:

Use minimum pulse length instead pause length for reference

* use 50 percentile for detecting n_digits in plateau rounding

* add elektromaten integration test

* improve center detection to deal with varying signal power levels
* use 10% clustering for rect signal
* calculate min and max of each cluster
* return max(minima) + min(maxima) / 2

* improve the center aggregation, separate between modulation types

* add validity checks if message can be ASK or FSK modulated

* use a weighted mean for center estimation: 60/40 for high/low

* improve bit length estimation: use decimal deviation for filtering

* add scislo test

* improve tolerance estimation: use 50 percentile + revert to normal mean for bitlength estimation

* add haar wavelet transform

* add median filter

* rename to Wavelet

* add signal generation with configurable snr for lab test

* add method for testdata generation

* prepare fsk test: generate messages and estimate parameters

* improve performance of plateau length filtering

* remove unused import

* improve robustness

* improve robustness

* add fsk error plot

* only append bit length if it surpasses minimum

* fix plot title

* improve noise level detection, prevent it from being too low

* integrate all modulations to test

* increase pause threshold for ook

* improve tolerance estimation

* improve noise detection: take maximum of all maxima of noise clusters

* improve scoring algorithm to prevent PSK misclassify as FSK

* use histogram based approach for center detection

* modulation detection with wavelets

* fix median filter when at end of data

* integrate modulation detection with wavelets

* improve robustness

* improve psk parameters

* improve psk threshold

* improve robustness

* swap psk angles for easier demod

* better xticks

* add message segmentation test and fix noise generation snr

* add error print

* update audi test

* fix runtime warning

* improve accuracy of center detection

* avoid warning

* remove unused functions

* fine tune fsk fft threshold

* update esaver test

* improve fsk fft threshold

* change test order

* update enocean test signal

* update enocean test signal

* enhance bit length estimation: use a threshold divisor histogram

* improve noise estimation: round to fourth digit

* update enocean signal

* consider special case if message pause is 0

* remove unused

* improve noise detection

* improve center detection

* improve center detection

* prevent warning

* refactor

* cythonize get_plateau_lengths

* improve syntax

* use c++ sort

* optimize PSK threshold

* optimize coverage

* fix buffer types

* integrate new auto detection routine

* update test

* remove unused stuff

* fix tests

* backward compat

* backward compat

* update test

* add threshold for large signals for performance

* update changelog

* make algorithm more robust against short bit length outliers

* make multi button for selecting auto detect options

* update unittest
2018-10-18 18:59:04 +02:00
Johannes Pohl
543d7f3b5e compress larger test signals 2018-06-18 20:26:13 +02:00
Johannes Pohl
6c1ae0ec25 Integrate Simulator Tab (#395)
* enable simulator tab

* save simulated participant in project

* add link for checksum label and make it configurable

* handle checksum label change for simulator label

* fix crash when editing field types with active simulator labels

* allow assigning multiple source/destination at once

* remove unused event

* use default line color for arrows

* cleanup code

* refactor bootstrapping of device settings and sniff widget
add button for opening sniff dialog in simulator dialog

* reformat code

* enhance bootstrapping to keep initial project manager settings

* highlight simulated participants in flow graph

* more verbose logging

* reformat file

* fix initial gain settings

* reformat code

* also save antenna index

* unify sniffer settings

* add signal selection to sniff widget to take values from signal

* add default argument

* fix missing refresh when adding items to scene with participant assigned

* catch error when saving xml

* refactor SimulatorProtocolLabel

* Improve handling of checksum labels

* travis: generate coverage data for all python > 3.4

* replace print calls with logger calls

* refactor goto action

* refactor simulator message

* refactor simulator rule

* rename to SimulatorExternalProgramAction

* add tooltip for value type

* improve performance of protocol sniffer

* improve performance of protocol sniffer even further

* directly emit signal and do not use timer

* add unittest for protocol sniffer

* add test for clear action

* add test for settings proxy

* add test for accepting sniffed messages

* make test more generic

* repair test

* catch none error

* fix typo

* refactor dialog creation

* add test for simulation flow

* refactor read_receiving_queue

* fix unittest

* increase timeout for ci

* improve sniffer performance especially when reaching end of buffer

* catch error

* add timeout for windows

* improve condition

* move run command and parse command to util and refactor methods

* add validate command method and refactor run_command

* fix imports

* improve validate check

* proper renaming

* rename log messages accordingly

* cleanup method

* add external program support for simulator

* fix if condition

* travis ci: use sudo for all builds

* revert

* add wait for ci

* improve test

* fix shebang

* refactor run command

* fix enabled repeat status and add wait for sync send

* pad send buffer with zeros if not enough data present

* catch exceptions when closing errors

* Revert "pad send buffer with zeros if not enough data present"

This reverts commit b5ea80ae27.

* remove timeout and return zeros properly in callback

* prevent calling gnuradio installed check too often

* rename repeat -> copies

* mark get live vs static labels

* Get live from simulation -> Live Input

* use shlex for calling programs

* fix valid check

* catch empty list error

* check if commmand is available before running

* windows support

* catch value error

* improve windows support

* adapt unittests

* Revert "adapt unittests"

This reverts commit 97d8a2c45a.

* get and store default programs on windows

* improve condition and pipe stderr

* also pipe stderr

* add validity check when assigning multiple message sources/destinations

* remove Create new message type based on this message

* Rename External Program Action -> Trigger Command

* fix unittest

* increase timeout for ci

* get external command action to work

* add timeout for sync send devices

* fix windows test

* fix call

* improve logging view

* make use of filter

* append participants instead of overwriting to prevent key errors

* add sip version str

* travis: test revent pyqt5

* Revert "travis: test revent pyqt5"

This reverts commit df1b403a51.

* proper naming + add context menu action for set value type

* support batch assigning of value type index

* fix method name

* adapt unittest to new logic

* add copy and paste for simulator scene

* show transcript

* support bit and hex view for transcript

* Fix display error in simulator

* improve logging

* catch index error

* improve condition

* show signals in modulation dialog created from simulator dialog

* fix filtering for KDE users

* add comment

* improve performance of filtering rows

* remove redundant update

* fix empty frame visible status to handle larger protocol files

* fix sending finished status

* fix unittest

* enhance modulation API do not cache result to avoid memory leak

* increase wait for devices timeout

* Fix memory leak for send dialog

* fix data loss for tree views

* Fix sample rates for AirSpy
- R2: 10M only
- Mini: 6M only

* set delete on close attribute

* Fix sample rates for AirSpy
- R2: 10M only
- Mini: 6M only

* Fix sample rates for AirSpy
- R2: 10M only
- Mini: 6M only

* Fix sample rates for AirSpy
- R2: 10M only
- Mini: 6M only

* allow capture full rx in simulator and make it possible to save rx data

* do not add gr device for continuous send mode

* fix property

* Some UI improvements

* improve performance of fsk modulation

* Fixed handle width

* improve performance of ask modulation

* improve performance of psk modulation

* fix unittest

* improve gfsk performance

* remove old modulation implementation

* increase timeout for ci

* use sudo by default for travis

* use fsk for test

* remove prange as it can lead to errors in continous modulation

* short async wait

* use spawn on all platforms

* increase timeout for ci

* decrease modulator buffer size

* make fsk parallel

* improve data types

* centralize setting of CONTINUOUS_BUFFER_SIZE_MB

* add log message

* add reset link for filtering

* new simulator default timeout

* catch index error

* catch error

* use shared memory for send buffer

* remove auto assign decodings

* remove dup variable

* rename sendbuffersize to rx chunk size and remove var dup

* READ_SAMPLES->SYNC_RX_CHUNK_SIZE

* fix data type in send config and remove pause in simulation

* improve hackrf send callback

* Tab prio changed

* improve sending backend

* fix lime send

* fix usrp send

* improve continous send mode for usrp

* improve code

* pad limesdr with zeros if needed

* fix log error

* enter continuous send dialog earlier

* add missing set_bandwidth_status call for RTLSDR

* save gains and antenna index per rx/tx

* show modulation profiles only when requested in options

* decrease complexity

* add edit labels action to context menu in simulator message table

* improve performance of auto detect freq

* add sleep action

* fix unittests + remove redundant test

* add counter action

* add parent to timers + increase coverage for cfc

* improve test

* use sip to delete dialogs

* improve tests

* set dialog to none

* add log message

* remove unneeded base class

* remove redundant test

* do not inherit qttestcase without reason

* stop sniffer in test

* reformat test files

* add a short wait after teardown

* give each app a unique name

* fix travis conf

* name concurrency setting in coveragerc

* remove xml setting

* improve condition

* add combine

* coverage only for python 3.6

* install pytest cov and coveralls only for python 3.6

* remove concurrency setting

* update coveragerc

* add tests for decoding dialog

* Added external programm for decoding/encoding Homematic that does a dirty trick:
After "decryption" the CRC is recalculated and the corresponding field will be overwritten if the CRC was correct before. In this way you can directly see whether the Homematic message is correct without switching to a intermediate layer (before decryption).

* fix selection error in Decoding dialog and move test to TestExternalDecodings.py

* beautify simulation scene

* show shown rows labels always and not only for filter

* prevent auto default

* clear transcript only on start and add crc log

* Minor stuff:
* Timeout Sim in ms
* CRC Label check fixed
* transcript format improved

* improve loading of txt support transcript and hex

* fix close all disbled status

* prepare open in analysis

* implement logic for open in analysis button

* refactor transcript newline

* enhance order of close event

* improve logging output

* increase align depth

* only color got string in log

* update userguide
2018-02-28 10:15:08 +01:00
Johannes Pohl
cc9bb174dc improve close behaviour when opening an exisiting project 2018-01-15 14:17:51 +01:00
Johannes Pohl
c7a9b1149c make minimum message length configurable (#354)
* move pause threshold to advanced settings dialog

* fix logger message format

* increase timeout for travis

* decrease values for travis

* remove deprecated group

* revert changes

* cleanup tests

* consider pause_threshold and message divisor in apply to all action

* add unittest for pause threshold

* add logic for minimum message length

* try parallel testing with travis

* revert parallel testing

* show advanced button only for ask

* save pause_threshold and message length divisor in project file

* Changed help text for ASK features
2017-11-13 14:54:12 +01:00
Johannes Pohl
21373342db start bandpass filter in new process and make it abortable (#351)
* start bandpass filter in new process and make it abortable

* hardcode esc key, as QKeySequence.Cancel not avail on older Qts

* Default to Esc if QKeySequence.Cancel not available

* add missing space

* make filter methods static

* move multiprocessing method to top level for multiprocessing

* make coverage multiprocessing agnostic

* update coveragerc

* add test for filter abort
2017-11-02 09:24:35 -05:00
jopohl
e2f645a61c remove brick wall filter 2017-10-31 13:29:06 +01:00
jopohl
6d59967834 add unittest for brick wall filter 2017-10-28 12:33:46 +02:00
Johannes Pohl
0b62b9fd9a adapt unittest to new action name 2017-10-28 12:33:46 +02:00
Johannes Pohl
f75e5787bf add spectrogram view and channel separation
* show getting start hint in interpretation

* add test for creating spectrogram

* add spectrogram page to signal frame
remove parent frame property from epic graphic view

* prototype for spectrogram drawing (has performance issues)

* enable yscale for spectrogram

* regen file

* enhance spectrogram performance by using QImage

* enable y scale for spectrogram

* add initial legend to spectrogram

* fix colormap location

* remove colormap legend

* add more colormaps

* make colormap configurable via ini

* make colormap configurable in settings

* make fft window size configurable

* rescale Y on signal frame resize

* adapt unittest to new api

* allow y move with drag for spectrogram view

* refactor painting backend

* enable vertical selection in spectrogram graphic view

* spectrum: fix order of y values

* use fliplr for compat

* add bandpass filter function

* add narrowband iir filter

* set lower bandwidth for test

* add windowed sinc to filter class and adapt unittest

* change default of hold shift to drag
This way making a selection does not require a key modifier by default

* add fft convolution

* add performance test for fft convolution

* speed up performance test

* fix error for small data sets

* add test for filtering channels

* use astype for compatibility with old numpy versions

* refactor context menu of graphic views

* remove fft convolve performance test to avoid random fails on CI

* fix spectrogram calculation

* fix spectrogram calculation

* improve stft performance

* show samples in view for spectrogram and allow deeper zoom

* enable zoom to selection for spectrogram

* enable start end and selection infos for spectrogram selection

* enable bandpass filtering from spectrogram

* fix selection start end behavior for spectrogram

* update spectrogram infos in start end edited

* add unittest for channel separation

* enhance architecture of spectrogram management

* add class SpectrogramSceneManager
* cache spectrogram
* fix x axis orientation
* move scene managers to painting

* redraw on fft size update

* add lod slider for spectrogram

* remove unused stuff

* add tooltip for lod slider

* update selected bandwidth on sample rate changed

* add update for gv signal on resize

* fix fftshift parameter

* remove xflip as this is corrected by fftshift now

* remove lod slider as it leads to confusion and low lods are hard to see

* clip f_low and f_high

* update spectrogram images on colormap change

* set loading cursor right before bandpass filtering signal

* add select all action with ctrl+a to graphic views

* use parameters from original signal for newly created signals

* fix noise level in unittest

* improve spectrogram performance by splitting image into segments

* avoid division by zero

* fix unittest

* improve signal redraw on resize

* add created signal right under original signal

* adapt unittest to filtered frame created under original signal

* add dialog for configure bandwidth and display default values

* make bandwidth configurable

* fix spectrogram scene rect for small signals

* make data min and data max for spectrogram configurable

* use object names for indexing settings as texts are not reliable

Some OSes insert & before texts probably for shortcuts

* use heuristic to choose normal or FFT convolution

* suggest a filename for unsaved signals based on their name

* fix subpath range calculation

* use window for subpath drawing to avoid flickering colors
2017-08-24 16:28:28 +02:00