VizBlocks
Behaviours.h
Go to the documentation of this file.
1 #ifndef BEHAVIOUR_h
2 #define BEHAVIOUR_h
3 
4 class Behaviour {
5 protected:
6  boolean _interruptable = true;
7  boolean _temp = false;
8  boolean _priority = false;
9  boolean _running = false;
10  boolean _background = false;
11  String _name = "name";
12 
13 public:
14  Behaviour(String name) : _name(name) {};
15  ~Behaviour() {};
16 
17  //Can this behaviour be interruped
18  virtual boolean is_interruptable() { return _interruptable; };
19  //Can this behaviour be run quickly without stopping what's going on (e.g. comms, debug)
20  virtual boolean is_temp() { return _temp; };
21  //Should this behaviour override others
22  virtual boolean is_priority() { return _priority; };
23  //Is the behaviour running
24  virtual boolean is_running() { return _running; };
25  //What's the name of this behaviour
26  virtual boolean is_background() { return _background; };
27  //What's the name of this behaviour
28  virtual String name() { return _name; };
29  //What arguments does the behaviour take? Override this to document your behaviour
30  virtual char* args() { return "null"; };
31  //Start the behaviour, with arguments (don't know why this can't be virtual?)
32  virtual String start(String args) { Serial.println("Base start called <"+args+">"); };
33  //Update the behaviour periodically
34  virtual void update() { };
35  //Start the behaviour, with arguments (don't know why this can't be virtual?)
36  virtual void stop() { _running = false; };
37 };
38 
39 /*
40  * Example way to make a simple behaviour
41  */
42 class TestBehaviour : public Behaviour {
43 public:
44  TestBehaviour(String n) : Behaviour(n) {}
45  String start(String args) {
46  return "Test behaviour " + _name + " with (" + args + ")";
47  }
48 };
49 
50 
52  Behaviour* behaviours[40];
53 
54 public:
55  int num = 0;
56 
58 
59  void add(Behaviour *b) {
60  behaviours[num] = b;
61  num++;
62  }
63 
64  Behaviour* get(String n) {
65  for( int i = 0; i < num; i++ ) {
66  if( behaviours[i]->name() == n) { return behaviours[i]; }
67  }
68  return nullptr;
69  }
70 
72  return behaviours[n];
73  }
74 
76  return num;
77  }
78 };
79 
80 #endif
BehaviourTable
Definition: Behaviours.h:51
Behaviour::_background
boolean _background
Definition: Behaviours.h:10
Behaviour::name
virtual String name()
Definition: Behaviours.h:28
Behaviour::args
virtual char * args()
Definition: Behaviours.h:30
Behaviour::update
virtual void update()
Definition: Behaviours.h:34
BehaviourTable::get_by_num
Behaviour * get_by_num(int n)
Definition: Behaviours.h:71
Behaviour::is_interruptable
virtual boolean is_interruptable()
Definition: Behaviours.h:18
BehaviourTable::BehaviourTable
BehaviourTable()
Definition: Behaviours.h:57
BehaviourTable::get
Behaviour * get(String n)
Definition: Behaviours.h:64
Behaviour::_name
String _name
Definition: Behaviours.h:11
Behaviour
Definition: Behaviours.h:4
Behaviour::_interruptable
boolean _interruptable
Definition: Behaviours.h:6
Behaviour::_temp
boolean _temp
Definition: Behaviours.h:7
BehaviourTable::num
int num
Definition: Behaviours.h:55
Behaviour::start
virtual String start(String args)
Definition: Behaviours.h:32
Behaviour::is_temp
virtual boolean is_temp()
Definition: Behaviours.h:20
TestBehaviour::TestBehaviour
TestBehaviour(String n)
Definition: Behaviours.h:44
Behaviour::stop
virtual void stop()
Definition: Behaviours.h:36
BehaviourTable::get_num_behaviours
int get_num_behaviours()
Definition: Behaviours.h:75
TestBehaviour::start
String start(String args)
Definition: Behaviours.h:45
TestBehaviour
Definition: Behaviours.h:42
Behaviour::Behaviour
Behaviour(String name)
Definition: Behaviours.h:14
Behaviour::_running
boolean _running
Definition: Behaviours.h:9
Behaviour::is_running
virtual boolean is_running()
Definition: Behaviours.h:24
BehaviourTable::add
void add(Behaviour *b)
Definition: Behaviours.h:59
Behaviour::is_priority
virtual boolean is_priority()
Definition: Behaviours.h:22
Behaviour::is_background
virtual boolean is_background()
Definition: Behaviours.h:26
Behaviour::_priority
boolean _priority
Definition: Behaviours.h:8
Behaviour::~Behaviour
~Behaviour()
Definition: Behaviours.h:15