| 191 | /*-----------------------------------------------------------------------*/ |
| 192 | |
| 193 | bool rcvr_datablock( /* 1:OK, 0:Failed */ |
| 194 | BYTE* buff, /* Data buffer to store received data */ |
| 195 | UINT btr /* Byte count */ |
| 196 | ) |
| 197 | { |
| 198 | /* Wait for data packet in timeout of 100ms */ |
| 199 | BYTE d{0xFF}; |
| 200 | for(unsigned tmr = 1000; tmr; tmr--) { |
| 201 | d = SDCardSPI->transfer(0xff); |
| 202 | if(d != 0xFF) { |
| 203 | break; |
| 204 | } |
| 205 | dly_us(100); |
| 206 | } |
| 207 | if(d != 0xFE) { |
| 208 | return false; /* If not valid data token, return with error */ |
| 209 | } |
| 210 | |
| 211 | memset(buff, 0xFF, btr); /* Send 0xFF */ |
| 212 | SDCardSPI->transfer(buff, btr); /* Receive the data block into buffer */ |
| 213 | SDCardSPI->transfer16(0xffff); /* keep MOSI HIGH, discard CRC */ |
| 214 | |
| 215 | // success |
| 216 | return true; |
| 217 | } |
| 218 | |
| 219 | /*-----------------------------------------------------------------------*/ |
| 220 | /* Send a data packet to the card */ |
no test coverage detected