CDMS code for testing sbc

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of CDMS_CODE by shubham c

Committer:
chaithanyarss
Date:
Wed Jun 29 13:59:21 2016 +0000
Revision:
192:2c7263530c57
Parent:
105:5ce0337e7c15
Child:
206:fba4aeebf004
SD card finalized code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chaithanyarss 192:2c7263530c57 1 #include "cdms_rtc.h"
shreeshas95 103:b55559925dc1 2 #include "pinconfig.h"
chaithanyarss 192:2c7263530c57 3 #include "reset_functions.h"
chaithanyarss 192:2c7263530c57 4 #include "DefinitionsAndGlobals.h"
chaithanyarss 192:2c7263530c57 5 #include "COM_SND_TM_functions.h"
shreeshas95 103:b55559925dc1 6
shreeshas95 103:b55559925dc1 7 void FCTN_CDMS_HK_MAIN();
shreeshas95 103:b55559925dc1 8 void FCTN_CDMS_HK();
chaithanyarss 192:2c7263530c57 9 void VERIFY_COMRX();
chaithanyarss 192:2c7263530c57 10 void VERIFY_RTC();
chaithanyarss 192:2c7263530c57 11 void CDMS_HK_SD();
chaithanyarss 192:2c7263530c57 12 void CDMS_HW_FAULTS();
chaithanyarss 192:2c7263530c57 13 void HANDLE_HW_FAULT_SD();
chaithanyarss 192:2c7263530c57 14 void HANDLE_HW_FAULT_BAE();
chaithanyarss 192:2c7263530c57 15 void HANDLE_HW_FAULT_PL();
chaithanyarss 192:2c7263530c57 16 void COLLECT_CDMS_RAM();
shreeshas95 103:b55559925dc1 17
shreeshas95 103:b55559925dc1 18 Serial hk_cdms(USBTX, USBRX);
shreeshas95 103:b55559925dc1 19
chaithanyarss 192:2c7263530c57 20 AnalogIn TempInput(PIN27); // Input from Current Multiplexer
shreeshas95 103:b55559925dc1 21 AnalogIn CDMS_temp_sensor(PIN53);
chaithanyarss 192:2c7263530c57 22 AnalogIn COMRX_RSSI_volatge(PIN70);
chaithanyarss 192:2c7263530c57 23
chaithanyarss 192:2c7263530c57 24 DigitalIn SD_OC_FAULT (PIN90);
chaithanyarss 192:2c7263530c57 25 DigitalOut SD_SW_EN_DS (PIN97);
chaithanyarss 192:2c7263530c57 26 DigitalOut BAE_SW_EN_DS (PIN47);
chaithanyarss 192:2c7263530c57 27 DigitalOut PL_SW_EN_DS (PIN73);
chaithanyarss 192:2c7263530c57 28
chaithanyarss 192:2c7263530c57 29 //GPIO PINS
chaithanyarss 192:2c7263530c57 30 DigitalIn V_A_PGOOD (PIN88);
chaithanyarss 192:2c7263530c57 31 DigitalIn V_B_PGOOD_1 (PIN6);
chaithanyarss 192:2c7263530c57 32 DigitalIn V_B_PGOOD_2 (PIN7);
chaithanyarss 192:2c7263530c57 33 DigitalIn V_C_PGOOD (PIN54);
chaithanyarss 192:2c7263530c57 34 DigitalIn COMRX_OC_FAULT (PIN68);
chaithanyarss 192:2c7263530c57 35 DigitalIn COMTX_OC_FAULT (PIN69);
chaithanyarss 192:2c7263530c57 36 DigitalIn BAE_OC_FAULT (PIN92);
chaithanyarss 192:2c7263530c57 37 DigitalIn PL_GPIO_1_STATUS (PIN71);
chaithanyarss 192:2c7263530c57 38 DigitalIn PL_GPIO_2_STATUS (PIN81);
chaithanyarss 192:2c7263530c57 39 DigitalIn PL_GPIO_3_STATUS (PIN80);
chaithanyarss 192:2c7263530c57 40 DigitalIn PL_BEE_SW_OC_FAULT (PIN4);
chaithanyarss 192:2c7263530c57 41 DigitalIn PL_EPS_LATCH_SW_OC_FAULT ();
chaithanyarss 192:2c7263530c57 42 DigitalIn V_C_EN_STATUS ();
chaithanyarss 192:2c7263530c57 43 DigitalIn V_D_EN_STATUS ();
shreeshas95 103:b55559925dc1 44
shreeshas95 103:b55559925dc1 45 DigitalOut SelectLinec3 (PIN79); // MSB of Select Lines
shreeshas95 103:b55559925dc1 46 DigitalOut SelectLinec2 (PIN78);
shreeshas95 103:b55559925dc1 47 DigitalOut SelectLinec1 (PIN77);
shreeshas95 103:b55559925dc1 48 DigitalOut SelectLinec0 (PIN76); // LSB of Select Lines
shreeshas95 103:b55559925dc1 49
shreeshas95 104:a50ae79ca36e 50 void FCTN_CDMS_HK_MAIN(void const *args)
shreeshas95 103:b55559925dc1 51 {
chaithanyarss 192:2c7263530c57 52 CDMS_HK_MAIN_STATUS = 0x01;
chaithanyarss 192:2c7263530c57 53 CDMS_HK_MAIN_COUNTER++;
chaithanyarss 192:2c7263530c57 54
chaithanyarss 192:2c7263530c57 55 FCTN_CDMS_HK();
chaithanyarss 192:2c7263530c57 56 RSSI_volatge = COMRX_RSSI_volatge.read() * 3.3;
chaithanyarss 192:2c7263530c57 57 VERIFY_COMRX();
chaithanyarss 192:2c7263530c57 58 VERIFY_RTC();
chaithanyarss 192:2c7263530c57 59 HANDLE_HW_FAULTS();
chaithanyarss 192:2c7263530c57 60 FUNC_CDMS_GPIO_STATUS(); //yet to be done
chaithanyarss 192:2c7263530c57 61 COLLECT_CDMS_RAM();
chaithanyarss 192:2c7263530c57 62
chaithanyarss 192:2c7263530c57 63 uint8_t CDMS_quant[19];
chaithanyarss 192:2c7263530c57 64 for(int i=0;i<16;i++)
chaithanyarss 192:2c7263530c57 65 {
chaithanyarss 192:2c7263530c57 66 CDMS_quant[i]= (uint8_t)quant_data.temp_quant[i];
chaithanyarss 192:2c7263530c57 67 }
chaithanyarss 192:2c7263530c57 68 CDMS_quant[16]= (uint8_t)RSSI_volatge;
chaithanyarss 192:2c7263530c57 69 CDMS_quant[17]= (uint8_t)quant_data.CDMS_temp_quant;
chaithanyarss 192:2c7263530c57 70
chaithanyarss 192:2c7263530c57 71
chaithanyarss 192:2c7263530c57 72 char BAE_HK[74];
chaithanyarss 192:2c7263530c57 73 BAE_HK_I2C = FCTN_I2C_READ(BAE_HK,74);
chaithanyarss 192:2c7263530c57 74 if(BAE_HK_I2C == 0)
chaithanyarss 192:2c7263530c57 75 hk_cdms.printf("Bae hk data received");
chaithanyarss 192:2c7263530c57 76 else
chaithanyarss 192:2c7263530c57 77 {
chaithanyarss 192:2c7263530c57 78 hk_cdms.printf("Bae hk data NOT received");
chaithanyarss 192:2c7263530c57 79 for(int i = 0;i<74;i++)
chaithanyarss 192:2c7263530c57 80 BAE_HK = 0;
chaithanyarss 192:2c7263530c57 81 }
chaithanyarss 192:2c7263530c57 82
chaithanyarss 192:2c7263530c57 83 for(int i=0;i<512;i++)
chaithanyarss 192:2c7263530c57 84 {
chaithanyarss 192:2c7263530c57 85 CDMS_HEALTH_DATA[i]=0x00;
chaithanyarss 192:2c7263530c57 86 }
chaithanyarss 192:2c7263530c57 87
chaithanyarss 192:2c7263530c57 88 uint64_t time = FCTN_CDMS_RD_RTC();
chaithanyarss 192:2c7263530c57 89 time = time>>7;
chaithanyarss 192:2c7263530c57 90 uint32_t HK_time = (uint32_t)time;
chaithanyarss 192:2c7263530c57 91 for(int i = 0;i<4;i++)
chaithanyarss 192:2c7263530c57 92 CDMS_HEALTH_DATA[i] = HK_time[i];
chaithanyarss 192:2c7263530c57 93 // Here: Have to FIT flash data.
chaithanyarss 192:2c7263530c57 94 for(int i = 0;i<19;i++)
chaithanyarss 192:2c7263530c57 95 CDMS_HEALTH_DATA[i+24] = CDMS_quant[i];
chaithanyarss 192:2c7263530c57 96
chaithanyarss 192:2c7263530c57 97
chaithanyarss 192:2c7263530c57 98 for(int i=0;i<512;i++)
chaithanyarss 192:2c7263530c57 99 {
chaithanyarss 192:2c7263530c57 100 printf("%d",CDMS_HEALTH_DATA[i]);
chaithanyarss 192:2c7263530c57 101 }
chaithanyarss 192:2c7263530c57 102 CDMS_HK_FSC = FCTN_SD_MNGR(0x04);
chaithanyarss 192:2c7263530c57 103 BAE_HK_FSC = FCTN_SD_MNGR(0x05);
chaithanyarss 192:2c7263530c57 104 hk_cdms.printf("CDMS executed succesfully\r\n");
shreeshas95 103:b55559925dc1 105 }
shreeshas95 103:b55559925dc1 106
shreeshas95 103:b55559925dc1 107 int quantiz(float start,float step,float x)
shreeshas95 103:b55559925dc1 108 {
shreeshas95 103:b55559925dc1 109 int y=(x-start)/step;
shreeshas95 103:b55559925dc1 110 if(y<=0)y=0;
shreeshas95 103:b55559925dc1 111 if(y>=255)y=255;
shreeshas95 103:b55559925dc1 112 return y;
shreeshas95 103:b55559925dc1 113 }
shreeshas95 103:b55559925dc1 114
chaithanyarss 192:2c7263530c57 115 void saveMin(char x,char y)
chaithanyarss 192:2c7263530c57 116 {
chaithanyarss 192:2c7263530c57 117 return (y<x)?y:x;
shreeshas95 103:b55559925dc1 118 }
chaithanyarss 192:2c7263530c57 119
chaithanyarss 192:2c7263530c57 120 void saveMax(char x,char y)
chaithanyarss 192:2c7263530c57 121 {
chaithanyarss 192:2c7263530c57 122 return (y>x)?y:x;
shreeshas95 103:b55559925dc1 123 }
chaithanyarss 192:2c7263530c57 124
chaithanyarss 192:2c7263530c57 125 void minMaxHkData()
chaithanyarss 192:2c7263530c57 126 {
shreeshas95 103:b55559925dc1 127 if(firstCount==true){
shreeshas95 103:b55559925dc1 128 for (int i = 0; i < 16; ++i){
shreeshas95 103:b55559925dc1 129 min_max_data.temp_min[i] = quant_data.temp_quant[i];
shreeshas95 103:b55559925dc1 130 min_max_data.temp_max[i] = quant_data.temp_quant[i];
shreeshas95 103:b55559925dc1 131 }
shreeshas95 103:b55559925dc1 132
shreeshas95 103:b55559925dc1 133 min_max_data.CDMS_temp_min=quant_data.CDMS_temp_quant;
shreeshas95 103:b55559925dc1 134 min_max_data.CDMS_temp_max=quant_data.CDMS_temp_quant;
shreeshas95 103:b55559925dc1 135 }
shreeshas95 103:b55559925dc1 136 else {
shreeshas95 103:b55559925dc1 137 for (int i = 0; i < 16; ++i)
shreeshas95 103:b55559925dc1 138 {
chaithanyarss 192:2c7263530c57 139 min_max_data.temp_min[i] = saveMin(min_max_data.temp_min[i],quant_data.temp_quant[i]);
chaithanyarss 192:2c7263530c57 140 min_max_data.temp_max[i] = saveMax(min_max_data.temp_max[i],quant_data.temp_quant[i]);
shreeshas95 103:b55559925dc1 141 }
shreeshas95 103:b55559925dc1 142
chaithanyarss 192:2c7263530c57 143 min_max_data.CDMS_temp_min = saveMin(min_max_data.CDMS_temp_min,quant_data.CDMS_temp_quant);
chaithanyarss 192:2c7263530c57 144 min_max_data.CDMS_temp_max = saveMax(min_max_data.CDMS_temp_max,quant_data.CDMS_temp_quant);
shreeshas95 103:b55559925dc1 145 }
shreeshas95 103:b55559925dc1 146 firstCount=false;
shreeshas95 103:b55559925dc1 147 }
shreeshas95 103:b55559925dc1 148
shreeshas95 103:b55559925dc1 149 void FCTN_CDMS_HK()
shreeshas95 103:b55559925dc1 150 {
shreeshas95 103:b55559925dc1 151
shreeshas95 103:b55559925dc1 152 int Iteration=0;
shreeshas95 103:b55559925dc1 153
shreeshas95 103:b55559925dc1 154 SelectLinec0=0;
shreeshas95 103:b55559925dc1 155 SelectLinec1=0;
shreeshas95 103:b55559925dc1 156 SelectLinec2=0;
shreeshas95 103:b55559925dc1 157 SelectLinec3=0;
shreeshas95 103:b55559925dc1 158
shreeshas95 103:b55559925dc1 159 for(Iteration=0; Iteration<16; Iteration++){
shreeshas95 103:b55559925dc1 160
shreeshas95 103:b55559925dc1 161 actual_data.temp_actual[Iteration]=TempInput.read();
shreeshas95 103:b55559925dc1 162
shreeshas95 103:b55559925dc1 163 SelectLinec0=!(SelectLinec0);
shreeshas95 103:b55559925dc1 164 if(Iteration%2==1)
shreeshas95 103:b55559925dc1 165 SelectLinec1=!(SelectLinec1);
shreeshas95 103:b55559925dc1 166 if(Iteration%4==3)
shreeshas95 103:b55559925dc1 167 SelectLinec2=!(SelectLinec2);
chaithanyarss 192:2c7263530c57 168 if(Iteration%8==7) [0]
shreeshas95 103:b55559925dc1 169 SelectLinec3=!(SelectLinec3);
shreeshas95 103:b55559925dc1 170 }
shreeshas95 103:b55559925dc1 171
chaithanyarss 192:2c7263530c57 172 actual_data.CDMS_temp_actual=(-90.7*3.3*CDMS_temp_sensor.read())+190.1543;
shreeshas95 103:b55559925dc1 173
shreeshas95 103:b55559925dc1 174 for(Iteration=0;Iteration<16;Iteration++){
shreeshas95 103:b55559925dc1 175
shreeshas95 103:b55559925dc1 176 if(Iteration<14){
shreeshas95 103:b55559925dc1 177
shreeshas95 103:b55559925dc1 178 actual_data.temp_actual[Iteration]=actual_data.temp_actual[Iteration]*3.3;
shreeshas95 103:b55559925dc1 179 int resistance;
shreeshas95 103:b55559925dc1 180
shreeshas95 103:b55559925dc1 181 resistance=24000*actual_data.temp_actual[Iteration]/(3.3-actual_data.temp_actual[Iteration]);
shreeshas95 103:b55559925dc1 182 if(actual_data.temp_actual[Iteration]>1.47)
shreeshas95 103:b55559925dc1 183 {
shreeshas95 103:b55559925dc1 184 actual_data.temp_actual[Iteration]=3694/log(24.032242*resistance);
shreeshas95 103:b55559925dc1 185 }
shreeshas95 103:b55559925dc1 186 else{
shreeshas95 103:b55559925dc1 187
shreeshas95 103:b55559925dc1 188 actual_data.temp_actual[Iteration]=3365.4/log(7.60573*resistance);
shreeshas95 103:b55559925dc1 189 }
shreeshas95 103:b55559925dc1 190 }
shreeshas95 103:b55559925dc1 191 else
shreeshas95 103:b55559925dc1 192 actual_data.temp_actual[Iteration]=(-90.7*3.3*actual_data.temp_actual[Iteration])+190.1543;
shreeshas95 103:b55559925dc1 193 }
shreeshas95 103:b55559925dc1 194
shreeshas95 103:b55559925dc1 195 for(Iteration=0;Iteration<16;Iteration++){
shreeshas95 103:b55559925dc1 196
shreeshas95 103:b55559925dc1 197 if(Iteration<14){
shreeshas95 103:b55559925dc1 198
shreeshas95 103:b55559925dc1 199 quant_data.temp_quant[Iteration]=quantiz(tstart_thermistor,tstep_thermistor,actual_data.temp_actual[Iteration]);
shreeshas95 103:b55559925dc1 200 }
shreeshas95 103:b55559925dc1 201 else
shreeshas95 103:b55559925dc1 202 quant_data.temp_quant[Iteration]=quantiz(tstart,tstep,actual_data.temp_actual[Iteration]);
shreeshas95 103:b55559925dc1 203 }
shreeshas95 103:b55559925dc1 204
shreeshas95 103:b55559925dc1 205 quant_data.CDMS_temp_quant=quantiz(tstart,tstep,actual_data.CDMS_temp_actual);
shreeshas95 103:b55559925dc1 206
shreeshas95 103:b55559925dc1 207 minMaxHkData();
chaithanyarss 192:2c7263530c57 208 }
chaithanyarss 192:2c7263530c57 209
chaithanyarss 192:2c7263530c57 210 void FUNC_CDMS_GPIO_STATUS() //Polls the status of Input GPIO PINS
chaithanyarss 192:2c7263530c57 211 {
chaithanyarss 192:2c7263530c57 212 //V_A_PGOOD //TRZ EN
chaithanyarss 192:2c7263530c57 213 GPIO_STATUS=(V_A_PGOOD)?(GPIO_STATUS)||((uint16_t)(0x1<<15)):(GPIO_STATUS)&(~((uint16_t)(0x1<<15)));
chaithanyarss 192:2c7263530c57 214 //V_B_PGOOD_1 //3V3BPGOOD //$
chaithanyarss 192:2c7263530c57 215 GPIO_STATUS=(V_B_PGOOD_1)?(GPIO_STATUS)||((uint16_t)(0x1<<14)):(GPIO_STATUS)&(~((uint16_t)(0x1<<14)));
chaithanyarss 192:2c7263530c57 216 //V_B_PGOOD_2 //3V3BEN //$
chaithanyarss 192:2c7263530c57 217 GPIO_STATUS=(V_B_PGOOD_2)?(GPIO_STATUS)||((uint16_t)(0x1<<13)):(GPIO_STATUS)&(~((uint16_t)(0x1<<13)));
chaithanyarss 192:2c7263530c57 218 //V_C_PGOOD //3V3CPGOOD //$
chaithanyarss 192:2c7263530c57 219 GPIO_STATUS=(V_C_PGOOD)?(GPIO_STATUS)||((uint16_t)(0x1<<12)):(GPIO_STATUS)&(~((uint16_t)(0x1<<12)));
chaithanyarss 192:2c7263530c57 220 //COMRX_OC_FAULT //$
chaithanyarss 192:2c7263530c57 221 GPIO_STATUS=(COMRX_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<11)):(GPIO_STATUS)&(~((uint16_t)(0x1<<11)));
chaithanyarss 192:2c7263530c57 222 // COMTX_OC_FAULT //$
chaithanyarss 192:2c7263530c57 223 GPIO_STATUS=(COMTX_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<10)):(GPIO_STATUS)&(~((uint16_t)(0x1<<10)));
chaithanyarss 192:2c7263530c57 224 //BAE_OC_FAULT //$
chaithanyarss 192:2c7263530c57 225 GPIO_STATUS=(BAE_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<9)):(GPIO_STATUS)&(~((uint16_t)(0x1<<9)));
chaithanyarss 192:2c7263530c57 226 //PL_GPIO_1_STATUS //$
chaithanyarss 192:2c7263530c57 227 GPIO_STATUS=(PL_GPIO_1_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<8)):(GPIO_STATUS)&(~((uint16_t)(0x1<<8)));
chaithanyarss 192:2c7263530c57 228 //PL_GPIO_2_STATUS //$
chaithanyarss 192:2c7263530c57 229 GPIO_STATUS=(PL_GPIO_2_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<7)):(GPIO_STATUS)&(~((uint16_t)(0x1<<7)));
chaithanyarss 192:2c7263530c57 230 //PL_GPIO_3_STATUS //$
chaithanyarss 192:2c7263530c57 231 GPIO_STATUS=(PL_GPIO_3_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<6)):(GPIO_STATUS)&(~((uint16_t)(0x1<<6)));
chaithanyarss 192:2c7263530c57 232 //PL_BEE_SW_OC_FAULT //to be verified
chaithanyarss 192:2c7263530c57 233 GPIO_STATUS=(PL_BEE_SW_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<5)):(GPIO_STATUS)&(~((uint16_t)(0x1<<5)));
chaithanyarss 192:2c7263530c57 234 //PL_EPS_LATCH_SW_OC_FAULT // to be verified
chaithanyarss 192:2c7263530c57 235 GPIO_STATUS=(PL_EPS_LATCH_SW_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<4)):(GPIO_STATUS)&(~((uint16_t)(0x1<<4)));
chaithanyarss 192:2c7263530c57 236
chaithanyarss 192:2c7263530c57 237 }
chaithanyarss 192:2c7263530c57 238
chaithanyarss 192:2c7263530c57 239 void VERIFY_COMRX()
chaithanyarss 192:2c7263530c57 240 {
chaithanyarss 192:2c7263530c57 241 //COMRX_OC_FAULT //$
chaithanyarss 192:2c7263530c57 242 if(PIN68==0 && RSSI_volatge > 0.4)
chaithanyarss 192:2c7263530c57 243 COMRX_STATUS = COMRX_ALIVE;
chaithanyarss 192:2c7263530c57 244 else
chaithanyarss 192:2c7263530c57 245 {
chaithanyarss 192:2c7263530c57 246 RESET_COMRX();
chaithanyarss 192:2c7263530c57 247 COMRX_RESET_COUNTER++;
chaithanyarss 192:2c7263530c57 248 if(PIN68==0 && RSSI_volatge > 0.4)
chaithanyarss 192:2c7263530c57 249 COMRX_STATUS = COMRX_ALIVE;
chaithanyarss 192:2c7263530c57 250 else
chaithanyarss 192:2c7263530c57 251 COMRX_STATUS = COMRX_DEAD;
chaithanyarss 192:2c7263530c57 252 }
chaithanyarss 192:2c7263530c57 253 }
chaithanyarss 192:2c7263530c57 254
chaithanyarss 192:2c7263530c57 255 void VERIFY_RTC(){
chaithanyarss 192:2c7263530c57 256
chaithanyarss 192:2c7263530c57 257 if(RTC_STATUS = 0x00)
chaithanyarss 192:2c7263530c57 258 {
chaithanyarss 192:2c7263530c57 259 SPI_mutex.lock();
chaithanyarss 192:2c7263530c57 260 gCS_RTC=1;
chaithanyarss 192:2c7263530c57 261 gCS_RTC=0;
chaithanyarss 192:2c7263530c57 262 spi.write(0x0F);
chaithanyarss 192:2c7263530c57 263 if(spi.write(0x00) & 0x04 == 0x04)
chaithanyarss 192:2c7263530c57 264 {
chaithanyarss 192:2c7263530c57 265 RTC_STATUS = Not_started;
chaithanyarss 192:2c7263530c57 266 RESET_RTC();
chaithanyarss 192:2c7263530c57 267 RTC_FAULTCOUNT++;
chaithanyarss 192:2c7263530c57 268 }
chaithanyarss 192:2c7263530c57 269 gCS_RTC=1;
chaithanyarss 192:2c7263530c57 270 SPI_mutex.unlock();
chaithanyarss 192:2c7263530c57 271 }
chaithanyarss 192:2c7263530c57 272 }
chaithanyarss 192:2c7263530c57 273
chaithanyarss 192:2c7263530c57 274 void HANDLE_HW_FAULTS()
chaithanyarss 192:2c7263530c57 275 {
chaithanyarss 192:2c7263530c57 276 HANDLE_HW_FAULT_SD();
chaithanyarss 192:2c7263530c57 277 HANDLE_HW_FAULT_BAE();
chaithanyarss 192:2c7263530c57 278 HANDLE_HW_FAULT_PL()
chaithanyarss 192:2c7263530c57 279 }
chaithanyarss 192:2c7263530c57 280
chaithanyarss 192:2c7263530c57 281 void HANDLE_HW_FAULT_SD()
chaithanyarss 192:2c7263530c57 282 {
chaithanyarss 192:2c7263530c57 283 if(SD_STATUS != DEVICE_DISABLED)
chaithanyarss 192:2c7263530c57 284 {
chaithanyarss 192:2c7263530c57 285 if(SD_STATUS = DEVICE_OC_FAULT)
chaithanyarss 192:2c7263530c57 286 SD_SW_EN_DS = 0; //powering on SD
chaithanyarss 192:2c7263530c57 287
chaithanyarss 192:2c7263530c57 288 if(SD_OC_FAULT == 0)
chaithanyarss 192:2c7263530c57 289 {
chaithanyarss 192:2c7263530c57 290 SD_SW_EN_DS = 1; //switching off SD card
chaithanyarss 192:2c7263530c57 291
chaithanyarss 192:2c7263530c57 292 SD_FAULTCOUNT++;
chaithanyarss 192:2c7263530c57 293 SD_STATUS = (SD_FAULTCOUNT == 3)?DEVICE_DISABLED:DEVICE_OC_FAULT;
chaithanyarss 192:2c7263530c57 294 }
chaithanyarss 192:2c7263530c57 295 else
chaithanyarss 192:2c7263530c57 296 {
chaithanyarss 192:2c7263530c57 297 SD_STATUS = DEVICE_POWERED;
chaithanyarss 192:2c7263530c57 298 SD_FAULTCOUNT = 0;
chaithanyarss 192:2c7263530c57 299 }
chaithanyarss 192:2c7263530c57 300 }
chaithanyarss 192:2c7263530c57 301 }
chaithanyarss 192:2c7263530c57 302
chaithanyarss 192:2c7263530c57 303 void HANDLE_HW_FAULT_BAE()
chaithanyarss 192:2c7263530c57 304 {
chaithanyarss 192:2c7263530c57 305 if(BAE_STATUS != DEVICE_DISABLED)
chaithanyarss 192:2c7263530c57 306 {
chaithanyarss 192:2c7263530c57 307 if(BAE_STATUS = DEVICE_OC_FAULT)
chaithanyarss 192:2c7263530c57 308 BAE_SW_EN_DS = 1; //Power ON BAE
chaithanyarss 192:2c7263530c57 309
chaithanyarss 192:2c7263530c57 310 if(BAE_OC_FAULT == 0) // If OC Fault
chaithanyarss 192:2c7263530c57 311 {
chaithanyarss 192:2c7263530c57 312 BAE_SW_EN_DS = 0; //Switch OFF BAE
chaithanyarss 192:2c7263530c57 313 BAE_FAULTCOUNT++;
chaithanyarss 192:2c7263530c57 314 BAE_STATUS = (BAE_FAULTCOUNT == 3)?DEVICE_DISABLED:DEVICE_OC_FAULT;
chaithanyarss 192:2c7263530c57 315 }
chaithanyarss 192:2c7263530c57 316 else
chaithanyarss 192:2c7263530c57 317 {
chaithanyarss 192:2c7263530c57 318 BAE_STATUS = DEVICE_POWERED;
chaithanyarss 192:2c7263530c57 319 BAE_FAULTCOUNT = 0;
chaithanyarss 192:2c7263530c57 320 }
chaithanyarss 192:2c7263530c57 321 }
chaithanyarss 192:2c7263530c57 322 }
chaithanyarss 192:2c7263530c57 323
chaithanyarss 192:2c7263530c57 324 void HANDLE_HW_FAULT_PL()
chaithanyarss 192:2c7263530c57 325 {
chaithanyarss 192:2c7263530c57 326 if(PL_STATUS != DEVICE_DISABLED)
chaithanyarss 192:2c7263530c57 327 {
chaithanyarss 192:2c7263530c57 328 if(PL_STATUS = DEVICE_OC_FAULT)
chaithanyarss 192:2c7263530c57 329 PL_SW_EN_DS = 1; //Power ON PL
chaithanyarss 192:2c7263530c57 330
chaithanyarss 192:2c7263530c57 331 if(PL_BEE_SW_OC_FAULT == 1) // if OC Fault
chaithanyarss 192:2c7263530c57 332 {
chaithanyarss 192:2c7263530c57 333 PL_SW_EN_DS = 0; // switching OFF PL
chaithanyarss 192:2c7263530c57 334 PL_FAULTCOUNT++;
chaithanyarss 192:2c7263530c57 335 PL_STATUS = (PL_FAULTCOUNT == 3)?DEVICE_DISABLED:DEVICE_OC_FAULT;
chaithanyarss 192:2c7263530c57 336 }
chaithanyarss 192:2c7263530c57 337 else
chaithanyarss 192:2c7263530c57 338 {
chaithanyarss 192:2c7263530c57 339 if(PL_STATUS == DEVICE_OC_FAULT)
chaithanyarss 192:2c7263530c57 340 PL_SW_EN_DS = 0; //Switching OFF PL
chaithanyarss 192:2c7263530c57 341 PL_STATUS = DEVICE_ENABLED;
chaithanyarss 192:2c7263530c57 342 PL_FAULTCOUNT = 0;
chaithanyarss 192:2c7263530c57 343 }
chaithanyarss 192:2c7263530c57 344 }
chaithanyarss 192:2c7263530c57 345
chaithanyarss 192:2c7263530c57 346 void COLLECT_CDMS_RAM()
chaithanyarss 192:2c7263530c57 347 {
chaithanyarss 192:2c7263530c57 348 /*--------------------Current FSC's---------------------*/\
chaithanyarss 192:2c7263530c57 349 for(int i=0;i<4;i++)
chaithanyarss 192:2c7263530c57 350 CDMS_HEALTH_DATA[i+43] = CURRENT_FSC_HK_ARCH_BAE >> (i*8);
chaithanyarss 192:2c7263530c57 351 for(int i=0;i<4;i++)
chaithanyarss 192:2c7263530c57 352 CDMS_HEALTH_DATA[i+47] = CURRENT_FSC_HK_ARCH_CDMS >> (i*8);
chaithanyarss 192:2c7263530c57 353 for(int i=0;i<4;i++)
chaithanyarss 192:2c7263530c57 354 CDMS_HEALTH_DATA[i+51] = CURRENT_FSC_SFF_BT >> (i*8);
chaithanyarss 192:2c7263530c57 355 for(int i=0;i<4;i++)
chaithanyarss 192:2c7263530c57 356 CDMS_HEALTH_DATA[i+55] = CURRENT_FSC_SFF_AT >> (i*8);
chaithanyarss 192:2c7263530c57 357 for(int i=0;i<4;i++)
chaithanyarss 192:2c7263530c57 358 CDMS_HEALTH_DATA[i+59] = CURRENT_FSC_SCF >> (i*8);
chaithanyarss 192:2c7263530c57 359
chaithanyarss 192:2c7263530c57 360 /*---------------------Latest Time----------------------*/
chaithanyarss 192:2c7263530c57 361 for(int i=0;i<4;i++)
chaithanyarss 192:2c7263530c57 362 CDMS_HEALTH_DATA[i+63] = TIME_LATEST_SPI_SPEED >> (i*8);
chaithanyarss 192:2c7263530c57 363 for(int i=0;i<4;i++)
chaithanyarss 192:2c7263530c57 364 CDMS_HEALTH_DATA[i+67] = TIME_LATEST_SD_RD >> (i*8);
chaithanyarss 192:2c7263530c57 365 for(int i=0;i<4;i++)
chaithanyarss 192:2c7263530c57 366 CDMS_HEALTH_DATA[i+71] = TIME_LATEST_SD_WR >> (i*8);
chaithanyarss 192:2c7263530c57 367 for(int i=0;i<4;i++)
chaithanyarss 192:2c7263530c57 368 CDMS_HEALTH_DATA[i+75] = TIME_LATEST_I2C_SPEED >> (i*8);
chaithanyarss 192:2c7263530c57 369 for(int i=0;i<4;i++)
chaithanyarss 192:2c7263530c57 370 CDMS_HEALTH_DATA[i+79] = TIME_LATEST_I2C_BAE >> (i*8);
chaithanyarss 192:2c7263530c57 371 for(int i=0;i<4;i++)
chaithanyarss 192:2c7263530c57 372 CDMS_HEALTH_DATA[i+83] = TIME_LATEST_RTC >> (i*8);
chaithanyarss 192:2c7263530c57 373 for(int i=0;i<2;i++)
chaithanyarss 192:2c7263530c57 374 CDMS_HEALTH_DATA[i+87] = COMRX_RESET_COUNTER >> (i*8);
chaithanyarss 192:2c7263530c57 375 for(int i=0;i<2;i++)
chaithanyarss 192:2c7263530c57 376 CDMS_HEALTH_DATA[i+89] = PL_RCV_SC_DATA_COUNTER >> (i*8);
chaithanyarss 192:2c7263530c57 377 for(int i=0;i<2;i++)
chaithanyarss 192:2c7263530c57 378 CDMS_HEALTH_DATA[i+91] = PL_MAIN_COUNTER >> (i*8);
chaithanyarss 192:2c7263530c57 379 for(int i=0;i<2;i++)
chaithanyarss 192:2c7263530c57 380 CDMS_HEALTH_DATA[i+93] = CDMS_HK_MAIN_COUNTER >> (i*8);
chaithanyarss 192:2c7263530c57 381 for(int i=0;i<2;i++)
chaithanyarss 192:2c7263530c57 382 CDMS_HEALTH_DATA[i+95] = CDMS_I2C_ERR_BAE_COUNTER >> (i*8);
chaithanyarss 192:2c7263530c57 383 for(int i=0;i<2;i++)
chaithanyarss 192:2c7263530c57 384 CDMS_HEALTH_DATA[i+97] = CDMS_I2C_ERR_SPEED_COUNTER >> (i*8);
chaithanyarss 192:2c7263530c57 385 CDMS_HEALTH_DATA[100] = CDMS_HEALTH_DATA[100] | CDMS_STANDBY_PL << 7;
chaithanyarss 192:2c7263530c57 386 CDMS_HEALTH_DATA[100] = CDMS_HEALTH_DATA[100] | ((CDMS_INIT_STATUS << 6) & 0x40);
chaithanyarss 192:2c7263530c57 387 CDMS_HEALTH_DATA[100] = CDMS_HEALTH_DATA[100] | ((CDMS_HK_MAIN_STATUS << 5) & 0x20);
chaithanyarss 192:2c7263530c57 388 CDMS_HEALTH_DATA[100] = CDMS_HEALTH_DATA[100] | ((CDMS_HK_STATUS << 3) & 0x18);
chaithanyarss 192:2c7263530c57 389 CDMS_HEALTH_DATA[100] = CDMS_HEALTH_DATA[100] | ((COMRX_STATUS << 2) & 0x04);
chaithanyarss 192:2c7263530c57 390 CDMS_HEALTH_DATA[100] = CDMS_HEALTH_DATA[100] | ((CDMS_RTC_BL << 1) & 0x02);
chaithanyarss 192:2c7263530c57 391 CDMS_HEALTH_DATA[100] = CDMS_HEALTH_DATA[100] & 0xFE;
chaithanyarss 192:2c7263530c57 392
chaithanyarss 192:2c7263530c57 393 CDMS_HEALTH_DATA[101] = CDMS_HEALTH_DATA[101] | PL_RCV_SC_DATA_STATUS << 7;
chaithanyarss 192:2c7263530c57 394 CDMS_HEALTH_DATA[101] = CDMS_HEALTH_DATA[101] | ((COM_SESSION << 6) & 0x40);
chaithanyarss 192:2c7263530c57 395 CDMS_HEALTH_DATA[101] = CDMS_HEALTH_DATA[101] | ((COM_RX << 5) & 0x20);
chaithanyarss 192:2c7263530c57 396 CDMS_HEALTH_DATA[101] = CDMS_HEALTH_DATA[101] | ((RF_SW_STATUS << 4) & 0x10);
chaithanyarss 192:2c7263530c57 397 CDMS_HEALTH_DATA[101] = CDMS_HEALTH_DATA[101] | ((COM_TX << 3) & 0x08);
chaithanyarss 192:2c7263530c57 398 CDMS_HEALTH_DATA[101] = CDMS_HEALTH_DATA[101] | ((COM_TX_STATUS << 2) & 0x04);
chaithanyarss 192:2c7263530c57 399 CDMS_HEALTH_DATA[101] = CDMS_HEALTH_DATA[101] | ((COM_MNG_TMTC << 1) & 0x02);
chaithanyarss 192:2c7263530c57 400 CDMS_HEALTH_DATA[101] = CDMS_HEALTH_DATA[101] | (CDMS_STANDBY_HK & 0x01);
chaithanyarss 192:2c7263530c57 401
chaithanyarss 192:2c7263530c57 402 CDMS_HEALTH_DATA[102] = CDMS_HEALTH_DATA[102] | PL_INIT_STATUS << 7;
chaithanyarss 192:2c7263530c57 403 CDMS_HEALTH_DATA[102] = CDMS_HEALTH_DATA[102] | ((PL_MAIN_STATUS << 6) & 0x40);
chaithanyarss 192:2c7263530c57 404 CDMS_HEALTH_DATA[102] = CDMS_HEALTH_DATA[102] | ((PL_LOW_POWER << 5) & 0x20);
chaithanyarss 192:2c7263530c57 405 CDMS_HEALTH_DATA[102] = CDMS_HEALTH_DATA[102] | ((PL_STATE << 3) & 0x18);
chaithanyarss 192:2c7263530c57 406 CDMS_HEALTH_DATA[102] = CDMS_HEALTH_DATA[102] | (PL_STATUS & 0x07);
shreeshas95 103:b55559925dc1 407 }