@@ -77,31 +77,25 @@ mod nb {
77
77
mod blocking {
78
78
use super :: super :: { Error , Instance , Spi , TransferModeBidi , TransferModeNormal } ;
79
79
use embedded_hal_one:: spi:: {
80
- blocking:: { Operation , Read , Transactional , Transfer , TransferInplace , Write , WriteIter } ,
80
+ blocking:: { SpiBus , SpiBusFlush , SpiBusRead , SpiBusWrite } ,
81
81
nb:: FullDuplex ,
82
82
} ;
83
83
84
- impl < SPI , PINS , TRANSFER_MODE , W : Copy + ' static > TransferInplace < W >
84
+ impl < SPI , PINS , TRANSFER_MODE , W : Copy + Default + ' static > SpiBus < W >
85
85
for Spi < SPI , PINS , TRANSFER_MODE >
86
86
where
87
- Self : FullDuplex < W , Error = Error > ,
87
+ Self : FullDuplex < W , Error = Error > + SpiBusWrite < W > ,
88
88
SPI : Instance ,
89
89
{
90
- fn transfer_inplace ( & mut self , words : & mut [ W ] ) -> Result < ( ) , Self :: Error > {
90
+ fn transfer_in_place ( & mut self , words : & mut [ W ] ) -> Result < ( ) , Self :: Error > {
91
91
for word in words. iter_mut ( ) {
92
92
nb:: block!( <Self as FullDuplex <W >>:: write( self , * word) ) ?;
93
93
* word = nb:: block!( <Self as FullDuplex <W >>:: read( self ) ) ?;
94
94
}
95
95
96
96
Ok ( ( ) )
97
97
}
98
- }
99
98
100
- impl < SPI , PINS , TRANSFER_MODE , W : Copy + ' static > Transfer < W > for Spi < SPI , PINS , TRANSFER_MODE >
101
- where
102
- Self : FullDuplex < W , Error = Error > ,
103
- SPI : Instance ,
104
- {
105
99
fn transfer ( & mut self , buff : & mut [ W ] , data : & [ W ] ) -> Result < ( ) , Self :: Error > {
106
100
assert_eq ! ( data. len( ) , buff. len( ) ) ;
107
101
@@ -114,71 +108,45 @@ mod blocking {
114
108
}
115
109
}
116
110
117
- impl < SPI , PINS , W : Copy + ' static > Write < W > for Spi < SPI , PINS , TransferModeNormal >
111
+ impl < SPI , PINS , TRANSFER_MODE > SpiBusFlush for Spi < SPI , PINS , TRANSFER_MODE >
118
112
where
119
- Self : FullDuplex < W , Error = Error > ,
120
113
SPI : Instance ,
121
114
{
122
- fn write ( & mut self , words : & [ W ] ) -> Result < ( ) , Self :: Error > {
123
- for word in words {
124
- nb:: block!( <Self as FullDuplex <W >>:: write( self , * word) ) ?;
125
- nb:: block!( <Self as FullDuplex <W >>:: read( self ) ) ?;
126
- }
127
-
115
+ fn flush ( & mut self ) -> Result < ( ) , Self :: Error > {
128
116
Ok ( ( ) )
129
117
}
130
118
}
131
119
132
- impl < SPI , PINS , W : Copy + ' static > Write < W > for Spi < SPI , PINS , TransferModeBidi >
120
+ impl < SPI , PINS , W : Copy + ' static > SpiBusWrite < W > for Spi < SPI , PINS , TransferModeNormal >
133
121
where
134
122
Self : FullDuplex < W , Error = Error > ,
135
123
SPI : Instance ,
136
124
{
137
125
fn write ( & mut self , words : & [ W ] ) -> Result < ( ) , Self :: Error > {
138
126
for word in words {
139
127
nb:: block!( <Self as FullDuplex <W >>:: write( self , * word) ) ?;
140
- }
141
-
142
- Ok ( ( ) )
143
- }
144
- }
145
-
146
- impl < SPI , PINS , W : Copy + ' static > WriteIter < W > for Spi < SPI , PINS , TransferModeNormal >
147
- where
148
- Self : FullDuplex < W , Error = Error > ,
149
- SPI : Instance ,
150
- {
151
- fn write_iter < WI > ( & mut self , words : WI ) -> Result < ( ) , Self :: Error >
152
- where
153
- WI : IntoIterator < Item = W > ,
154
- {
155
- for word in words. into_iter ( ) {
156
- nb:: block!( <Self as FullDuplex <W >>:: write( self , word) ) ?;
157
128
nb:: block!( <Self as FullDuplex <W >>:: read( self ) ) ?;
158
129
}
159
130
160
131
Ok ( ( ) )
161
132
}
162
133
}
163
134
164
- impl < SPI , PINS , W : Copy + ' static > WriteIter < W > for Spi < SPI , PINS , TransferModeBidi >
135
+ impl < SPI , PINS , W : Copy + ' static > SpiBusWrite < W > for Spi < SPI , PINS , TransferModeBidi >
165
136
where
166
137
Self : FullDuplex < W , Error = Error > ,
167
138
SPI : Instance ,
168
139
{
169
- fn write_iter < WI > ( & mut self , words : WI ) -> Result < ( ) , Self :: Error >
170
- where
171
- WI : IntoIterator < Item = W > ,
172
- {
173
- for word in words. into_iter ( ) {
174
- nb:: block!( <Self as FullDuplex <W >>:: write( self , word) ) ?;
140
+ fn write ( & mut self , words : & [ W ] ) -> Result < ( ) , Self :: Error > {
141
+ for word in words {
142
+ nb:: block!( <Self as FullDuplex <W >>:: write( self , * word) ) ?;
175
143
}
176
144
177
145
Ok ( ( ) )
178
146
}
179
147
}
180
148
181
- impl < SPI , PINS , TRANSFER_MODE , W : Copy + Default + ' static > Read < W >
149
+ impl < SPI , PINS , TRANSFER_MODE , W : Copy + Default + ' static > SpiBusRead < W >
182
150
for Spi < SPI , PINS , TRANSFER_MODE >
183
151
where
184
152
Self : FullDuplex < W , Error = Error > ,
@@ -193,25 +161,4 @@ mod blocking {
193
161
Ok ( ( ) )
194
162
}
195
163
}
196
-
197
- impl < SPI , PINS , TRANSFER_MODE , W : Copy + ' static > Transactional < W > for Spi < SPI , PINS , TRANSFER_MODE >
198
- where
199
- Self : Write < W , Error = Error >
200
- + Read < W , Error = Error >
201
- + TransferInplace < W , Error = Error >
202
- + Transfer < W , Error = Error > ,
203
- {
204
- fn exec < ' a > ( & mut self , operations : & mut [ Operation < ' a , W > ] ) -> Result < ( ) , Error > {
205
- for op in operations {
206
- match op {
207
- Operation :: Write ( w) => self . write ( w) ?,
208
- Operation :: TransferInplace ( t) => self . transfer_inplace ( t) ?,
209
- Operation :: Read ( r) => self . read ( r) ?,
210
- Operation :: Transfer ( w, r) => self . transfer ( w, r) ?,
211
- }
212
- }
213
-
214
- Ok ( ( ) )
215
- }
216
- }
217
164
}
0 commit comments