Fixed some bit shifting.
I was shifting before masking because I had been using a larger mask, u16. Now it masks then shifts because I had changed it to being a u8 mask for each section.
This commit is contained in:
@ -1,3 +1,5 @@
|
|||||||
|
//! # Header
|
||||||
|
//! The
|
||||||
use crate::bits::*;
|
use crate::bits::*;
|
||||||
|
|
||||||
|
|
||||||
@ -41,8 +43,8 @@ impl FromBytes for ApId
|
|||||||
{
|
{
|
||||||
if bytes.len() < 2usize { return Err("ERROR"); }
|
if bytes.len() < 2usize { return Err("ERROR"); }
|
||||||
|
|
||||||
let id: u16 = (((bytes[0] as u16) << 8) & ApId::MASK_ARR[0]) |
|
let id: u16 = (((bytes[0] & ApId::MASK_ARR[0]) as u16) << 8) |
|
||||||
((bytes[1] as u16) & ApId::MASK_ARR[1]);
|
(((bytes[1] & ApId::MASK_ARR[1]) as u16));
|
||||||
|
|
||||||
Ok(Parsed::new(2usize, id.into()))
|
Ok(Parsed::new(2usize, id.into()))
|
||||||
}
|
}
|
||||||
@ -56,7 +58,7 @@ impl IntoBytes for ApId
|
|||||||
{
|
{
|
||||||
if buffer.len() < 2usize { return Err("Error"); }
|
if buffer.len() < 2usize { return Err("Error"); }
|
||||||
|
|
||||||
let id: u16 = self.from();
|
let id: u16 = self.value;
|
||||||
|
|
||||||
buffer[0] = ((id >> 8) as u8) & ApId::MASK_ARR[0];
|
buffer[0] = ((id >> 8) as u8) & ApId::MASK_ARR[0];
|
||||||
buffer[1] = (id as u8) & ApId::MASK_ARR[0];
|
buffer[1] = (id as u8) & ApId::MASK_ARR[0];
|
||||||
@ -88,7 +90,7 @@ impl IntoBits for ApId
|
|||||||
{
|
{
|
||||||
if bytes.len() < 2usize || mask.len() < 2usize { return Err("Error"); }
|
if bytes.len() < 2usize || mask.len() < 2usize { return Err("Error"); }
|
||||||
|
|
||||||
let id: u16 = self.from();
|
let id: u16 = self.value;
|
||||||
|
|
||||||
bytes[0] = ((id >> 8) as u8) & mask[0];
|
bytes[0] = ((id >> 8) as u8) & mask[0];
|
||||||
bytes[1] = (id as u8) & mask[1];
|
bytes[1] = (id as u8) & mask[1];
|
||||||
@ -189,6 +191,7 @@ pub enum PacketType
|
|||||||
|
|
||||||
const TYPE_TELEMETRY: u8 = 0b00000000;
|
const TYPE_TELEMETRY: u8 = 0b00000000;
|
||||||
const TYPE_TELECOMMAND: u8 = 0b00010000;
|
const TYPE_TELECOMMAND: u8 = 0b00010000;
|
||||||
|
|
||||||
impl PacketType
|
impl PacketType
|
||||||
{
|
{
|
||||||
pub const MASK_U8: u8 = 0b00010000;
|
pub const MASK_U8: u8 = 0b00010000;
|
||||||
|
|||||||
Reference in New Issue
Block a user