@@ -77,31 +77,24 @@ 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 , SpiBusRead , SpiBusWrite , SpiBusFlush } ,
81
81
nb:: FullDuplex ,
82
82
} ;
83
83
84
- impl < SPI , PINS , TRANSFER_MODE , W : Copy + ' static > TransferInplace < W >
85
- for Spi < SPI , PINS , TRANSFER_MODE >
84
+ impl < SPI , PINS , TRANSFER_MODE , W : Copy + Default + ' static > SpiBus < W > for Spi < SPI , PINS , TRANSFER_MODE >
86
85
where
87
- Self : FullDuplex < W , Error = Error > ,
86
+ Self : FullDuplex < W , Error = Error > + SpiBusWrite < W > ,
88
87
SPI : Instance ,
89
88
{
90
- fn transfer_inplace ( & mut self , words : & mut [ W ] ) -> Result < ( ) , Self :: Error > {
89
+ fn transfer_in_place ( & mut self , words : & mut [ W ] ) -> Result < ( ) , Self :: Error > {
91
90
for word in words. iter_mut ( ) {
92
91
nb:: block!( <Self as FullDuplex <W >>:: write( self , * word) ) ?;
93
92
* word = nb:: block!( <Self as FullDuplex <W >>:: read( self ) ) ?;
94
93
}
95
94
96
95
Ok ( ( ) )
97
96
}
98
- }
99
97
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
98
fn transfer ( & mut self , buff : & mut [ W ] , data : & [ W ] ) -> Result < ( ) , Self :: Error > {
106
99
assert_eq ! ( data. len( ) , buff. len( ) ) ;
107
100
@@ -114,71 +107,45 @@ mod blocking {
114
107
}
115
108
}
116
109
117
- impl < SPI , PINS , W : Copy + ' static > Write < W > for Spi < SPI , PINS , TransferModeNormal >
110
+ impl < SPI , PINS , TRANSFER_MODE > SpiBusFlush for Spi < SPI , PINS , TRANSFER_MODE >
118
111
where
119
- Self : FullDuplex < W , Error = Error > ,
120
112
SPI : Instance ,
121
113
{
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
-
114
+ fn flush ( & mut self ) -> Result < ( ) , Self :: Error > {
128
115
Ok ( ( ) )
129
116
}
130
117
}
131
118
132
- impl < SPI , PINS , W : Copy + ' static > Write < W > for Spi < SPI , PINS , TransferModeBidi >
119
+ impl < SPI , PINS , W : Copy + ' static > SpiBusWrite < W > for Spi < SPI , PINS , TransferModeNormal >
133
120
where
134
121
Self : FullDuplex < W , Error = Error > ,
135
122
SPI : Instance ,
136
123
{
137
124
fn write ( & mut self , words : & [ W ] ) -> Result < ( ) , Self :: Error > {
138
125
for word in words {
139
126
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
127
nb:: block!( <Self as FullDuplex <W >>:: read( self ) ) ?;
158
128
}
159
129
160
130
Ok ( ( ) )
161
131
}
162
132
}
163
133
164
- impl < SPI , PINS , W : Copy + ' static > WriteIter < W > for Spi < SPI , PINS , TransferModeBidi >
134
+ impl < SPI , PINS , W : Copy + ' static > SpiBusWrite < W > for Spi < SPI , PINS , TransferModeBidi >
165
135
where
166
136
Self : FullDuplex < W , Error = Error > ,
167
137
SPI : Instance ,
168
138
{
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) ) ?;
139
+ fn write ( & mut self , words : & [ W ] ) -> Result < ( ) , Self :: Error > {
140
+ for word in words {
141
+ nb:: block!( <Self as FullDuplex <W >>:: write( self , * word) ) ?;
175
142
}
176
143
177
144
Ok ( ( ) )
178
145
}
179
146
}
180
147
181
- impl < SPI , PINS , TRANSFER_MODE , W : Copy + Default + ' static > Read < W >
148
+ impl < SPI , PINS , TRANSFER_MODE , W : Copy + Default + ' static > SpiBusRead < W >
182
149
for Spi < SPI , PINS , TRANSFER_MODE >
183
150
where
184
151
Self : FullDuplex < W , Error = Error > ,
@@ -193,25 +160,4 @@ mod blocking {
193
160
Ok ( ( ) )
194
161
}
195
162
}
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
163
}
0 commit comments