Baseline for testing
EventLog.h@1:aaddf80105fe, 2019-09-12 (annotated)
- Committer:
- foxbrianr
- Date:
- Thu Sep 12 11:28:11 2019 +0000
- Revision:
- 1:aaddf80105fe
- Parent:
- 0:929bb73983c5
- Child:
- 2:486d068deff9
beta1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
foxbrianr | 0:929bb73983c5 | 1 | #ifndef _EVENT_LOG_ |
foxbrianr | 0:929bb73983c5 | 2 | #define _EVENT_LOG_ |
foxbrianr | 0:929bb73983c5 | 3 | |
foxbrianr | 0:929bb73983c5 | 4 | /* fault log */ |
foxbrianr | 0:929bb73983c5 | 5 | #include "mbed.h" |
foxbrianr | 0:929bb73983c5 | 6 | |
foxbrianr | 0:929bb73983c5 | 7 | #define MAX_EVENT_LENGTH 40 |
foxbrianr | 0:929bb73983c5 | 8 | #define MAX_EVENTS 50 |
foxbrianr | 0:929bb73983c5 | 9 | |
foxbrianr | 0:929bb73983c5 | 10 | class ESCM_Event |
foxbrianr | 0:929bb73983c5 | 11 | { |
foxbrianr | 0:929bb73983c5 | 12 | public: |
foxbrianr | 0:929bb73983c5 | 13 | |
foxbrianr | 1:aaddf80105fe | 14 | uint16_t port; |
foxbrianr | 1:aaddf80105fe | 15 | uint16_t address; |
foxbrianr | 1:aaddf80105fe | 16 | uint16_t hours; |
foxbrianr | 1:aaddf80105fe | 17 | uint16_t mins; |
foxbrianr | 1:aaddf80105fe | 18 | uint16_t secs; |
foxbrianr | 1:aaddf80105fe | 19 | uint16_t month; |
foxbrianr | 1:aaddf80105fe | 20 | uint16_t day; |
foxbrianr | 1:aaddf80105fe | 21 | uint16_t year; |
foxbrianr | 1:aaddf80105fe | 22 | |
foxbrianr | 1:aaddf80105fe | 23 | |
foxbrianr | 1:aaddf80105fe | 24 | ESCM_Event(); |
foxbrianr | 1:aaddf80105fe | 25 | ESCM_Event(uint16_t address); |
foxbrianr | 1:aaddf80105fe | 26 | |
foxbrianr | 1:aaddf80105fe | 27 | |
foxbrianr | 1:aaddf80105fe | 28 | void getTime (char* buffer); |
foxbrianr | 1:aaddf80105fe | 29 | void setTimeNow(void); |
foxbrianr | 1:aaddf80105fe | 30 | |
foxbrianr | 0:929bb73983c5 | 31 | |
foxbrianr | 0:929bb73983c5 | 32 | }; |
foxbrianr | 0:929bb73983c5 | 33 | |
foxbrianr | 0:929bb73983c5 | 34 | class ESCM_EventLog |
foxbrianr | 0:929bb73983c5 | 35 | { |
foxbrianr | 0:929bb73983c5 | 36 | |
foxbrianr | 0:929bb73983c5 | 37 | public: |
foxbrianr | 0:929bb73983c5 | 38 | |
foxbrianr | 0:929bb73983c5 | 39 | |
foxbrianr | 0:929bb73983c5 | 40 | ESCM_EventLog(); |
foxbrianr | 0:929bb73983c5 | 41 | virtual ~ESCM_EventLog(); |
foxbrianr | 0:929bb73983c5 | 42 | |
foxbrianr | 0:929bb73983c5 | 43 | ESCM_Event events[MAX_EVENTS] ; |
foxbrianr | 0:929bb73983c5 | 44 | |
foxbrianr | 1:aaddf80105fe | 45 | int init(); |
foxbrianr | 1:aaddf80105fe | 46 | int load(); |
foxbrianr | 1:aaddf80105fe | 47 | int save(); |
foxbrianr | 1:aaddf80105fe | 48 | |
foxbrianr | 0:929bb73983c5 | 49 | void display(Serial *pc); |
foxbrianr | 1:aaddf80105fe | 50 | void add(uint16_t address); |
foxbrianr | 1:aaddf80105fe | 51 | void add(uint16_t address, uint16_t port); |
foxbrianr | 1:aaddf80105fe | 52 | void add(uint16_t address, char* timeStamp); |
foxbrianr | 0:929bb73983c5 | 53 | void clear(); |
foxbrianr | 1:aaddf80105fe | 54 | ESCM_Event * index (int pos ); |
foxbrianr | 0:929bb73983c5 | 55 | |
foxbrianr | 1:aaddf80105fe | 56 | |
foxbrianr | 1:aaddf80105fe | 57 | static const int max_size_ = 50; |
foxbrianr | 0:929bb73983c5 | 58 | |
foxbrianr | 0:929bb73983c5 | 59 | int head_ ; |
foxbrianr | 0:929bb73983c5 | 60 | int tail_ ; |
foxbrianr | 0:929bb73983c5 | 61 | bool full_ ; |
foxbrianr | 0:929bb73983c5 | 62 | |
foxbrianr | 0:929bb73983c5 | 63 | void put(ESCM_Event item){ |
foxbrianr | 0:929bb73983c5 | 64 | |
foxbrianr | 0:929bb73983c5 | 65 | events[head_] = item; |
foxbrianr | 0:929bb73983c5 | 66 | |
foxbrianr | 0:929bb73983c5 | 67 | head_ = (head_ + 1) % max_size_; |
foxbrianr | 0:929bb73983c5 | 68 | full_ = head_ == tail_; |
foxbrianr | 0:929bb73983c5 | 69 | |
foxbrianr | 0:929bb73983c5 | 70 | if(full_) |
foxbrianr | 0:929bb73983c5 | 71 | { |
foxbrianr | 0:929bb73983c5 | 72 | tail_ = (tail_ + 1) % max_size_; |
foxbrianr | 0:929bb73983c5 | 73 | } |
foxbrianr | 0:929bb73983c5 | 74 | |
foxbrianr | 0:929bb73983c5 | 75 | } |
foxbrianr | 0:929bb73983c5 | 76 | |
foxbrianr | 0:929bb73983c5 | 77 | ESCM_Event get() { |
foxbrianr | 0:929bb73983c5 | 78 | |
foxbrianr | 0:929bb73983c5 | 79 | if(empty()) |
foxbrianr | 0:929bb73983c5 | 80 | { |
foxbrianr | 0:929bb73983c5 | 81 | return ESCM_Event(); |
foxbrianr | 0:929bb73983c5 | 82 | } |
foxbrianr | 0:929bb73983c5 | 83 | |
foxbrianr | 0:929bb73983c5 | 84 | //Read data and advance the tail (we now have a free space) |
foxbrianr | 0:929bb73983c5 | 85 | ESCM_Event val = events[tail_]; |
foxbrianr | 0:929bb73983c5 | 86 | full_ = false; |
foxbrianr | 0:929bb73983c5 | 87 | tail_ = (tail_ + 1) % max_size_; |
foxbrianr | 0:929bb73983c5 | 88 | |
foxbrianr | 0:929bb73983c5 | 89 | |
foxbrianr | 0:929bb73983c5 | 90 | return val; |
foxbrianr | 0:929bb73983c5 | 91 | |
foxbrianr | 0:929bb73983c5 | 92 | } |
foxbrianr | 0:929bb73983c5 | 93 | |
foxbrianr | 0:929bb73983c5 | 94 | void reset() |
foxbrianr | 0:929bb73983c5 | 95 | { |
foxbrianr | 0:929bb73983c5 | 96 | head_ = tail_; |
foxbrianr | 0:929bb73983c5 | 97 | full_ = false; |
foxbrianr | 0:929bb73983c5 | 98 | } |
foxbrianr | 0:929bb73983c5 | 99 | |
foxbrianr | 0:929bb73983c5 | 100 | bool empty() const |
foxbrianr | 0:929bb73983c5 | 101 | { |
foxbrianr | 0:929bb73983c5 | 102 | |
foxbrianr | 0:929bb73983c5 | 103 | //if head and tail are equal, we are empty |
foxbrianr | 0:929bb73983c5 | 104 | return (!full_ && (head_ == tail_)); |
foxbrianr | 0:929bb73983c5 | 105 | } |
foxbrianr | 0:929bb73983c5 | 106 | |
foxbrianr | 0:929bb73983c5 | 107 | bool full() const |
foxbrianr | 0:929bb73983c5 | 108 | { |
foxbrianr | 0:929bb73983c5 | 109 | //If tail is ahead the head by 1, we are full |
foxbrianr | 0:929bb73983c5 | 110 | return full_; |
foxbrianr | 0:929bb73983c5 | 111 | } |
foxbrianr | 0:929bb73983c5 | 112 | |
foxbrianr | 0:929bb73983c5 | 113 | int capacity() const |
foxbrianr | 0:929bb73983c5 | 114 | { |
foxbrianr | 0:929bb73983c5 | 115 | return max_size_; |
foxbrianr | 0:929bb73983c5 | 116 | } |
foxbrianr | 0:929bb73983c5 | 117 | |
foxbrianr | 0:929bb73983c5 | 118 | int size() const |
foxbrianr | 0:929bb73983c5 | 119 | { |
foxbrianr | 0:929bb73983c5 | 120 | int size = max_size_; |
foxbrianr | 0:929bb73983c5 | 121 | if(!full_) |
foxbrianr | 0:929bb73983c5 | 122 | { |
foxbrianr | 0:929bb73983c5 | 123 | if(head_ >= tail_) |
foxbrianr | 0:929bb73983c5 | 124 | { |
foxbrianr | 0:929bb73983c5 | 125 | size = head_ - tail_; |
foxbrianr | 0:929bb73983c5 | 126 | } |
foxbrianr | 0:929bb73983c5 | 127 | else |
foxbrianr | 0:929bb73983c5 | 128 | { |
foxbrianr | 0:929bb73983c5 | 129 | size = max_size_ + head_ - tail_; |
foxbrianr | 0:929bb73983c5 | 130 | } |
foxbrianr | 0:929bb73983c5 | 131 | } |
foxbrianr | 0:929bb73983c5 | 132 | return size; |
foxbrianr | 0:929bb73983c5 | 133 | } |
foxbrianr | 0:929bb73983c5 | 134 | }; |
foxbrianr | 0:929bb73983c5 | 135 | #endif |