ibutton_mode_dallas_emulate.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #pragma once
  2. #include "ibutton.h"
  3. #include "one_wire_slave_gpio.h"
  4. class AppiButtonModeDallasEmulate : public AppTemplateMode<AppiButtonState, AppiButtonEvent> {
  5. public:
  6. const char* name = "dallas emulate";
  7. AppiButton* app;
  8. OneWireGpioSlave* onewire_slave;
  9. void event(AppiButtonEvent* event, AppiButtonState* state);
  10. void render(CanvasApi* canvas, AppiButtonState* state);
  11. void acquire();
  12. void release();
  13. AppiButtonModeDallasEmulate(AppiButton* parent_app) {
  14. app = parent_app;
  15. // TODO open record
  16. GpioPin one_wire_pin = ibutton_gpio;
  17. GpioPin* one_wire_pin_record = &one_wire_pin;
  18. onewire_slave = new OneWireGpioSlave(one_wire_pin_record);
  19. };
  20. };
  21. void AppiButtonModeDallasEmulate::event(AppiButtonEvent* event, AppiButtonState* state) {
  22. if(event->type == AppiButtonEvent::EventTypeTick) {
  23. app->blink_red();
  24. /*if(onewire_slave->emulate(state->dallas_address, 8)) {
  25. app->blink_green();
  26. } else {
  27. }*/
  28. }
  29. }
  30. void AppiButtonModeDallasEmulate::render(CanvasApi* canvas, AppiButtonState* state) {
  31. canvas->set_font(canvas, FontSecondary);
  32. canvas->draw_str(canvas, 2, 25, "< dallas emulate");
  33. canvas->draw_str(canvas, 2, 37, "unimplemented");
  34. {
  35. char buf[24];
  36. sprintf(
  37. buf,
  38. "%x:%x:%x:%x:%x:%x:%x:%x",
  39. state->dallas_address[0],
  40. state->dallas_address[1],
  41. state->dallas_address[2],
  42. state->dallas_address[3],
  43. state->dallas_address[4],
  44. state->dallas_address[5],
  45. state->dallas_address[6],
  46. state->dallas_address[7]);
  47. canvas->draw_str(canvas, 2, 50, buf);
  48. }
  49. }
  50. void AppiButtonModeDallasEmulate::acquire() {
  51. onewire_slave->start();
  52. }
  53. void AppiButtonModeDallasEmulate::release() {
  54. onewire_slave->stop();
  55. }