The field version of the solarnano grid on the ionQubes
Fork of SolarNanoGridv3 by
SolarNanoGrid.cpp@1:df924e0126d1, 2016-05-06 (annotated)
- Committer:
- defrost
- Date:
- Fri May 06 14:56:20 2016 +0000
- Revision:
- 1:df924e0126d1
- Parent:
- 0:dc8a45ec969a
- Child:
- 2:929cf7fc6998
- Started turning the battery into a class
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
defrost | 1:df924e0126d1 | 1 | #include "pinmap.h" |
defrost | 0:dc8a45ec969a | 2 | #include "battery.h" |
defrost | 0:dc8a45ec969a | 3 | #include "locker.h" |
defrost | 1:df924e0126d1 | 4 | #include "SolarNanoGrid.h" |
defrost | 1:df924e0126d1 | 5 | |
defrost | 1:df924e0126d1 | 6 | #define DEBUG |
defrost | 1:df924e0126d1 | 7 | #define INFOMESSAGES |
defrost | 1:df924e0126d1 | 8 | #define WARNMESSAGES |
defrost | 1:df924e0126d1 | 9 | #define ERRMESSAGES |
defrost | 1:df924e0126d1 | 10 | |
defrost | 1:df924e0126d1 | 11 | #ifdef DEBUG |
defrost | 1:df924e0126d1 | 12 | #define DBG(x, ...) printf("[SNG : DBG] "x"\r\n", ##__VA_ARGS__); |
defrost | 1:df924e0126d1 | 13 | #else |
defrost | 1:df924e0126d1 | 14 | #define DBG(x, ...) |
defrost | 1:df924e0126d1 | 15 | #endif |
defrost | 1:df924e0126d1 | 16 | |
defrost | 1:df924e0126d1 | 17 | #ifdef ERRMESSAGES |
defrost | 1:df924e0126d1 | 18 | #define ERR(x, ...) printf("[SNG : ERR] "x"\r\n", ##__VA_ARGS__); |
defrost | 1:df924e0126d1 | 19 | #else |
defrost | 1:df924e0126d1 | 20 | #define ERR(x, ...) |
defrost | 1:df924e0126d1 | 21 | #endif |
defrost | 1:df924e0126d1 | 22 | |
defrost | 1:df924e0126d1 | 23 | #ifdef WARNMESSAGES |
defrost | 1:df924e0126d1 | 24 | #define WARN(x, ...) printf("[SNG : WARN] "x"\r\n", ##__VA_ARGS__); |
defrost | 1:df924e0126d1 | 25 | #else |
defrost | 1:df924e0126d1 | 26 | #define WARN(x, ...) |
defrost | 1:df924e0126d1 | 27 | #endif |
defrost | 1:df924e0126d1 | 28 | |
defrost | 1:df924e0126d1 | 29 | #ifdef INFOMESSAGES |
defrost | 1:df924e0126d1 | 30 | #define INFO(x, ...) printf("[SNG : INFO] "x"\r\n", ##__VA_ARGS__); |
defrost | 1:df924e0126d1 | 31 | #else |
defrost | 1:df924e0126d1 | 32 | #define INFO(x, ...) |
defrost | 1:df924e0126d1 | 33 | #endif |
defrost | 1:df924e0126d1 | 34 | |
defrost | 1:df924e0126d1 | 35 | // Constructor: |
defrost | 1:df924e0126d1 | 36 | SolarNanoGrid::SolarNanoGrid(SDFileSystem* sd){ |
defrost | 1:df924e0126d1 | 37 | // Save the sd card pointer: |
defrost | 1:df924e0126d1 | 38 | _sd = sd; |
defrost | 1:df924e0126d1 | 39 | |
defrost | 1:df924e0126d1 | 40 | // initialize the SNG module: |
defrost | 1:df924e0126d1 | 41 | char * name = "/sd/config.ini"; |
defrost | 1:df924e0126d1 | 42 | FILE *fp; |
defrost | 1:df924e0126d1 | 43 | |
defrost | 1:df924e0126d1 | 44 | spiSD(); |
defrost | 1:df924e0126d1 | 45 | mkdir("/sd/binData",777); |
defrost | 1:df924e0126d1 | 46 | mkdir("/sd/data",777); |
defrost | 1:df924e0126d1 | 47 | mkdir("/sd/compress",777); |
defrost | 1:df924e0126d1 | 48 | |
defrost | 1:df924e0126d1 | 49 | //Configuration |
defrost | 1:df924e0126d1 | 50 | |
defrost | 1:df924e0126d1 | 51 | INFO("Reading config file..."); |
defrost | 1:df924e0126d1 | 52 | |
defrost | 1:df924e0126d1 | 53 | fp = fopen(name, "r"); |
defrost | 1:df924e0126d1 | 54 | if (fp == NULL) { |
defrost | 1:df924e0126d1 | 55 | ERR("Config file cannot be read"); |
defrost | 1:df924e0126d1 | 56 | return; |
defrost | 1:df924e0126d1 | 57 | } |
defrost | 1:df924e0126d1 | 58 | if (fscanf (fp,"%c %*c %*s",&role )!=1) WARN("Config: cannot read role"); |
defrost | 1:df924e0126d1 | 59 | if (fscanf (fp,"%d %*c %*s",&sdVersion )!=1) WARN("Config: cannot read version"); |
defrost | 1:df924e0126d1 | 60 | if (fscanf (fp,"%x %*c %*s",&id )!=1) WARN("Config: cannot read id"); |
defrost | 1:df924e0126d1 | 61 | id = 1; |
defrost | 1:df924e0126d1 | 62 | |
defrost | 1:df924e0126d1 | 63 | INFO(" Type:%c, Version %u, ID %d",role,sdVersion,id); |
defrost | 1:df924e0126d1 | 64 | |
defrost | 1:df924e0126d1 | 65 | |
defrost | 1:df924e0126d1 | 66 | switch (role) { |
defrost | 1:df924e0126d1 | 67 | case('B'): |
defrost | 1:df924e0126d1 | 68 | case('b'): |
defrost | 1:df924e0126d1 | 69 | SongBat = new battery(nrf1); |
defrost | 1:df924e0126d1 | 70 | SongBat.initialiseBattery(fp); |
defrost | 1:df924e0126d1 | 71 | break; |
defrost | 1:df924e0126d1 | 72 | case('L'): |
defrost | 1:df924e0126d1 | 73 | case('l'): |
defrost | 1:df924e0126d1 | 74 | initialiseLocker(fp); |
defrost | 1:df924e0126d1 | 75 | break; |
defrost | 1:df924e0126d1 | 76 | } |
defrost | 1:df924e0126d1 | 77 | |
defrost | 1:df924e0126d1 | 78 | return; |
defrost | 1:df924e0126d1 | 79 | } |
defrost | 1:df924e0126d1 | 80 | |
defrost | 1:df924e0126d1 | 81 | void SolarNanoGrid::loop(void) |
defrost | 1:df924e0126d1 | 82 | { |
defrost | 1:df924e0126d1 | 83 | switch (role) { |
defrost | 1:df924e0126d1 | 84 | case('B'): { // Battery |
defrost | 1:df924e0126d1 | 85 | loopBattery(); |
defrost | 1:df924e0126d1 | 86 | break; |
defrost | 1:df924e0126d1 | 87 | } |
defrost | 1:df924e0126d1 | 88 | case('M'): { // Master |
defrost | 1:df924e0126d1 | 89 | // loopMaster(); |
defrost | 1:df924e0126d1 | 90 | break; |
defrost | 1:df924e0126d1 | 91 | } |
defrost | 1:df924e0126d1 | 92 | case('L'): { // Locker |
defrost | 1:df924e0126d1 | 93 | loopLocker(); |
defrost | 1:df924e0126d1 | 94 | break; |
defrost | 1:df924e0126d1 | 95 | } |
defrost | 1:df924e0126d1 | 96 | } |
defrost | 1:df924e0126d1 | 97 | } |
defrost | 1:df924e0126d1 | 98 |