@@ -135,48 +135,45 @@ uint8_t RF24::write_register(uint8_t reg, uint8_t value)
135
135
136
136
/* ***************************************************************************/
137
137
138
- uint8_t RF24::write_payload (const void * buf, uint8_t len )
138
+ uint8_t RF24::write_payload (const void * buf, uint8_t data_len )
139
139
{
140
140
uint8_t status;
141
-
142
141
const uint8_t * current = reinterpret_cast <const uint8_t *>(buf);
143
142
144
- uint8_t data_len = min (len, payload_size) ;
143
+ if (data_len > payload_size) data_len = payload_size;
145
144
uint8_t blank_len = dynamic_payloads_enabled ? 0 : payload_size - data_len;
146
145
147
146
// printf("[Writing %u bytes %u blanks]",data_len,blank_len);
148
147
149
- #if defined (__arm__)
150
-
151
- status = SPI.transfer (csn_pin, W_TX_PAYLOAD , SPI_CONTINUE);
148
+ #if defined (__arm__)
152
149
153
- if (data_len == 32 || dynamic_payloads_enabled){
154
- while ( data_len-- > 1 ){
155
- SPI.transfer (csn_pin,*current++, SPI_CONTINUE);
156
- }
157
- SPI.transfer (csn_pin,*current++);
158
- }else {
159
- while ( data_len-- ){
160
- SPI.transfer (csn_pin,*current++, SPI_CONTINUE);
161
- }
162
- }
163
-
164
- if (blank_len){
165
- while ( blank_len-- > 1 ){
166
- SPI.transfer (csn_pin,0 , SPI_CONTINUE);
167
- }
168
- SPI.transfer (csn_pin,0 );
169
- }
150
+ status = SPI.transfer (csn_pin, W_TX_PAYLOAD , SPI_CONTINUE);
170
151
152
+ if (blank_len){
153
+ while ( data_len--){
154
+ SPI.transfer (csn_pin,*current++, SPI_CONTINUE);
155
+ }
156
+ while ( --blank_len ){
157
+ SPI.transfer (csn_pin,0 , SPI_CONTINUE);
158
+ }
159
+ SPI.transfer (csn_pin,0 );
160
+ }else {
161
+ while ( --data_len ){
162
+ SPI.transfer (csn_pin,*current++, SPI_CONTINUE);
163
+ }
164
+ SPI.transfer (csn_pin,*current);
165
+ }
171
166
172
167
#else
173
168
174
169
csn (LOW);
175
170
status = SPI.transfer ( W_TX_PAYLOAD );
176
- while ( data_len-- )
171
+ while ( data_len-- ) {
177
172
SPI.transfer (*current++);
178
- while ( blank_len-- )
173
+ }
174
+ while ( blank_len-- ) {
179
175
SPI.transfer (0 );
176
+ }
180
177
csn (HIGH);
181
178
182
179
#endif
@@ -186,46 +183,47 @@ uint8_t RF24::write_payload(const void* buf, uint8_t len)
186
183
187
184
/* ***************************************************************************/
188
185
189
- uint8_t RF24::read_payload (void * buf, uint8_t len )
186
+ uint8_t RF24::read_payload (void * buf, uint8_t data_len )
190
187
{
191
188
uint8_t status;
192
189
uint8_t * current = reinterpret_cast <uint8_t *>(buf);
193
190
194
- uint8_t data_len = min (len, payload_size) ;
191
+ if (data_len > payload_size) data_len = payload_size;
195
192
uint8_t blank_len = dynamic_payloads_enabled ? 0 : payload_size - data_len;
196
193
197
194
// printf("[Reading %u bytes %u blanks]",data_len,blank_len);
198
195
196
+
199
197
#if defined (__arm__)
200
198
201
- status = SPI.transfer (csn_pin, R_RX_PAYLOAD, SPI_CONTINUE );
202
-
203
- if (data_len == 32 || dynamic_payloads_enabled){
204
- while ( data_len-- > 1 ){
205
- *current++ = SPI.transfer (csn_pin,0xff , SPI_CONTINUE);
206
- }
207
- *current++ = SPI.transfer (csn_pin,0xff );
208
- }else {
209
- while ( data_len-- ){
210
- *current++ = SPI.transfer (csn_pin,0xff , SPI_CONTINUE);
211
- }
212
-
213
- }
214
- if (blank_len){
215
- while ( blank_len-- ){
216
- SPI.transfer (csn_pin,0xff , SPI_CONTINUE);
217
- }
218
- SPI.transfer (csn_pin,0xff );
219
- }
199
+ status = SPI.transfer (csn_pin, R_RX_PAYLOAD, SPI_CONTINUE );
200
+
201
+ if ( blank_len ){
202
+
203
+ while ( data_len-- ){
204
+ *current++ = SPI.transfer (csn_pin,0xFF , SPI_CONTINUE);
205
+ }
206
+ while ( --blank_len ){
207
+ SPI.transfer (csn_pin,0xFF , SPI_CONTINUE);
208
+ }
209
+ SPI.transfer (csn_pin,0xFF );
210
+ }else {
211
+ while ( --data_len ){
212
+ *current++ = SPI.transfer (csn_pin,0xFF , SPI_CONTINUE);
213
+ }
214
+ *current = SPI.transfer (csn_pin,0xFF );
215
+ }
220
216
221
217
#else
222
218
223
219
csn (LOW);
224
220
status = SPI.transfer ( R_RX_PAYLOAD );
225
- while ( data_len-- )
226
- *current++ = SPI.transfer (0xff );
227
- while ( blank_len-- )
221
+ while ( data_len-- ) {
222
+ *current++ = SPI.transfer (0xFF );
223
+ }
224
+ while ( blank_len-- ) {
228
225
SPI.transfer (0xff );
226
+ }
229
227
csn (HIGH);
230
228
231
229
#endif
0 commit comments