embedded-nano-mesh 2.1.11

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) {
        let is_ignore_duplication_flag_set = self.is_ignore_duplication_flag_set();
        self.flags = 0;
        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),
        }
        self.set_ignore_duplication_flag(is_ignore_duplication_flag_set);
    }
}