Loop Timing Witness
Native controller and runtime interfaces; hardware qualification pending
Toggle main menu visibility
Loading...
Searching...
No Matches
amp_contract.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: AGPL-3.0-or-later
2
// Commercial license available
3
// © Concepts 1996–2026 Miroslav Šotek. All rights reserved.
4
// © Code 2020–2026 Miroslav Šotek. All rights reserved.
5
// ORCID: 0009-0009-3560-0851
6
// Contact: www.anulum.li | protoscience@anulum.li
7
// Loop Timing Witness — dedicated hart and single producer telemetry contract
8
12
13
#ifndef WITNESS_AMP_CONTRACT_H
14
#define WITNESS_AMP_CONTRACT_H
15
#include "
../../controllers/c/witness_controller.h
"
16
18
#define WITNESS_AMP_ABI UINT32_C(2)
20
#define WITNESS_AMP_CAPACITY UINT32_C(256)
21
23
typedef
struct
{
24
uint32_t
hart
,
interrupt
;
25
uint64_t
mmio
,
priority
,
enable_word
,
threshold
,
claim
,
shared
;
26
}
witness_amp_platform_contract
;
27
29
typedef
struct
{
30
uint32_t
cycles
,
period_ticks
,
lqr
,
overload_iterations
;
31
witness_coefficients
coefficients
;
32
}
witness_amp_run_contract
;
33
35
typedef
struct
{
36
uint64_t
ticks
,
generation
,
overload_work
;
37
uint32_t
cycle
;
38
int32_t
reference
,
position
,
velocity
,
command
,
integral
,
derivative
;
39
uint32_t
clipped
,
integral_held
,
submitted
;
40
}
witness_amp_sample
;
41
43
typedef
struct
{
44
uint32_t
abi
,
status
,
producer
,
consumer
;
45
uint64_t
trap_cause
,
trap_value
;
46
uint32_t
telemetry_overflow
,
samples
;
47
uint32_t
logger_status
,
reserved
;
48
witness_amp_run_contract
run
;
49
uint32_t
run_reserved
;
50
witness_amp_sample
records
[
WITNESS_AMP_CAPACITY
];
51
}
witness_amp_mailbox
;
52
54
enum
witness_amp_status
{
55
WITNESS_AMP_INITIAL
= 0 ,
56
WITNESS_AMP_ARMED
= 1 ,
57
WITNESS_AMP_FINISHED
=
58
2 ,
59
WITNESS_AMP_REFUSED
= 3
60
};
61
63
enum
witness_amp_logger_status
{
64
WITNESS_AMP_LOGGER_WAITING
=
65
0 ,
66
WITNESS_AMP_LOGGER_COMPLETE
=
67
1 ,
68
WITNESS_AMP_LOGGER_READY
= 2
69
};
70
72
extern
const
witness_amp_platform_contract
witness_amp_platform
;
74
extern
const
witness_amp_run_contract
witness_amp_run
;
75
77
#ifdef __cplusplus
78
[[noreturn]]
void
witness_amp_main
(
void
);
79
#else
80
_Noreturn
void
witness_amp_main
(
void
);
81
#endif
83
void
witness_amp_trap
(uint64_t cause, uint64_t value);
85
#ifdef __cplusplus
86
[[noreturn]]
void
witness_amp_rust_panic
(
void
);
87
#else
88
_Noreturn
void
witness_amp_rust_panic
(
void
);
89
#endif
91
#ifdef __cplusplus
92
[[noreturn]]
void
witness_amp_exit
(
void
);
93
#else
94
_Noreturn
void
witness_amp_exit
(
void
);
95
#endif
213
214
#endif
witness_amp_exit
_Noreturn void witness_amp_exit(void)
witness_amp_main
_Noreturn void witness_amp_main(void)
witness_amp_trap
void witness_amp_trap(uint64_t cause, uint64_t value)
witness_amp_run
const witness_amp_run_contract witness_amp_run
WITNESS_AMP_CAPACITY
#define WITNESS_AMP_CAPACITY
Definition
amp_contract.h:20
witness_amp_platform
const witness_amp_platform_contract witness_amp_platform
witness_amp_status
witness_amp_status
Definition
amp_contract.h:54
WITNESS_AMP_ARMED
@ WITNESS_AMP_ARMED
Definition
amp_contract.h:56
WITNESS_AMP_FINISHED
@ WITNESS_AMP_FINISHED
Definition
amp_contract.h:57
WITNESS_AMP_INITIAL
@ WITNESS_AMP_INITIAL
Definition
amp_contract.h:55
WITNESS_AMP_REFUSED
@ WITNESS_AMP_REFUSED
Definition
amp_contract.h:59
witness_amp_logger_status
witness_amp_logger_status
Definition
amp_contract.h:63
WITNESS_AMP_LOGGER_COMPLETE
@ WITNESS_AMP_LOGGER_COMPLETE
Definition
amp_contract.h:66
WITNESS_AMP_LOGGER_READY
@ WITNESS_AMP_LOGGER_READY
Definition
amp_contract.h:68
WITNESS_AMP_LOGGER_WAITING
@ WITNESS_AMP_LOGGER_WAITING
Definition
amp_contract.h:64
witness_amp_rust_panic
_Noreturn void witness_amp_rust_panic(void)
witness_amp_mailbox
Definition
amp_contract.h:43
witness_amp_mailbox::records
witness_amp_sample records[WITNESS_AMP_CAPACITY]
Definition
amp_contract.h:50
witness_amp_mailbox::logger_status
uint32_t logger_status
Definition
amp_contract.h:47
witness_amp_mailbox::trap_cause
uint64_t trap_cause
Definition
amp_contract.h:45
witness_amp_mailbox::trap_value
uint64_t trap_value
Definition
amp_contract.h:45
witness_amp_mailbox::reserved
uint32_t reserved
Definition
amp_contract.h:47
witness_amp_mailbox::abi
uint32_t abi
Definition
amp_contract.h:44
witness_amp_mailbox::run_reserved
uint32_t run_reserved
Definition
amp_contract.h:49
witness_amp_mailbox::telemetry_overflow
uint32_t telemetry_overflow
Definition
amp_contract.h:46
witness_amp_mailbox::consumer
uint32_t consumer
Definition
amp_contract.h:44
witness_amp_mailbox::status
uint32_t status
Definition
amp_contract.h:44
witness_amp_mailbox::samples
uint32_t samples
Definition
amp_contract.h:46
witness_amp_mailbox::producer
uint32_t producer
Definition
amp_contract.h:44
witness_amp_mailbox::run
witness_amp_run_contract run
Definition
amp_contract.h:48
witness_amp_platform_contract
Definition
amp_contract.h:23
witness_amp_platform_contract::priority
uint64_t priority
Definition
amp_contract.h:25
witness_amp_platform_contract::shared
uint64_t shared
Definition
amp_contract.h:25
witness_amp_platform_contract::interrupt
uint32_t interrupt
Definition
amp_contract.h:24
witness_amp_platform_contract::enable_word
uint64_t enable_word
Definition
amp_contract.h:25
witness_amp_platform_contract::hart
uint32_t hart
Definition
amp_contract.h:24
witness_amp_platform_contract::claim
uint64_t claim
Definition
amp_contract.h:25
witness_amp_platform_contract::threshold
uint64_t threshold
Definition
amp_contract.h:25
witness_amp_platform_contract::mmio
uint64_t mmio
Definition
amp_contract.h:25
witness_amp_run_contract
Definition
amp_contract.h:29
witness_amp_run_contract::overload_iterations
uint32_t overload_iterations
Definition
amp_contract.h:30
witness_amp_run_contract::lqr
uint32_t lqr
Definition
amp_contract.h:30
witness_amp_run_contract::period_ticks
uint32_t period_ticks
Definition
amp_contract.h:30
witness_amp_run_contract::coefficients
witness_coefficients coefficients
Definition
amp_contract.h:31
witness_amp_run_contract::cycles
uint32_t cycles
Definition
amp_contract.h:30
witness_amp_sample
Definition
amp_contract.h:35
witness_amp_sample::generation
uint64_t generation
Definition
amp_contract.h:36
witness_amp_sample::cycle
uint32_t cycle
Definition
amp_contract.h:37
witness_amp_sample::position
int32_t position
Definition
amp_contract.h:38
witness_amp_sample::ticks
uint64_t ticks
Definition
amp_contract.h:36
witness_amp_sample::integral_held
uint32_t integral_held
Definition
amp_contract.h:39
witness_amp_sample::clipped
uint32_t clipped
Definition
amp_contract.h:39
witness_amp_sample::command
int32_t command
Definition
amp_contract.h:38
witness_amp_sample::velocity
int32_t velocity
Definition
amp_contract.h:38
witness_amp_sample::overload_work
uint64_t overload_work
Definition
amp_contract.h:36
witness_amp_sample::reference
int32_t reference
Definition
amp_contract.h:38
witness_amp_sample::submitted
uint32_t submitted
Definition
amp_contract.h:39
witness_amp_sample::integral
int32_t integral
Definition
amp_contract.h:38
witness_amp_sample::derivative
int32_t derivative
Definition
amp_contract.h:38
witness_coefficients
Definition
witness_controller.h:20
witness_controller.h
runtime
bare_metal
amp_contract.h
Generated by
1.18.0