fuga_remo_api/
common_types.rs

1// Common types for Remo API models.
2// Copyright 2022-2023 Kenta Ida 
3// SPDX-License-Identifier: MIT
4//
5
6use chrono::{DateTime, Utc};
7use heapless::String;
8
9use crate::config::SERIAL_NUMBER_LEN;
10
11pub type Timestamp = DateTime<Utc>;
12pub type SerialNumber = String<SERIAL_NUMBER_LEN>;
13
14
15#[derive(Debug)]
16pub enum ModelNodeParseError {
17    UuidParseError,
18    TimestampParseError,
19    MacAddressParseError,
20    UnexpectedEnumValue,
21    UnknownNewestEventsType,
22    NodeTooDeep,
23    StringTooLong,
24    UnexpectedMapArrayEnd,
25    UnexpectedParserState,
26    UnexpectedNode(UnexpectedNodeError),
27}
28
29pub type UnexpectedNodeError = String<64>;
30
31impl From<uuid::Error> for ModelNodeParseError {
32    fn from(_: uuid::Error) -> Self {
33        Self::UuidParseError
34    }
35}
36impl From<chrono::ParseError> for ModelNodeParseError {
37    fn from(_: chrono::ParseError) -> Self {
38        Self::TimestampParseError
39    }
40}