spp-rust 0.2.3

An implementation of the CCSDS 133.0-B-2 Recommended Standard
Documentation
use bitvec::prelude::*;

use spp_rust::{packet::{SpacePacket, OctetStringSpacePacket}, pri_header::{Identification, PacketType, SequenceControl, SeqFlags}, data::{SecondaryHeader, UserData}};

const MIN_SP_SIZE_BITS: usize = 7 * 8;
const MAX_SP_SIZE_BITS: usize = 65542 * 8;


#[test]
fn test_output() {
    let mut builder = SpacePacket::builder();

    let id = Identification::new_idle(PacketType::Telemetry);

    let ba =  bitarr!(u8, LocalBits; 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1);
    let seq = SequenceControl::new(SeqFlags::Unsegmented, ba).unwrap();
    
    builder.identification(Some(id));
    builder.sequence_control(Some(seq));

    let data = BitSlice::from_slice("Teste ooooi".as_bytes());
    let ud = UserData::new(&data);
    builder.user_data(Some(&ud));

    let mut sp = builder.build().unwrap();
 
    let bits = sp.to_bits();

    assert_eq!(bits.len(), MIN_SP_SIZE_BITS);

    let s = OctetStringSpacePacket::new_from_slice(bits);
    
    let data: Vec<char> = s.data_field.domain().map(|x| x as char).collect();
}

#[test]
fn test_sec_header_req() {
    let mut builder = SpacePacket::builder();

    let id = Identification::new(PacketType::Telemetry, spp_rust::pri_header::SecHeaderFlag::Present, bits![u8, LocalBits; 0; 11]).unwrap();
    let ba =  bitarr!(u8, LocalBits; 0;14);
    let seq = SequenceControl::new(SeqFlags::Unsegmented, ba).unwrap();

    let tc = bits![u8, LocalBits; 0,0,0,0];

    let sec_head = SecondaryHeader::new(Some(tc), None);
    
    builder.identification(Some(id));
    builder.sequence_control(Some(seq));
    builder.secondary_header(Some(&sec_head));
    
    let data = bitarr!(u8, LocalBits; 1; 65536);
    let ud = UserData::new(&data);
    builder.user_data(Some(&ud));

    let sp = builder.build().unwrap();
}