Simple counter class, non-volatile between resets and power on/off.

Simple Counter class, used to store count array in non-volatile flash memory between resets and power on/off.

Committer:
kpan
Date:
Fri Nov 16 14:52:41 2018 +0000
Revision:
4:bb12605080d5
Parent:
3:c15c22484205
Added decrement and clear functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kpan 2:f02ac448ecd3 1 #ifndef COUNTER_H
kpan 2:f02ac448ecd3 2 #define COUNTER_H
kpan 2:f02ac448ecd3 3
kpan 0:693f2f97c8c1 4 #include "mbed.h"
kpan 0:693f2f97c8c1 5 #include "FreescaleIAP.h"
kpan 0:693f2f97c8c1 6
kpan 2:f02ac448ecd3 7 #ifndef MAX_LEN
kpan 1:e8eeddee2959 8 #define MAX_LEN 8
kpan 2:f02ac448ecd3 9 #endif
kpan 2:f02ac448ecd3 10
kpan 2:f02ac448ecd3 11 /**
kpan 2:f02ac448ecd3 12 * Counter example
kpan 2:f02ac448ecd3 13 *
kpan 2:f02ac448ecd3 14 * @code
kpan 2:f02ac448ecd3 15 * #include "mbed.h"
kpan 2:f02ac448ecd3 16 * #include "Counter.h"
kpan 2:f02ac448ecd3 17 *
kpan 2:f02ac448ecd3 18 * int main(void) {
kpan 2:f02ac448ecd3 19 *
kpan 2:f02ac448ecd3 20 * Counter ct;
kpan 2:f02ac448ecd3 21 * while (true) {
kpan 2:f02ac448ecd3 22 * ct.increment(rand()%MAX_LEN);
kpan 2:f02ac448ecd3 23 * wait(0.5);
kpan 2:f02ac448ecd3 24 * }
kpan 2:f02ac448ecd3 25 * }
kpan 2:f02ac448ecd3 26 * @endcode
kpan 2:f02ac448ecd3 27 */
kpan 0:693f2f97c8c1 28
kpan 0:693f2f97c8c1 29 class Counter
kpan 0:693f2f97c8c1 30 {
kpan 0:693f2f97c8c1 31 private:
kpan 1:e8eeddee2959 32 int count[MAX_LEN];
kpan 2:f02ac448ecd3 33 int is_new_count;
kpan 0:693f2f97c8c1 34 int address;
kpan 1:e8eeddee2959 35 #ifdef COUNTER_DEBUG
kpan 1:e8eeddee2959 36 /** Simple print function
kpan 1:e8eeddee2959 37 *
kpan 1:e8eeddee2959 38 * Prints all memory addresses in count array with values for debugging purposes.
kpan 1:e8eeddee2959 39 *
kpan 1:e8eeddee2959 40 */
kpan 2:f02ac448ecd3 41 void print_memory(void);
kpan 1:e8eeddee2959 42 #endif
kpan 1:e8eeddee2959 43 /** Initialize count array
kpan 1:e8eeddee2959 44 *
kpan 1:e8eeddee2959 45 * Either initializes count array to zeroes or existing count
kpan 1:e8eeddee2959 46 * depending on whether it has been called before or not
kpan 1:e8eeddee2959 47 *
kpan 1:e8eeddee2959 48 */
kpan 2:f02ac448ecd3 49 void init(void);
kpan 3:c15c22484205 50 /** Decrement count
kpan 3:c15c22484205 51 *
kpan 3:c15c22484205 52 * Simply decrement value of index
kpan 3:c15c22484205 53 * Private to disallow access for this specific purpose;
kpan 3:c15c22484205 54 * @param index Index of count array to be decremented
kpan 3:c15c22484205 55 *
kpan 3:c15c22484205 56 */
kpan 3:c15c22484205 57 void decrement(int index);
kpan 1:e8eeddee2959 58
kpan 0:693f2f97c8c1 59 public:
kpan 1:e8eeddee2959 60
kpan 1:e8eeddee2959 61 /** Default Constructor
kpan 1:e8eeddee2959 62 *
kpan 1:e8eeddee2959 63 * Sets read/write memory addresss of Flash memory
kpan 1:e8eeddee2959 64 * Also calls init()
kpan 1:e8eeddee2959 65 *
kpan 1:e8eeddee2959 66 */
kpan 0:693f2f97c8c1 67 Counter();
kpan 1:e8eeddee2959 68
kpan 1:e8eeddee2959 69 /** Write to Memory
kpan 1:e8eeddee2959 70 *
kpan 1:e8eeddee2959 71 * Writes current count array to Flash Memory
kpan 1:e8eeddee2959 72 *
kpan 1:e8eeddee2959 73 */
kpan 2:f02ac448ecd3 74 void memwrite(void);
kpan 1:e8eeddee2959 75
kpan 1:e8eeddee2959 76 /** Read from memory
kpan 1:e8eeddee2959 77 *
kpan 1:e8eeddee2959 78 * Loads values of existiing count array from Flash Memory
kpan 1:e8eeddee2959 79 *
kpan 1:e8eeddee2959 80 */
kpan 2:f02ac448ecd3 81 void memread(void);
kpan 1:e8eeddee2959 82
kpan 1:e8eeddee2959 83 /** Increment count
kpan 1:e8eeddee2959 84 *
kpan 1:e8eeddee2959 85 * Simply increments value of index
kpan 1:e8eeddee2959 86 *
kpan 1:e8eeddee2959 87 * @param index Index of count array to be incremented
kpan 1:e8eeddee2959 88 *
kpan 1:e8eeddee2959 89 */
kpan 1:e8eeddee2959 90 void increment(int index);
kpan 3:c15c22484205 91 /** Clears Count
kpan 3:c15c22484205 92 *
kpan 3:c15c22484205 93 * RESETS count array
kpan 3:c15c22484205 94 *
kpan 3:c15c22484205 95 */
kpan 3:c15c22484205 96 void clear();
kpan 2:f02ac448ecd3 97 };
kpan 2:f02ac448ecd3 98
kpan 2:f02ac448ecd3 99 #endif