@@ -19,23 +19,20 @@ fn impl_hyped_can(ast: &syn::DeriveInput) -> TokenStream {
19
19
fn read_frame( & mut self ) -> Result <HypedEnvelope , CanError > {
20
20
let result = self . can. lock( |can| can. borrow_mut( ) . try_read( ) ) ;
21
21
match result {
22
- Ok ( envelope) => Ok ( HypedEnvelope {
23
- frame: HypedCanFrame {
24
- can_id: {
25
- let id = envelope. frame. id( ) ;
26
- match id {
27
- Id :: Standard ( id) => id. as_raw( ) as u32 , // 11-bit ID
28
- Id :: Extended ( id) => id. as_raw( ) , // 29-bit ID
29
- }
30
- } ,
31
- data: {
32
- let mut data = [ 0u8 ; 8 ] ;
33
- data. copy_from_slice( envelope. frame. data( ) ) ;
34
- data
35
- } ,
36
- } ,
37
- ts: envelope. ts,
38
- } ) ,
22
+ Ok ( envelope) => {
23
+ let can_id = match envelope. frame. id( ) {
24
+ Id :: Standard ( id) => id. as_raw( ) as u32 , // 11-bit ID
25
+ Id :: Extended ( id) => id. as_raw( ) , // 29-bit ID
26
+ } ;
27
+
28
+ let mut data = [ 0u8 ; 8 ] ;
29
+ data. copy_from_slice( envelope. frame. data( ) ) ;
30
+
31
+ Ok ( HypedEnvelope {
32
+ frame: HypedCanFrame { can_id, data } ,
33
+ ts: envelope. ts,
34
+ } )
35
+ }
39
36
Err ( TryReadError :: BusError ( e) ) => Err ( match e {
40
37
BusError :: Stuff => CanError :: Stuff ,
41
38
BusError :: Form => CanError :: Form ,
@@ -53,25 +50,14 @@ fn impl_hyped_can(ast: &syn::DeriveInput) -> TokenStream {
53
50
}
54
51
55
52
fn write_frame( & mut self , frame: & HypedCanFrame ) -> Result <( ) , CanError > {
56
- let frame = Frame :: new(
57
- match frame. can_id {
58
- id if id <= 0x7FF => frame:: Header :: new(
59
- Id :: Standard (
60
- StandardId :: new( id as u16 ) . unwrap( ) ,
61
- ) ,
62
- frame. data. len( ) as u8 ,
63
- false ,
64
- ) ,
65
- id => frame:: Header :: new(
66
- Id :: Extended (
67
- ExtendedId :: new( id) . unwrap( ) ,
68
- ) ,
69
- frame. data. len( ) as u8 ,
70
- false ,
71
- ) ,
72
- } ,
73
- & frame. data,
74
- ) ;
53
+ match frame. can_id {
54
+ id if id <= 0x7FF => Id :: Standard ( StandardId :: new( id as u16 ) . unwrap( ) ) ,
55
+ id => Id :: Extended ( ExtendedId :: new( id) . unwrap( ) ) ,
56
+ } ;
57
+
58
+ let frame_header = frame:: Header :: new( id, frame. data. len( ) as u8 , false ) ;
59
+
60
+ let frame = Frame :: new( frame_header, & frame. data) ;
75
61
76
62
match frame {
77
63
Ok ( frame) => {
@@ -82,19 +68,16 @@ fn impl_hyped_can(ast: &syn::DeriveInput) -> TokenStream {
82
68
}
83
69
}
84
70
Err ( e) => Err ( match e {
85
- FrameCreateError :: NotEnoughData => {
86
- CanError :: NotEnoughData
87
- }
88
- FrameCreateError :: InvalidDataLength => {
89
- CanError :: InvalidDataLength
90
- }
71
+ FrameCreateError :: NotEnoughData => CanError :: NotEnoughData ,
72
+ FrameCreateError :: InvalidDataLength => CanError :: InvalidDataLength ,
91
73
FrameCreateError :: InvalidCanId => CanError :: InvalidCanId ,
92
74
} ) ,
93
75
}
94
76
}
95
77
}
96
78
97
79
80
+
98
81
impl #impl_generics #name #ty_generics {
99
82
pub fn new( can: & ' static Mutex <NoopRawMutex , RefCell <Can <' static >>>) -> Self {
100
83
Self { can }
0 commit comments