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:
Mon Nov 12 19:08:35 2018 +0000
Revision:
2:f02ac448ecd3
Parent:
1:e8eeddee2959
Child:
3:c15c22484205
Changed some varnames

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 1:e8eeddee2959 50
kpan 0:693f2f97c8c1 51 public:
kpan 1:e8eeddee2959 52
kpan 1:e8eeddee2959 53 /** Default Constructor
kpan 1:e8eeddee2959 54 *
kpan 1:e8eeddee2959 55 * Sets read/write memory addresss of Flash memory
kpan 1:e8eeddee2959 56 * Also calls init()
kpan 1:e8eeddee2959 57 *
kpan 1:e8eeddee2959 58 */
kpan 0:693f2f97c8c1 59 Counter();
kpan 1:e8eeddee2959 60
kpan 1:e8eeddee2959 61 /** Write to Memory
kpan 1:e8eeddee2959 62 *
kpan 1:e8eeddee2959 63 * Writes current count array to Flash Memory
kpan 1:e8eeddee2959 64 *
kpan 1:e8eeddee2959 65 */
kpan 2:f02ac448ecd3 66 void memwrite(void);
kpan 1:e8eeddee2959 67
kpan 1:e8eeddee2959 68 /** Read from memory
kpan 1:e8eeddee2959 69 *
kpan 1:e8eeddee2959 70 * Loads values of existiing count array from Flash Memory
kpan 1:e8eeddee2959 71 *
kpan 1:e8eeddee2959 72 */
kpan 2:f02ac448ecd3 73 void memread(void);
kpan 1:e8eeddee2959 74
kpan 1:e8eeddee2959 75 /** Increment count
kpan 1:e8eeddee2959 76 *
kpan 1:e8eeddee2959 77 * Simply increments value of index
kpan 1:e8eeddee2959 78 *
kpan 1:e8eeddee2959 79 * @param index Index of count array to be incremented
kpan 1:e8eeddee2959 80 *
kpan 1:e8eeddee2959 81 */
kpan 1:e8eeddee2959 82 void increment(int index);
kpan 2:f02ac448ecd3 83 };
kpan 2:f02ac448ecd3 84
kpan 2:f02ac448ecd3 85 #endif