Download this file
#ifndef PROTOCOL_H
#define PROTOCOL_H

#include 
#include 
#include "ui.h"
#include "heater_controller_master.h"
#include "speaker.h"
#include "Scheduler.h"

class Speaker;
class UI; // forward declaration, needed because UI and Protocol
          // refer to each other

class Protocol: public TimedTask {
  public:
    Protocol(Speaker* speaker);

    bool canRun(uint32_t now);
    void run(uint32_t now);

    void set_ui(UI* ui);
    void handle(uint8_t * buffer, uint8_t buffer_len);
    void status_request();
    void relay_close_request();
    void relay_open_request();
    void got_ack();
    void got_nack();

  protected:
    void process_status_reply(uint8_t * buffer, uint8_t buffer_len);

  private:
    Speaker* speaker;
    UI* ui;
    bool timer_armed;
};
#endif
// vim:ft=arduino