//==========================================================================
//
-// flexcan_load.c
+// can_nonblock.c
//
-// FlexCAN load test
+// CAN driver test of nonblocking calls
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// Author(s): Uwe Kindler
// Contributors: Uwe Kindler
// Date: 2005-08-14
-// Description: FlexCAN load test
+// Description: CAN driver test of nonblocking callst
//####DESCRIPTIONEND####
#include <cyg/kernel/kapi.h>
// Package option requirements
-#if defined(CYGOPT_IO_CAN_SUPPORT_NONBLOCKING) && !defined(CYGOPT_IO_CAN_SUPPORT_TIMEOUTS)
+#if defined(CYGOPT_IO_CAN_SUPPORT_NONBLOCKING)
//===========================================================================
// DATA TYPES
cyg_uint32 len;
cyg_uint32 blocking;
cyg_can_event rx_event;
+ Cyg_ErrNo res;
blocking = 0;
len = sizeof(blocking);
CYG_TEST_FAIL_FINISH("Error writing config of /dev/can0");
}
- len = sizeof(rx_event);
+ len = sizeof(rx_event);
+ res = cyg_io_read(hDrvFlexCAN, &rx_event, &len);
- if (-EAGAIN == cyg_io_read(hDrvFlexCAN, &rx_event, &len))
+ if (-EAGAIN == res)
{
CYG_TEST_PASS_FINISH("can_test1 test OK");
}
+ else if (-EINTR == res)
+ {
+ CYG_TEST_PASS_FINISH("can_test1 test OK");
+ }
else
{
CYG_TEST_FAIL_FINISH("Error reading from /dev/can0");
}
//
- // create the two threads which access the CAN device driver
- // a reader thread with a higher priority and a writer thread
- // with a lower priority
+ // create the main thread
//
cyg_thread_create(4, can0_thread,
(cyg_addrword_t) 0,
cyg_scheduler_start();
}
-#else // #if defined(CYGOPT_IO_CAN_SUPPORT_NONBLOCKING) && !defined(CYGOPT_IO_CAN_SUPPORT_TIMEOUTS
-#define N_A_MSG "Needs nonblocking calls and disabled timeouts"
+#else // #if defined(CYGOPT_IO_CAN_SUPPORT_NONBLOCKING)
+#define N_A_MSG "Needs nonblocking calls"
#endif
#else // CYGFUN_KERNEL_API_C
}
#endif // N_A_MSG
-// EOF flexcan_load.c
+// EOF can_nonblock.c