crdtosphere/configs/
mod.rs

1//! Configuration presets module
2//!
3//! This module provides pre-defined memory configurations for common platforms and use cases.
4
5use crate::memory::define_memory_config;
6
7// Automotive configurations
8define_memory_config! {
9    name: AutomotiveECUConfig,
10    total_memory: 128 * 1024,  // 128KB for automotive ECUs
11    max_registers: 500,
12    max_counters: 100,
13    max_sets: 50,
14    max_maps: 30,
15    max_nodes: 64,
16    max_set_elements: 32,
17    max_map_entries: 64,
18    max_history_size: 8,
19    clock_memory_budget: 1024,
20    error_buffer_size: 512,
21    memory_alignment: 4,
22    cache_line_size: 32,
23}
24
25define_memory_config! {
26    name: AutomotiveSensorConfig,
27    total_memory: 16 * 1024,  // 16KB for sensor nodes
28    max_registers: 50,
29    max_counters: 20,
30    max_sets: 10,
31    max_maps: 5,
32    max_nodes: 16,
33    max_set_elements: 16,
34    max_map_entries: 16,
35    max_history_size: 4,
36    clock_memory_budget: 256,
37    error_buffer_size: 128,
38    memory_alignment: 4,
39    cache_line_size: 32,
40}
41
42// STM32 configurations
43define_memory_config! {
44    name: STM32F4Config,
45    total_memory: 32 * 1024,  // 32KB for STM32F4
46    max_registers: 100,
47    max_counters: 50,
48    max_sets: 20,
49    max_maps: 15,
50    max_nodes: 32,
51    max_set_elements: 32,
52    max_map_entries: 32,
53    max_history_size: 4,
54    clock_memory_budget: 512,
55    error_buffer_size: 256,
56    memory_alignment: 4,
57    cache_line_size: 32,
58}
59
60define_memory_config! {
61    name: STM32F0Config,
62    total_memory: 8 * 1024,  // 8KB for STM32F0
63    max_registers: 25,
64    max_counters: 15,
65    max_sets: 8,
66    max_maps: 5,
67    max_nodes: 16,
68    max_set_elements: 16,
69    max_map_entries: 16,
70    max_history_size: 2,
71    clock_memory_budget: 256,
72    error_buffer_size: 128,
73    memory_alignment: 4,
74    cache_line_size: 32,
75}
76
77// IoT configurations
78define_memory_config! {
79    name: IoTSensorConfig,
80    total_memory: 4 * 1024,  // 4KB for IoT sensors
81    max_registers: 20,
82    max_counters: 10,
83    max_sets: 5,
84    max_maps: 3,
85    max_nodes: 16,
86    max_set_elements: 8,
87    max_map_entries: 8,
88    max_history_size: 2,
89    clock_memory_budget: 128,
90    error_buffer_size: 64,
91    memory_alignment: 4,
92    cache_line_size: 32,
93}
94
95define_memory_config! {
96    name: IoTGatewayConfig,
97    total_memory: 64 * 1024,  // 64KB for IoT gateways
98    max_registers: 200,
99    max_counters: 100,
100    max_sets: 50,
101    max_maps: 25,
102    max_nodes: 128,
103    max_set_elements: 64,
104    max_map_entries: 64,
105    max_history_size: 8,
106    clock_memory_budget: 1024,
107    error_buffer_size: 512,
108    memory_alignment: 4,
109    cache_line_size: 32,
110}
111
112// Robotics configurations
113define_memory_config! {
114    name: RoboticsControllerConfig,
115    total_memory: 256 * 1024,  // 256KB for robotics controllers
116    max_registers: 1000,
117    max_counters: 200,
118    max_sets: 100,
119    max_maps: 50,
120    max_nodes: 32,
121    max_set_elements: 64,
122    max_map_entries: 128,
123    max_history_size: 16,
124    clock_memory_budget: 2048,
125    error_buffer_size: 1024,
126    memory_alignment: 8,
127    cache_line_size: 64,
128}
129
130define_memory_config! {
131    name: RoboticsSensorConfig,
132    total_memory: 32 * 1024,  // 32KB for robotics sensors
133    max_registers: 100,
134    max_counters: 50,
135    max_sets: 25,
136    max_maps: 15,
137    max_nodes: 16,
138    max_set_elements: 32,
139    max_map_entries: 32,
140    max_history_size: 4,
141    clock_memory_budget: 512,
142    error_buffer_size: 256,
143    memory_alignment: 4,
144    cache_line_size: 32,
145}
146
147// Industrial configurations
148define_memory_config! {
149    name: IndustrialPLCConfig,
150    total_memory: 512 * 1024,  // 512KB for industrial PLCs
151    max_registers: 2000,
152    max_counters: 500,
153    max_sets: 200,
154    max_maps: 100,
155    max_nodes: 64,
156    max_set_elements: 64,
157    max_map_entries: 256,
158    max_history_size: 32,
159    clock_memory_budget: 4096,
160    error_buffer_size: 2048,
161    memory_alignment: 8,
162    cache_line_size: 64,
163}
164
165define_memory_config! {
166    name: IndustrialSensorConfig,
167    total_memory: 16 * 1024,  // 16KB for industrial sensors
168    max_registers: 50,
169    max_counters: 25,
170    max_sets: 15,
171    max_maps: 10,
172    max_nodes: 32,
173    max_set_elements: 16,
174    max_map_entries: 16,
175    max_history_size: 4,
176    clock_memory_budget: 256,
177    error_buffer_size: 128,
178    memory_alignment: 4,
179    cache_line_size: 32,
180}
181
182// Testing configurations
183define_memory_config! {
184    name: TestingMinimalConfig,
185    total_memory: 2 * 1024,  // 2KB minimal config for testing
186    max_registers: 10,
187    max_counters: 5,
188    max_sets: 3,
189    max_maps: 2,
190    max_nodes: 8,
191    max_set_elements: 8,
192    max_map_entries: 8,
193    max_history_size: 2,
194    clock_memory_budget: 64,
195    error_buffer_size: 32,
196    memory_alignment: 4,
197    cache_line_size: 32,
198}
199
200define_memory_config! {
201    name: TestingMaximalConfig,
202    total_memory: 1024 * 1024,  // 1MB maximal config for testing
203    max_registers: 10000,
204    max_counters: 5000,
205    max_sets: 1000,
206    max_maps: 500,
207    max_nodes: 255,
208    max_set_elements: 64,
209    max_map_entries: 512,
210    max_history_size: 64,
211    clock_memory_budget: 8192,
212    error_buffer_size: 4096,
213    memory_alignment: 8,
214    cache_line_size: 64,
215}