Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions collection-schema.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"$id": "https://github.com/sigmf/SigMF/spec/1.2.0/collection-schema",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$schema": "http://json-schema.org/draft-07/schema#",
"default": {},
"required": ["collection"],
"type": "object",
"properties": {
"collection": {
"default": {},
"description": "The `sigmf-collection` file contains metadata in a single top-level Object called a `collection`. The Collection Object contains key/value pairs that describe relationships between SigMF Recordings.\\nn The Collection Object associates SigMF Recordings together by specifying `SigMF Recording Objects` in the `core:streams` JSON array. Each Object describes a specific associated SigMF Recording.\\nn The following rules apply to SigMF Collections:\n\n 1. The Collection Object MUST be the only top-level Object in the file.\n\n 2. Keys in the Collection Object SHOULD use SigMF Recording Objects when referencing SigMF Recordings.\n\n 3. SigMF Recording Objects MUST contain both a `name` field, which is the base-name of a SigMF Recording, and a `hash` which is the SHA512 hash of the Recording Metadata file `[base-name].sigmf-meta`.\n\n 4. SigMF Recording Objects MUST appear in a JSON array.\\nn Example `top-level.sigmf-collection` file:\\begin{verbatim}{\n\"collection\": {\n \"core:version\": \"1.2.0\",\n \"core:extensions\" : [\n {\n \"name\": \"antenna\",\n \"version\": \"1.0.0\",\n \"optional\": true\n }\n ],\n \"antenna:hagl\": 120,\n \"antenna:azimuth_angle\": 98,\n \"core:streams\": [\n {\n \"name\": \"example-channel-0-basename\",\n \"hash\": \"b4071db26f5c7b0c70f5066eb9bc3a8b506df0f5af09991ba481f63f97f7f48e9396584bc1c296650cd3d47bc4ad2c5b72d2561078fb6eb16151d2898c9f84c4\"\n },\n {\n \"name\": \"example-channel-1-basename\",\n \"hash\": \"7132aa240e4d8505471cded716073141ae190f763bfca3c27edd8484348d6693d0e8d3427d0bf1990e687a6a40242d514e5d1995642bc39384e9a37a211655d7\"\n }\n ]\n }\n}\\end{verbatim}",
"description": "The `sigmf-collection` file contains metadata in a single top-level Object called a `collection`. The Collection Object contains key/value pairs that describe relationships between SigMF Recordings.\\nn The Collection Object associates SigMF Recordings together by specifying `SigMF Recording Objects` in the `core:streams` JSON array. Each Object describes a specific associated SigMF Recording.\\nn The following rules apply to SigMF Collections:\n\n 1. The Collection Object MUST be the only top-level Object in the file.\n\n 2. Keys in the Collection Object SHOULD use SigMF Recording Objects when referencing SigMF Recordings.\n\n 3. SigMF Recording Objects MUST contain both a `name` field, which is the base-name of a SigMF Recording, and a `hash` which is the SHA512 hash of the Recording Metadata file `[base-name].sigmf-meta`.\n\n 4. SigMF Recording Objects MUST appear in a JSON array.\\nn Example `top-level.sigmf-collection` file:\\begin{verbatim}{\n\"collection\": {\n \"core:version\": \"1.2.0\",\n \"core:extensions\" : [\n {\n \"name\": \"antenna\",\n \"version\": \"1.0.0\",\n \"optional\": true\n }\n ],\n \"antenna:hagl\": 120,\n \"antenna:azimuth_angle\": 98,\n \"core:streams\": [\n {\n \"name\": \"example-channel-0-basename\",\n \"hash\": \"b4071db26f5c7b0c70f5066eb9bc3a8b506df0f5af09991...\"\n },\n {\n \"name\": \"example-channel-1-basename\",\n \"hash\": \"7132aa240e4d8505471cded7160731h41ae190f763bfc46...\"\n }\n ]\n }\n}\\end{verbatim}",
"required": ["core:version"],
"type": "object",
"properties": {
Expand Down
917 changes: 707 additions & 210 deletions docs-generator.py

Large diffs are not rendered by default.

6 changes: 2 additions & 4 deletions extensions/antenna-schema.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
{
"$id": "https://github.com/sigmf/SigMF/spec/1.0.0/extensions/antenna-schema",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Anntenna Schema extension for SigMF-meta file.",
"description": "The `antenna` namespace extension defines static antenna parameters extending the `global` and `annotations` objects in SigMF Recordings, and the `collection` object in a SigMF Collection.",
"type": "object",
"properties": {
"global": {
"description": "The following names are specified in the `antenna` namespace and should be used in the `global` object:",
"type": "object",
"required": [
"antenna:model"
],
"required": ["antenna:model"],
"properties": {
"antenna:model": {
"description": "Antenna make and model number. E.g. ARA CSB-16, L-com HG3512UP-NF.",
Expand Down
75 changes: 75 additions & 0 deletions extensions/capture-detail-schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{
"$id": "https://github.com/sigmf/SigMF/spec/1.0.0/extensions/capture-details-schema",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Capture Details Schema extension for SigMF-meta file",
"description": "The `capture_details` namespace extension defines static IQ capture parameters extending `captures` and dynamic IQ capture parameters extending `annotations`.",
"type": "object",
"properties": {
"captures": {
"description": "The following names are specified in the `capture_details` namespace and should be used in the `captures` object:",
"type": "array",
"items": {
"type": "object",
"required": [
"capture_details:acq_scale_factor",
"capture_details:attenuation",
"capture_details:acquisition_bandwidth",
"capture_details:start_capture",
"capture_details:stop_capture",
"capture_details:source_file"
],
"properties": {
"capture_details:acq_scale_factor": {
"type": "number",
"description": "Scale factor of IQ collection from the spectrum analyzer used to convert back to real power."
},
"capture_details:attenuation": {
"type": "number",
"description": "Attenuation applied to the input of the sensor, in dB."
},
"capture_details:acquisition_bandwidth": {
"type": "number",
"description": "Bandwidth of the recording (if lower than the `samp_rate`, in Hz."
},
"capture_details:start_capture": {
"type": "string",
"description": "Time of the first sample of IQ recording. The time is UTC with the format of yyyy-mm-ddTHH:MM:SSZ."
},
"capture_details:stop_capture": {
"type": "string",
"description": "Time of the last sample of IQ recording. The time is UTC with the format of yyyy-mm-ddTHH:MM:SSZ."
},
"capture_details:source_file": {
"type": "string",
"description": "RF IQ recording filename that was used to create the file N.sigmf-data. The file N.sigmf-data may be the same or an edited versions of the source_file."
},
"capture_details:gain": {
"type": "number",
"description": "Gain setting of the sensor for this acquisition, distilled to a single number, in dB."
}
}
}
},
"annotations": {
"description": "The following names are specified in the `capture_details` namespace and should be used in the `annotations` object:",
"type": "array",
"items": {
"type": "object",
"required": [
"capture_details:SNRdB",
"capture_details:signal_reference_number"
],
"properties": {
"capture_details:SNRdB": {
"type": "number",
"description": "Root mean square (RMS) calculation of signal to noise ratio (SNR). The calculation is over windows of known signal and no known signal, in dB."
},
"capture_details:signal_reference_number": {
"type": "string",
"description": "Sequential reference labels for the elements that form the sequence of signals identified in a SigMF dataset file. The format of the string is the filename followed by an index that increases with each decoded signal."
}
}
}
}
}
}
36 changes: 0 additions & 36 deletions extensions/capture_details.sigmf-ext.md

This file was deleted.

131 changes: 131 additions & 0 deletions extensions/signal-schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
{
"$id": "https://github.com/sigmf/SigMF/spec/1.0.0/extensions/signal-schema",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Signal Schema extension for SigMF-meta file",
"description": "The signal extension namespace defines how to describe the attributes of wireless communications signals and their emitters",
"type": "object",
"properties": {
"annotations": {
"description": "The following names are specified in the `signal` namespace and should be used in the `annotations` object:",
"type": "array",
"items": {
"type": "object",
"properties": {
"signal:detail": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": ["analog", "digital"],
"description": "Type of modulation scheme"
},
"mod_class": {
"type": "string",
"enum": [
"am",
"fm",
"pm",
"ssb",
"dsb",
"vsb",
"ask",
"fsk",
"psk",
"qam",
"ook",
"cpm",
"msk"
],
"description": "Modulation class"
},
"standard": {
"type": "string",
"description": "Communication standard (e.g., 802.11ac)"
},
"carrier_variant": {
"type": "string",
"enum": [
"with_carrier",
"suppressed_carrier",
"reduced_carrier",
"single_carrier",
"multi_carrier"
],
"description": "Carrier variant type"
},
"symbol_variant": {
"type": "string",
"enum": ["differential", "offset"],
"description": "Symbol variant type"
},
"order": {
"type": "integer",
"minimum": 0,
"description": "Modulation order"
},
"duplexing": {
"type": "string",
"enum": ["tdd", "fdd"],
"description": "Duplexing type"
},
"multiplexing": {
"type": "string",
"enum": ["tdm", "fdm", "cdm", "ofdm", "sdm", "pdm"],
"description": "Multiplexing type"
},
"multiple_access": {
"type": "string",
"enum": ["fdma", "ofdma", "tdma", "cdma", "sdma", "pdma"],
"description": "Multiple access type"
},
"spreading": {
"type": "string",
"enum": ["fhss", "thss", "dsss", "css"],
"description": "Spreading type"
},
"channel_bw": {
"type": "number",
"description": "Channel bandwidth"
},
"channel": {
"type": "integer",
"minimum": 0,
"description": "Channel number"
},
"class_variant": {
"type": "string",
"description": "Modifier to modulation class"
}
}
},
"signal:emitter": {
"type": "object",
"properties": {
"seid": {
"type": "integer",
"minimum": 0,
"description": "Unique ID of the emitter"
},
"manufacturer": {
"type": "string",
"description": "Manufacturer of the hardware"
},
"power_tx": {
"type": "number",
"description": "Total transmitted power (dBm)"
},
"power_eirp": {
"type": "number",
"description": "Effective Isotropic Radiated Power (dBm)"
},
"geolocation": {
"type": "object",
"description": "GeoJSON location of emitter"
}
}
}
}
}
}
}
}
Loading