pub struct Capture {
pub sample_start: Integer,
pub datetime: Option<String>,
pub frequency: Option<Number>,
pub global_index: Option<Integer>,
pub header_bytes: Option<Integer>,
pub geolocation: Option<GeoJson>,
/* private fields */
}Expand description
A single capture segment from the SigMF captures array.
Serializes to and from a JSON object keyed by SigMF field names. Optional
fields set to None are omitted from the output; unknown keys are
preserved in a flattened map of extension fields.
§Examples
use sigmf::capture::Capture;
let mut capture = Capture::new(0);
capture.set_frequency(915e6);
capture.set_datetime("2026-01-01T00:00:00Z".to_string());
let json = serde_json::to_value(&capture).unwrap();
assert_eq!(json["core:sample_start"], 0);
assert_eq!(json["core:frequency"], 915e6);
assert!(json.get("core:header_bytes").is_none());Fields§
§sample_start: IntegerIndex of the first sample of this segment within the dataset
(core:sample_start); required.
datetime: Option<String>ISO 8601 timestamp of the segment’s first sample (core:datetime).
frequency: Option<Number>Center frequency of the signal in Hz (core:frequency).
global_index: Option<Integer>Sample index of this segment’s first sample in a larger, global
sample stream such as an SDR’s internal counter (core:global_index).
header_bytes: Option<Integer>Number of bytes of non-sample header data preceding this segment in
the dataset file (core:header_bytes).
geolocation: Option<GeoJson>GeoJSON Point giving the recording location for this segment
(core:geolocation).
Implementations§
Source§impl Capture
impl Capture
Sourcepub fn new(sample_start: Integer) -> Self
pub fn new(sample_start: Integer) -> Self
Creates a capture starting at sample_start with every optional field
unset and no extension fields.
Sourcepub fn extra_fields(&self) -> &Map<String, Value>
pub fn extra_fields(&self) -> &Map<String, Value>
Returns the non-core (extension) fields preserved on this capture,
keyed by their full JSON name (for example "vendor:gain").
Sourcepub fn insert_extra(
&mut self,
key: impl Into<String>,
value: Value,
) -> Result<Option<Value>, SigmfError>
pub fn insert_extra( &mut self, key: impl Into<String>, value: Value, ) -> Result<Option<Value>, SigmfError>
Inserts or replaces an extension field on this capture.
Returns the previous value stored under key, if any. The key is
stored verbatim; no namespace or extension-declaration check is
performed here.
§Errors
Returns crate::SigmfError::InvalidMetadata if key names a core
capture field modeled by Capture (core:sample_start,
core:datetime, core:frequency, core:global_index,
core:header_bytes, or core:geolocation); set those through the
typed fields or setters instead.
Sourcepub fn set_datetime(&mut self, datetime: String)
pub fn set_datetime(&mut self, datetime: String)
Sets core:datetime, the ISO 8601 timestamp of the first sample.
The string is stored as given and is not validated.
Sourcepub fn set_frequency(&mut self, frequency: Number)
pub fn set_frequency(&mut self, frequency: Number)
Sets core:frequency, the center frequency in Hz.
Sourcepub fn set_global_index(&mut self, global_index: Integer)
pub fn set_global_index(&mut self, global_index: Integer)
Sets core:global_index, the segment’s index in a global sample
stream.
Sourcepub fn set_header_bytes(&mut self, header_bytes: Integer)
pub fn set_header_bytes(&mut self, header_bytes: Integer)
Sets core:header_bytes, the number of header bytes preceding this
segment in the dataset file.
Sourcepub fn set_geolocation(&mut self, geolocation: GeoJson)
pub fn set_geolocation(&mut self, geolocation: GeoJson)
Sets core:geolocation to the given GeoJSON value.
Sourcepub fn get_sample_start(&self) -> Integer
pub fn get_sample_start(&self) -> Integer
Returns core:sample_start, the index of this segment’s first sample.
Sourcepub fn get_datetime(&self) -> Option<&String>
pub fn get_datetime(&self) -> Option<&String>
Returns core:datetime, if set.
Sourcepub fn get_frequency(&self) -> Option<&Number>
pub fn get_frequency(&self) -> Option<&Number>
Returns core:frequency in Hz, if set.
Sourcepub fn get_global_index(&self) -> Option<&Integer>
pub fn get_global_index(&self) -> Option<&Integer>
Returns core:global_index, if set.
Sourcepub fn get_header_bytes(&self) -> Option<&Integer>
pub fn get_header_bytes(&self) -> Option<&Integer>
Returns core:header_bytes, if set.
Source§impl Capture
impl Capture
Sourcepub fn extension<T: SigmfExtension>(&self) -> Result<T, SigmfError>
pub fn extension<T: SigmfExtension>(&self) -> Result<T, SigmfError>
Reads extension T from this capture’s fields.
Only the keys listed in SigmfExtension::FIELDS are considered;
absent keys are simply omitted before deserialization.
§Errors
Returns SigmfError::InvalidMetadata if T’s scope is not
ExtensionScope::Capture or the fields do not deserialize into T.
Sourcepub fn set_extension<T: SigmfExtension>(
&mut self,
extension: &T,
) -> Result<(), SigmfError>
pub fn set_extension<T: SigmfExtension>( &mut self, extension: &T, ) -> Result<(), SigmfError>
Writes extension T into this capture.
All of T’s declared FIELDS are first
removed, then the serialized fields are inserted, so fields omitted by
serialization are cleared. core:extensions is not modified.
§Errors
Returns SigmfError::InvalidMetadata if T’s scope is not
ExtensionScope::Capture, extension does not serialize to a JSON
object, or it serializes a key not listed in FIELDS; returns
SigmfError::Serde if serialization fails. Nothing is changed on
error.
Sourcepub fn remove_extension<T: SigmfExtension>(&mut self) -> Result<(), SigmfError>
pub fn remove_extension<T: SigmfExtension>(&mut self) -> Result<(), SigmfError>
Removes all of extension T’s declared fields from this capture.
§Errors
Returns SigmfError::InvalidMetadata if T’s scope is not
ExtensionScope::Capture.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Capture
impl<'de> Deserialize<'de> for Capture
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Capture
impl RefUnwindSafe for Capture
impl Send for Capture
impl Sync for Capture
impl Unpin for Capture
impl UnsafeUnpin for Capture
impl UnwindSafe for Capture
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more