@@ -36,9 +36,8 @@ pub trait Socket {
36
36
code : socketn:: Interrupt ,
37
37
) -> Result < bool , SpiBus :: Error > {
38
38
let mut data = [ 0u8 ] ;
39
- BigEndian :: write_u16 ( & mut data, code as u16 ) ;
40
- bus. transfer_frame ( self . register ( ) , socketn:: INTERRUPT_MASK , true , & mut data) ?;
41
- Ok ( data[ 0 ] & socketn:: Interrupt :: Receive as u8 != 0 )
39
+ bus. transfer_frame ( self . register ( ) , socketn:: INTERRUPT , false , & mut data) ?;
40
+ Ok ( data[ 0 ] & code as u8 != 0 )
42
41
}
43
42
44
43
fn set_source_port < SpiBus : ActiveBus > (
@@ -73,6 +72,20 @@ pub trait Socket {
73
72
Ok ( ( ) )
74
73
}
75
74
75
+ fn get_tx_read_pointer < SpiBus : ActiveBus > (
76
+ & self ,
77
+ bus : & mut SpiBus ,
78
+ ) -> Result < u16 , SpiBus :: Error > {
79
+ let mut data = [ 0u8 ; 2 ] ;
80
+ bus. transfer_frame (
81
+ self . register ( ) ,
82
+ socketn:: TX_DATA_READ_POINTER ,
83
+ false ,
84
+ & mut data
85
+ ) ?;
86
+ Ok ( BigEndian :: read_u16 ( & data) )
87
+ }
88
+
76
89
fn set_tx_read_pointer < SpiBus : ActiveBus > (
77
90
& self ,
78
91
bus : & mut SpiBus ,
@@ -89,6 +102,20 @@ pub trait Socket {
89
102
Ok ( ( ) )
90
103
}
91
104
105
+ fn get_tx_write_pointer < SpiBus : ActiveBus > (
106
+ & self ,
107
+ bus : & mut SpiBus ,
108
+ ) -> Result < u16 , SpiBus :: Error > {
109
+ let mut data = [ 0u8 ; 2 ] ;
110
+ bus. transfer_frame (
111
+ self . register ( ) ,
112
+ socketn:: TX_DATA_WRITE_POINTER ,
113
+ false ,
114
+ & mut data
115
+ ) ?;
116
+ Ok ( BigEndian :: read_u16 ( & data) )
117
+ }
118
+
92
119
fn set_tx_write_pointer < SpiBus : ActiveBus > (
93
120
& self ,
94
121
bus : & mut SpiBus ,
@@ -113,7 +140,7 @@ pub trait Socket {
113
140
bus. transfer_frame (
114
141
self . register ( ) ,
115
142
socketn:: RX_DATA_READ_POINTER ,
116
- true ,
143
+ false ,
117
144
& mut data
118
145
) ?;
119
146
Ok ( BigEndian :: read_u16 ( & data) )
@@ -135,13 +162,27 @@ pub trait Socket {
135
162
Ok ( ( ) )
136
163
}
137
164
165
+ fn set_interrupt_mask < SpiBus : ActiveBus > (
166
+ & self ,
167
+ bus : & mut SpiBus ,
168
+ mask : u8 ,
169
+ ) -> Result < ( ) , SpiBus :: Error > {
170
+ let mut data = [ mask] ;
171
+ bus. transfer_frame (
172
+ self . register ( ) ,
173
+ socketn:: INTERRUPT_MASK ,
174
+ true ,
175
+ & mut data
176
+ ) ?;
177
+ Ok ( ( ) )
178
+ }
179
+
138
180
fn command < SpiBus : ActiveBus > (
139
181
& self ,
140
182
bus : & mut SpiBus ,
141
183
command : socketn:: Command ,
142
184
) -> Result < ( ) , SpiBus :: Error > {
143
- let mut data = [ 0u8 ; 2 ] ;
144
- BigEndian :: write_u16 ( & mut data, command as u16 ) ;
185
+ let mut data = [ command as u8 ] ;
145
186
bus. transfer_frame ( self . register ( ) , socketn:: COMMAND , true , & mut data) ?;
146
187
Ok ( ( ) )
147
188
}
0 commit comments