annotate packages/kernel/current/tests/clock0.cxx @ 130:eb9fd8c04db3 ecos-sw-2000-10-23

Merge from eCos master repository on 2000-10-23-17:01:37-BST
author jlarmour
date Mon, 23 Oct 2000 17:10:57 +0000
parents bf00f99aec69
children e0c0827131d1
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 //==========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
9 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
10 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
11 // The contents of this file are subject to the Red Hat eCos Public License
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
12 // Version 1.1 (the "License"); you may not use this file except in
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
14 // http://www.redhat.com/
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
15 //
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
18 // License for the specific language governing rights and limitations under
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
19 // the License.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
20 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
21 // The Original Code is eCos - Embedded Configurable Operating System,
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
22 // released September 30, 1998.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
23 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
24 // The Initial Developer of the Original Code is Red Hat.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
25 // Portions created by Red Hat are
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
26 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
27 // All Rights Reserved.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
28 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 2
diff changeset
29 //
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
30 //####COPYRIGHTEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
31 //==========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
32 //#####DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
33 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
34 // Author(s): dsm
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
35 // Contributors: dsm
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
36 // Date: 1998-02-13
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
37 // Description: Tests some basic clock functions.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
38 // Omissions: Doesn't test likely boundary conditions for
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
39 // CYGNUM_KERNEL_COUNTERS_MULTI_LIST_SIZE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 // Real Time Clock Testing is limited
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41 // Options:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 // CYGIMP_KERNEL_COUNTERS_SINGLE_LIST
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
43 // CYGIMP_KERNEL_COUNTERS_MULTI_LIST
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44 // CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45 // CYGNUM_KERNEL_COUNTERS_MULTI_LIST_SIZE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46 // Assumptions: This assumes we have long long support and
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47 // that counters are 64 bits.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48 //####DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
49
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50 #include <pkgconf/kernel.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52 #include <cyg/kernel/clock.hxx>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
54 #include <cyg/infra/testcase.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
55
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
56 #include <cyg/kernel/clock.inl>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
57
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58 #include "testaux.hxx"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60 #ifdef CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
62 cyg_alarm_fn call_me;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64 bool flash( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
66 Cyg_Counter counter0 = Cyg_Counter();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
67 Cyg_Counter counter1 = Cyg_Counter(723);
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 CYG_ASSERTCLASSO( counter0, "error" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
70 CYG_ASSERTCLASSO( counter1, "error" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
71
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
72 Cyg_Alarm alarm0 = Cyg_Alarm(&counter0, call_me, 12);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74 CYG_ASSERTCLASSO( alarm0, "error" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76 Cyg_Clock::cyg_resolution res = {1,2};
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_Clock clock0(res);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80 CYG_ASSERTCLASSO( clock0, "error" );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82 return true;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83 }
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 // Testing alarms
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 // 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
88 // triggered. It updates a global variable called which is CHECKed
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89 // explicitly to see if the approriate alarms have been called.
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 cyg_uint16 called = 0x0;
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 void call_me(Cyg_Alarm *alarm, CYG_ADDRWORD data)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 called ^= data;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98 void call_me2(Cyg_Alarm *alarm, CYG_ADDRWORD data)
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 call_me(alarm, data^0x10);
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
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 void clock0_main(void)
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 CYG_TEST_INIT();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108 CHECK(flash());
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109 CHECK(flash());
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 const cyg_uint32 big_number = 3333222111u;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112 Cyg_Counter counter0 = Cyg_Counter();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114 CHECK( 0 == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 CHECK( 0 == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116 CHECK( 0 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
118 counter0.tick();
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 CHECK( 1 == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121 CHECK( 1 == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 CHECK( 0 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 counter0.tick(6);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126 CHECK( 7 == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 CHECK( 7 == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 CHECK( 0 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 counter0.set_value( 0xfffffffc );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132 CHECK( 0xfffffffc == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133 CHECK( 0xfffffffc == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134 CHECK( 0 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
136 counter0.tick( 0x13 ); // Overflows 32 bits
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138 CHECK( 0x10000000fULL == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139 CHECK( 0xf == counter0.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140 CHECK( 0x1 == counter0.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143 Cyg_Counter counter1 = Cyg_Counter(big_number);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
144
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
145 CHECK( 0 == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
146 CHECK( 0 == counter1.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
147 CHECK( 0 == counter1.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
148
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
149 counter1.tick(2);
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 CHECK( 2ll*big_number == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
152 CHECK( ((2ll*big_number) & 0xffffffff) ==
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
153 counter1.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
154 CHECK( ((2ll*big_number) >> 32) == counter1.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
155
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156 counter1.tick();
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 CHECK( 3ll*big_number == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
159 CHECK( ((3ll*big_number) & 0xffffffff) ==
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160 counter1.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
161 CHECK( ((3ll*big_number) >> 32) == counter1.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
162
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
163 counter1.tick();
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 CHECK( 4ll*big_number == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
166 CHECK( ((4ll*big_number) & 0xffffffff) ==
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
167 counter1.current_value_lo() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
168 CHECK( ((4ll*big_number) >> 32) == counter1.current_value_hi() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
169
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170 counter1.set_value(1222333444555ll);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
171 CHECK( 1222333444555ll == counter1.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
172
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
173 counter0.set_value(11);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
174 CHECK( 11 == counter0.current_value() );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
175
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176 // the call_me functions cause the "called" bits to toggle
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
177 // CHECKing the value of called TEST_CHECKs the parity of # of calls
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178 // made by each alarm.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
179
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180 Cyg_Alarm alarm0 = Cyg_Alarm(&counter0, call_me, 0x1);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181 Cyg_Alarm alarm1 = Cyg_Alarm(&counter0, call_me, 0x2);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
182 Cyg_Alarm alarm2 = Cyg_Alarm(&counter0, call_me2, 0x4);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
183
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185 alarm0.initialize(12,3);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
186 alarm2.initialize(21,2);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
187 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
188
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
189 counter0.tick(); // 12 a0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
190 CHECK( 0x01 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
191
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
192 alarm1.initialize(13,0);
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
193 counter0.tick(); // 13 a1
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
194 CHECK( 0x03 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
195
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
196 alarm1.initialize(17,0);
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
197 counter0.tick(); // 14
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
198 CHECK( 0x03 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
199
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
200 counter0.tick(); // 15 a0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
201 CHECK( 0x02 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
202
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
203 counter0.tick(2); // 17 a1
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
204 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
205
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
206 counter0.tick(); // 18 a0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207 CHECK( 0x01 == 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(3); // 21 a0 a2
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210 CHECK( 0x14 == 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); // 23 a2
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
215 alarm2.disable();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
216
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
217 counter0.tick(2); // 25 a0(24)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
218 CHECK( 0x01 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
219
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
220 alarm2.enable(); // a2 (enabled at 25)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
221 CHECK( 0x15 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
222
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
223 counter0.tick(); // 26
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
224 CHECK( 0x15 == called );
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); // 28 a0(27) a2(27)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
227 CHECK( 0x00 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
228
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
229 counter0.tick(3); // 31 a0(30) a2(29 31)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230 CHECK( 0x01 == called );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
231
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232 Cyg_Clock::cyg_resolution res0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
234 res0.dividend = 100;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
235 res0.divisor = 3;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
236
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
237 Cyg_Clock::cyg_resolution res1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
238
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
239 Cyg_Clock clock0 = Cyg_Clock(res0);
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 res1 = clock0.get_resolution();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
242 CHECK( res0.dividend == res1.dividend );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
243 CHECK( res0.divisor == res1.divisor );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
244
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
245 res1.dividend = 12;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
246 res1.divisor = 25;
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 clock0.set_resolution(res1);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
249 res0 = clock0.get_resolution();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
250 CHECK( res0.dividend == res1.dividend );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
251 CHECK( res0.divisor == res1.divisor );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
252
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
253 res0 = Cyg_Clock::real_time_clock->get_resolution();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
254
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
255 CYG_TEST_PASS_FINISH("Clock 0 OK");
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
258 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
259 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
260 {
130
eb9fd8c04db3 Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents: 66
diff changeset
261 #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
262 cyg_hal_invoke_constructors();
eb9fd8c04db3 Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents: 66
diff changeset
263 #endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
264 clock0_main();
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 #else // def CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
268
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
269 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
270 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
271 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
272 CYG_TEST_INIT();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
273 CYG_TEST_NA( "Kernel real-time clock disabled");
0
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 #endif // def CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
277 // EOF clock0.cxx