Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SigMF Generator Extension #168

Open
Teque5 opened this issue Sep 23, 2021 · 9 comments
Open

SigMF Generator Extension #168

Teque5 opened this issue Sep 23, 2021 · 9 comments

Comments

@Teque5
Copy link
Collaborator

Teque5 commented Sep 23, 2021

Potentially have a .sigmf-generator type (or similar) that created sigmf compliant files.

Think of it as an svg but for signals :D

Originally discussed at GNU Radio Conference 2021.

@jacobagilbert
Copy link
Member

I've thought about this a bit since we discussed it, and I think that the best way to support this is to implement this as an extension with a separate generator application (possibly "part of" SigMF) as opposed to a new native SigMF type. This will require support for "sigmf-meta only" files of course, but i think we established the value in that shortly after this came up.

@Teque5
Copy link
Collaborator Author

Teque5 commented Sep 29, 2021

In my group we have discussed something like this for years, but anytime we sit down to brainstorm a nice way to parameterize signals in a parse-able fashion we can always think of signals that break our implementation. A realistic implementation of something like this would need to have the objective of describing many but not nearly all types of packets, modulations, scrambling, and spreading techniques.

If you had something like protocol.grc and renamed it to protocol.sigmf-gen we could be halfway home with no work. Let that definition live somewhere else.

Parameterizing RF could be many times more complex than the whole SigMF spec.

@bhilburn
Copy link
Contributor

I think I'm in agreement with @Teque5's thinking, here (with a small difference in execution). I think we should keep all actual definition of the generator outside of SigMF, and rather just make it possible for a Metadata file to point to that generator (which becomes tremendously more valuable with Metadata-only distributions, as @jacobagilbert points out).

Where I differ with the suggestion as written by @Teque5 is that I had really just imagined it as another field - core:generator_app that points to a file (which is very likely to be a GRC file, honestly). @Teque5 - what are your thoughts on the pros/cons of a new filetype versus a field in Core?

@jacobagilbert - Thoughts on 👆👆?

@bhilburn
Copy link
Contributor

Note: This feels simple to me, so marking it for v1.0.0. If it becomes gating, though, because we can't figure it out, I'd boot it.

@bhilburn bhilburn added this to the Release v1.0.0 milestone Sep 30, 2021
@jacobagilbert
Copy link
Member

@bhilburn if I understand this correctly, the way this would be used is that a metadata only SigMF file (which will be permitted by #183), say generator-test.sigmf-meta would contain a reference to an application, which ostensibly be capable of using the generator-test.sigmf-meta file and generating generator-test.sigmf-data.

If so, I think that makes a lot of sense to me.

@Teque5
Copy link
Collaborator Author

Teque5 commented Sep 30, 2021

I think that the implementation suggested by @jacobagilbert can be achieved with the existing core:generator field. We would simply have to modify the spec to suggest that that field would point to a path/program/module that generated that sigmf-data (with parameters?).

@bhilburn
Copy link
Contributor

@Teque5 - The core:generator field is in Annotations right now - do you think that's the right place? I suppose one advantage of that is that you could tag many generators within a single Recording. It would make it a little clunky for specifying a single generator for an entire Dataset though, I'd think?

@jacobagilbert
Copy link
Member

@bhilburn The existing annotation scope core:generator field is intended to identify whatever generated that annotation, so i don't think its appropriate for this use personally. Unless I am misunderstanding something, this seems like the reverse (a way to generate data from sigmf global/annotation metadata).

#198 will hopefully make this more straightforward, and after that I think it can be implemented as generator.sigmf-ext.md which will let most users not care about this. Generators could be defined at a global, capture, or annotation level. If done at the annotation level, the extension should also define what non-annotated samples should look like at the 'capture' or 'global' level (e.g.: awgn, shaped noise, etc...).

@jacobagilbert
Copy link
Member

Also, i'd like to pull this out of the v1.0 critical path; thumbs up this or do it if you agree!

@bhilburn bhilburn removed this from the Release v1.0.0 milestone Jan 6, 2022
@bhilburn bhilburn self-assigned this Jan 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants