embedded-nano-mesh 0.1.3

Lightweight mesh communication protocol for embedded devices
Documentation
use super::super::{Packet, PacketFlagOps, PacketState};

impl Packet {
    pub fn get_spec_state(&self) -> PacketState {
        if self.is_ping_flag_set() {
            return PacketState::Ping;
        }
        if self.is_pong_flag_set() {
            return PacketState::Pong;
        }
        if self.is_send_transaction_flag_set() {
            return PacketState::SendTransaction;
        }
        if self.is_accept_transaction_flag_set() {
            return PacketState::AcceptTransaction;
        }
        if self.is_initiate_transaction_flag_set() {
            return PacketState::InitTransaction;
        }
        if self.is_finish_transaction_flag_set() {
            return PacketState::FinishTransaction;
        }
        PacketState::Normal
    }

    pub fn set_spec_state(&mut self, new_state: PacketState) {
        self.set_ping_flag(false);
        self.set_pong_flag(false);
        self.set_send_transaction_flag(false);
        self.set_accept_transaction_flag(false);
        self.set_initiate_transaction_flag(false);
        self.set_finish_transaction_flag(false);
        match new_state {
            PacketState::Normal => (),
            PacketState::Ping => {
                self.set_ping_flag(true);
            }
            PacketState::Pong => {
                self.set_pong_flag(true);
            }
            PacketState::SendTransaction => {
                self.set_send_transaction_flag(true);
            }
            PacketState::AcceptTransaction => {
                self.set_accept_transaction_flag(true);
            }
            PacketState::InitTransaction => {
                self.set_initiate_transaction_flag(true);
            }
            PacketState::FinishTransaction => {
                self.set_finish_transaction_flag(true);
            }
        }
    }
}