serial_output.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "serial_output.h"
  2. #include "hardware_seam.h"
  3. #include "numeric_conversion.h"
  4. #include "program_memory.h"
  5. namespace meCoffee {
  6. void writeRamText(const char* ramText) {
  7. if (ramText == nullptr) {
  8. return;
  9. }
  10. while (*ramText != '\0') {
  11. hardware::writeSerialByte(static_cast<uint8_t>(*ramText));
  12. ++ramText;
  13. }
  14. }
  15. void writeProgramMemoryText(const char* programMemoryText) {
  16. if (programMemoryText == nullptr) {
  17. return;
  18. }
  19. for (;;) {
  20. const uint8_t character = hardware::readProgramMemoryByte(programMemoryText);
  21. if (character == 0) {
  22. return;
  23. }
  24. hardware::writeSerialByte(character);
  25. ++programMemoryText;
  26. }
  27. }
  28. void writeSpace() { hardware::writeSerialByte(' '); }
  29. void writeCarriageReturnLineFeed() {
  30. hardware::writeSerialByte('\r');
  31. hardware::writeSerialByte('\n');
  32. }
  33. void writeSignedDecimalText(int32_t numericValue) {
  34. char digits[12];
  35. const uint8_t length = formatSignedDecimal(numericValue, digits);
  36. for (uint8_t position = 0; position < length; ++position) {
  37. hardware::writeSerialByte(static_cast<uint8_t>(digits[position]));
  38. }
  39. }
  40. void writeUnsignedDecimalText(uint32_t numericValue) {
  41. char digits[12];
  42. const uint8_t length = formatUnsignedDecimal(numericValue, digits);
  43. for (uint8_t position = 0; position < length; ++position) {
  44. hardware::writeSerialByte(static_cast<uint8_t>(digits[position]));
  45. }
  46. }
  47. } // namespace meCoffee