1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
* Copyright (c) 2024 - 2025 Automated Design Corp. All Rights Reserved.
* Created Date: Tu Feb 2024
* -----
* Last Modified: Sat Mar 15 2025
* -----
*/
//
// Copyright (C) 2024 Automated Design Corp. All Rights Reserved.
// Created Date: 2024-02-02 17:05:57
// -----
// Last Modified: 2025-02-18 13:58:58
// -----
//
//
/// One-to-many notifier. Some cool lifetime concepts, but tokio::channels are usually a better choice.
/// Timer on delay.
/// Register value used for flexible communication with a Codesys-based PLC,
/// although it should be compatible with any controller.
/// An object dictionary similar to CANopen or CoE, used as registers with CommandFsm implementations.
/// An actor for tick events and command routing.
/// CommandMessage and CommandMessageResult. Used for our message pipelines and IPC.
/// Variant data type.
/// Asynchronous, bi-directional comms channel.
/// Subscription mechanism, intended for async nodes to subscribe to messages.
/// Low-latency bus communication
/// Shared Memory mapping
/// Self-describing header + layout fingerprint for the cyclic GM shared-memory
/// segment. Shared by autocore-server (segment creator + codegen) and
/// autocore-std (control program) so a layout/ABI mismatch fails loud instead
/// of reading mismapped memory.
/// Human-facing package version (shown by acctl and in logs). Compiled into the
/// binary, so it reflects what the running process was actually built with —
/// unlike parsing a Cargo.toml off disk.
pub const VERSION: &str = env!;
/// ABI version of any type that lives inside the cyclic SHM segment (signal
/// `Event` primitives, packed reprs, register encodings, etc.). Bump this ONLY
/// when such a binary representation changes — NOT on every release. This, not
/// [`VERSION`], is the hard ABI gate between server and control program.
pub const SHM_ABI_VERSION: u32 = 1;
/// Corelink IPC Protocol
/// IPC module for CommandMessage-based communication between autocore-server
/// and external modules. Provides ModuleHandler trait (analogous to AsyncServelet),
/// TCP transport with length-prefix framing, and TopicRouter for message dispatch.
/// Size-limited rotating file writer for bounded log disk usage.
pub use RotatingFileWriter;
/// Per-run timestamped log files with bounded run-count retention
/// (`<base>.<YYYYMMDDThhmmss>.log`, keeping the newest N runs).
pub use ;
/// One-call service logger setup: per-run file + size cap + simplelog, wired
/// together so the disk-usage cap can't be left out.
pub use ;
/// Shared autocore filesystem locations (config dir resolution).
pub use resolve_config_dir;
/// Tool & editor registry: external packages contribute tools/editors via
/// manifests in `<config>/tools.d`, discovered by the server and the IDE.
/// See `doc/tool-registry.md`.
/// Runtime settings for registered tools (`<config>/tool-settings`), two-tier:
/// a reserved launch block the server reads plus free-form tool-private state.