2
3
4
5
6
7
12#include "../types/evmu_peripheral.h"
16
17
18
19#define EVMU_CLOCK_TYPE (GBL_TYPEID
(EvmuClock))
20#define EVMU_CLOCK(self) (GBL_CAST(EvmuClock, self))
22#define EVMU_CLOCK_GET_CLASS(self) (GBL_CLASSOF(EvmuClock, self))
25#define EVMU_CLOCK_NAME "clock"
27#define EVMU_CLOCK_OSC_QUARTZ_FREQ 32768
28#define EVMU_CLOCK_OSC_RC_FREQ 879236
29#define EVMU_CLOCK_OSC_CF_FREQ 6000000
31#define EVMU_CLOCK_OSC_QUARTZ_TCYC_1_12 366210
32#define EVMU_CLOCK_OSC_QUARTZ_TCYC_1_6 183105
34#define EVMU_CLOCK_OSC_RC_TCYC_1_12 12568
35#define EVMU_CLOCK_OSC_RC_TCYC_1_6 6824
37#define EVMU_CLOCK_OSC_CF_TCYC_1_12 2000
38#define EVMU_CLOCK_OSC_CF_TCYC_1_6 1000
40#define EVMU_CLOCK_OSC_QUARTZ_CURRENT 2600
41#define EVMU_CLOCK_OSC_RC_CURRENT 610
43#define GBL_SELF_TYPE EvmuClock
47GBL_DECLARE_ENUM(EVMU_OSCILLATOR) {
48 EVMU_OSCILLATOR_QUARTZ,
54GBL_DECLARE_ENUM(EVMU_CLOCK_SIGNAL) {
58 EVMU_CLOCK_SIGNAL_CYCLE,
59 EVMU_CLOCK_SIGNAL_SYSTEM_1 = EVMU_CLOCK_SIGNAL_CYCLE,
60 EVMU_CLOCK_SIGNAL_SYSTEM_2,
61 EVMU_CLOCK_SIGNAL_COUNT
64GBL_DECLARE_ENUM(EVMU_CLOCK_SYSTEM_STATE) {
65 EVMU_CLOCK_SYSTEM_STATE_UNKNOWN,
66 EVMU_CLOCK_SYSTEM_STATE_RUNNING,
67 EVMU_CLOCK_SYSTEM_STATE_HALT,
68 EVMU_CLOCK_SYSTEM_STATE_HOLD,
69 EVMU_CLOCK_SYSTEM_STATE_COUNT
72GBL_DECLARE_ENUM(EVMU_CLOCK_DIVIDER) {
74 EVMU_CLOCK_DIVIDER_12,
76 EVMU_CLOCK_DIVIDER_COUNT
85 unsigned currentMicroAmps;
96
97
98
99
100
101GBL_CLASS_DERIVE_EMPTY (EvmuClock, EvmuPeripheral)
104
105
106
107
108
109
119 (cycleState, GBL_GENERIC, (READ, WRITE, LOAD, SAVE),
GBL_ENUM_TYPE),
120 (cycleOscillator, GBL_GENERIC, (READ, WRITE, LOAD, SAVE),
GBL_ENUM_TYPE),
122 (system2State, GBL_GENERIC, (READ, WRITE, LOAD, SAVE),
GBL_ENUM_TYPE),
123 (system2Oscillator, GBL_GENERIC, (READ, WRITE, LOAD, SAVE),
GBL_ENUM_TYPE),
129EVMU_EXPORT EVMU_RESULT EvmuClock_oscillatorSpecs (GBL_CSELF, EVMU_OSCILLATOR oscillator, EvmuOscillatorSpecs* pSpecs) GBL_NOEXCEPT;
130EVMU_EXPORT GblBool EvmuClock_oscillatorActive (GBL_CSELF, EVMU_OSCILLATOR oscillator) GBL_NOEXCEPT;
131EVMU_EXPORT EVMU_RESULT EvmuClock_setOscillatorActive (GBL_CSELF, EVMU_OSCILLATOR oscillator,
GblBool active) GBL_NOEXCEPT;
134 EvmuClock_systemState (GBL_CSELF) GBL_NOEXCEPT;
135EVMU_EXPORT EVMU_RESULT EvmuClock_setSystemState (GBL_CSELF, EVMU_CLOCK_SYSTEM_STATE state) GBL_NOEXCEPT;
136EVMU_EXPORT EVMU_RESULT EvmuClock_systemConfig (GBL_CSELF, EVMU_OSCILLATOR* pSource, EVMU_CLOCK_DIVIDER* pDivider) GBL_NOEXCEPT;
137EVMU_EXPORT EVMU_RESULT EvmuClock_setSystemConfig (GBL_CSELF, EVMU_OSCILLATOR source, EVMU_CLOCK_DIVIDER divider) GBL_NOEXCEPT;
139EVMU_EXPORT EVMU_RESULT EvmuClock_signalStats (GBL_CSELF, EVMU_CLOCK_SIGNAL signal, EvmuClockStats* pStatus) GBL_NOEXCEPT;
140EVMU_EXPORT EvmuWave EvmuClock_signalWave (GBL_CSELF, EVMU_CLOCK_SIGNAL signal) GBL_NOEXCEPT;
144EVMU_EXPORT uint64_t EvmuClock_systemCyclesPerSec (GBL_CSELF) GBL_NOEXCEPT;
145EVMU_EXPORT double EvmuClock_systemSecsPerCycle (GBL_CSELF) GBL_NOEXCEPT;
#define EVMU_EXPORT
Define used for adding attributes to export public symbols.
uint64_t EvmuTicks
Represents a delta time in milliseconds.
uint64_t EvmuCycles
Represent a delta time in cycles.
#define GBL_PROPERTIES(object,...)
API for oscillators, clock sources, and timing.
Contains information on the current satte of a particular clock.
Contains technical specifications for a particular oscillator.
#define GBL_CLASS_CAST(cType, klass)
#define GBL_CLASSOF(cType, self)
#define GBL_CAST(cType, self)