FM

Dependencies:   SimpleDMA eeprom mbed-rtos mbed FreescaleIAP

Fork of CDMS_CODE by shubham c

Committer:
samp1234
Date:
Sat Mar 11 04:46:31 2017 +0000
Revision:
354:0da912441c7b
with obsrs 10mins implementation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samp1234 354:0da912441c7b 1 #include "FreescaleIAP.h"
samp1234 354:0da912441c7b 2
samp1234 354:0da912441c7b 3 int strt_add_thres = flash_size() - (11*SECTOR_SIZE);
samp1234 354:0da912441c7b 4 uint32_t flasharray_thres[32] = {0};
samp1234 354:0da912441c7b 5
samp1234 354:0da912441c7b 6 void FCTN_CDMS_WR_FLASH(uint16_t , uint32_t);
samp1234 354:0da912441c7b 7 int strt_add = flash_size() - (2*SECTOR_SIZE);
samp1234 354:0da912441c7b 8 uint32_t flasharray[32]; //256+(3*1024)
samp1234 354:0da912441c7b 9 uint32_t INITIAL_FLASH[32];
samp1234 354:0da912441c7b 10
samp1234 354:0da912441c7b 11 /*corrected*/
samp1234 354:0da912441c7b 12 int *nativeflash = (int*)strt_add;
samp1234 354:0da912441c7b 13
samp1234 354:0da912441c7b 14 void FLASH_INI()
samp1234 354:0da912441c7b 15 {
samp1234 354:0da912441c7b 16 INITIAL_FLASH[16] = 80000;
samp1234 354:0da912441c7b 17 uint32_t read[32];
samp1234 354:0da912441c7b 18 for(int i=0;i<32;i++)
samp1234 354:0da912441c7b 19 {
samp1234 354:0da912441c7b 20 read[i] = nativeflash[i];
samp1234 354:0da912441c7b 21 }
samp1234 354:0da912441c7b 22
samp1234 354:0da912441c7b 23 if(read[0] == -1)
samp1234 354:0da912441c7b 24 {
samp1234 354:0da912441c7b 25 for(int j=0;j<32;j++)
samp1234 354:0da912441c7b 26 {
samp1234 354:0da912441c7b 27 FCTN_CDMS_WR_FLASH(j,INITIAL_FLASH[j]);
samp1234 354:0da912441c7b 28 }
samp1234 354:0da912441c7b 29 }
samp1234 354:0da912441c7b 30 else
samp1234 354:0da912441c7b 31 {
samp1234 354:0da912441c7b 32 for(int j=0;j<32;j++)
samp1234 354:0da912441c7b 33 {
samp1234 354:0da912441c7b 34 read[j] = nativeflash[j];
samp1234 354:0da912441c7b 35 }
samp1234 354:0da912441c7b 36 }
samp1234 354:0da912441c7b 37 EPS_V_A_EN_STATUS = read[0];
samp1234 354:0da912441c7b 38 BAE_STATUS = read[1];
samp1234 354:0da912441c7b 39 SD_STATUS = read[2];
samp1234 354:0da912441c7b 40 PL_STATUS = read[3];
samp1234 354:0da912441c7b 41 PL_EPS_LATCH_SW_EN = read[4];
samp1234 354:0da912441c7b 42 RTC_INIT_STATUS = read[5];
samp1234 354:0da912441c7b 43 CDMS_RTC_DISABLE = read[6];
samp1234 354:0da912441c7b 44 CDMS_RESET_COUNTER = read[7];
samp1234 354:0da912441c7b 45 TIME_LATEST_CDSMS_RESET = read[8];
samp1234 354:0da912441c7b 46 COM_TC_BYTES_LIMIT = read[9];
samp1234 354:0da912441c7b 47 COM_RX_CURRENT_MAX = read[10];
samp1234 354:0da912441c7b 48 COM_RX_DISABLE_TIMEOUT = read[11];
samp1234 354:0da912441c7b 49 COM_PA_TMP_HIGH = read[12];
samp1234 354:0da912441c7b 50 COM_PA_RECOVERY_TIMEOUT = read[13];
samp1234 354:0da912441c7b 51 COM_SESSION_TIMEOUT = read[14];
samp1234 354:0da912441c7b 52 COM_RSSI_MIN = read[15];
samp1234 354:0da912441c7b 53 SD_LIB_BLK_CURRENT = read[16];
samp1234 354:0da912441c7b 54 CDMS_RESET_COUNTER = read[17];
samp1234 354:0da912441c7b 55 }
samp1234 354:0da912441c7b 56
samp1234 354:0da912441c7b 57 /*Writing to the Flash*/
samp1234 354:0da912441c7b 58 void FCTN_CDMS_WR_FLASH(uint16_t j,uint32_t datablock) //j-position to write address ; fdata - flash data to be written
samp1234 354:0da912441c7b 59 {
samp1234 354:0da912441c7b 60 for(int i=0;i<17;i++)
samp1234 354:0da912441c7b 61 {
samp1234 354:0da912441c7b 62 flasharray[i]=nativeflash[i];
samp1234 354:0da912441c7b 63 }
samp1234 354:0da912441c7b 64 flasharray[j]=datablock;
samp1234 354:0da912441c7b 65 erase_sector(strt_add);
samp1234 354:0da912441c7b 66 program_flash(strt_add, (char*)flasharray,32);
samp1234 354:0da912441c7b 67 }
samp1234 354:0da912441c7b 68 /*End*/
samp1234 354:0da912441c7b 69
samp1234 354:0da912441c7b 70 /*===================================================MMS Functions=================================================*/
samp1234 354:0da912441c7b 71
samp1234 354:0da912441c7b 72 void FCTN_CDMS_WR_S_FLASH(uint16_t mid,uint32_t datablock);
samp1234 354:0da912441c7b 73
samp1234 354:0da912441c7b 74 void FCTN_CDMS_WR_S_FLASH(uint16_t mid,uint32_t datablock)
samp1234 354:0da912441c7b 75 {
samp1234 354:0da912441c7b 76 if(mid == 0x0100)
samp1234 354:0da912441c7b 77 {
samp1234 354:0da912441c7b 78 FCTN_CDMS_WR_FLASH(11,(datablock>>16) & 0x000000FF);
samp1234 354:0da912441c7b 79 FCTN_CDMS_WR_FLASH(13,(datablock>>8) & 0x000000FF);
samp1234 354:0da912441c7b 80 FCTN_CDMS_WR_FLASH(14,datablock & 0x000000FF);
samp1234 354:0da912441c7b 81 }
samp1234 354:0da912441c7b 82 else if(mid == 0x0101)
samp1234 354:0da912441c7b 83 {
samp1234 354:0da912441c7b 84 FCTN_CDMS_WR_FLASH(12,(datablock>>16) & 0x000000FF);
samp1234 354:0da912441c7b 85 FCTN_CDMS_WR_FLASH(10,(datablock>>8) & 0x000000FF);
samp1234 354:0da912441c7b 86 FCTN_CDMS_WR_FLASH(15,datablock & 0x000000FF);
samp1234 354:0da912441c7b 87 }
samp1234 354:0da912441c7b 88 else if(mid == 0x0102)
samp1234 354:0da912441c7b 89 {
samp1234 354:0da912441c7b 90 FCTN_CDMS_WR_FLASH(9,datablock & 0x0000FFFF);
samp1234 354:0da912441c7b 91 }
samp1234 354:0da912441c7b 92 else if(mid == 0x0103)
samp1234 354:0da912441c7b 93 {
samp1234 354:0da912441c7b 94 FCTN_CDMS_WR_FLASH(6,datablock & 0x00000001);
samp1234 354:0da912441c7b 95 }
samp1234 354:0da912441c7b 96 }
samp1234 354:0da912441c7b 97
samp1234 354:0da912441c7b 98 int verify_flash_sector(int mid,uint32_t* flasharray_thres)
samp1234 354:0da912441c7b 99 {
samp1234 354:0da912441c7b 100 int add = strt_add_thres + ((mid-1)*SECTOR_SIZE);
samp1234 354:0da912441c7b 101 int result = 0;
samp1234 354:0da912441c7b 102 int* testflash = (int*)add;
samp1234 354:0da912441c7b 103 for(int i=0;i<32;i++)
samp1234 354:0da912441c7b 104 {
samp1234 354:0da912441c7b 105 if(testflash[i] == flasharray_thres[i])
samp1234 354:0da912441c7b 106 continue;
samp1234 354:0da912441c7b 107 else
samp1234 354:0da912441c7b 108 {
samp1234 354:0da912441c7b 109 return 1;
samp1234 354:0da912441c7b 110 }
samp1234 354:0da912441c7b 111 }
samp1234 354:0da912441c7b 112 return 0;
samp1234 354:0da912441c7b 113 }