ErrorHandler.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "ErrorHandler.h"
  2. #include <Arduino.h>
  3. namespace TeensyStep
  4. {
  5. static Stream* stream;
  6. static void vHandler(int module, int code)
  7. {
  8. const char* mod;
  9. const char* txt;
  10. switch ((errModule)module)
  11. {
  12. case errModule::PIT: //----------------------------------------
  13. mod = "PIT";
  14. switch ((pitErr)code)
  15. {
  16. case pitErr::outOfTimers: txt = "No timer available"; break;
  17. case pitErr::argErr: txt = "BUG, argument error"; break;
  18. case pitErr::notAllocated:txt = "BUG, timer not allocated"; break;
  19. default: txt = "unknown"; break;
  20. }
  21. break;
  22. case errModule::MC: //------------------------------------------
  23. mod = "CTRL";
  24. switch ((mcErr)code)
  25. {
  26. case mcErr::alrdyMoving: txt = "Started while moving"; break;
  27. default: txt = "unknown"; break;
  28. }
  29. break;
  30. default: //------------------------------------------------------
  31. mod = "unknown";
  32. txt = "unknown";
  33. break;
  34. }
  35. stream->printf("ERR M%iC%i: %s (%s)\n", module, code, txt, mod);
  36. while (true)
  37. {
  38. digitalWriteFast(LED_BUILTIN, !digitalReadFast(LED_BUILTIN));
  39. delay(50);
  40. }
  41. }
  42. errCallback_t* verboseHandler(Stream& s)
  43. {
  44. stream = &s;
  45. return vHandler;
  46. }
  47. errCallback_t* ErrorHandler::callback = nullptr;
  48. }