Skip to main content

nexrad_decode/messages/
volume_coverage_pattern.rs

1//!
2//! Message type 5 "Volume Coverage Pattern" provides details about the volume
3//! coverage pattern being used. The RDA sends the Volume Coverage Pattern message
4//! upon wideband connection and at the beginning of each volume scan. The volume
5//! coverage pattern message includes a header which describes how the volume is being
6//! collected as well as a block for each elevation cut detailing the radar settings
7//! being used for that cut.
8//!
9
10use std::io::Read;
11
12mod definitions;
13pub use definitions::*;
14
15mod header;
16pub use header::Header;
17
18mod message;
19pub use message::Message;
20
21mod elevation_data_block;
22pub use elevation_data_block::ElevationDataBlock;
23
24use crate::result::Result;
25use crate::util::deserialize;
26
27/// Decodes a volume coverage pattern message type 5 from the provided reader.
28pub fn decode_volume_coverage_pattern<R: Read>(reader: &mut R) -> Result<Message> {
29    let header: Header = deserialize(reader)?;
30
31    let mut elevations: Vec<ElevationDataBlock> = Vec::new();
32    for _ in 0..header.number_of_elevation_cuts {
33        elevations.push(deserialize(reader)?);
34    }
35
36    let message = Message::new(header, elevations);
37
38    Ok(message)
39}