stream_web: Added API call for IQ sample capture#1
Open
hunterhubble wants to merge 17 commits into
Open
Conversation
Added repository dispatch so that the latest sdr-docker rebuild with PyPI updates to hubble-satnet-decoder Also increased TD_WINDOW_S from 0.5 to 0.75 to be able to view the entire packet on 13 byte payloads (which are slightly longer than 0.5s) Coincides with commit d112a78 in hubble-satnet-decoder Signed-off-by: hunterhubble <hunter@hubble.com>
…ispatch-clean feat: docker.yml: Rebuild latest on update to decoder
Add an sdr_connected boolean to the /api/status response, derived from state.rx_connected, so clients can detect whether the SDR hardware is currently open. With no Pluto attached the RX thread retries the open forever in the background while Flask still serves the API, so callers previously had no way to distinguish 'no hardware' from 'quiet sky'.
- Added 'Preamble Symbols' tab next to the packet in the time domain. This is a zoom in on the preamble symbols to tell if theres anything wrong with the radio CW. Signed-off-by: hunterhubble <hunter@hubble.com>
- The lines that mark the beginning and end of each symbol now match the symbol when zoomed in on the preambles Signed-off-by: hunterhubble <hunter@hubble.com>
- Moved symbol timing correction, timing crossing function, and rise/fall time functions out of spectrogram.py for maintainability - Same functions as before, but with better organization. Keeping spectrogram.py for solely spectrogram creation. Signed-off-by: hunterhubble <hunter@hubble.com>
feat: Added tab for preamble symbol zoom in
- Includes pdu_n_corr and header_n_corr as items of the packet, so we can see the RS corrections per packet Signed-off-by: hunterhubble <hunter@hubble.com>
Signed-off-by: hunterhubble <hunter@hubble.com>
- Runs pyhubblenetwork tests for each PR to sdr-docker. - Also gives option to build image with local version of hubble-satnet-decoder. This is to run CI tests with sdr-docker on pyhubblenetwork with PRs to hubble-satnet-decoder Signed-off-by: hunterhubble <hunter@hubble.com>
Added pyhubblenetwork.yml workflow
- Changed timing info to match what's found with zoomed in image - Also able to verify the timing correction by looking at zoom in - Purpose of this change is to make it so we only have to poll /packets to get all the information we need, because polling that and /td_info lagged the live spectrogram viewer Signed-off-by: hunterhubble <hunter@hubble.com>
Sat scan improvements
Previously, we decoded 1s windows of IQ samples, that were appended by 0.5s chunks. That chunk ended up being 0.55-0.58 seconds worth of chunks. This made it common for packets with 13 byte payloads to be missed if their preamble began in the very beginning of the chunk, because it would be cut off when the chunk was appeneded to the window. Increases the DECODE_INTERVAL_S to 0.6s, which more accurately reflects the amount that the window advances. Increases to deocde window to 1.5s so that longer packets don't get lost. The wider, overlapping window decodes one packet on multiple passes, so add strict content+time de-duplication: two decodes are merged only if device id, auth tag AND payload match and their start times are within 1 s. Genuinely distinct packets are never merged. Signed-off-by: hunterhubble <hunter@hubble.com>
fix: Increase window to decode 13 byte payloads
Helpful for: - Extra signal processing through numpy or matplotlib - Recording samples with pyhubblenetwork - Testing Satellite hardware with IQ samples from real devices - Determining the frequency of a continuous tone Signed-off-by: hunterhubble <hunter@hubble.com>
dea3b4d to
557713c
Compare
- Created /record_analyze API endpoint to record IQ samples, attempt to decode from them, then provides a log of statistics to match our satellite protocol in a plain text format - Statistics include frequency, amplitude, and timing per symbol. From this, we can tell if it matches frequency hopping, see any amplitude drop-offs, and observe timing violations - Also refactored some code to turn into functions I can call in analyze.py Signed-off-by: hunterhubble <hunter@hubble.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This will be helpful for E2E testing with real hardware.
Also increased decode to 0.75S. 13 Byte packets are 60 symbols, 60 * 8.8ms = about 528ms, longer than previous 0.5s. Makes it so I can get the whole packet of IQ samples when making td_iq post request