Team Fox / Mbed 2 deprecated CDMS_QM_03MAR2017_Flash_with_obsrs

Dependencies:   mbed mbed-rtos SimpleDMA FreescaleIAP eeprom

Fork of CDMS_CODE_FM_28JAN2017 by samp Srinivasan

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers EEPROM.h Source File

EEPROM.h

00001 #ifndef EEPROM_H
00002 #define EEPROM_H
00003 
00004 //#include "pinconfig.h"
00005 //#include "eeprom.h"
00006 //#include "DefinitionsAndGlobals.h"
00007 #define ee_scl PIN86
00008 #define ee_sda PIN87
00009 #define check 10
00010 
00011 //EEPROM e2prom(ee_sda, ee_scl, 0, EEPROM::T24C512); // T24C1024 for 1Mbit EEPROM
00012 EEPROM e2prom(ee_sda, ee_scl, 0x0, EEPROM::T24C512);
00013 
00014 int32_t INITIAL_EEPROM[29] = {1,1,1,80000,1,0,0,0,0,1,1,20,85,20,30,3,24,1,0,0,0,0,0,0,0,0,0,0,0};
00015 //int32_t INITIAL_EEPROM[32] = {1,0,1,0,1,0,1,0,1,35001,0xff,300,85,20,20,3,0x80000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
00016 
00017 uint32_t flasharray_thres[32];
00018 uint32_t flasharray_thres_1[32];
00019 
00020 void I2C_EEPROM_busreset()
00021 {
00022     gPC.printf("\n\rChecking");
00023     PORTC->PCR[10] &= 0xfffffffb;    //Enabling high slew rates for SDA and SCL lines
00024     PORTC->PCR[11] &= 0xfffffffb;    //Enabling high slew rates for SDA and SCL lines
00025     I2C1->C1 &= 0x7f;               //Disabling I2C module
00026     SIM->SCGC4 &= 0xffffff7f;       //Disabling clock to I2C module
00027     SIM->SCGC4 |= 0x00000080;       //Enabling clock to I2C module
00028     I2C1->C1 |= 0x80;               //Enabling I2C module
00029     PORTC->PCR[10] |= 0x00000004;    //Disabling high slew rates for SDA and SCL lines
00030     PORTC->PCR[11] |= 0x00000004;    //Disabling high slew rates for SDA and SCL lines
00031     Thread::wait(1);                //Wait for all I2C registers to be updates to their their values
00032 }
00033 
00034 void mcpy(uint32_t *a2,int8_t *a1,int n){
00035     
00036     *a2=0;
00037     for (int i=0;i<n;i++){
00038         *(a2) += *(a1+i);
00039         if(i<n-1){
00040         *(a2)=(*(a2))<<8;
00041         //printf("%d\n",*(a2));
00042         }
00043     }
00044     
00045 }
00046 
00047 void rmcpy(uint8_t *a1,uint32_t *a2,int n){
00048     
00049     for (int i=0;i<n;i++){
00050         *(a1+i) = (*(a2))>>((n*8)-(8*(i+1)));
00051     }
00052     
00053 }
00054 
00055 void WRITE_TO_EEPROM(uint32_t address, int32_t data_block)
00056 {
00057     e2prom.write(address*4+10,data_block);
00058     wait_us(1);
00059 }
00060 
00061 void THRES_WRITE_TO_EEPROM(uint16_t mid, uint32_t* thres_data,int val)
00062 {
00063     int8_t data[128] = {0};
00064     //memcpy(data,thres_data,128);
00065     if(val == 1 )
00066         memcpy(data,thres_data,128);
00067     if(val == 2)
00068         memcpy(data,thres_data,48);
00069     if(val == 3)
00070         memcpy(data,thres_data,80);
00071     if(mid <11 & mid >1)
00072     {
00073         e2prom.write((uint32_t)(mid-1)*128,data,128);
00074     }    
00075 }
00076 
00077 void WRITE_PMS_TO_EEPROM(uint16_t pmid, uint32_t* thres_data)
00078 {
00079     int8_t data[128];
00080     memcpy(data,thres_data,128);
00081     
00082     if(pmid <7 & pmid >0)
00083     {
00084         e2prom.write((uint32_t)(1280 + (pmid-1)*128),data,128);
00085     }    
00086 }
00087 
00088 void UPDATE_PMS_ENTRY(uint32_t address, uint32_t data_block)
00089 {
00090     e2prom.write((1280 + (address*4)),data_block);
00091     wait_us(1);
00092 }
00093 
00094 uint32_t READ_FROM_EERPOM(uint32_t address)
00095 {
00096     int32_t data;
00097     e2prom.read(address*4+10, data);
00098     wait_ms(10);
00099     return (uint32_t)data;
00100 }
00101 
00102 void THRES_READ_FROM_EEPROM(uint16_t mid, uint32_t* data32,int val)
00103 {
00104     int8_t data[128];
00105     if(mid<11 & mid >1)
00106     {
00107     e2prom.read((uint32_t)(mid-1)*128,data,128);
00108     }
00109     if(val == 1 )
00110         memcpy(data32,data,128);
00111     if(val == 2)
00112         memcpy(data32,data,48);
00113     if(val == 3)
00114         memcpy(data32,data,80);
00115     /*for(int i=0;i<32;i++){
00116         mcpy(data32+i,data+4*i,4);
00117         }*/
00118     wait_ms(10);
00119 }    
00120 
00121 void READ_PMS_FROM_EEPROM(uint16_t pmid, uint32_t* data32)
00122 {
00123     int8_t data[128];
00124     if(pmid<7 & pmid > 0)
00125     {
00126     e2prom.read((uint32_t)(1280 + (pmid-1)*128),data,128);
00127     }
00128     memcpy(data32,data,128);
00129     /*for(int i=0;i<32;i++){
00130         mcpy(data32+i,data+4*i,4);
00131         }*/
00132     wait_ms(10);
00133 }    
00134     
00135 void INIT_EEPROM()
00136 {
00137      // To be commented starts
00138     int32_t test_buffer;
00139     test_buffer = READ_FROM_EERPOM(17);
00140     // test_buffer = 0;
00141    // e2prom.ready();
00142   //  e2prom.read(2,test_buffer);
00143 
00144     if(test_buffer != 1)
00145     {
00146         if(test_buffer == 0)
00147             {
00148                 for(int i=0;i<29;i++)
00149                     WRITE_TO_EEPROM( i, INITIAL_EEPROM[i]);
00150                 WRITE_TO_EEPROM(17,0x01);   
00151                 gPC.printf("Initializing EEPROM - Day 0\n\r");
00152             }
00153         if(test_buffer == 2)
00154             {
00155                 for(int i=0;i<29;i++)
00156                     WRITE_TO_EEPROM( i, INITIAL_EEPROM[i]);
00157                 WRITE_TO_EEPROM( 5, 1);
00158                 WRITE_TO_EEPROM(17,0x01); 
00159                 gPC.printf("Initializing EEPROM - Reset EEPROM Paramters only\n\r");
00160             }
00161     }
00162   
00163     // To be commented ends*/
00164     gPC.printf("Reading intial parametrs from EEPROM\n");
00165     
00166    EPS_V_A_EN_STATUS = READ_FROM_EERPOM(0);
00167    BAE_STATUS = READ_FROM_EERPOM(1); 
00168    SD_STATUS = READ_FROM_EERPOM(2);
00169     //PL_STATUS = read[3];
00170     SD_LIB_BLK_CURRENT = READ_FROM_EERPOM(3);
00171     PL_BEE_SW_STATUS = READ_FROM_EERPOM(4);
00172     //PL_EPS_LATCH_SW_EN = read[4];
00173     RTC_INIT_STATUS = READ_FROM_EERPOM(5);
00174     CDMS_RTC_DISABLE = READ_FROM_EERPOM(6);
00175     CDMS_RESET_COUNTER = READ_FROM_EERPOM(7);
00176     TIME_LATEST_CDSMS_RESET = READ_FROM_EERPOM(8);
00177     COM_TC_BYTES_LIMIT = READ_FROM_EERPOM(9);
00178     COM_RX_CURRENT_MAX = READ_FROM_EERPOM(10);
00179     COM_RX_DISABLE_TIMEOUT = READ_FROM_EERPOM(11);
00180     COM_PA_TMP_HIGH = 85;//read[12];
00181     COM_PA_RECOVERY_TIMEOUT = READ_FROM_EERPOM(13);
00182     COM_SESSION_TIMEOUT = READ_FROM_EERPOM(14);
00183     COM_RSSI_MIN = READ_FROM_EERPOM(15);
00184     PL_STATE = READ_FROM_EERPOM(16);
00185     
00186     THRES_READ_FROM_EEPROM(0x0002,flasharray_thres,1);
00187     for(uint8_t z=0;z<24;z++)
00188          scp_threshold_m0[z] = flasharray_thres[z] ;
00189     for(uint8_t z=24;z<32;z++)
00190          scp_threshold_m0[z+8] = flasharray_thres[z] ;
00191     
00192     THRES_READ_FROM_EEPROM(0x0003,scp_threshold_m0+(40),2);
00193     
00194     THRES_READ_FROM_EEPROM(0x0004,scp_threshold_m1,1);
00195     
00196     THRES_READ_FROM_EEPROM(0x0005,scp_threshold_m1+(32),3);
00197     
00198     THRES_READ_FROM_EEPROM(0x0006,flasharray_thres,2); 
00199     scp_threshold_m0_1[7] = flasharray_thres[0];
00200     scp_threshold_m0_1[5] = flasharray_thres[1] ;
00201     scp_threshold_m0_1[8] = flasharray_thres[2] ;
00202     scp_threshold_m0_1[6] = flasharray_thres[3] ;
00203     for(uint8_t z=0;z<5;z++)
00204         scp_threshold_m0_1[z] = flasharray_thres[z+4] ;
00205     scp_sfp_threshold_m0_2[0] = flasharray_thres[9]  ;
00206     scp_sfp_threshold_m0_2[1] = flasharray_thres[10] ;
00207     scp_sfp_threshold_m0_2[2] = flasharray_thres[11] ;
00208     
00209      THRES_READ_FROM_EEPROM(0x0007,flasharray_thres,1);
00210     for(uint8_t z=0;z<24;z++)
00211          sfp_threshold_m0[z] = flasharray_thres[z] ;
00212     for(uint8_t z=24;z<32;z++)
00213          sfp_threshold_m0[z+8] = flasharray_thres[z] ;
00214     
00215     THRES_READ_FROM_EEPROM(0x0008,sfp_threshold_m0+(40),2);
00216     
00217     THRES_READ_FROM_EEPROM(0x0009,sfp_threshold_m1,1);
00218     
00219     THRES_READ_FROM_EEPROM(0x000A,sfp_threshold_m1+(32),3);
00220     
00221     /*READ_PMS_FROM_EEPROM(0x0001, pl_block);
00222     
00223     READ_PMS_FROM_EEPROM(0x0002, pl_block + (32));
00224     
00225     READ_PMS_FROM_EEPROM(0x0003, pl_block + (64));              //Uncomment and test this after all other PMS functionality has been verified
00226     
00227     READ_PMS_FROM_EEPROM(0x0004, pl_block + (96));
00228     
00229     READ_PMS_FROM_EEPROM(0x0005, pl_block + (128));
00230     
00231     READ_PMS_FROM_EEPROM(0x0006, pl_block + (160));*/
00232     
00233     
00234     gPC.printf("0 = \r%d\n\r", READ_FROM_EERPOM(0));
00235     gPC.printf("1 = %d\n\r", READ_FROM_EERPOM(1));
00236     gPC.printf("2 = %d\n\r", READ_FROM_EERPOM(2));
00237     gPC.printf("3 = %d\n\r", READ_FROM_EERPOM(3));
00238     gPC.printf("4 = %d\n\r", READ_FROM_EERPOM(4));
00239     gPC.printf("5 = %d\n\r", READ_FROM_EERPOM(5));
00240     gPC.printf("6= %d\n\r", READ_FROM_EERPOM(6));
00241     gPC.printf("7= %d\n\r", READ_FROM_EERPOM(7));
00242     gPC.printf("8= %d\n\r", READ_FROM_EERPOM(8));
00243     gPC.printf("9= %d\n\r", READ_FROM_EERPOM(9));
00244     gPC.printf("10= %d\n\r", READ_FROM_EERPOM(10));
00245     gPC.printf("11= %d\n\r", READ_FROM_EERPOM(11));
00246     gPC.printf("12= %d\n\r", READ_FROM_EERPOM(12));
00247     gPC.printf("13= %d\n\r", READ_FROM_EERPOM(13));
00248     gPC.printf("14= %d\n\r", READ_FROM_EERPOM(14));
00249     gPC.printf("15= %d\n\r", READ_FROM_EERPOM(15));
00250     gPC.printf("16 = %u\n\r", READ_FROM_EERPOM(16));
00251     gPC.printf("test buffer 17 = %u\n\r", READ_FROM_EERPOM(17));
00252     
00253  
00254    // SD_LIB_BLK_CURRENT        = READ_FROM_EERPOM(16); 
00255     // added by samp
00256  
00257     
00258 }
00259 
00260 /*===================================================MMS Functions=================================================*/
00261 
00262 void FCTN_CDMS_WR_S_EEPROM(uint16_t mid,uint32_t datablock);
00263 
00264 void FCTN_CDMS_WR_S_EEPROM(uint16_t mid,uint32_t datablock)
00265 {
00266     if(mid == 0x0100)
00267     {
00268         WRITE_TO_EEPROM(11,(datablock>>16) & 0x000000FF);
00269         WRITE_TO_EEPROM(13,(datablock>>8) & 0x000000FF);
00270         WRITE_TO_EEPROM(14,datablock & 0x000000FF);
00271     }
00272     else if(mid == 0x0101)
00273     {
00274         WRITE_TO_EEPROM(12,(datablock>>16) & 0x000000FF);
00275         WRITE_TO_EEPROM(10,(datablock>>8) & 0x000000FF);
00276         WRITE_TO_EEPROM(15,datablock & 0x000000FF);
00277     }
00278     else if(mid == 0x0102)
00279     {
00280         WRITE_TO_EEPROM(9,datablock & 0x0000FFFF);
00281     }
00282     else if(mid == 0x0103)
00283     {
00284         WRITE_TO_EEPROM(6,datablock & 0x00000001);
00285     }
00286     else if(mid == 0x0104)
00287     {
00288         WRITE_TO_EEPROM(17,datablock & 0x00000001);
00289     } 
00290 }
00291 
00292 #endif