#if !defined(MECOFFEE_RUST_TELEMETRY) #include "telemetry_reports.h" #include "hardware_seam.h" #include "program_memory.h" #include "serial_output.h" namespace meCoffee { uint16_t activeSetpointRaw(const FirmwareState& state) { return static_cast(state.alternateModeSelection == 0 ? state.settings.brewSetpoint : state.settings.steamSetpoint); } void writeBootTemperatureFrame(const FirmwareState& state) { writeCarriageReturnLineFeed(); writeProgramMemoryText(MECOFFEE_PROGRAM_TEXT("tmp 0 ")); writeUnsignedDecimalText(activeSetpointRaw(state)); writeSpace(); writeSignedDecimalText(state.sensor.startupAggregate); writeProgramMemoryText(MECOFFEE_PROGRAM_TEXT(" 0 OK")); writeCarriageReturnLineFeed(); } void reportTemperatureFrame(FirmwareState& state) { writeProgramMemoryText(MECOFFEE_PROGRAM_TEXT("tmp ")); writeUnsignedDecimalText(state.sensor.aggregateGeneration); writeSpace(); writeUnsignedDecimalText(activeSetpointRaw(state)); writeSpace(); writeSignedDecimalText(state.sensor.firstChannelAggregate); writeSpace(); writeSignedDecimalText(state.sensor.secondChannelAggregate); writeProgramMemoryText(MECOFFEE_PROGRAM_TEXT(" - ")); writeUnsignedDecimalText(state.mainsPhase.filteredTicksPerHalfCycle); writeSpace(); writeUnsignedDecimalText(state.qualifiedEventCountLastGeneration); writeSpace(); writeUnsignedDecimalText(hardware::readOscillatorCalibrationRegister()); writeSpace(); writeUnsignedDecimalText(state.oscillatorBaselineByte); writeProgramMemoryText(MECOFFEE_PROGRAM_TEXT(" OK")); writeCarriageReturnLineFeed(); } void reportHeaterTermsFrame(FirmwareState& state) { writeProgramMemoryText(MECOFFEE_PROGRAM_TEXT("pid ")); writeSignedDecimalText(state.heater.proportionalTerm); writeSpace(); writeSignedDecimalText(state.heater.integralTerm); writeSpace(); writeSignedDecimalText(state.heater.derivativeTerm); writeSpace(); writeSignedDecimalText(state.heater.feedForwardTerm); writeProgramMemoryText(MECOFFEE_PROGRAM_TEXT(" OK")); writeCarriageReturnLineFeed(); } } // namespace meCoffee #endif