use core::mem;
use core::cmp::Ordering;
extern crate flatbuffers;
use self::flatbuffers::{EndianScalar, Follow};
pub enum TCFOffset {}
#[derive(Copy, Clone, PartialEq)]
pub struct TCF<'a> {
pub _tab: flatbuffers::Table<'a>,
}
impl<'a> flatbuffers::Follow<'a> for TCF<'a> {
type Inner = TCF<'a>;
#[inline]
unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
Self { _tab: flatbuffers::Table::new(buf, loc) }
}
}
impl<'a> TCF<'a> {
pub const VT_VERSION: flatbuffers::VOffsetT = 4;
pub const VT_BYPASS_FLAG: flatbuffers::VOffsetT = 6;
pub const VT_CONTROL_CMD_FLAG: flatbuffers::VOffsetT = 8;
pub const VT_SPACECRAFT_ID: flatbuffers::VOffsetT = 10;
pub const VT_VIRTUAL_CHANNEL_ID: flatbuffers::VOffsetT = 12;
pub const VT_FRAME_LENGTH: flatbuffers::VOffsetT = 14;
pub const VT_FRAME_SEQUENCE_NUM: flatbuffers::VOffsetT = 16;
pub const VT_DATA: flatbuffers::VOffsetT = 18;
pub const VT_FECF: flatbuffers::VOffsetT = 20;
#[inline]
pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
TCF { _tab: table }
}
#[allow(unused_mut)]
pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
_fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
args: &'args TCFArgs<'args>
) -> flatbuffers::WIPOffset<TCF<'bldr>> {
let mut builder = TCFBuilder::new(_fbb);
if let Some(x) = args.DATA { builder.add_DATA(x); }
builder.add_FECF(args.FECF);
builder.add_FRAME_LENGTH(args.FRAME_LENGTH);
builder.add_SPACECRAFT_ID(args.SPACECRAFT_ID);
builder.add_FRAME_SEQUENCE_NUM(args.FRAME_SEQUENCE_NUM);
builder.add_VIRTUAL_CHANNEL_ID(args.VIRTUAL_CHANNEL_ID);
builder.add_CONTROL_CMD_FLAG(args.CONTROL_CMD_FLAG);
builder.add_BYPASS_FLAG(args.BYPASS_FLAG);
builder.add_VERSION(args.VERSION);
builder.finish()
}
pub fn unpack(&self) -> TCFT {
let VERSION = self.VERSION();
let BYPASS_FLAG = self.BYPASS_FLAG();
let CONTROL_CMD_FLAG = self.CONTROL_CMD_FLAG();
let SPACECRAFT_ID = self.SPACECRAFT_ID();
let VIRTUAL_CHANNEL_ID = self.VIRTUAL_CHANNEL_ID();
let FRAME_LENGTH = self.FRAME_LENGTH();
let FRAME_SEQUENCE_NUM = self.FRAME_SEQUENCE_NUM();
let DATA = self.DATA().map(|x| {
x.into_iter().collect()
});
let FECF = self.FECF();
TCFT {
VERSION,
BYPASS_FLAG,
CONTROL_CMD_FLAG,
SPACECRAFT_ID,
VIRTUAL_CHANNEL_ID,
FRAME_LENGTH,
FRAME_SEQUENCE_NUM,
DATA,
FECF,
}
}
#[inline]
pub fn VERSION(&self) -> u8 {
unsafe { self._tab.get::<u8>(TCF::VT_VERSION, Some(0)).unwrap()}
}
#[inline]
pub fn BYPASS_FLAG(&self) -> bool {
unsafe { self._tab.get::<bool>(TCF::VT_BYPASS_FLAG, Some(false)).unwrap()}
}
#[inline]
pub fn CONTROL_CMD_FLAG(&self) -> bool {
unsafe { self._tab.get::<bool>(TCF::VT_CONTROL_CMD_FLAG, Some(false)).unwrap()}
}
#[inline]
pub fn SPACECRAFT_ID(&self) -> u16 {
unsafe { self._tab.get::<u16>(TCF::VT_SPACECRAFT_ID, Some(0)).unwrap()}
}
#[inline]
pub fn VIRTUAL_CHANNEL_ID(&self) -> u8 {
unsafe { self._tab.get::<u8>(TCF::VT_VIRTUAL_CHANNEL_ID, Some(0)).unwrap()}
}
#[inline]
pub fn FRAME_LENGTH(&self) -> u16 {
unsafe { self._tab.get::<u16>(TCF::VT_FRAME_LENGTH, Some(0)).unwrap()}
}
#[inline]
pub fn FRAME_SEQUENCE_NUM(&self) -> u8 {
unsafe { self._tab.get::<u8>(TCF::VT_FRAME_SEQUENCE_NUM, Some(0)).unwrap()}
}
#[inline]
pub fn DATA(&self) -> Option<flatbuffers::Vector<'a, u8>> {
unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(TCF::VT_DATA, None)}
}
#[inline]
pub fn FECF(&self) -> u16 {
unsafe { self._tab.get::<u16>(TCF::VT_FECF, Some(0)).unwrap()}
}
}
impl flatbuffers::Verifiable for TCF<'_> {
#[inline]
fn run_verifier(
v: &mut flatbuffers::Verifier, pos: usize
) -> Result<(), flatbuffers::InvalidFlatbuffer> {
use self::flatbuffers::Verifiable;
v.visit_table(pos)?
.visit_field::<u8>("VERSION", Self::VT_VERSION, false)?
.visit_field::<bool>("BYPASS_FLAG", Self::VT_BYPASS_FLAG, false)?
.visit_field::<bool>("CONTROL_CMD_FLAG", Self::VT_CONTROL_CMD_FLAG, false)?
.visit_field::<u16>("SPACECRAFT_ID", Self::VT_SPACECRAFT_ID, false)?
.visit_field::<u8>("VIRTUAL_CHANNEL_ID", Self::VT_VIRTUAL_CHANNEL_ID, false)?
.visit_field::<u16>("FRAME_LENGTH", Self::VT_FRAME_LENGTH, false)?
.visit_field::<u8>("FRAME_SEQUENCE_NUM", Self::VT_FRAME_SEQUENCE_NUM, false)?
.visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("DATA", Self::VT_DATA, false)?
.visit_field::<u16>("FECF", Self::VT_FECF, false)?
.finish();
Ok(())
}
}
pub struct TCFArgs<'a> {
pub VERSION: u8,
pub BYPASS_FLAG: bool,
pub CONTROL_CMD_FLAG: bool,
pub SPACECRAFT_ID: u16,
pub VIRTUAL_CHANNEL_ID: u8,
pub FRAME_LENGTH: u16,
pub FRAME_SEQUENCE_NUM: u8,
pub DATA: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
pub FECF: u16,
}
impl<'a> Default for TCFArgs<'a> {
#[inline]
fn default() -> Self {
TCFArgs {
VERSION: 0,
BYPASS_FLAG: false,
CONTROL_CMD_FLAG: false,
SPACECRAFT_ID: 0,
VIRTUAL_CHANNEL_ID: 0,
FRAME_LENGTH: 0,
FRAME_SEQUENCE_NUM: 0,
DATA: None,
FECF: 0,
}
}
}
pub struct TCFBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
}
impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> TCFBuilder<'a, 'b, A> {
#[inline]
pub fn add_VERSION(&mut self, VERSION: u8) {
self.fbb_.push_slot::<u8>(TCF::VT_VERSION, VERSION, 0);
}
#[inline]
pub fn add_BYPASS_FLAG(&mut self, BYPASS_FLAG: bool) {
self.fbb_.push_slot::<bool>(TCF::VT_BYPASS_FLAG, BYPASS_FLAG, false);
}
#[inline]
pub fn add_CONTROL_CMD_FLAG(&mut self, CONTROL_CMD_FLAG: bool) {
self.fbb_.push_slot::<bool>(TCF::VT_CONTROL_CMD_FLAG, CONTROL_CMD_FLAG, false);
}
#[inline]
pub fn add_SPACECRAFT_ID(&mut self, SPACECRAFT_ID: u16) {
self.fbb_.push_slot::<u16>(TCF::VT_SPACECRAFT_ID, SPACECRAFT_ID, 0);
}
#[inline]
pub fn add_VIRTUAL_CHANNEL_ID(&mut self, VIRTUAL_CHANNEL_ID: u8) {
self.fbb_.push_slot::<u8>(TCF::VT_VIRTUAL_CHANNEL_ID, VIRTUAL_CHANNEL_ID, 0);
}
#[inline]
pub fn add_FRAME_LENGTH(&mut self, FRAME_LENGTH: u16) {
self.fbb_.push_slot::<u16>(TCF::VT_FRAME_LENGTH, FRAME_LENGTH, 0);
}
#[inline]
pub fn add_FRAME_SEQUENCE_NUM(&mut self, FRAME_SEQUENCE_NUM: u8) {
self.fbb_.push_slot::<u8>(TCF::VT_FRAME_SEQUENCE_NUM, FRAME_SEQUENCE_NUM, 0);
}
#[inline]
pub fn add_DATA(&mut self, DATA: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(TCF::VT_DATA, DATA);
}
#[inline]
pub fn add_FECF(&mut self, FECF: u16) {
self.fbb_.push_slot::<u16>(TCF::VT_FECF, FECF, 0);
}
#[inline]
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> TCFBuilder<'a, 'b, A> {
let start = _fbb.start_table();
TCFBuilder {
fbb_: _fbb,
start_: start,
}
}
#[inline]
pub fn finish(self) -> flatbuffers::WIPOffset<TCF<'a>> {
let o = self.fbb_.end_table(self.start_);
flatbuffers::WIPOffset::new(o.value())
}
}
impl core::fmt::Debug for TCF<'_> {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
let mut ds = f.debug_struct("TCF");
ds.field("VERSION", &self.VERSION());
ds.field("BYPASS_FLAG", &self.BYPASS_FLAG());
ds.field("CONTROL_CMD_FLAG", &self.CONTROL_CMD_FLAG());
ds.field("SPACECRAFT_ID", &self.SPACECRAFT_ID());
ds.field("VIRTUAL_CHANNEL_ID", &self.VIRTUAL_CHANNEL_ID());
ds.field("FRAME_LENGTH", &self.FRAME_LENGTH());
ds.field("FRAME_SEQUENCE_NUM", &self.FRAME_SEQUENCE_NUM());
ds.field("DATA", &self.DATA());
ds.field("FECF", &self.FECF());
ds.finish()
}
}
#[non_exhaustive]
#[derive(Debug, Clone, PartialEq)]
pub struct TCFT {
pub VERSION: u8,
pub BYPASS_FLAG: bool,
pub CONTROL_CMD_FLAG: bool,
pub SPACECRAFT_ID: u16,
pub VIRTUAL_CHANNEL_ID: u8,
pub FRAME_LENGTH: u16,
pub FRAME_SEQUENCE_NUM: u8,
pub DATA: Option<Vec<u8>>,
pub FECF: u16,
}
impl Default for TCFT {
fn default() -> Self {
Self {
VERSION: 0,
BYPASS_FLAG: false,
CONTROL_CMD_FLAG: false,
SPACECRAFT_ID: 0,
VIRTUAL_CHANNEL_ID: 0,
FRAME_LENGTH: 0,
FRAME_SEQUENCE_NUM: 0,
DATA: None,
FECF: 0,
}
}
}
impl TCFT {
pub fn pack<'b, A: flatbuffers::Allocator + 'b>(
&self,
_fbb: &mut flatbuffers::FlatBufferBuilder<'b, A>
) -> flatbuffers::WIPOffset<TCF<'b>> {
let VERSION = self.VERSION;
let BYPASS_FLAG = self.BYPASS_FLAG;
let CONTROL_CMD_FLAG = self.CONTROL_CMD_FLAG;
let SPACECRAFT_ID = self.SPACECRAFT_ID;
let VIRTUAL_CHANNEL_ID = self.VIRTUAL_CHANNEL_ID;
let FRAME_LENGTH = self.FRAME_LENGTH;
let FRAME_SEQUENCE_NUM = self.FRAME_SEQUENCE_NUM;
let DATA = self.DATA.as_ref().map(|x|{
_fbb.create_vector(x)
});
let FECF = self.FECF;
TCF::create(_fbb, &TCFArgs{
VERSION,
BYPASS_FLAG,
CONTROL_CMD_FLAG,
SPACECRAFT_ID,
VIRTUAL_CHANNEL_ID,
FRAME_LENGTH,
FRAME_SEQUENCE_NUM,
DATA,
FECF,
})
}
}
#[inline]
pub fn root_as_TCF(buf: &[u8]) -> Result<TCF, flatbuffers::InvalidFlatbuffer> {
flatbuffers::root::<TCF>(buf)
}
#[inline]
pub fn size_prefixed_root_as_TCF(buf: &[u8]) -> Result<TCF, flatbuffers::InvalidFlatbuffer> {
flatbuffers::size_prefixed_root::<TCF>(buf)
}
#[inline]
pub fn root_as_TCF_with_opts<'b, 'o>(
opts: &'o flatbuffers::VerifierOptions,
buf: &'b [u8],
) -> Result<TCF<'b>, flatbuffers::InvalidFlatbuffer> {
flatbuffers::root_with_opts::<TCF<'b>>(opts, buf)
}
#[inline]
pub fn size_prefixed_root_as_TCF_with_opts<'b, 'o>(
opts: &'o flatbuffers::VerifierOptions,
buf: &'b [u8],
) -> Result<TCF<'b>, flatbuffers::InvalidFlatbuffer> {
flatbuffers::size_prefixed_root_with_opts::<TCF<'b>>(opts, buf)
}
#[inline]
pub unsafe fn root_as_TCF_unchecked(buf: &[u8]) -> TCF {
flatbuffers::root_unchecked::<TCF>(buf)
}
#[inline]
pub unsafe fn size_prefixed_root_as_TCF_unchecked(buf: &[u8]) -> TCF {
flatbuffers::size_prefixed_root_unchecked::<TCF>(buf)
}
pub const TCF_IDENTIFIER: &str = "$TCF";
#[inline]
pub fn TCF_buffer_has_identifier(buf: &[u8]) -> bool {
flatbuffers::buffer_has_identifier(buf, TCF_IDENTIFIER, false)
}
#[inline]
pub fn TCF_size_prefixed_buffer_has_identifier(buf: &[u8]) -> bool {
flatbuffers::buffer_has_identifier(buf, TCF_IDENTIFIER, true)
}
#[inline]
pub fn finish_TCF_buffer<'a, 'b, A: flatbuffers::Allocator + 'a>(
fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
root: flatbuffers::WIPOffset<TCF<'a>>) {
fbb.finish(root, Some(TCF_IDENTIFIER));
}
#[inline]
pub fn finish_size_prefixed_TCF_buffer<'a, 'b, A: flatbuffers::Allocator + 'a>(fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, root: flatbuffers::WIPOffset<TCF<'a>>) {
fbb.finish_size_prefixed(root, Some(TCF_IDENTIFIER));
}