Mercurial > ecos-v3_0-branch
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 |
| 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 |
