This program consists of the software developed for the ELEC5870M Individual Project. It runs on the mbed LPC1768. It uses the mbed RTOS to perform the following tasks: - Implements intuitive GUI with buttons, LCD TFT Display and LEDs. - Serial Communication with the RPi - I2C communication with INA219 voltage current sensors - Power control at the USB ports
Dependencies: Adafruit_GFX Adafruit_ST7735 INA219 MODSERIAL MbedJSONValue mbed-rtos mbed
Settings/Settings.h
- Committer:
- OHstin
- Date:
- 2017-04-30
- Revision:
- 6:196a63a3378d
- Parent:
- 3:7666de697752
File content as of revision 6:196a63a3378d:
#ifndef SETTINGS_H #define SETTINGS_H class Settings { public: Settings(); void setBackgroundColor(int); uint16_t getBackgroundColor(); void setLCDBrightness(double); float getLCDBrightness(); private: void initialiseSettings(); // intialises the settings bool settingsExist(const char *fname); // checks whether the setting file exists static MbedJSONValue holder; // JSON Data structure to store settings read from file static uint16_t backgroundColor; // static float LCDBrightness; // tracks the LCDBrightness static bool settingsInitialised; // tracks if settings have already been created }; Settings::Settings() { // initialise the settings first // remember to set the varaible to false if (!settingsInitialised) { initialiseSettings(); settingsInitialised = true; } } void Settings::initialiseSettings() { // pointer to the settings file FILE *ptr_myfile; // buffer to store settings data char read_string [256]; // if the settings file does not exit, create it if (!settingsExist("/local/settings.txt")) { // create the settings file FILE *fp; // prepare file for writing fp = fopen("/local/settings.txt", "w"); // create temporary JSON object MbedJSONValue temp; // construct the settings data temp["LCDBrightness"] = 1; temp["LCDColor"] = 1; temp["Data"] = 1; // convert json object to string std::string s; s = temp.serialize(); // write settings to file fprintf(fp, "%s", s.c_str()); // close the file fclose(fp); } // prepare the settings file for reading ptr_myfile = fopen("/local/settings.txt", "r"); // read the settings string into buffer fgets(read_string,256,ptr_myfile); // convert string into JSON Data parse(holder,read_string); // initialise all the settings // LCD Background Color int color = holder["LCDColor"].get<int>(); if (color == 1) backgroundColor = ST7735_BLACK; else backgroundColor = ST7735_WHITE; // LCD Brightness // close the file fclose(ptr_myfile); } bool Settings::settingsExist( const char *fname) { FILE *file; if (file = fopen(fname, "r")) { fclose(file); return true; } return false; } void Settings::setBackgroundColor( int num ) { // change the background color apropriately if (num == 1) backgroundColor = ST7735_BLACK; else backgroundColor = ST7735_WHITE; // pointer to access file FILE *ptr_myfile; // prepare file for writing ptr_myfile = fopen("/local/settings.txt", "w"); // write the new LCD background value in JSON Object holder["LCDColor"] = num; // convert json data to string std::string s; s = holder.serialize(); // write it to the file fprintf(ptr_myfile, "%s", s.c_str()); fclose(ptr_myfile); } uint16_t Settings::getBackgroundColor() { // returns the background color if (settingsInitialised){ return backgroundColor; } // blue background is a sign of an error return ST7735_BLUE; } #endif