Mercurial > ecos
annotate packages/io/wallclock/current/include/wallclock.hxx @ 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 | d2c90368aeef |
| children |
| rev | line source |
|---|---|
|
80
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
1 #ifndef CYGONCE_IO_WALLCLOCK_HXX |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
2 #define CYGONCE_IO_WALLCLOCK_HXX |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
3 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
4 //========================================================================== |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
5 // |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
6 // wallclock.hxx |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
7 // |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
8 // Wallclock interface declaration |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
9 // |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
10 //========================================================================== |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
11 // ####ECOSGPLCOPYRIGHTBEGIN#### |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
12 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
13 // 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:
210
diff
changeset
|
14 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
94
diff
changeset
|
15 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
16 // 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:
210
diff
changeset
|
17 // 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:
210
diff
changeset
|
18 // 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:
210
diff
changeset
|
19 // version. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
94
diff
changeset
|
20 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
21 // 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:
210
diff
changeset
|
22 // 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:
210
diff
changeset
|
23 // 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:
210
diff
changeset
|
24 // for more details. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
94
diff
changeset
|
25 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
26 // 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:
210
diff
changeset
|
27 // 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:
210
diff
changeset
|
28 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
94
diff
changeset
|
29 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
30 // 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:
210
diff
changeset
|
31 // 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:
210
diff
changeset
|
32 // 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:
210
diff
changeset
|
33 // 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:
210
diff
changeset
|
34 // 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:
210
diff
changeset
|
35 // 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:
210
diff
changeset
|
36 // General Public License v2. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
94
diff
changeset
|
37 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
38 // 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:
210
diff
changeset
|
39 // 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:
210
diff
changeset
|
40 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
210
diff
changeset
|
41 // ####ECOSGPLCOPYRIGHTEND#### |
|
80
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
42 //========================================================================== |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
43 //#####DESCRIPTIONBEGIN#### |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
44 // |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
45 // Author(s): nickg |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
46 // Contributors: nickg |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
47 // Date: 1999-03-05 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
48 // Purpose: Wall Clock declarations |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
49 // Description: This file defines the interface to the wall clock device |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
50 // that provides real time stamps. Actual implementations of |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
51 // this driver can be found in devs/wallclock. |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
52 // Usage: #include <cyg/io/wallclock.hxx> |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
53 // |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
54 //####DESCRIPTIONEND#### |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
55 // |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
56 //========================================================================== |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
57 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
58 #include <cyg/infra/cyg_type.h> |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
59 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
60 // ------------------------------------------------------------------------- |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
61 // Wallclock class |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
62 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
63 class Cyg_WallClock |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
64 { |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
65 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
66 public: |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
67 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
68 Cyg_WallClock(); |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
69 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
70 // Returns the number of seconds elapsed since 1970-01-01 00:00:00. |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
71 // This may involve reading the hardware, so it may take anything |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
72 // up to a second to complete. |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
73 cyg_uint32 get_current_time(); |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
74 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
75 // Sets the clock. Argument is seconds elapsed since 1970-01-01 00:00:00. |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
76 // This may involve writing to the hardware, so it may take |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
77 // anything up to a second to complete. |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
78 void set_current_time( cyg_uint32 time_stamp ); |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
79 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
80 // A static pointer to the single system defined wall clock device. |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
81 static Cyg_WallClock *wallclock; |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
82 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
83 private: |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
84 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
85 // Functions implemented by the hardware-specific part of the |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
86 // driver. |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
87 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
88 // Note: While the API specifies elapsed time since 1970-01-01 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
89 // 00:00:00 this is only an actual requirement if the driver is |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
90 // used in set-get mode - in init-get mode, the upper layer of the |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
91 // driver only needs to know the number of elapsed seconds between |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
92 // the init_hw_seconds and get_hw_seconds calls; the hardware |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
93 // epoch base is factored out, so the driver can use any base |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
94 // desired (see the emulated device). |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
95 |
|
94
4642a6d35749
Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
80
diff
changeset
|
96 // Called to initialize the hardware clock to a known sane state, or |
|
4642a6d35749
Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
80
diff
changeset
|
97 // simply to make sure it can be accessed in set-get mode. |
|
80
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
98 void init_hw_seconds( void ); |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
99 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
100 // Returns the number of seconds elapsed since 1970-01-01 00:00:00. |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
101 // (or any desired epoch when in init-get mode) |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
102 cyg_uint32 get_hw_seconds( void ); |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
103 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
104 #ifdef CYGSEM_WALLCLOCK_SET_GET_MODE |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
105 // Sets the clock. Argument is seconds elapsed since 1970-01-01 00:00:00. |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
106 void set_hw_seconds( cyg_uint32 secs ); |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
107 #endif |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
108 }; |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
109 |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
110 #endif // ifndef CYGONCE_DEVS_WALLCLOCK_HXX |
|
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
diff
changeset
|
111 // EOF wallclock.hxx |
