// 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");
    }
}
Beispiel #4
0
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++;
    }
}