Baseline for testing

Dependents:   mbed_escm2000

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?

UserRevisionLine numberNew 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