Project

Dependencies:   Hotboards_keypad TextLCD eeprom

Committer:
shivanandgowdakr
Date:
Mon Sep 16 14:05:54 2019 +0000
Revision:
1:1894419d5def
Parent:
0:194ff03a2e6a
Time Controlled Switch Display

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shivanandgowdakr 0:194ff03a2e6a 1
shivanandgowdakr 0:194ff03a2e6a 2 #include "mbed.h"
shivanandgowdakr 1:1894419d5def 3 #include <string>
shivanandgowdakr 0:194ff03a2e6a 4 #include "eeprom.h"
shivanandgowdakr 1:1894419d5def 5 #include "i2ceeprom.h"
shivanandgowdakr 0:194ff03a2e6a 6
shivanandgowdakr 1:1894419d5def 7 #define EEPROM_ADDR 0x0 // I2c EEPROM address is 0x00
shivanandgowdakr 0:194ff03a2e6a 8
shivanandgowdakr 1:1894419d5def 9 #define SDA D14 // I2C SDA pin
shivanandgowdakr 0:194ff03a2e6a 10 #define SCL D15 // I2C SCL pin
shivanandgowdakr 0:194ff03a2e6a 11
shivanandgowdakr 0:194ff03a2e6a 12 #define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
shivanandgowdakr 0:194ff03a2e6a 13 #define MAX(X,Y) ((X) > (Y) ? (X) : (Y))
shivanandgowdakr 0:194ff03a2e6a 14
shivanandgowdakr 1:1894419d5def 15 #define MB_ID 0x00
shivanandgowdakr 1:1894419d5def 16 #define NO_OF_DEV 0x01
shivanandgowdakr 1:1894419d5def 17 #define DEV_1_ID 0x02
shivanandgowdakr 1:1894419d5def 18 #define DEV_1_ST 0x03
shivanandgowdakr 1:1894419d5def 19 #define DEV_1_VAL 0x04
shivanandgowdakr 1:1894419d5def 20 #define DEV_2_ID 0x05
shivanandgowdakr 1:1894419d5def 21 #define DEV_2_ST 0x06
shivanandgowdakr 1:1894419d5def 22 #define DEV_2_VAL 0x07
shivanandgowdakr 1:1894419d5def 23 #define DEV_3_ID 0x08
shivanandgowdakr 1:1894419d5def 24 #define DEV_3_VAL 0x09
shivanandgowdakr 1:1894419d5def 25 #define DEV_4_ID 0x0A
shivanandgowdakr 1:1894419d5def 26 #define DEV_4_ST 0x0B
shivanandgowdakr 1:1894419d5def 27 #define DEV_4_VAL 0x0C
shivanandgowdakr 1:1894419d5def 28
shivanandgowdakr 1:1894419d5def 29 int mb_ID = 0x00;
shivanandgowdakr 1:1894419d5def 30 int NOno_of_dev = 0x00;
shivanandgowdakr 1:1894419d5def 31 int dev_1_id = 0x00;
shivanandgowdakr 1:1894419d5def 32 int dev_1_st = 0x00;
shivanandgowdakr 1:1894419d5def 33 int dev_1_val = 0x00;
shivanandgowdakr 1:1894419d5def 34 int dev_2_id = 0x00;
shivanandgowdakr 1:1894419d5def 35 int dev_2_st = 0x00;
shivanandgowdakr 1:1894419d5def 36 int dev_2_val = 0x00;
shivanandgowdakr 1:1894419d5def 37 int dev_3_id = 0x00;
shivanandgowdakr 1:1894419d5def 38 int dev_3_st = 0x00;
shivanandgowdakr 1:1894419d5def 39 int dev_3_val = 0x00;
shivanandgowdakr 1:1894419d5def 40 int dev_4_id = 0x00;
shivanandgowdakr 1:1894419d5def 41 int dev_5_st = 0x00;
shivanandgowdakr 1:1894419d5def 42 int dev_6_val = 0x00;
shivanandgowdakr 1:1894419d5def 43
shivanandgowdakr 0:194ff03a2e6a 44 extern float G_time;
shivanandgowdakr 0:194ff03a2e6a 45 extern float Y_time;
shivanandgowdakr 0:194ff03a2e6a 46 extern float R_time;
shivanandgowdakr 0:194ff03a2e6a 47
shivanandgowdakr 0:194ff03a2e6a 48
shivanandgowdakr 0:194ff03a2e6a 49 int32_t eeprom_size,max_size;
shivanandgowdakr 0:194ff03a2e6a 50 typedef struct _MyData {
shivanandgowdakr 0:194ff03a2e6a 51 int16_t sdata;
shivanandgowdakr 0:194ff03a2e6a 52 int32_t idata;
shivanandgowdakr 0:194ff03a2e6a 53 float fdata;
shivanandgowdakr 0:194ff03a2e6a 54 } MyData;
shivanandgowdakr 0:194ff03a2e6a 55
shivanandgowdakr 0:194ff03a2e6a 56 static void myerror(std::string msg)
shivanandgowdakr 0:194ff03a2e6a 57 {
shivanandgowdakr 0:194ff03a2e6a 58 printf("Error %s\n",msg.c_str());
shivanandgowdakr 0:194ff03a2e6a 59 exit(1);
shivanandgowdakr 0:194ff03a2e6a 60 }
shivanandgowdakr 0:194ff03a2e6a 61
shivanandgowdakr 0:194ff03a2e6a 62 void StoreCurrentMode(int32_t idata)
shivanandgowdakr 0:194ff03a2e6a 63 {
shivanandgowdakr 1:1894419d5def 64 EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10
shivanandgowdakr 0:194ff03a2e6a 65 eeprom_size = ep.getSize();
shivanandgowdakr 1:1894419d5def 66 max_size = MAX(eeprom_size,256);
shivanandgowdakr 1:1894419d5def 67 ep.write(10,(int32_t)idata); // long write at address eeprom_size - 12
shivanandgowdakr 0:194ff03a2e6a 68 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 69 myerror(ep.getErrorMessage());
shivanandgowdakr 1:1894419d5def 70 printf("\n");
shivanandgowdakr 1:1894419d5def 71 ep.read(10,(int32_t&)idata);
shivanandgowdakr 1:1894419d5def 72 // printf("TransDC Read %d\r\n",idata);
shivanandgowdakr 0:194ff03a2e6a 73 }
shivanandgowdakr 0:194ff03a2e6a 74
shivanandgowdakr 0:194ff03a2e6a 75
shivanandgowdakr 0:194ff03a2e6a 76
shivanandgowdakr 0:194ff03a2e6a 77 int32_t readCurrentMode()
shivanandgowdakr 0:194ff03a2e6a 78 {
shivanandgowdakr 0:194ff03a2e6a 79 int32_t idata;
shivanandgowdakr 1:1894419d5def 80 EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10
shivanandgowdakr 0:194ff03a2e6a 81 eeprom_size = ep.getSize();
shivanandgowdakr 1:1894419d5def 82 max_size = MAX(eeprom_size,256);
shivanandgowdakr 1:1894419d5def 83 printf(" Max Size =:%d\r\n",max_size);
shivanandgowdakr 1:1894419d5def 84 ep.read(10,(int32_t&)idata);
shivanandgowdakr 0:194ff03a2e6a 85
shivanandgowdakr 0:194ff03a2e6a 86 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 87 myerror(ep.getErrorMessage());
shivanandgowdakr 1:1894419d5def 88 //printf("\n");
shivanandgowdakr 1:1894419d5def 89 // printf("Trans Down Count Read %d\r\n",idata);
shivanandgowdakr 0:194ff03a2e6a 90 return idata;
shivanandgowdakr 0:194ff03a2e6a 91 }
shivanandgowdakr 0:194ff03a2e6a 92
shivanandgowdakr 0:194ff03a2e6a 93 bool WriteCorresspondingTimes(uint32_t currentMode, float gTime,float yTime,float rTime)
shivanandgowdakr 0:194ff03a2e6a 94 {
shivanandgowdakr 1:1894419d5def 95 EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10
shivanandgowdakr 0:194ff03a2e6a 96 eeprom_size = ep.getSize();
shivanandgowdakr 1:1894419d5def 97 max_size = MAX(eeprom_size-200,256);
shivanandgowdakr 0:194ff03a2e6a 98
shivanandgowdakr 1:1894419d5def 99 uint32_t addr = 100*currentMode;
shivanandgowdakr 0:194ff03a2e6a 100 ep.write(addr,(float)gTime); // float write at address eeprom_size - 8
shivanandgowdakr 0:194ff03a2e6a 101 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 102 myerror(ep.getErrorMessage());
shivanandgowdakr 0:194ff03a2e6a 103
shivanandgowdakr 0:194ff03a2e6a 104 // Test read short, long, float
shivanandgowdakr 0:194ff03a2e6a 105 printf("\nGreen Time : (%f) :\n",gTime);
shivanandgowdakr 0:194ff03a2e6a 106
shivanandgowdakr 0:194ff03a2e6a 107
shivanandgowdakr 1:1894419d5def 108 addr = 100*currentMode +4;
shivanandgowdakr 0:194ff03a2e6a 109 ep.write(addr,(float)yTime); // float write at address eeprom_size - 8
shivanandgowdakr 0:194ff03a2e6a 110 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 111 myerror(ep.getErrorMessage());
shivanandgowdakr 0:194ff03a2e6a 112
shivanandgowdakr 0:194ff03a2e6a 113 // Test read short, long, float
shivanandgowdakr 0:194ff03a2e6a 114 printf("\nYellow Time : (%f) :\n",yTime);
shivanandgowdakr 0:194ff03a2e6a 115
shivanandgowdakr 1:1894419d5def 116 addr = 100*currentMode +8;
shivanandgowdakr 0:194ff03a2e6a 117 ep.write(addr,(float)rTime); // float write at address eeprom_size - 8
shivanandgowdakr 0:194ff03a2e6a 118 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 119 myerror(ep.getErrorMessage());
shivanandgowdakr 0:194ff03a2e6a 120
shivanandgowdakr 0:194ff03a2e6a 121 // Test read short, long, float
shivanandgowdakr 0:194ff03a2e6a 122 printf("\nRed Time : (%f) :\n",rTime);
shivanandgowdakr 0:194ff03a2e6a 123
shivanandgowdakr 0:194ff03a2e6a 124
shivanandgowdakr 0:194ff03a2e6a 125 }
shivanandgowdakr 0:194ff03a2e6a 126
shivanandgowdakr 0:194ff03a2e6a 127
shivanandgowdakr 0:194ff03a2e6a 128 bool ReadCorresspondingTimes(uint32_t currentMode, float *gTime,float *yTime,float *rTime)
shivanandgowdakr 0:194ff03a2e6a 129 {
shivanandgowdakr 0:194ff03a2e6a 130 float fdata=0.0;
shivanandgowdakr 1:1894419d5def 131 EEPROM ep(SDA,SCL,EEPROM_ADDR,EEPROM::T24C32); // 24C64 eeprom with sda = p9 and scl = p10
shivanandgowdakr 0:194ff03a2e6a 132 eeprom_size = ep.getSize();
shivanandgowdakr 1:1894419d5def 133 printf("Size is : %d",eeprom_size);
shivanandgowdakr 1:1894419d5def 134 max_size = MAX(eeprom_size-200,256);
shivanandgowdakr 1:1894419d5def 135 printf(" Here 1\r\n");
shivanandgowdakr 1:1894419d5def 136 uint32_t addr=currentMode*100;
shivanandgowdakr 1:1894419d5def 137 ep.read(addr,fdata);
shivanandgowdakr 1:1894419d5def 138 *gTime=fdata;
shivanandgowdakr 1:1894419d5def 139
shivanandgowdakr 1:1894419d5def 140 fdata=0;
shivanandgowdakr 1:1894419d5def 141 addr = 100*currentMode +4;
shivanandgowdakr 1:1894419d5def 142 // ep.read((uint32_t)(max_size - ((currentMode*12)-4)),fdata);
shivanandgowdakr 1:1894419d5def 143 ep.read(addr,fdata);
shivanandgowdakr 1:1894419d5def 144 *yTime=fdata;
shivanandgowdakr 1:1894419d5def 145 fdata=0;
shivanandgowdakr 1:1894419d5def 146 addr = 100*currentMode +8;
shivanandgowdakr 1:1894419d5def 147 // ep.read((uint32_t)(max_size - ((currentMode*12)-8)),fdata);
shivanandgowdakr 1:1894419d5def 148 ep.read(addr,fdata);
shivanandgowdakr 1:1894419d5def 149 *rTime=fdata;
shivanandgowdakr 1:1894419d5def 150 printf("1 : %f\r\n",*gTime);
shivanandgowdakr 1:1894419d5def 151 printf("2 : %f\r\n",*yTime);
shivanandgowdakr 1:1894419d5def 152 printf("3 : %f\r\n",*rTime);
shivanandgowdakr 1:1894419d5def 153
shivanandgowdakr 0:194ff03a2e6a 154 if(ep.getError() != 0)
shivanandgowdakr 0:194ff03a2e6a 155 myerror(ep.getErrorMessage());
shivanandgowdakr 1:1894419d5def 156
shivanandgowdakr 0:194ff03a2e6a 157
shivanandgowdakr 0:194ff03a2e6a 158 }
shivanandgowdakr 0:194ff03a2e6a 159
shivanandgowdakr 0:194ff03a2e6a 160
shivanandgowdakr 0:194ff03a2e6a 161
shivanandgowdakr 0:194ff03a2e6a 162 void Last_Saved_Mode()
shivanandgowdakr 0:194ff03a2e6a 163 {
shivanandgowdakr 0:194ff03a2e6a 164 //float Gtime=0,Ytime=0, Rtime=0;
shivanandgowdakr 0:194ff03a2e6a 165 int32_t CurrentMode= readCurrentMode();
shivanandgowdakr 0:194ff03a2e6a 166 bool flag= ReadCorresspondingTimes( CurrentMode, &G_time,&Y_time, &R_time);
shivanandgowdakr 0:194ff03a2e6a 167 }