Skip to content

Feature/signalhound - This is preliminary work for a Spike Signal Hound converter.#136

Open
KelseyCreekSoftware wants to merge 2 commits intosigmf:mainfrom
KelseyCreekSoftware:feature/signalhound
Open

Feature/signalhound - This is preliminary work for a Spike Signal Hound converter.#136
KelseyCreekSoftware wants to merge 2 commits intosigmf:mainfrom
KelseyCreekSoftware:feature/signalhound

Conversation

@KelseyCreekSoftware
Copy link

This is preliminary work for a Spike Signal Hound converter.
I attempted to use the SigMF File API as much as possible and follow the general form of the blue and wav converters.
Very limited testing, but archive, NCD and XML conversion seems to work.
One thing that needs to be validated is the handling of the IQ file data itself.
The Spike XML files contain a small CSV sample of the larger IQ file. Not sure what the best way to handle this "preview" data.
There are other TODO items called out in the code.

Implement converter for Signal Hound files to SigMF format with metadata extraction and IQ data handling.
Integrate Signal Hound file conversion into the main script, updating magic byte checks and handling for new file type.
@Teque5
Copy link
Collaborator

Teque5 commented Feb 25, 2026

I'll assume this isn't quite ready yet, but I'm keeping an eye on it.

from datetime import datetime, timezone, timedelta

import xml.etree.ElementTree as ET
from typing import Optional
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
from typing import Optional
from typing import Optional, List

For backwards compat with python 3.7 (and to pass the build gate) you also need to change the line _parse_preview_track(text) -> List (capital L)

"annotations": annotations,
}

return sigmf
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This function should return SigMFFile object and not dict.

DATATYPE = "ci16_le" # complex short int16 little-endian
# DATATYPE_SIZE = 4 # bytes per complex int16 sample (2 bytes I + 2 bytes Q)

logging.basicConfig(
Copy link
Collaborator

@Teque5 Teque5 Feb 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A logger gets created by __main__.main() so I don't think we need this.


# Define constants for Spike
ENDIANNESS = "<"
DATATYPE = "ci16_le" # complex short int16 little-endian
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you appear to define this again later, so I think you can delete these globals

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants