30#ifndef PROTOCORE_PACKML_H
31#define PROTOCORE_PACKML_H
43enum class PackMlState : uint8_t
66enum class PackMlCommand : uint8_t
81enum class PackMlMode : uint8_t
99PackMlState pc_packml_command(PackMlState s, PackMlCommand c);
106PackMlState pc_packml_state_complete(PackMlState s);
109PackMlState pc_packml_execute_complete(PackMlState s);
112bool pc_packml_is_acting(PackMlState s);
115bool pc_packml_command_valid(PackMlState s, PackMlCommand c);
118const char *pc_packml_state_name(PackMlState s);
121const char *pc_packml_command_name(PackMlCommand c);
130 PackMlState state_current;
131 PackMlMode unit_mode_current;
132 float mach_speed_actual;
133 uint32_t state_current_ms;
134 uint32_t acc_time_since_reset_ms;
135 uint32_t prod_processed;
136 uint32_t prod_defective;
140void pc_packml_svc_init(PackMlMode mode);
146bool pc_packml_svc_command(PackMlCommand c);
153PackMlState pc_packml_svc_state_complete(
void);
160void pc_packml_svc_count(
bool defective);
163bool pc_packml_svc_complete_run(
void);
166bool pc_packml_svc_set_mode(PackMlMode mode);
169void pc_packml_svc_set_speed(
float mach_speed);
172PackMlState pc_packml_svc_state(
void);
175void pc_packml_svc_status(PackMlStatus *out);
User-facing configuration for ProtoCore.