1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
//! Parse and write Iridium Short Burst Data (SBD) messages. //! //! Iridium is both a [satellite constellation](https://en.wikipedia.org/wiki/Iridium_satellite_constellation) //! and a [company](https://en.wikipedia.org/wiki/Iridium_Communications) that provides satellite //! communications. The Iridium network is used by phones, modems, and other communication devices. //! //! One mode of transmitting data over the Iridium network is via Short Burst Data (SBD) messages. //! These messages carry a payload of some small number of bytes, usually less than one thousand. //! Messages can be Mobile-Originated (MO), meaning that they are sent *from* an Iridium modem, or //! Mobile-Terminated (MT), meaning that the are sent *to* an Iridium modem. Mobile-originated //! messages are delivered either to an email address via MIME attachment, or directly to a given //! IP address and port via TCP; this second method is called DirectIP. //! //! This is a simple library for reading SBD messages from a stream, decoding their headers and //! data payloads, and writing them back to a stream. pub mod information_element; pub mod message; pub mod mobile_originated; pub mod mobile_terminated; pub use information_element::InformationElement; pub use message::Message; pub use mobile_originated::MobileOriginated; pub use mobile_terminated::MobileTerminated; extern crate byteorder; #[macro_use] extern crate enum_primitive; extern crate num; use std::result; #[derive(Debug)] pub enum Error { ByteorderError(byteorder::Error), IoError(std::io::Error), InvalidProtocolRevisionNumber(u8), NoMobileOriginatedHeader, NoMobileOriginatedPayload, Oversized, // Oversized doesn't demand a size since we don't want to find out how much there really is Undersized(usize), } impl From<byteorder::Error> for Error { fn from(err: byteorder::Error) -> Error { Error::ByteorderError(err) } } impl From<std::io::Error> for Error { fn from(err: std::io::Error) -> Error { Error::IoError(err) } } pub type Result<T> = result::Result<T, Error>;