annotate packages/kernel/current/tests/clock0.cxx @ 208:e0c0827131d1 ecos

Merge from eCos master repository on 2002-05-20-20:11:54-BST
author jlarmour
date Mon, 20 May 2002 22:19:26 +0000
parents eb9fd8c04db3
children d2c90368aeef
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1 //==========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
2 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
3 // clock0.cxx
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
4 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
5 // Clock test 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
6 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
7 //==========================================================================
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
8 //####ECOSGPLCOPYRIGHTBEGIN####
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
9 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
10 // This file is part of eCos, the Embedded Configurable Operating System.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
12 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
13 // eCos is free software; you can redistribute it and/or modify it under
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
14 // the terms of the GNU General Public License as published by the Free
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
15 // Software Foundation; either version 2 or (at your option) any later version.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
16 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
19 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
20 // for more details.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
21 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
22 // You should have received a copy of the GNU General Public License along
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
23 // with eCos; if not, write to the Free Software Foundation, Inc.,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
25 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
26 // As a special exception, if other files instantiate templates or use macros
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
27 // or inline functions from this file, or you compile this file and link it
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
28 // with other works to produce a work based on this file, this file does not
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
29 // by itself cause the resulting work to be covered by the GNU General Public
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
30 // License. However the source code for this file must still be made available
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
31 // in accordance with section (3) of the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
32 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
33 // This exception does not invalidate any other reasons why a work based on
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
34 // this file might be covered by the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
35 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
36 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
37 // at http://sources.redhat.com/ecos/ecos-license
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
38 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 130
diff changeset
39 //####ECOSGPLCOPYRIGHTEND####
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 //==========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41 //#####DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
43 // Author(s): dsm
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44 // Contributors: dsm
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45 // Date: 1998-02-13
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46 // Description: Tests some basic clock functions.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47 // Omissions: Doesn't test likely boundary conditions for
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48 // CYGNUM_KERNEL_COUNTERS_MULTI_LIST_SIZE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
49 // Real Time Clock Testing is limited
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50 // Options:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51 // CYGIMP_KERNEL_COUNTERS_SINGLE_LIST
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52 // CYGIMP_KERNEL_COUNTERS_MULTI_LIST
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53 // CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
54 // CYGNUM_KERNEL_COUNTERS_MULTI_LIST_SIZE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
55 // Assumptions: This assumes we have long long support and
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
56 // that counters are 64 bits.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
57 //####DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59 #include <pkgconf/kernel.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61 #include <cyg/kernel/clock.hxx>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
62
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63 #include <cyg/infra/testcase.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65 #include <cyg/kernel/clock.inl>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
66
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
67 #include "testaux.hxx"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
68
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
69 #ifdef CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
70
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
71 cyg_alarm_fn call_me;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
72
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73 bool flash( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 Cyg_Counter counter0 = Cyg_Counter();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76 Cyg_Counter counter1 = Cyg_Counter(723);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78 CYG_ASSERTCLASSO( counter0, "error" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79 CYG_ASSERTCLASSO( counter1, "error" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81 Cyg_Alarm alarm0 = Cyg_Alarm(&counter0, call_me, 12);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83 CYG_ASSERTCLASSO( alarm0, "error" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85 Cyg_Clock::cyg_resolution res = {1,2};
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87 Cyg_Clock clock0(res);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89 CYG_ASSERTCLASSO( clock0, "error" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91 return true;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
93
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94 // Testing alarms
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 // call_me is a function that will be called when an alarm is
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 // triggered. It updates a global variable called which is CHECKed
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98 // explicitly to see if the approriate alarms have been called.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100 cyg_uint16 called = 0x0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
101
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
102 void call_me(Cyg_Alarm *alarm, CYG_ADDRWORD data)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
103 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
104 called ^= data;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
105 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
106
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107 void call_me2(Cyg_Alarm *alarm, CYG_ADDRWORD data)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109 call_me(alarm, data^0x10);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113 void clock0_main(void)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 CYG_TEST_INIT();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117 CHECK(flash());
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
118 CHECK(flash());
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
119
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
120 const cyg_uint32 big_number = 3333222111u;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121 Cyg_Counter counter0 = Cyg_Counter();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123 CHECK( 0 == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 CHECK( 0 == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125 CHECK( 0 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 counter0.tick();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129 CHECK( 1 == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 CHECK( 1 == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131 CHECK( 0 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133 counter0.tick(6);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135 CHECK( 7 == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136 CHECK( 7 == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137 CHECK( 0 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139 counter0.set_value( 0xfffffffc );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141 CHECK( 0xfffffffc == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142 CHECK( 0xfffffffc == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143 CHECK( 0 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
144
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
145 counter0.tick( 0x13 ); // Overflows 32 bits
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
146
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
147 CHECK( 0x10000000fULL == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
148 CHECK( 0xf == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
149 CHECK( 0x1 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
150
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
151
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
152 Cyg_Counter counter1 = Cyg_Counter(big_number);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
153
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
154 CHECK( 0 == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
155 CHECK( 0 == counter1.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156 CHECK( 0 == counter1.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
157
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
158 counter1.tick(2);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
159
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160 CHECK( 2ll*big_number == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
161 CHECK( ((2ll*big_number) & 0xffffffff) ==
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
162 counter1.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
163 CHECK( ((2ll*big_number) >> 32) == counter1.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
164
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
165 counter1.tick();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
166
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
167 CHECK( 3ll*big_number == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
168 CHECK( ((3ll*big_number) & 0xffffffff) ==
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
169 counter1.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170 CHECK( ((3ll*big_number) >> 32) == counter1.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
171
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
172 counter1.tick();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
173
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
174 CHECK( 4ll*big_number == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
175 CHECK( ((4ll*big_number) & 0xffffffff) ==
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176 counter1.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
177 CHECK( ((4ll*big_number) >> 32) == counter1.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
179 counter1.set_value(1222333444555ll);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180 CHECK( 1222333444555ll == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
182 counter0.set_value(11);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
183 CHECK( 11 == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185 // the call_me functions cause the "called" bits to toggle
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
186 // CHECKing the value of called TEST_CHECKs the parity of # of calls
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
187 // made by each alarm.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
188
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
189 Cyg_Alarm alarm0 = Cyg_Alarm(&counter0, call_me, 0x1);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
190 Cyg_Alarm alarm1 = Cyg_Alarm(&counter0, call_me, 0x2);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
191 Cyg_Alarm alarm2 = Cyg_Alarm(&counter0, call_me2, 0x4);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
192
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
193 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
194 alarm0.initialize(12,3);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
195 alarm2.initialize(21,2);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
196 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
197
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
198 counter0.tick(); // 12 a0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
199 CHECK( 0x01 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
200
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
201 alarm1.initialize(13,0);
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
202 counter0.tick(); // 13 a1
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
203 CHECK( 0x03 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
204
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
205 alarm1.initialize(17,0);
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
206 counter0.tick(); // 14
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207 CHECK( 0x03 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
208
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
209 counter0.tick(); // 15 a0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210 CHECK( 0x02 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
211
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
212 counter0.tick(2); // 17 a1
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
214
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
215 counter0.tick(); // 18 a0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
216 CHECK( 0x01 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
217
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
218 counter0.tick(3); // 21 a0 a2
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
219 CHECK( 0x14 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
220
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
221 counter0.tick(2); // 23 a2
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
222 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
223
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
224 alarm2.disable();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
225
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
226 counter0.tick(2); // 25 a0(24)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
227 CHECK( 0x01 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
228
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
229 alarm2.enable(); // a2 (enabled at 25)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230 CHECK( 0x15 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
231
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
232 counter0.tick(); // 26
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233 CHECK( 0x15 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
234
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
235 counter0.tick(2); // 28 a0(27) a2(27)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
236 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
237
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
238 counter0.tick(3); // 31 a0(30) a2(29 31)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
239 CHECK( 0x01 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
240
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
241 Cyg_Clock::cyg_resolution res0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
242
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
243 res0.dividend = 100;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
244 res0.divisor = 3;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
245
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
246 Cyg_Clock::cyg_resolution res1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
247
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
248 Cyg_Clock clock0 = Cyg_Clock(res0);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
249
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
250 res1 = clock0.get_resolution();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
251 CHECK( res0.dividend == res1.dividend );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
252 CHECK( res0.divisor == res1.divisor );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
253
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
254 res1.dividend = 12;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
255 res1.divisor = 25;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
256
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
257 clock0.set_resolution(res1);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
258 res0 = clock0.get_resolution();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
259 CHECK( res0.dividend == res1.dividend );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
260 CHECK( res0.divisor == res1.divisor );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
261
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
262 res0 = Cyg_Clock::real_time_clock->get_resolution();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
263
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
264 CYG_TEST_PASS_FINISH("Clock 0 OK");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
265 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
266
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
267 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
268 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
269 {
130
eb9fd8c04db3 Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents: 66
diff changeset
270 #ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
eb9fd8c04db3 Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents: 66
diff changeset
271 cyg_hal_invoke_constructors();
eb9fd8c04db3 Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents: 66
diff changeset
272 #endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
273 clock0_main();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
274 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
275
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
276 #else // def CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
277
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
278 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
279 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
280 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
281 CYG_TEST_INIT();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
282 CYG_TEST_NA( "Kernel real-time clock disabled");
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
283 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
284
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
285 #endif // def CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
286 // EOF clock0.cxx