annotate packages/devs/can/arm/lpc2xxx/current/tests/can_rx_tx.c @ 2729:74dbf4c3f2e1 after-copyright-change-20090129

Update all copyright banners to reflect FSF ownership; fix and improve licence text.
author jlarmour
date Thu, 29 Jan 2009 17:47:46 +0000
parents a52d470bc691
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2406
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
1 //==========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
2 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
3 // can_rx_tx.c
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
4 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
5 // CAN RX / TX test
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
6 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
7 //==========================================================================
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
8 // ####ECOSGPLCOPYRIGHTBEGIN####
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
9 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
10 // This file is part of eCos, the Embedded Configurable Operating System.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
2406
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
12 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
13 // eCos is free software; you can redistribute it and/or modify it under
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
14 // the terms of the GNU General Public License as published by the Free
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
15 // Software Foundation; either version 2 or (at your option) any later
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
16 // version.
2406
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
17 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
18 // eCos is distributed in the hope that it will be useful, but WITHOUT
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
19 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
20 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
21 // for more details.
2406
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
22 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
23 // You should have received a copy of the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
24 // along with eCos; if not, write to the Free Software Foundation, Inc.,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
25 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
2406
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
26 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
27 // As a special exception, if other files instantiate templates or use
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
28 // macros or inline functions from this file, or you compile this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
29 // and link it with other works to produce a work based on this file,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
30 // this file does not by itself cause the resulting work to be covered by
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
31 // the GNU General Public License. However the source code for this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
32 // must still be made available in accordance with section (3) of the GNU
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
33 // General Public License v2.
2406
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
34 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
35 // This exception does not invalidate any other reasons why a work based
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
36 // on this file might be covered by the GNU General Public License.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
37 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2509
diff changeset
38 // ####ECOSGPLCOPYRIGHTEND####
2406
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
39 //==========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
40 //#####DESCRIPTIONBEGIN####
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
41 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
42 // Author(s): Uwe Kindler
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
43 // Contributors: Uwe Kindler
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
44 // Date: 2007-06-26
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
45 // Description: CAN RX/TX test for 2 CAN channels
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
46 //####DESCRIPTIONEND####
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
47
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
48
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
49 //===========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
50 // INCLUDES
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
51 //===========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
52 #include <pkgconf/system.h>
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
53
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
54 #include <cyg/infra/testcase.h> // test macros
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
55 #include <cyg/infra/cyg_ass.h> // assertion macros
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
56 #include <cyg/infra/diag.h>
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
57
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
58 // Package requirements
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
59 #if defined(CYGPKG_IO_CAN) && defined(CYGPKG_KERNEL)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
60
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
61 #include <pkgconf/kernel.h>
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
62 #include <cyg/io/io.h>
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
63 #include <cyg/io/canio.h>
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
64
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
65
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
66 // Package option requirements
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
67 #if defined(CYGFUN_KERNEL_API_C)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
68
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
69 #include <cyg/hal/hal_arch.h> // CYGNUM_HAL_STACK_SIZE_TYPICAL
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
70 #include <cyg/kernel/kapi.h>
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
71
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
72 // We need two CAN channels
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
73 #if defined(CYGPKG_DEVS_CAN_LPC2XXX_CAN0) && defined(CYGPKG_DEVS_CAN_LPC2XXX_CAN1)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
74
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
75
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
76 // The same baud rates are required because we send from one channel to the other one
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
77 #if CYGNUM_DEVS_CAN_LPC2XXX_CAN0_KBAUD == CYGNUM_DEVS_CAN_LPC2XXX_CAN1_KBAUD
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
78
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
79
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
80 // We need the loop can driver
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2417
diff changeset
81 #if defined(CYGPKG_DEVS_CAN_LOOP)
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2417
diff changeset
82 #include <pkgconf/devs_can_loop.h>
2406
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
83
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
84 #include "can_test_aux.inl" // include CAN test auxiliary functions
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
85 //===========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
86 // DATA TYPES
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
87 //===========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
88 typedef struct st_thread_data
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
89 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
90 cyg_thread obj;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
91 long stack[CYGNUM_HAL_STACK_SIZE_TYPICAL];
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
92 cyg_handle_t hdl;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
93 } thread_data_t;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
94
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
95
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
96 //===========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
97 // LOCAL DATA
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
98 //===========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
99 cyg_thread_entry_t can_tx_thread;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
100 thread_data_t can0_thread_data;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
101 cyg_thread_entry_t can_rx_thread;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
102 thread_data_t can1_thread_data;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
103 cyg_io_handle_t hCAN_Tbl[2];
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
104 cyg_io_handle_t hLoopCAN_Tbl[2];
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
105
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
106
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
107 //===========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
108 // Thread 0
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
109 //===========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
110 void can_rx_thread(cyg_addrword_t data)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
111 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
112 cyg_uint32 len;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
113 cyg_can_event rx_event;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
114 cyg_can_event loop_rx_event;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
115 cyg_uint32 msg_cnt = 0;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
116 cyg_uint8 i;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
117
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
118 while (msg_cnt < 0xF0)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
119 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
120
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
121 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
122 // First receive CAN event from real CAN hardware
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
123 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
124 len = sizeof(rx_event);
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
125 if (ENOERR != cyg_io_read(hCAN_Tbl[1], &rx_event, &len))
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
126 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
127 CYG_TEST_FAIL_FINISH("Error reading from channel 1");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
128 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
129
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
130 if (rx_event.flags & CYGNUM_CAN_EVENT_RX)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
131 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
132 print_can_msg(&rx_event.msg, "RX chan 1:");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
133 } // if (rx_event.flags & CYGNUM_CAN_EVENT_RX)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
134 else
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
135 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
136 print_can_flags(rx_event.flags, "");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
137 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
138
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
139 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
140 // Now receive CAN event from loop CAN driver
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
141 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
142 len = sizeof(loop_rx_event);
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
143 if (ENOERR != cyg_io_read(hLoopCAN_Tbl[1], &loop_rx_event, &len))
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
144 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
145 CYG_TEST_FAIL_FINISH("Error reading from loop channel 1");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
146 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
147
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
148 if (rx_event.flags & CYGNUM_CAN_EVENT_RX)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
149 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
150 print_can_msg(&rx_event.msg, "RX loop 1:");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
151 } // if (rx_event.flags & CYGNUM_CAN_EVENT_RX)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
152 else
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
153 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
154 print_can_flags(rx_event.flags, "");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
155 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
156
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
157 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
158 // Chaeck message ID and DLC of HW CAN message and CAN message from loop driver
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
159 // booth should be the same
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
160 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
161 if (rx_event.msg.id != loop_rx_event.msg.id)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
162 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
163 CYG_TEST_FAIL_FINISH("Received message IDs of hw CAN channel and loop CAN channel are not equal");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
164 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
165
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
166 if (rx_event.msg.dlc != loop_rx_event.msg.dlc)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
167 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
168 CYG_TEST_FAIL_FINISH("Received DLCs of hw CAN msg and loop CAN msg are not equal");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
169 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
170
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
171 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
172 // Now check each data byte of the receive message
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
173 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
174 for (i = 0; i < rx_event.msg.dlc; ++i)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
175 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
176 if (rx_event.msg.data.bytes[i] != loop_rx_event.msg.data.bytes[i])
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
177 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
178 CYG_TEST_FAIL_FINISH("Data of hw CAN msg and loop CAN msg are not equal");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
179 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
180
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
181 if (rx_event.msg.data.bytes[i] != (i + msg_cnt))
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
182 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
183 CYG_TEST_FAIL_FINISH("CAN message contains unexpected data");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
184 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
185 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
186
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
187 msg_cnt++;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
188 } // while (1)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
189
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
190 CYG_TEST_PASS_FINISH("CAN rx/tx test OK");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
191 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
192
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
193
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
194 //===========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
195 // Thread 1
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
196 //===========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
197 void can_tx_thread(cyg_addrword_t data)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
198 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
199 cyg_uint32 len;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
200 cyg_can_message tx_msg;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
201 cyg_uint32 msg_cnt = 0;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
202 cyg_uint8 i;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
203
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
204
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
205 CYG_CAN_MSG_SET_PARAM(tx_msg, 0, CYGNUM_CAN_ID_STD, 0, CYGNUM_CAN_FRAME_DATA);
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
206
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
207 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
208 // Prepare CAN message with a known CAN state
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
209 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
210 for (i = 0; i < 8; ++i)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
211 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
212 tx_msg.data.bytes[i] = i;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
213 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
214
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
215 while (msg_cnt < 0xF0)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
216 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
217 tx_msg.id = msg_cnt;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
218 len = sizeof(tx_msg);
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
219 if (ENOERR != cyg_io_write(hCAN_Tbl[0], &tx_msg, &len))
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
220 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
221 CYG_TEST_FAIL_FINISH("Error writing to channel 0");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
222 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
223
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
224
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
225 tx_msg.id = msg_cnt;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
226 len = sizeof(tx_msg);
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
227 if (ENOERR != cyg_io_write(hLoopCAN_Tbl[0], &tx_msg, &len))
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
228 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
229 CYG_TEST_FAIL_FINISH("Error writing to channel 1");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
230 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
231
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
232 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
233 // Increment data in each single data byte
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
234 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
235 for (i = 0; i < 8; ++i)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
236 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
237 tx_msg.data.bytes[i] += 1;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
238 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
239
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
240 msg_cnt++;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
241 tx_msg.dlc = (tx_msg.dlc + 1) % 9;
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
242 } // while (msg_cnt < 0x100)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
243 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
244
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
245
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
246 //===========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
247 // Entry point
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
248 //===========================================================================
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
249 void cyg_start(void)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
250 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
251 CYG_TEST_INIT();
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
252
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
253 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
254 // open CAN device driver channel 1
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
255 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
256 if (ENOERR != cyg_io_lookup(CYGPKG_DEVS_CAN_LPC2XXX_CAN0_NAME, &hCAN_Tbl[0]))
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
257 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
258 CYG_TEST_FAIL_FINISH("Error opening CAN channel 0");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
259 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
260
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
261
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
262 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
263 // open CAN device driver channel 2
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
264 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
265 if (ENOERR != cyg_io_lookup(CYGPKG_DEVS_CAN_LPC2XXX_CAN1_NAME, &hCAN_Tbl[1]))
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
266 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
267 CYG_TEST_FAIL_FINISH("Error opening CAN channel 1");
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
268 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
269
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
270 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
271 // open Loop CAN device driver channel 1
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
272 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
273 if (ENOERR != cyg_io_lookup(CYGDAT_DEVS_CAN_LOOP_CAN0_NAME, &hLoopCAN_Tbl[0]))
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
274 {
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2417
diff changeset
275 CYG_TEST_FAIL_FINISH("Error opening loop CAN channel 0");
2406
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
276 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
277
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
278
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
279 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
280 // open Loop CAN device driver channel 2
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
281 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
282 if (ENOERR != cyg_io_lookup(CYGDAT_DEVS_CAN_LOOP_CAN1_NAME, &hLoopCAN_Tbl[1]))
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
283 {
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2417
diff changeset
284 CYG_TEST_FAIL_FINISH("Error opening loop CAN channel 1");
2406
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
285 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
286
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
287
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
288
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
289
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
290
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
291 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
292 // create the first thread that access the CAN device driver
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
293 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
294 cyg_thread_create(5, can_tx_thread,
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
295 (cyg_addrword_t) 0,
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
296 "can_tx_thread",
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
297 (void *) can0_thread_data.stack,
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
298 1024 * sizeof(long),
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
299 &can0_thread_data.hdl,
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
300 &can0_thread_data.obj);
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
301
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
302 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
303 // create the second thread that access the CAN device driver
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
304 //
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
305 cyg_thread_create(4, can_rx_thread,
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
306 (cyg_addrword_t) 0,
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
307 "can_rx_thread",
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
308 (void *) can1_thread_data.stack,
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
309 1024 * sizeof(long),
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
310 &can1_thread_data.hdl,
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
311 &can1_thread_data.obj);
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
312
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
313 cyg_thread_resume(can0_thread_data.hdl);
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
314 cyg_thread_resume(can1_thread_data.hdl);
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
315
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
316 cyg_scheduler_start();
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
317 }
2509
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2417
diff changeset
318 #else // defined(CYGPKG_DEVS_CAN_LOOP)
a52d470bc691 * cdl/can_lpc2xxx.cdl: Added CYGOPT_DEVS_CAN_LPC2XXX_ALIE to make
asl
parents: 2417
diff changeset
319 #define N_A_MSG "Needs support for loop CAN device driver"
2406
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
320 #endif
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
321
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
322 #else // CYGNUM_DEVS_CAN_LPC2XXX_CAN0_KBAUD == CYGNUM_DEVS_CAN_LPC2XXX_CAN1_KBAUD
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
323 #define N_A_MSG "Baudrate of channel 0 and 1 need to be equal"
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
324 #endif
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
325
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
326 #else // defined(CYGPKG_DEVS_CAN_LPC2XXX_CAN0) && defined(CYGPKG_DEVS_CAN_LPC2XXX_CAN1)
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
327 #define N_A_MSG "Needs support for CAN channel 1 and 2"
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
328 #endif
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
329
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
330 #else // CYGFUN_KERNEL_API_C
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
331 #define N_A_MSG "Needs kernel C API"
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
332 #endif
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
333
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
334 #else // CYGPKG_IO_CAN && CYGPKG_KERNEL
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
335 #define N_A_MSG "Needs Kernel"
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
336 #endif
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
337
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
338 #ifdef N_A_MSG
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
339 void
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
340 cyg_start( void )
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
341 {
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
342 CYG_TEST_INIT();
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
343 CYG_TEST_NA(N_A_MSG);
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
344 }
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
345 #endif // N_A_MSG
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
346
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
347 //---------------------------------------------------------------------------
641c0b821739 CAN driver for LPC2xxx, plus misc CAN improvements - from Uwe Kindler
gthomas
parents:
diff changeset
348 // EOF can_rx_tx.c