// Tick is similarly simple. void cyg_spi_tick(cyg_spi_device* device, cyg_bool polled, cyg_uint32 count) { cyg_spi_transaction_begin(device); cyg_spi_transaction_tick(device, polled, count); cyg_spi_transaction_end(device); }
// The simple transfer function just calls the transaction functions // in order. The chip select should be dropped at the end of this // transfer. void cyg_spi_transfer(cyg_spi_device* device, cyg_bool polled, cyg_uint32 count, const cyg_uint8* tx_data, cyg_uint8* rx_data) { cyg_spi_transaction_begin(device); cyg_spi_transaction_transfer(device, polled, count, tx_data, rx_data, 1); cyg_spi_transaction_end(device); }
void run_test_3 (cyg_bool polled) { diag_printf ("Test 3 : Extended API test (polled = %d).\n", polled ? 1 : 0); memclr(rx_data1, sizeof(rx_data1)); memclr(rx_data2, sizeof(rx_data1)); cyg_spi_transaction_begin (&loopback_device); cyg_spi_transaction_transfer (&loopback_device, polled, sizeof (tx_data1), (const cyg_uint8*) &tx_data1[0], (cyg_uint8*) &rx_data1[0], false); cyg_spi_transaction_transfer (&loopback_device, polled, sizeof (tx_data2), (const cyg_uint8*) &tx_data2[0], (cyg_uint8*) &rx_data2[0], true); cyg_spi_transaction_end (&loopback_device); diag_printf (" Tx data 1 (%u Bytes): %s\n", sizeof(tx_data1), tx_data1); diag_printf (" Rx data 31 : %s\n", rx_data1); diag_printf (" Tx data 2 (%u Bytes): %s\n", sizeof(tx_data2), tx_data2); diag_printf (" Rx data 32 : %s\n", rx_data2); if (memcmp (tx_data1, rx_data1, sizeof (tx_data1)) != 0) { errors++; diag_printf("Simple transfer loopback failed - mismatched data (transfer 1).\n"); } if (memcmp (tx_data2, rx_data2, sizeof (tx_data2)) != 0) { errors++; diag_printf("Simple transfer loopback failed - mismatched data (transfer 2).\n"); } }
void run_test_2 (cyg_bool polled) { diag_printf ("Test 2 : Extended API test (polled = %d).\n", polled ? 1 : 0); cyg_spi_transaction_begin (&loopback_device.spi_device); cyg_spi_transaction_transfer (&loopback_device.spi_device, polled, sizeof (tx_data1), (const cyg_uint8*) &tx_data1[0], (cyg_uint8*) &rx_data1[0], false); cyg_spi_transaction_transfer (&loopback_device.spi_device, polled, sizeof (tx_data2), (const cyg_uint8*) &tx_data2[0], (cyg_uint8*) &rx_data2[0], false); cyg_spi_transaction_end (&loopback_device.spi_device); diag_printf (" Tx data 1 : %s\n", tx_data1); diag_printf (" Rx data 1 : %s\n", rx_data1); diag_printf (" Tx data 2 : %s\n", tx_data2); diag_printf (" Rx data 2 : %s\n", rx_data2); CYG_ASSERT (memcmp (tx_data1, rx_data1, sizeof (tx_data1)) == 0, "Simple transfer loopback failed - mismatched data (transfer 1).\n"); CYG_ASSERT (memcmp (tx_data2, rx_data2, sizeof (tx_data2)) == 0, "Simple transfer loopback failed - mismatched data (transfer 2).\n"); }
void run_test_4 (cyg_bool polled) { diag_printf ("Test 4 : Extended API test NULL transfer (polled = %d).\n", polled ? 1 : 0); memclr(rx_data1, sizeof(rx_data1)); memclr(rx_data2, sizeof(rx_data1)); cyg_spi_transaction_begin (&loopback_device); cyg_spi_transaction_transfer (&loopback_device, polled, sizeof (tx_data1), (const cyg_uint8*) NULL, NULL, true); cyg_spi_transaction_end (&loopback_device); diag_printf (" Tx data 41 (%u Bytes): %s\n", sizeof(tx_data1), tx_data1); diag_printf (" Rx data 1 : %s\n", rx_data1); diag_printf (" Tx data 42 (%u Bytes): %s\n", sizeof(tx_data2), tx_data2); diag_printf (" Rx data 2 : %s\n", rx_data2); if (memcmp (rx_data1, rx_data2, sizeof (tx_data1)) != 0) { errors++; diag_printf("Simple transfer loopback failed - mismatched data.\n"); errors++; } }