Daiki Kato / asynchronous_test

Dependencies:   cpputest mbed-dev_tmp

Committer:
dkato
Date:
Tue Apr 26 02:12:17 2016 +0000
Revision:
0:829da9075ffa
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 0:829da9075ffa 1 /* mbed Microcontroller Library
dkato 0:829da9075ffa 2 * Copyright (c) 2015 ARM Limited
dkato 0:829da9075ffa 3 *
dkato 0:829da9075ffa 4 * Licensed under the Apache License, Version 2.0 (the "License");
dkato 0:829da9075ffa 5 * you may not use this file except in compliance with the License.
dkato 0:829da9075ffa 6 * You may obtain a copy of the License at
dkato 0:829da9075ffa 7 *
dkato 0:829da9075ffa 8 * http://www.apache.org/licenses/LICENSE-2.0
dkato 0:829da9075ffa 9 *
dkato 0:829da9075ffa 10 * Unless required by applicable law or agreed to in writing, software
dkato 0:829da9075ffa 11 * distributed under the License is distributed on an "AS IS" BASIS,
dkato 0:829da9075ffa 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dkato 0:829da9075ffa 13 * See the License for the specific language governing permissions and
dkato 0:829da9075ffa 14 * limitations under the License.
dkato 0:829da9075ffa 15 */
dkato 0:829da9075ffa 16 #include <stdio.h>
dkato 0:829da9075ffa 17 #include "TestHarness.h"
dkato 0:829da9075ffa 18 #include "mbed.h"
dkato 0:829da9075ffa 19
dkato 0:829da9075ffa 20 #if !DEVICE_SPI || !DEVICE_SPI_ASYNCH
dkato 0:829da9075ffa 21 #error spi_master_asynch requires asynch SPI
dkato 0:829da9075ffa 22 #endif
dkato 0:829da9075ffa 23
dkato 0:829da9075ffa 24
dkato 0:829da9075ffa 25 #define SHORT_XFR 3
dkato 0:829da9075ffa 26 #define LONG_XFR 16
dkato 0:829da9075ffa 27 #define TEST_BYTE0 0x00
dkato 0:829da9075ffa 28 #define TEST_BYTE1 0x11
dkato 0:829da9075ffa 29 #define TEST_BYTE2 0xFF
dkato 0:829da9075ffa 30 #define TEST_BYTE3 0xAA
dkato 0:829da9075ffa 31 #define TEST_BYTE4 0x55
dkato 0:829da9075ffa 32 #define TEST_BYTE5 0x50
dkato 0:829da9075ffa 33
dkato 0:829da9075ffa 34 #define TEST_BYTE_RX TEST_BYTE3
dkato 0:829da9075ffa 35 #define TEST_BYTE_TX_BASE TEST_BYTE5
dkato 0:829da9075ffa 36
dkato 0:829da9075ffa 37 #if defined(TARGET_K64F)
dkato 0:829da9075ffa 38 #define TEST_MOSI_PIN PTD2
dkato 0:829da9075ffa 39 #define TEST_MISO_PIN PTD3
dkato 0:829da9075ffa 40 #define TEST_SCLK_PIN PTD1
dkato 0:829da9075ffa 41 #define TEST_CS_PIN PTD0
dkato 0:829da9075ffa 42
dkato 0:829da9075ffa 43 #elif defined(TARGET_EFM32LG_STK3600) || defined(TARGET_EFM32GG_STK3700) || defined(TARGET_EFM32WG_STK3800)
dkato 0:829da9075ffa 44 #define TEST_MOSI_PIN PD0
dkato 0:829da9075ffa 45 #define TEST_MISO_PIN PD1
dkato 0:829da9075ffa 46 #define TEST_SCLK_PIN PD2
dkato 0:829da9075ffa 47 #define TEST_CS_PIN PD3
dkato 0:829da9075ffa 48
dkato 0:829da9075ffa 49 #elif defined(TARGET_EFM32ZG_STK3200)
dkato 0:829da9075ffa 50 #define TEST_MOSI_PIN PD7
dkato 0:829da9075ffa 51 #define TEST_MISO_PIN PD6
dkato 0:829da9075ffa 52 #define TEST_SCLK_PIN PC15
dkato 0:829da9075ffa 53 #define TEST_CS_PIN PC14
dkato 0:829da9075ffa 54
dkato 0:829da9075ffa 55 #elif defined(TARGET_EFM32HG_STK3400)
dkato 0:829da9075ffa 56 #define TEST_MOSI_PIN PE10
dkato 0:829da9075ffa 57 #define TEST_MISO_PIN PE11
dkato 0:829da9075ffa 58 #define TEST_SCLK_PIN PE12
dkato 0:829da9075ffa 59 #define TEST_CS_PIN PE13
dkato 0:829da9075ffa 60
dkato 0:829da9075ffa 61 #elif defined(TARGET_RZ_A1H)
dkato 0:829da9075ffa 62 #define TEST_MOSI_PIN P10_14
dkato 0:829da9075ffa 63 #define TEST_MISO_PIN P10_15
dkato 0:829da9075ffa 64 #define TEST_SCLK_PIN P10_12
dkato 0:829da9075ffa 65 #define TEST_CS_PIN P10_13
dkato 0:829da9075ffa 66
dkato 0:829da9075ffa 67 #else
dkato 0:829da9075ffa 68 #error Target not supported
dkato 0:829da9075ffa 69 #endif
dkato 0:829da9075ffa 70
dkato 0:829da9075ffa 71 volatile int why;
dkato 0:829da9075ffa 72 volatile bool complete;
dkato 0:829da9075ffa 73 void cbdone(int event) {
dkato 0:829da9075ffa 74 complete = true;
dkato 0:829da9075ffa 75 why = event;
dkato 0:829da9075ffa 76 }
dkato 0:829da9075ffa 77
dkato 0:829da9075ffa 78
dkato 0:829da9075ffa 79 TEST_GROUP(SPI_Master_Asynchronous)
dkato 0:829da9075ffa 80 {
dkato 0:829da9075ffa 81 uint8_t tx_buf[LONG_XFR];
dkato 0:829da9075ffa 82 uint8_t rx_buf[LONG_XFR];
dkato 0:829da9075ffa 83 SPI *obj;
dkato 0:829da9075ffa 84 DigitalOut *cs;
dkato 0:829da9075ffa 85 event_callback_t callback;
dkato 0:829da9075ffa 86
dkato 0:829da9075ffa 87 void setup() {
dkato 0:829da9075ffa 88 obj = new SPI(TEST_MOSI_PIN, TEST_MISO_PIN, TEST_SCLK_PIN);
dkato 0:829da9075ffa 89 cs = new DigitalOut(TEST_CS_PIN);
dkato 0:829da9075ffa 90 complete = false;
dkato 0:829da9075ffa 91 why = 0;
dkato 0:829da9075ffa 92 callback.attach(cbdone);
dkato 0:829da9075ffa 93
dkato 0:829da9075ffa 94 // Set the default value of tx_buf
dkato 0:829da9075ffa 95 for (uint32_t i = 0; i < sizeof(tx_buf); i++) {
dkato 0:829da9075ffa 96 tx_buf[i] = i + TEST_BYTE_TX_BASE;
dkato 0:829da9075ffa 97 }
dkato 0:829da9075ffa 98 memset(rx_buf,TEST_BYTE_RX,sizeof(rx_buf));
dkato 0:829da9075ffa 99 }
dkato 0:829da9075ffa 100 void teardown() {
dkato 0:829da9075ffa 101 delete obj;
dkato 0:829da9075ffa 102 obj = NULL;
dkato 0:829da9075ffa 103 delete cs;
dkato 0:829da9075ffa 104 cs = NULL;
dkato 0:829da9075ffa 105 }
dkato 0:829da9075ffa 106 uint32_t cmpnbuf(uint8_t *expect, uint8_t *actual, uint32_t offset, uint32_t end, const char *file, uint32_t line)
dkato 0:829da9075ffa 107 {
dkato 0:829da9075ffa 108 uint32_t i;
dkato 0:829da9075ffa 109 for (i = offset; i < end; i++){
dkato 0:829da9075ffa 110 if (expect[i] != actual[i]) {
dkato 0:829da9075ffa 111 break;
dkato 0:829da9075ffa 112 }
dkato 0:829da9075ffa 113 }
dkato 0:829da9075ffa 114 if (i < end) {
dkato 0:829da9075ffa 115 CHECK_EQUAL_LOCATION((int)expect[i], (int)actual[i], file, line);
dkato 0:829da9075ffa 116 }
dkato 0:829da9075ffa 117 CHECK_EQUAL_LOCATION(end, i, file, line);
dkato 0:829da9075ffa 118 return i;
dkato 0:829da9075ffa 119 }
dkato 0:829da9075ffa 120 uint32_t cmpnbufc(uint8_t expect, uint8_t *actual, uint32_t offset, uint32_t end, const char *file, uint32_t line)
dkato 0:829da9075ffa 121 {
dkato 0:829da9075ffa 122 uint32_t i;
dkato 0:829da9075ffa 123 for (i = offset; i < end; i++){
dkato 0:829da9075ffa 124 if (expect != actual[i]) {
dkato 0:829da9075ffa 125 break;
dkato 0:829da9075ffa 126 }
dkato 0:829da9075ffa 127 }
dkato 0:829da9075ffa 128 if (i < end) {
dkato 0:829da9075ffa 129 CHECK_EQUAL_LOCATION((int)expect, (int)actual[i], file, line);
dkato 0:829da9075ffa 130 }
dkato 0:829da9075ffa 131 CHECK_EQUAL_LOCATION(end, i, file, line);
dkato 0:829da9075ffa 132 return i;
dkato 0:829da9075ffa 133 }
dkato 0:829da9075ffa 134 void dumpRXbuf() {
dkato 0:829da9075ffa 135 uint32_t i;
dkato 0:829da9075ffa 136 printf("\r\n");
dkato 0:829da9075ffa 137 printf("RX Buffer Contents: [");
dkato 0:829da9075ffa 138 //flushf(stdout);
dkato 0:829da9075ffa 139 for (i = 0; i < sizeof(rx_buf); i++){
dkato 0:829da9075ffa 140 printf("%02x",rx_buf[i]);
dkato 0:829da9075ffa 141 if (i+1 < sizeof(rx_buf)){
dkato 0:829da9075ffa 142 printf(",");
dkato 0:829da9075ffa 143 }
dkato 0:829da9075ffa 144 }
dkato 0:829da9075ffa 145 printf("]\r\n");
dkato 0:829da9075ffa 146 }
dkato 0:829da9075ffa 147 };
dkato 0:829da9075ffa 148
dkato 0:829da9075ffa 149 // SPI write tx length: FIFO-1, read length: 0
dkato 0:829da9075ffa 150 // Checks: Null pointer exceptions, completion event
dkato 0:829da9075ffa 151 TEST(SPI_Master_Asynchronous, short_tx_0_rx)
dkato 0:829da9075ffa 152 {
dkato 0:829da9075ffa 153 int rc;
dkato 0:829da9075ffa 154 // Write a buffer of Short Transfer length.
dkato 0:829da9075ffa 155 // rc = obj->transfer( tx_buf,SHORT_XFR,NULL,0, callback, -1);
dkato 0:829da9075ffa 156 rc = obj->transfer( tx_buf,SHORT_XFR,(uint8_t *)NULL,0, callback, -1);
dkato 0:829da9075ffa 157 CHECK_EQUAL(0, rc);
dkato 0:829da9075ffa 158
dkato 0:829da9075ffa 159 while (!complete);
dkato 0:829da9075ffa 160
dkato 0:829da9075ffa 161 // Make sure that the callback fires.
dkato 0:829da9075ffa 162 CHECK_EQUAL(why, SPI_EVENT_COMPLETE);
dkato 0:829da9075ffa 163
dkato 0:829da9075ffa 164 // TODO: Check for a null pointer exception
dkato 0:829da9075ffa 165 }
dkato 0:829da9075ffa 166
dkato 0:829da9075ffa 167
dkato 0:829da9075ffa 168 //
dkato 0:829da9075ffa 169 // SPI write tx length: FIFO-1, read length: 0, non-null read pointer
dkato 0:829da9075ffa 170 // Checks: Null pointer exceptions, completion event, canary values in read buffer
dkato 0:829da9075ffa 171 TEST(SPI_Master_Asynchronous, short_tx_0_rx_nn)
dkato 0:829da9075ffa 172 {
dkato 0:829da9075ffa 173 int rc;
dkato 0:829da9075ffa 174 // Write a buffer of Short Transfer length.
dkato 0:829da9075ffa 175 rc = obj->transfer( tx_buf,SHORT_XFR,rx_buf,0,callback, -1);
dkato 0:829da9075ffa 176 CHECK_EQUAL(0, rc);
dkato 0:829da9075ffa 177
dkato 0:829da9075ffa 178 while (!complete);
dkato 0:829da9075ffa 179
dkato 0:829da9075ffa 180 // Make sure that the callback fires.
dkato 0:829da9075ffa 181 CHECK_EQUAL(SPI_EVENT_COMPLETE, why);
dkato 0:829da9075ffa 182
dkato 0:829da9075ffa 183 // Check that the rx buffer is untouched
dkato 0:829da9075ffa 184 cmpnbufc(TEST_BYTE_RX,rx_buf,0,sizeof(rx_buf),__FILE__,__LINE__);
dkato 0:829da9075ffa 185 }
dkato 0:829da9075ffa 186
dkato 0:829da9075ffa 187 // SPI write tx length: 0, read length: FIFO-1
dkato 0:829da9075ffa 188 // Checks: Receive value==fill character, completion event
dkato 0:829da9075ffa 189 TEST(SPI_Master_Asynchronous, 0_tx_short_rx)
dkato 0:829da9075ffa 190 {
dkato 0:829da9075ffa 191 int rc;
dkato 0:829da9075ffa 192 // Read a buffer of Short Transfer length.
dkato 0:829da9075ffa 193 // rc = obj->transfer( NULL,0,rx_buf,SHORT_XFR,callback, -1);
dkato 0:829da9075ffa 194 rc = obj->transfer( (uint8_t *)NULL,0,rx_buf,SHORT_XFR,callback, -1);
dkato 0:829da9075ffa 195 CHECK_EQUAL(0, rc);
dkato 0:829da9075ffa 196
dkato 0:829da9075ffa 197 while (!complete);
dkato 0:829da9075ffa 198
dkato 0:829da9075ffa 199 // Make sure that the callback fires.
dkato 0:829da9075ffa 200 CHECK_EQUAL(SPI_EVENT_COMPLETE, why);
dkato 0:829da9075ffa 201
dkato 0:829da9075ffa 202 // TODO: Check for null pointer exception
dkato 0:829da9075ffa 203 // Check that the receive buffer contains the fill byte.
dkato 0:829da9075ffa 204 cmpnbufc(SPI_FILL_WORD,rx_buf,0,SHORT_XFR,__FILE__,__LINE__);
dkato 0:829da9075ffa 205 // Check that remaining portion of the receive buffer contains the rx test byte
dkato 0:829da9075ffa 206 cmpnbufc(TEST_BYTE_RX,rx_buf,SHORT_XFR,sizeof(rx_buf),__FILE__,__LINE__);
dkato 0:829da9075ffa 207 }
dkato 0:829da9075ffa 208
dkato 0:829da9075ffa 209 // SPI write tx length: 0, read length: FIFO-1
dkato 0:829da9075ffa 210 // Checks: Receive value==fill character, completion event
dkato 0:829da9075ffa 211 TEST(SPI_Master_Asynchronous, 0_tx_nn_short_rx)
dkato 0:829da9075ffa 212 {
dkato 0:829da9075ffa 213 int rc;
dkato 0:829da9075ffa 214 // Read a buffer of Short Transfer length.
dkato 0:829da9075ffa 215 rc = obj->transfer(tx_buf,0,rx_buf,SHORT_XFR,callback, -1);
dkato 0:829da9075ffa 216 CHECK_EQUAL(0, rc);
dkato 0:829da9075ffa 217
dkato 0:829da9075ffa 218 while (!complete);
dkato 0:829da9075ffa 219
dkato 0:829da9075ffa 220 // Make sure that the callback fires.
dkato 0:829da9075ffa 221 CHECK_EQUAL(SPI_EVENT_COMPLETE, why);
dkato 0:829da9075ffa 222
dkato 0:829da9075ffa 223 // Check that the receive buffer contains the fill byte.
dkato 0:829da9075ffa 224 cmpnbufc(SPI_FILL_WORD,rx_buf,0,SHORT_XFR,__FILE__,__LINE__);
dkato 0:829da9075ffa 225 // Check that remaining portion of the receive buffer contains the rx test byte
dkato 0:829da9075ffa 226 cmpnbufc(TEST_BYTE_RX,rx_buf,SHORT_XFR,sizeof(rx_buf),__FILE__,__LINE__);
dkato 0:829da9075ffa 227 }
dkato 0:829da9075ffa 228
dkato 0:829da9075ffa 229 // SPI write tx length: FIFO-1 ascending values, read length: FIFO-1
dkato 0:829da9075ffa 230 // Checks: Receive buffer == tx buffer, completion event
dkato 0:829da9075ffa 231 TEST(SPI_Master_Asynchronous, short_tx_short_rx)
dkato 0:829da9075ffa 232 {
dkato 0:829da9075ffa 233 int rc;
dkato 0:829da9075ffa 234 // Write/Read a buffer of Long Transfer length.
dkato 0:829da9075ffa 235 rc = obj->transfer( tx_buf,SHORT_XFR,rx_buf,SHORT_XFR,callback, -1);
dkato 0:829da9075ffa 236 CHECK_EQUAL(0, rc);
dkato 0:829da9075ffa 237
dkato 0:829da9075ffa 238 while (!complete);
dkato 0:829da9075ffa 239
dkato 0:829da9075ffa 240 // Make sure that the callback fires.
dkato 0:829da9075ffa 241 CHECK_EQUAL(SPI_EVENT_COMPLETE, why);
dkato 0:829da9075ffa 242
dkato 0:829da9075ffa 243 // Check that the rx buffer contains the tx bytes
dkato 0:829da9075ffa 244 cmpnbuf(tx_buf,rx_buf,0,SHORT_XFR,__FILE__,__LINE__);
dkato 0:829da9075ffa 245 // Check that remaining portion of the receive buffer contains the rx test byte
dkato 0:829da9075ffa 246 cmpnbufc(TEST_BYTE_RX,rx_buf,SHORT_XFR,sizeof(rx_buf),__FILE__,__LINE__);
dkato 0:829da9075ffa 247 }
dkato 0:829da9075ffa 248 // SPI write tx length: 2xFIFO ascending values, read length: 2xFIFO
dkato 0:829da9075ffa 249 // Checks: Receive buffer == tx buffer, completion event
dkato 0:829da9075ffa 250 TEST(SPI_Master_Asynchronous, long_tx_long_rx)
dkato 0:829da9075ffa 251 {
dkato 0:829da9075ffa 252 int rc;
dkato 0:829da9075ffa 253 // Write/Read a buffer of Long Transfer length.
dkato 0:829da9075ffa 254 rc = obj->transfer(tx_buf,LONG_XFR,rx_buf,LONG_XFR,callback, -1);
dkato 0:829da9075ffa 255 CHECK_EQUAL(0, rc);
dkato 0:829da9075ffa 256
dkato 0:829da9075ffa 257 while (!complete);
dkato 0:829da9075ffa 258
dkato 0:829da9075ffa 259 // Make sure that the callback fires.
dkato 0:829da9075ffa 260 CHECK_EQUAL(SPI_EVENT_COMPLETE, why);
dkato 0:829da9075ffa 261
dkato 0:829da9075ffa 262 //dumpRXbuf();
dkato 0:829da9075ffa 263 // Check that the rx buffer contains the tx bytes
dkato 0:829da9075ffa 264 cmpnbuf(tx_buf,rx_buf,0,LONG_XFR,__FILE__,__LINE__);
dkato 0:829da9075ffa 265 // Check that remaining portion of the receive buffer contains the rx test byte
dkato 0:829da9075ffa 266 cmpnbufc(TEST_BYTE_RX,rx_buf,LONG_XFR,sizeof(rx_buf),__FILE__,__LINE__);
dkato 0:829da9075ffa 267 }
dkato 0:829da9075ffa 268
dkato 0:829da9075ffa 269 // SPI write tx length: 2xFIFO, ascending, read length: FIFO-1
dkato 0:829da9075ffa 270 // Checks: Receive buffer == tx buffer, completion event, read buffer overflow
dkato 0:829da9075ffa 271 TEST(SPI_Master_Asynchronous, long_tx_short_rx)
dkato 0:829da9075ffa 272 {
dkato 0:829da9075ffa 273 int rc;
dkato 0:829da9075ffa 274 // Write a buffer of Short Transfer length.
dkato 0:829da9075ffa 275 rc = obj->transfer(tx_buf,LONG_XFR,rx_buf,SHORT_XFR,callback, -1);
dkato 0:829da9075ffa 276 CHECK_EQUAL(0, rc);
dkato 0:829da9075ffa 277
dkato 0:829da9075ffa 278 while (!complete);
dkato 0:829da9075ffa 279
dkato 0:829da9075ffa 280 // Make sure that the callback fires.
dkato 0:829da9075ffa 281 CHECK_EQUAL(SPI_EVENT_COMPLETE, why);
dkato 0:829da9075ffa 282
dkato 0:829da9075ffa 283 // Check that the rx buffer contains the tx bytes
dkato 0:829da9075ffa 284 cmpnbuf(tx_buf,rx_buf,0,SHORT_XFR,__FILE__,__LINE__);
dkato 0:829da9075ffa 285 // Check that remaining portion of the receive buffer contains the rx test byte
dkato 0:829da9075ffa 286 cmpnbufc(TEST_BYTE_RX,rx_buf,SHORT_XFR,sizeof(rx_buf),__FILE__,__LINE__);
dkato 0:829da9075ffa 287 }
dkato 0:829da9075ffa 288
dkato 0:829da9075ffa 289 // SPI write tx length: FIFO-1, ascending, read length: 2xFIFO
dkato 0:829da9075ffa 290 // Checks: Receive buffer == tx buffer, then fill, completion event
dkato 0:829da9075ffa 291 TEST(SPI_Master_Asynchronous, short_tx_long_rx)
dkato 0:829da9075ffa 292 {
dkato 0:829da9075ffa 293 int rc;
dkato 0:829da9075ffa 294 // Write a buffer of Short Transfer length.
dkato 0:829da9075ffa 295 rc = obj->transfer(tx_buf,SHORT_XFR,rx_buf,LONG_XFR,callback, -1);
dkato 0:829da9075ffa 296 CHECK_EQUAL(0, rc);
dkato 0:829da9075ffa 297
dkato 0:829da9075ffa 298 while (!complete);
dkato 0:829da9075ffa 299
dkato 0:829da9075ffa 300 // Make sure that the callback fires.
dkato 0:829da9075ffa 301 CHECK_EQUAL(SPI_EVENT_COMPLETE, why);
dkato 0:829da9075ffa 302
dkato 0:829da9075ffa 303 //dumpRXbuf();
dkato 0:829da9075ffa 304 // Check that the rx buffer contains the tx bytes
dkato 0:829da9075ffa 305 cmpnbuf(tx_buf,rx_buf,0,SHORT_XFR,__FILE__,__LINE__);
dkato 0:829da9075ffa 306 // Check that the rx buffer contains the tx fill bytes
dkato 0:829da9075ffa 307 cmpnbufc(SPI_FILL_WORD,rx_buf,SHORT_XFR,LONG_XFR,__FILE__,__LINE__);
dkato 0:829da9075ffa 308 // Check that remaining portion of the receive buffer contains the rx test byte
dkato 0:829da9075ffa 309 cmpnbufc(TEST_BYTE_RX,rx_buf,LONG_XFR,sizeof(rx_buf),__FILE__,__LINE__);
dkato 0:829da9075ffa 310 }
dkato 0:829da9075ffa 311
dkato 0:829da9075ffa 312 TEST(SPI_Master_Asynchronous, queue_test)
dkato 0:829da9075ffa 313 {
dkato 0:829da9075ffa 314 int rc;
dkato 0:829da9075ffa 315 // Write/Read a buffer of Long Transfer length.
dkato 0:829da9075ffa 316 rc = obj->transfer( tx_buf,4,rx_buf,4,callback, 0);
dkato 0:829da9075ffa 317 CHECK_EQUAL(0, rc);
dkato 0:829da9075ffa 318 rc = obj->transfer( &tx_buf[4],4, &rx_buf[4],4,callback, 0);
dkato 0:829da9075ffa 319 CHECK_EQUAL(0, rc);
dkato 0:829da9075ffa 320 rc = obj->transfer( &tx_buf[8],4, &rx_buf[8],4,callback, -1);
dkato 0:829da9075ffa 321 CHECK_EQUAL(0, rc);
dkato 0:829da9075ffa 322
dkato 0:829da9075ffa 323 while (!complete);
dkato 0:829da9075ffa 324
dkato 0:829da9075ffa 325 // Make sure that the callback fires.
dkato 0:829da9075ffa 326 CHECK_EQUAL(SPI_EVENT_COMPLETE, why);
dkato 0:829da9075ffa 327
dkato 0:829da9075ffa 328 // Check that the rx buffer contains the tx bytes
dkato 0:829da9075ffa 329 cmpnbuf(tx_buf,rx_buf,0,12,__FILE__,__LINE__);
dkato 0:829da9075ffa 330 // Check that remaining portion of the receive buffer contains the rx test byte
dkato 0:829da9075ffa 331 cmpnbufc(TEST_BYTE_RX,rx_buf,12,sizeof(rx_buf),__FILE__,__LINE__);
dkato 0:829da9075ffa 332 }