use core::mem;
use core::cmp::Ordering;
extern crate flatbuffers;
use self::flatbuffers::{EndianScalar, Follow};
pub enum TMFOffset {}
#[derive(Copy, Clone, PartialEq)]
pub struct TMF<'a> {
pub _tab: flatbuffers::Table<'a>,
}
impl<'a> flatbuffers::Follow<'a> for TMF<'a> {
type Inner = TMF<'a>;
#[inline]
unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
Self { _tab: flatbuffers::Table::new(buf, loc) }
}
}
impl<'a> TMF<'a> {
pub const VT_VERSION: flatbuffers::VOffsetT = 4;
pub const VT_SPACECRAFT_ID: flatbuffers::VOffsetT = 6;
pub const VT_VIRTUAL_CHANNEL_ID: flatbuffers::VOffsetT = 8;
pub const VT_OCF_FLAG: flatbuffers::VOffsetT = 10;
pub const VT_MASTER_FRAME_COUNT: flatbuffers::VOffsetT = 12;
pub const VT_VIRTUAL_FRAME_COUNT: flatbuffers::VOffsetT = 14;
pub const VT_SEC_HDR_FLAG: flatbuffers::VOffsetT = 16;
pub const VT_SYNCH_FLAG: flatbuffers::VOffsetT = 18;
pub const VT_PACKET_ORDER_FLAG: flatbuffers::VOffsetT = 20;
pub const VT_SEGMENT_LENGTH_ID: flatbuffers::VOffsetT = 22;
pub const VT_FIRST_HDR_POINTER: flatbuffers::VOffsetT = 24;
pub const VT_DATA: flatbuffers::VOffsetT = 26;
pub const VT_OCF: flatbuffers::VOffsetT = 28;
pub const VT_FECF: flatbuffers::VOffsetT = 30;
#[inline]
pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
TMF { _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 TMFArgs<'args>
) -> flatbuffers::WIPOffset<TMF<'bldr>> {
let mut builder = TMFBuilder::new(_fbb);
if let Some(x) = args.OCF { builder.add_OCF(x); }
if let Some(x) = args.DATA { builder.add_DATA(x); }
builder.add_FECF(args.FECF);
builder.add_FIRST_HDR_POINTER(args.FIRST_HDR_POINTER);
builder.add_SPACECRAFT_ID(args.SPACECRAFT_ID);
builder.add_SEGMENT_LENGTH_ID(args.SEGMENT_LENGTH_ID);
builder.add_PACKET_ORDER_FLAG(args.PACKET_ORDER_FLAG);
builder.add_SYNCH_FLAG(args.SYNCH_FLAG);
builder.add_SEC_HDR_FLAG(args.SEC_HDR_FLAG);
builder.add_VIRTUAL_FRAME_COUNT(args.VIRTUAL_FRAME_COUNT);
builder.add_MASTER_FRAME_COUNT(args.MASTER_FRAME_COUNT);
builder.add_OCF_FLAG(args.OCF_FLAG);
builder.add_VIRTUAL_CHANNEL_ID(args.VIRTUAL_CHANNEL_ID);
builder.add_VERSION(args.VERSION);
builder.finish()
}
pub fn unpack(&self) -> TMFT {
let VERSION = self.VERSION();
let SPACECRAFT_ID = self.SPACECRAFT_ID();
let VIRTUAL_CHANNEL_ID = self.VIRTUAL_CHANNEL_ID();
let OCF_FLAG = self.OCF_FLAG();
let MASTER_FRAME_COUNT = self.MASTER_FRAME_COUNT();
let VIRTUAL_FRAME_COUNT = self.VIRTUAL_FRAME_COUNT();
let SEC_HDR_FLAG = self.SEC_HDR_FLAG();
let SYNCH_FLAG = self.SYNCH_FLAG();
let PACKET_ORDER_FLAG = self.PACKET_ORDER_FLAG();
let SEGMENT_LENGTH_ID = self.SEGMENT_LENGTH_ID();
let FIRST_HDR_POINTER = self.FIRST_HDR_POINTER();
let DATA = self.DATA().map(|x| {
x.into_iter().collect()
});
let OCF = self.OCF().map(|x| {
x.into_iter().collect()
});
let FECF = self.FECF();
TMFT {
VERSION,
SPACECRAFT_ID,
VIRTUAL_CHANNEL_ID,
OCF_FLAG,
MASTER_FRAME_COUNT,
VIRTUAL_FRAME_COUNT,
SEC_HDR_FLAG,
SYNCH_FLAG,
PACKET_ORDER_FLAG,
SEGMENT_LENGTH_ID,
FIRST_HDR_POINTER,
DATA,
OCF,
FECF,
}
}
#[inline]
pub fn VERSION(&self) -> u8 {
unsafe { self._tab.get::<u8>(TMF::VT_VERSION, Some(0)).unwrap()}
}
#[inline]
pub fn SPACECRAFT_ID(&self) -> u16 {
unsafe { self._tab.get::<u16>(TMF::VT_SPACECRAFT_ID, Some(0)).unwrap()}
}
#[inline]
pub fn VIRTUAL_CHANNEL_ID(&self) -> u8 {
unsafe { self._tab.get::<u8>(TMF::VT_VIRTUAL_CHANNEL_ID, Some(0)).unwrap()}
}
#[inline]
pub fn OCF_FLAG(&self) -> bool {
unsafe { self._tab.get::<bool>(TMF::VT_OCF_FLAG, Some(false)).unwrap()}
}
#[inline]
pub fn MASTER_FRAME_COUNT(&self) -> u8 {
unsafe { self._tab.get::<u8>(TMF::VT_MASTER_FRAME_COUNT, Some(0)).unwrap()}
}
#[inline]
pub fn VIRTUAL_FRAME_COUNT(&self) -> u8 {
unsafe { self._tab.get::<u8>(TMF::VT_VIRTUAL_FRAME_COUNT, Some(0)).unwrap()}
}
#[inline]
pub fn SEC_HDR_FLAG(&self) -> bool {
unsafe { self._tab.get::<bool>(TMF::VT_SEC_HDR_FLAG, Some(false)).unwrap()}
}
#[inline]
pub fn SYNCH_FLAG(&self) -> bool {
unsafe { self._tab.get::<bool>(TMF::VT_SYNCH_FLAG, Some(false)).unwrap()}
}
#[inline]
pub fn PACKET_ORDER_FLAG(&self) -> bool {
unsafe { self._tab.get::<bool>(TMF::VT_PACKET_ORDER_FLAG, Some(false)).unwrap()}
}
#[inline]
pub fn SEGMENT_LENGTH_ID(&self) -> u8 {
unsafe { self._tab.get::<u8>(TMF::VT_SEGMENT_LENGTH_ID, Some(0)).unwrap()}
}
#[inline]
pub fn FIRST_HDR_POINTER(&self) -> u16 {
unsafe { self._tab.get::<u16>(TMF::VT_FIRST_HDR_POINTER, Some(0)).unwrap()}
}
#[inline]
pub fn DATA(&self) -> Option<flatbuffers::Vector<'a, u8>> {
unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(TMF::VT_DATA, None)}
}
#[inline]
pub fn OCF(&self) -> Option<flatbuffers::Vector<'a, u8>> {
unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(TMF::VT_OCF, None)}
}
#[inline]
pub fn FECF(&self) -> u16 {
unsafe { self._tab.get::<u16>(TMF::VT_FECF, Some(0)).unwrap()}
}
}
impl flatbuffers::Verifiable for TMF<'_> {
#[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::<u16>("SPACECRAFT_ID", Self::VT_SPACECRAFT_ID, false)?
.visit_field::<u8>("VIRTUAL_CHANNEL_ID", Self::VT_VIRTUAL_CHANNEL_ID, false)?
.visit_field::<bool>("OCF_FLAG", Self::VT_OCF_FLAG, false)?
.visit_field::<u8>("MASTER_FRAME_COUNT", Self::VT_MASTER_FRAME_COUNT, false)?
.visit_field::<u8>("VIRTUAL_FRAME_COUNT", Self::VT_VIRTUAL_FRAME_COUNT, false)?
.visit_field::<bool>("SEC_HDR_FLAG", Self::VT_SEC_HDR_FLAG, false)?
.visit_field::<bool>("SYNCH_FLAG", Self::VT_SYNCH_FLAG, false)?
.visit_field::<bool>("PACKET_ORDER_FLAG", Self::VT_PACKET_ORDER_FLAG, false)?
.visit_field::<u8>("SEGMENT_LENGTH_ID", Self::VT_SEGMENT_LENGTH_ID, false)?
.visit_field::<u16>("FIRST_HDR_POINTER", Self::VT_FIRST_HDR_POINTER, false)?
.visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("DATA", Self::VT_DATA, false)?
.visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("OCF", Self::VT_OCF, false)?
.visit_field::<u16>("FECF", Self::VT_FECF, false)?
.finish();
Ok(())
}
}
pub struct TMFArgs<'a> {
pub VERSION: u8,
pub SPACECRAFT_ID: u16,
pub VIRTUAL_CHANNEL_ID: u8,
pub OCF_FLAG: bool,
pub MASTER_FRAME_COUNT: u8,
pub VIRTUAL_FRAME_COUNT: u8,
pub SEC_HDR_FLAG: bool,
pub SYNCH_FLAG: bool,
pub PACKET_ORDER_FLAG: bool,
pub SEGMENT_LENGTH_ID: u8,
pub FIRST_HDR_POINTER: u16,
pub DATA: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
pub OCF: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
pub FECF: u16,
}
impl<'a> Default for TMFArgs<'a> {
#[inline]
fn default() -> Self {
TMFArgs {
VERSION: 0,
SPACECRAFT_ID: 0,
VIRTUAL_CHANNEL_ID: 0,
OCF_FLAG: false,
MASTER_FRAME_COUNT: 0,
VIRTUAL_FRAME_COUNT: 0,
SEC_HDR_FLAG: false,
SYNCH_FLAG: false,
PACKET_ORDER_FLAG: false,
SEGMENT_LENGTH_ID: 0,
FIRST_HDR_POINTER: 0,
DATA: None,
OCF: None,
FECF: 0,
}
}
}
pub struct TMFBuilder<'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> TMFBuilder<'a, 'b, A> {
#[inline]
pub fn add_VERSION(&mut self, VERSION: u8) {
self.fbb_.push_slot::<u8>(TMF::VT_VERSION, VERSION, 0);
}
#[inline]
pub fn add_SPACECRAFT_ID(&mut self, SPACECRAFT_ID: u16) {
self.fbb_.push_slot::<u16>(TMF::VT_SPACECRAFT_ID, SPACECRAFT_ID, 0);
}
#[inline]
pub fn add_VIRTUAL_CHANNEL_ID(&mut self, VIRTUAL_CHANNEL_ID: u8) {
self.fbb_.push_slot::<u8>(TMF::VT_VIRTUAL_CHANNEL_ID, VIRTUAL_CHANNEL_ID, 0);
}
#[inline]
pub fn add_OCF_FLAG(&mut self, OCF_FLAG: bool) {
self.fbb_.push_slot::<bool>(TMF::VT_OCF_FLAG, OCF_FLAG, false);
}
#[inline]
pub fn add_MASTER_FRAME_COUNT(&mut self, MASTER_FRAME_COUNT: u8) {
self.fbb_.push_slot::<u8>(TMF::VT_MASTER_FRAME_COUNT, MASTER_FRAME_COUNT, 0);
}
#[inline]
pub fn add_VIRTUAL_FRAME_COUNT(&mut self, VIRTUAL_FRAME_COUNT: u8) {
self.fbb_.push_slot::<u8>(TMF::VT_VIRTUAL_FRAME_COUNT, VIRTUAL_FRAME_COUNT, 0);
}
#[inline]
pub fn add_SEC_HDR_FLAG(&mut self, SEC_HDR_FLAG: bool) {
self.fbb_.push_slot::<bool>(TMF::VT_SEC_HDR_FLAG, SEC_HDR_FLAG, false);
}
#[inline]
pub fn add_SYNCH_FLAG(&mut self, SYNCH_FLAG: bool) {
self.fbb_.push_slot::<bool>(TMF::VT_SYNCH_FLAG, SYNCH_FLAG, false);
}
#[inline]
pub fn add_PACKET_ORDER_FLAG(&mut self, PACKET_ORDER_FLAG: bool) {
self.fbb_.push_slot::<bool>(TMF::VT_PACKET_ORDER_FLAG, PACKET_ORDER_FLAG, false);
}
#[inline]
pub fn add_SEGMENT_LENGTH_ID(&mut self, SEGMENT_LENGTH_ID: u8) {
self.fbb_.push_slot::<u8>(TMF::VT_SEGMENT_LENGTH_ID, SEGMENT_LENGTH_ID, 0);
}
#[inline]
pub fn add_FIRST_HDR_POINTER(&mut self, FIRST_HDR_POINTER: u16) {
self.fbb_.push_slot::<u16>(TMF::VT_FIRST_HDR_POINTER, FIRST_HDR_POINTER, 0);
}
#[inline]
pub fn add_DATA(&mut self, DATA: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(TMF::VT_DATA, DATA);
}
#[inline]
pub fn add_OCF(&mut self, OCF: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(TMF::VT_OCF, OCF);
}
#[inline]
pub fn add_FECF(&mut self, FECF: u16) {
self.fbb_.push_slot::<u16>(TMF::VT_FECF, FECF, 0);
}
#[inline]
pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> TMFBuilder<'a, 'b, A> {
let start = _fbb.start_table();
TMFBuilder {
fbb_: _fbb,
start_: start,
}
}
#[inline]
pub fn finish(self) -> flatbuffers::WIPOffset<TMF<'a>> {
let o = self.fbb_.end_table(self.start_);
flatbuffers::WIPOffset::new(o.value())
}
}
impl core::fmt::Debug for TMF<'_> {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
let mut ds = f.debug_struct("TMF");
ds.field("VERSION", &self.VERSION());
ds.field("SPACECRAFT_ID", &self.SPACECRAFT_ID());
ds.field("VIRTUAL_CHANNEL_ID", &self.VIRTUAL_CHANNEL_ID());
ds.field("OCF_FLAG", &self.OCF_FLAG());
ds.field("MASTER_FRAME_COUNT", &self.MASTER_FRAME_COUNT());
ds.field("VIRTUAL_FRAME_COUNT", &self.VIRTUAL_FRAME_COUNT());
ds.field("SEC_HDR_FLAG", &self.SEC_HDR_FLAG());
ds.field("SYNCH_FLAG", &self.SYNCH_FLAG());
ds.field("PACKET_ORDER_FLAG", &self.PACKET_ORDER_FLAG());
ds.field("SEGMENT_LENGTH_ID", &self.SEGMENT_LENGTH_ID());
ds.field("FIRST_HDR_POINTER", &self.FIRST_HDR_POINTER());
ds.field("DATA", &self.DATA());
ds.field("OCF", &self.OCF());
ds.field("FECF", &self.FECF());
ds.finish()
}
}
#[non_exhaustive]
#[derive(Debug, Clone, PartialEq)]
pub struct TMFT {
pub VERSION: u8,
pub SPACECRAFT_ID: u16,
pub VIRTUAL_CHANNEL_ID: u8,
pub OCF_FLAG: bool,
pub MASTER_FRAME_COUNT: u8,
pub VIRTUAL_FRAME_COUNT: u8,
pub SEC_HDR_FLAG: bool,
pub SYNCH_FLAG: bool,
pub PACKET_ORDER_FLAG: bool,
pub SEGMENT_LENGTH_ID: u8,
pub FIRST_HDR_POINTER: u16,
pub DATA: Option<Vec<u8>>,
pub OCF: Option<Vec<u8>>,
pub FECF: u16,
}
impl Default for TMFT {
fn default() -> Self {
Self {
VERSION: 0,
SPACECRAFT_ID: 0,
VIRTUAL_CHANNEL_ID: 0,
OCF_FLAG: false,
MASTER_FRAME_COUNT: 0,
VIRTUAL_FRAME_COUNT: 0,
SEC_HDR_FLAG: false,
SYNCH_FLAG: false,
PACKET_ORDER_FLAG: false,
SEGMENT_LENGTH_ID: 0,
FIRST_HDR_POINTER: 0,
DATA: None,
OCF: None,
FECF: 0,
}
}
}
impl TMFT {
pub fn pack<'b, A: flatbuffers::Allocator + 'b>(
&self,
_fbb: &mut flatbuffers::FlatBufferBuilder<'b, A>
) -> flatbuffers::WIPOffset<TMF<'b>> {
let VERSION = self.VERSION;
let SPACECRAFT_ID = self.SPACECRAFT_ID;
let VIRTUAL_CHANNEL_ID = self.VIRTUAL_CHANNEL_ID;
let OCF_FLAG = self.OCF_FLAG;
let MASTER_FRAME_COUNT = self.MASTER_FRAME_COUNT;
let VIRTUAL_FRAME_COUNT = self.VIRTUAL_FRAME_COUNT;
let SEC_HDR_FLAG = self.SEC_HDR_FLAG;
let SYNCH_FLAG = self.SYNCH_FLAG;
let PACKET_ORDER_FLAG = self.PACKET_ORDER_FLAG;
let SEGMENT_LENGTH_ID = self.SEGMENT_LENGTH_ID;
let FIRST_HDR_POINTER = self.FIRST_HDR_POINTER;
let DATA = self.DATA.as_ref().map(|x|{
_fbb.create_vector(x)
});
let OCF = self.OCF.as_ref().map(|x|{
_fbb.create_vector(x)
});
let FECF = self.FECF;
TMF::create(_fbb, &TMFArgs{
VERSION,
SPACECRAFT_ID,
VIRTUAL_CHANNEL_ID,
OCF_FLAG,
MASTER_FRAME_COUNT,
VIRTUAL_FRAME_COUNT,
SEC_HDR_FLAG,
SYNCH_FLAG,
PACKET_ORDER_FLAG,
SEGMENT_LENGTH_ID,
FIRST_HDR_POINTER,
DATA,
OCF,
FECF,
})
}
}
#[inline]
pub fn root_as_TMF(buf: &[u8]) -> Result<TMF, flatbuffers::InvalidFlatbuffer> {
flatbuffers::root::<TMF>(buf)
}
#[inline]
pub fn size_prefixed_root_as_TMF(buf: &[u8]) -> Result<TMF, flatbuffers::InvalidFlatbuffer> {
flatbuffers::size_prefixed_root::<TMF>(buf)
}
#[inline]
pub fn root_as_TMF_with_opts<'b, 'o>(
opts: &'o flatbuffers::VerifierOptions,
buf: &'b [u8],
) -> Result<TMF<'b>, flatbuffers::InvalidFlatbuffer> {
flatbuffers::root_with_opts::<TMF<'b>>(opts, buf)
}
#[inline]
pub fn size_prefixed_root_as_TMF_with_opts<'b, 'o>(
opts: &'o flatbuffers::VerifierOptions,
buf: &'b [u8],
) -> Result<TMF<'b>, flatbuffers::InvalidFlatbuffer> {
flatbuffers::size_prefixed_root_with_opts::<TMF<'b>>(opts, buf)
}
#[inline]
pub unsafe fn root_as_TMF_unchecked(buf: &[u8]) -> TMF {
flatbuffers::root_unchecked::<TMF>(buf)
}
#[inline]
pub unsafe fn size_prefixed_root_as_TMF_unchecked(buf: &[u8]) -> TMF {
flatbuffers::size_prefixed_root_unchecked::<TMF>(buf)
}
pub const TMF_IDENTIFIER: &str = "$TMF";
#[inline]
pub fn TMF_buffer_has_identifier(buf: &[u8]) -> bool {
flatbuffers::buffer_has_identifier(buf, TMF_IDENTIFIER, false)
}
#[inline]
pub fn TMF_size_prefixed_buffer_has_identifier(buf: &[u8]) -> bool {
flatbuffers::buffer_has_identifier(buf, TMF_IDENTIFIER, true)
}
#[inline]
pub fn finish_TMF_buffer<'a, 'b, A: flatbuffers::Allocator + 'a>(
fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
root: flatbuffers::WIPOffset<TMF<'a>>) {
fbb.finish(root, Some(TMF_IDENTIFIER));
}
#[inline]
pub fn finish_size_prefixed_TMF_buffer<'a, 'b, A: flatbuffers::Allocator + 'a>(fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, root: flatbuffers::WIPOffset<TMF<'a>>) {
fbb.finish_size_prefixed(root, Some(TMF_IDENTIFIER));
}