@@ -29,7 +29,9 @@ impl<'a> Fel<'a> {
29
29
}
30
30
}
31
31
let ( Some ( endpoint_in) , Some ( endpoint_out) ) = ( endpoint_in, endpoint_out) else {
32
- error ! ( "Malformed device. Allwinner USB FEL device should include exactly one bulk in and one bulk out endpoint." ) ;
32
+ error ! (
33
+ "Malformed device. Allwinner USB FEL device should include exactly one bulk in and one bulk out endpoint."
34
+ ) ;
33
35
return Err ( ( ) ) ;
34
36
} ;
35
37
debug ! (
@@ -50,7 +52,7 @@ impl<'a> Fel<'a> {
50
52
self . send_fel_request ( FelRequest :: get_version ( ) ) ;
51
53
self . usb_read ( & mut buf) ;
52
54
self . read_fel_status ( ) ;
53
- unsafe { core :: mem :: transmute ( buf) }
55
+ buf. into ( )
54
56
} )
55
57
}
56
58
@@ -76,7 +78,7 @@ impl<'a> Fel<'a> {
76
78
77
79
fn send_fel_request ( & self , request : FelRequest ) {
78
80
trace ! ( "send_fel_request" ) ;
79
- let buf: [ u8 ; 16 ] = unsafe { core :: mem :: transmute ( request) } ;
81
+ let buf: [ u8 ; 16 ] = request. into ( ) ;
80
82
self . usb_write ( & buf) ;
81
83
}
82
84
@@ -88,8 +90,7 @@ impl<'a> Fel<'a> {
88
90
89
91
fn usb_read ( & self , buf : & mut [ u8 ] ) {
90
92
trace ! ( "usb_read" ) ;
91
- let buf_1: [ u8 ; 36 ] =
92
- unsafe { core:: mem:: transmute ( UsbRequest :: usb_read ( buf. len ( ) as u32 ) ) } ;
93
+ let buf_1: [ u8 ; 36 ] = UsbRequest :: usb_read ( buf. len ( ) as u32 ) . into ( ) ;
93
94
block_on ( self . iface . bulk_out ( self . endpoint_out , buf_1. to_vec ( ) ) )
94
95
. status
95
96
. expect ( "send_usb_request on usb_read transfer" ) ;
@@ -109,8 +110,7 @@ impl<'a> Fel<'a> {
109
110
110
111
fn usb_write ( & self , buf : & [ u8 ] ) {
111
112
trace ! ( "usb_write" ) ;
112
- let buf_1: [ u8 ; 36 ] =
113
- unsafe { core:: mem:: transmute ( UsbRequest :: usb_write ( buf. len ( ) as u32 ) ) } ;
113
+ let buf_1: [ u8 ; 36 ] = UsbRequest :: usb_write ( buf. len ( ) as u32 ) . into ( ) ;
114
114
block_on ( self . iface . bulk_out ( self . endpoint_out , buf_1. to_vec ( ) ) )
115
115
. status
116
116
. expect ( "send_usb_request on usb_write transfer" ) ;
@@ -164,6 +164,13 @@ impl UsbRequest {
164
164
}
165
165
}
166
166
167
+ impl From < UsbRequest > for [ u8 ; 36 ] {
168
+ #[ inline]
169
+ fn from ( value : UsbRequest ) -> Self {
170
+ unsafe { core:: mem:: transmute ( src) }
171
+ }
172
+ }
173
+
167
174
/// FEL request.
168
175
#[ repr( C ) ]
169
176
struct FelRequest {
@@ -203,6 +210,13 @@ impl FelRequest {
203
210
}
204
211
}
205
212
213
+ impl From < FelRequest > for [ u8 ; 16 ] {
214
+ #[ inline]
215
+ fn from ( value : FelRequest ) -> Self {
216
+ unsafe { core:: mem:: transmute ( value) }
217
+ }
218
+ }
219
+
206
220
#[ derive( Copy , Clone ) ]
207
221
#[ repr( C ) ]
208
222
pub struct Version {
@@ -241,6 +255,13 @@ impl fmt::Debug for Version {
241
255
}
242
256
}
243
257
258
+ impl From < [ u8 ; 32 ] > for Version {
259
+ #[ inline]
260
+ fn from ( value : [ u8 ; 32 ] ) -> Self {
261
+ unsafe { core:: mem:: transmute ( value) }
262
+ }
263
+ }
264
+
244
265
#[ derive( Debug ) ]
245
266
#[ repr( u32 ) ]
246
267
pub enum Chip {
0 commit comments