working version of song control with initialization from sd card

Dependencies:   MFRC522 NRF2401P SDFileSystem SPI_TFT_ILI9341 TFT_fonts mbed

Fork of Song_Control by Malcolm McCulloch

Committer:
epgmdm
Date:
Sun Jan 24 16:15:53 2016 +0000
Revision:
1:c2232b1eaf31
Parent:
0:c0f34d23943d
Child:
2:d1eae91343a9
Basic structure has Hub,Locker,Battery and Test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
epgmdm 0:c0f34d23943d 1 /**
epgmdm 0:c0f34d23943d 2 * This is a multi-purpose mbed. Duiring initialisation it reads the config file and then configures the mbed appropriately.
epgmdm 0:c0f34d23943d 3 * L Locker
epgmdm 0:c0f34d23943d 4 * H main Hub
epgmdm 0:c0f34d23943d 5 * B Battery
epgmdm 0:c0f34d23943d 6 */
epgmdm 0:c0f34d23943d 7 #include "mbed.h"
epgmdm 0:c0f34d23943d 8 #include "SDFileSystem.h"
epgmdm 0:c0f34d23943d 9 #include "utils.h"
epgmdm 1:c2232b1eaf31 10 #include "battery.h"
epgmdm 1:c2232b1eaf31 11 #include "hub.h"
epgmdm 0:c0f34d23943d 12 #include "locker.h"
epgmdm 1:c2232b1eaf31 13 #include "test.h"
epgmdm 0:c0f34d23943d 14 #define debug
epgmdm 0:c0f34d23943d 15
epgmdm 1:c2232b1eaf31 16 // Defines the role of mbed
epgmdm 1:c2232b1eaf31 17 char role;
epgmdm 0:c0f34d23943d 18 unsigned int version = 1453505344; // Linux epoch time
epgmdm 0:c0f34d23943d 19 unsigned int sdVersion;
epgmdm 0:c0f34d23943d 20 int id;
epgmdm 1:c2232b1eaf31 21 int channel;
epgmdm 0:c0f34d23943d 22
epgmdm 0:c0f34d23943d 23 // Sd card
epgmdm 0:c0f34d23943d 24 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
epgmdm 0:c0f34d23943d 25
epgmdm 0:c0f34d23943d 26
epgmdm 0:c0f34d23943d 27 /**
epgmdm 0:c0f34d23943d 28 * Reads config file and configures the mbed
epgmdm 0:c0f34d23943d 29 */
epgmdm 0:c0f34d23943d 30 void initialise()
epgmdm 0:c0f34d23943d 31 {
epgmdm 0:c0f34d23943d 32 char * name = "/sd/config.ini";
epgmdm 0:c0f34d23943d 33 FILE *fp;
epgmdm 0:c0f34d23943d 34
epgmdm 0:c0f34d23943d 35 // Initialise the SD card
epgmdm 0:c0f34d23943d 36 spiSD();
epgmdm 0:c0f34d23943d 37 sd.large_frames(false);
epgmdm 0:c0f34d23943d 38 sd.mount();
epgmdm 0:c0f34d23943d 39 wait(0.1);
epgmdm 0:c0f34d23943d 40 #ifdef debug
epgmdm 1:c2232b1eaf31 41 printf(" SD MOUNTED Card role: %d Capacity: %.1fMB\n\r", sd.card_type(),(sd.disk_sectors() * 512) / 1048576.0);
epgmdm 0:c0f34d23943d 42 #endif
epgmdm 0:c0f34d23943d 43
epgmdm 0:c0f34d23943d 44
epgmdm 0:c0f34d23943d 45 //Configuration
epgmdm 0:c0f34d23943d 46 #ifdef debug
epgmdm 0:c0f34d23943d 47 printf("Reading config file...\n\r");
epgmdm 0:c0f34d23943d 48 #endif
epgmdm 0:c0f34d23943d 49 fp = fopen(name, "r");
epgmdm 0:c0f34d23943d 50 if (fp == NULL) {
epgmdm 0:c0f34d23943d 51 writeError ("Config file cannot be read");
epgmdm 0:c0f34d23943d 52 }
epgmdm 1:c2232b1eaf31 53 if (fscanf (fp,"%c %*c %*s",&role )!=1) writeError("Config: cannot read role");
epgmdm 0:c0f34d23943d 54 if (fscanf (fp,"%d %*c %*s",&sdVersion )!=1) writeError("Config: cannot read version");
epgmdm 0:c0f34d23943d 55 if (fscanf (fp,"%d %*c %*s",&id )!=1) writeError("Config: cannot read id");
epgmdm 0:c0f34d23943d 56 #ifdef debug
epgmdm 1:c2232b1eaf31 57 printf(" Type:%c, Version %u, ID %d\n\r",role,sdVersion,id);
epgmdm 0:c0f34d23943d 58 #endif
epgmdm 1:c2232b1eaf31 59 switch (role){
epgmdm 0:c0f34d23943d 60 case('B'): { // Battery
epgmdm 1:c2232b1eaf31 61 initialiseBattery(fp);
epgmdm 0:c0f34d23943d 62 break;
epgmdm 0:c0f34d23943d 63 }
epgmdm 0:c0f34d23943d 64 case('H'): { // Hub
epgmdm 0:c0f34d23943d 65 //initialiseHub(fp);
epgmdm 0:c0f34d23943d 66 break;
epgmdm 0:c0f34d23943d 67 }
epgmdm 0:c0f34d23943d 68 case('L'): { // Locker
epgmdm 0:c0f34d23943d 69 initialiseLocker(fp);
epgmdm 0:c0f34d23943d 70 break;
epgmdm 0:c0f34d23943d 71 }
epgmdm 1:c2232b1eaf31 72 case('T'): { // Test
epgmdm 1:c2232b1eaf31 73 initialiseTest(fp);
epgmdm 1:c2232b1eaf31 74 break;
epgmdm 1:c2232b1eaf31 75 }
epgmdm 0:c0f34d23943d 76 default:{
epgmdm 0:c0f34d23943d 77 writeError ("Type declared in config not available.");
epgmdm 0:c0f34d23943d 78 }
epgmdm 0:c0f34d23943d 79
epgmdm 0:c0f34d23943d 80 }
epgmdm 0:c0f34d23943d 81 fclose (fp);
epgmdm 0:c0f34d23943d 82 }
epgmdm 0:c0f34d23943d 83
epgmdm 0:c0f34d23943d 84 /**
epgmdm 0:c0f34d23943d 85 * main loop. Set up timers and interupts then wait
epgmdm 0:c0f34d23943d 86 */
epgmdm 0:c0f34d23943d 87 int main()
epgmdm 0:c0f34d23943d 88 {
epgmdm 0:c0f34d23943d 89 struct tm * timeInf = localtime(&version);
epgmdm 0:c0f34d23943d 90 printf("\n\r SOLAR NANO GRID CONTROLLER. Version %04d-%02d-%02d %02d:%02d \n\r", timeInf->tm_year+1900,timeInf->tm_mon+1,timeInf->tm_mday,timeInf->tm_hour, timeInf->tm_sec);
epgmdm 0:c0f34d23943d 91 //
epgmdm 0:c0f34d23943d 92 // Read config and initialise
epgmdm 0:c0f34d23943d 93 //
epgmdm 0:c0f34d23943d 94 #ifdef debug
epgmdm 0:c0f34d23943d 95 printf("\n\rInitialise \n\r");
epgmdm 0:c0f34d23943d 96 #endif
epgmdm 0:c0f34d23943d 97 initialise();
epgmdm 0:c0f34d23943d 98 #ifdef debug
epgmdm 0:c0f34d23943d 99 printf("\n\r> START LOOP\n\r");
epgmdm 0:c0f34d23943d 100 #endif
epgmdm 0:c0f34d23943d 101 while (true) {
epgmdm 0:c0f34d23943d 102 // do slower routines
epgmdm 0:c0f34d23943d 103
epgmdm 0:c0f34d23943d 104 }
epgmdm 0:c0f34d23943d 105 }