diff --git a/README.md b/README.md index 192ded0..8e928e2 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,24 @@ # community-extensions Central location for SigMF users to make their extensions publicly available to all. + +The (SigMF Standard)[https://sigmf.org/] requires that references to extensions +(such as the ones this this repository) contain a URI reference from whence it can +be downloaded. +As there is no coordinated release cycle among these community-maintained extensions, +there must exist some mechanism by which a specific version of one of the `-schema.json` +files in this repo can be referenced. +However, using a GitHub "permalink" is not suitable for this purpose, because the +`"$id"` field must indicate that URI, and (as part of the content of a commit) this +value will affect the commit hash ... + +Consequently, we use the following "two tiered" versioning approach to the "one-stop +shopping" scope of this repo: + 1. git tags will be assigned by the maintainers of this repo whenever any schema + contributor indicates that a "release" is desired. + This will always be a date of the form YYYY-mm-dd (e.g., `2025-01-02`). + 1. Individual schema should include a `"$comment"` key-value pair (ideally) on the + line after the `"$id"` key-value pair which will use + [Semantic Versioning](https://semver.or) as a means of indicating + backwards-incompatible/new-functionality/bug-fixes of that individual schema. + +An example of such a schema id: https://raw.githubusercontent.com/sigmf/community-extensions/refs/tags/2025-01-01/sigmf-wifi-schema.json diff --git a/sigmf-wifi-schema.json b/sigmf-wifi-schema.json new file mode 100644 index 0000000..0226921 --- /dev/null +++ b/sigmf-wifi-schema.json @@ -0,0 +1,85 @@ +{ + "$id": "https://raw.githubusercontent.com/sigmf/community-extensions/refs/tags/2025-01-01/sigmf-wifi-schema.json", + "$comment": "version: 1.0.0; original author: Napolean; current maintainer: Pedro", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Wi-Fi extension for SigMF-meta file.", + "description": "The `wifi`namespace extension defines dynamic Wi-Fi burst parameters extending `annotations`.", + "type": "object", + "properties": { + "annotations": { + "description": "The following names are specified in the `wifi` namespace and should be used in the `annotations` object:", + "type": "array", + "items": { + "type": "object", + "required": ["wifi:standard"], + "$comment": "In the .md version of this schema, all of the fields were 'required' ...", + "properties": { + "wifi:standard": { + "description": "Wireless standard of captured signal e.g. 802.11a/g.", + "type": "string" + }, + "wifi:frame_type_phy": { + "description": "Physical layer specification e.g. non-high throughput or very-high throughput.", + "type": "string" + }, + "wifi:channel": { + "description": "Wi-Fi channel of captured signal", + "type": "integer" + }, + "wifi:start_time_s": { + "description": "Start time of RF burst (relative time to start time of main capture file).", + "type": "number" + }, + "wifi:stop_time_s": { + "description": "Stop time of RF burst (relative time to start time of main capture file).", + "type": "number" + }, + "wifi:frame_duration_s": { + "description": "Duration of RF burst (`stop_time_s` - `start_time_s`).", + "type": "number" + }, + "wifi:MCS": { + "description": "Wi-Fi signal Modulation and Coding Scheme (MCS).", + "type": "integer" + }, + "wifi:MAC_frame_type": { + "description": "Wi-Fi MAC frame type.", + "type": "string" + }, + "wifi:MAC_ta": { + "description": "Wi-Fi transmitter MAC address.", + "type": "string" + }, + "wifi:MAC_ra": { + "description": "Wi-Fi receiver MAC address.", + "type": "string" + }, + "wifi:manufacturer_ta": { + "description": "Manufacturer of the Wi-Fi transmitter.", + "type": "string" + }, + "wifi:MAC_frame": { + "description": "Wi-Fi MAC frame data without CRC.", + "type": "string" + }, + "wifi:CRC": { + "description": "Wi-Fi MAC frame CRC.", + "type": "string" + }, + "wifi:start_of_packet": { + "description": "Starting sample of captured Wi-Fi burst.", + "type": "number" + }, + "wifi:stop_of_packet": { + "description": "Stopping sample of captured Wi-Fi burst.", + "type": "number" + }, + "wifi:number_of_samples_in_packet": { + "description": "Number of downsampled IQ samples in Wi-Fi burst.", + "type": "number" + } + } + } + } + } +} diff --git a/wifi/wifi.sigmf-ext.md b/wifi/wifi.sigmf-ext.md deleted file mode 100644 index 10b5c7b..0000000 --- a/wifi/wifi.sigmf-ext.md +++ /dev/null @@ -1,39 +0,0 @@ -## Wi-Fi Extension v1.0.0 - -The `wifi`namespace extension defines dynamic Wi-Fi burst parameters extending -`annotations`. - -## 1 Global - -`wifi` does not extend [Global](https://github.com/sigmf/SigMF/blob/main/sigmf-spec.md#global-object). - -## 2 Captures - -`wifi` does not extend [Captures](https://github.com/sigmf/SigMF/blob/main/sigmf-spec.md#captures-array). - -## 3 Annotations - -The following names are specified in the `wifi` namespace and should be used in the `annotations` object: - -|name|required|type|unit|description| -|----|--------|----|----|-----------| -|`standard`|true|string|N/A|Wireless standard of captured signal e.g. 802.11a/g.| -|`frame_type_phy`|true|string|N/A|Physical layer specification e.g. non-high throughput or very-high throughput.| -|`channel`|true|int|N/A|Wi-Fi channel of captured signal| -|`start_time_s`|true|double|seconds|Start time of RF burst (relative time to start time of main capture file).| -|`stop_time_s`|true|double|seconds|Stop time of RF burst (relative time to start time of main capture file).| -|`frame_duration_s`|true|double|seconds|Duration of RF burst (`stop_time_s` - `start_time_s`).| -|`MCS`|true|int|N/A|Wi-Fi signal Modulation and Coding Scheme (MCS).| -|`MAC_frame_type`|true|string|N/A|Wi-Fi MAC frame type.| -|`MAC_ta`|true|string|N/A|Wi-Fi transmitter MAC address.| -|`MAC_ra`|true|string|N/A|Wi-Fi receiver MAC address.| -|`manufacturer_ta`|true|string|N/A|Manufacturer of the Wi-Fi transmitter.| -|`MAC_frame`|true|string|N/A|Wi-Fi MAC frame data without CRC.| -|`CRC`|true|string|N/A|Wi-Fi MAC frame CRC.| -|`start_of_packet`|true|double|samples|Starting sample of captured Wi-Fi burst.| -|`stop_of_packet`|true|double|samples|Stopping sample of captured Wi-Fi burst.| -|`number_of_samples_in_packet`|true|double|samples|Number of downsampled IQ samples in Wi-Fi burst.| - -## 4 Examples - -No `wifi` examples.