1use std::fmt;
4
5use crate::{MseedError, Result};
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq)]
9pub enum FormatVersion {
10 V2,
12 V3,
14}
15
16impl fmt::Display for FormatVersion {
17 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
18 match self {
19 Self::V2 => write!(f, "miniSEED v2"),
20 Self::V3 => write!(f, "miniSEED v3"),
21 }
22 }
23}
24
25#[derive(Debug, Clone, Copy, PartialEq, Eq)]
27pub enum ByteOrder {
28 Big,
29 Little,
30}
31
32#[derive(Debug, Clone, Copy, PartialEq, Eq)]
34pub enum EncodingFormat {
35 Int16,
37 Int32,
39 Float32,
41 Float64,
43 Steim1,
45 Steim2,
47}
48
49impl EncodingFormat {
50 pub fn from_code(code: u8) -> Result<Self> {
52 match code {
53 1 => Ok(Self::Int16),
54 3 => Ok(Self::Int32),
55 4 => Ok(Self::Float32),
56 5 => Ok(Self::Float64),
57 10 => Ok(Self::Steim1),
58 11 => Ok(Self::Steim2),
59 _ => Err(MseedError::UnsupportedEncoding(code)),
60 }
61 }
62
63 pub fn to_code(self) -> u8 {
65 match self {
66 Self::Int16 => 1,
67 Self::Int32 => 3,
68 Self::Float32 => 4,
69 Self::Float64 => 5,
70 Self::Steim1 => 10,
71 Self::Steim2 => 11,
72 }
73 }
74}
75
76impl fmt::Display for EncodingFormat {
77 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
78 match self {
79 Self::Int16 => write!(f, "INT16"),
80 Self::Int32 => write!(f, "INT32"),
81 Self::Float32 => write!(f, "FLOAT32"),
82 Self::Float64 => write!(f, "FLOAT64"),
83 Self::Steim1 => write!(f, "Steim1"),
84 Self::Steim2 => write!(f, "Steim2"),
85 }
86 }
87}