ibutton_mode_dallas_write.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #pragma once
  2. #include "ibutton.h"
  3. #include "blanks_writer.h"
  4. #include "maxim_crc.h"
  5. class AppiButtonModeDallasWrite : public AppTemplateMode<AppiButtonState, AppiButtonEvent> {
  6. public:
  7. const char* name = "dallas read";
  8. AppiButton* app;
  9. BlanksWriter* writer;
  10. void event(AppiButtonEvent* event, AppiButtonState* state);
  11. void render(Canvas* canvas, AppiButtonState* state);
  12. void acquire();
  13. void release();
  14. const GpioPin* one_wire_pin_record;
  15. AppiButtonModeDallasWrite(AppiButton* parent_app) {
  16. app = parent_app;
  17. // TODO open record
  18. one_wire_pin_record = &ibutton_gpio;
  19. writer = new BlanksWriter(one_wire_pin_record);
  20. };
  21. };
  22. void AppiButtonModeDallasWrite::event(AppiButtonEvent* event, AppiButtonState* state) {
  23. if(event->type == AppiButtonEvent::EventTypeTick) {
  24. WriterResult result =
  25. writer->write(KEY_DS1990, state->dallas_address[state->dallas_address_index], 8);
  26. if(result == WR_SAME_KEY) {
  27. app->blink_green();
  28. }
  29. if(result == WR_OK) {
  30. app->blink_red();
  31. }
  32. } else if(event->type == AppiButtonEvent::EventTypeKey) {
  33. if(event->value.input.type == InputTypeShort && event->value.input.key == InputKeyUp) {
  34. app->decrease_dallas_address();
  35. }
  36. if(event->value.input.type == InputTypeShort && event->value.input.key == InputKeyDown) {
  37. app->increase_dallas_address();
  38. }
  39. }
  40. }
  41. void AppiButtonModeDallasWrite::render(Canvas* canvas, AppiButtonState* state) {
  42. canvas_set_font(canvas, FontSecondary);
  43. canvas_draw_str(canvas, 2, 25, "< Dallas write >");
  44. app->render_dallas_list(canvas, state);
  45. }
  46. void AppiButtonModeDallasWrite::acquire() {
  47. writer->start();
  48. }
  49. void AppiButtonModeDallasWrite::release() {
  50. writer->stop();
  51. }