pl ack in tmtc

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of COM_MNG_TMTC_SIMPLE_pl123 by shubham c

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers CDMS_HK.h Source File

CDMS_HK.h

00001 //#include "cdms_rtc.h"
00002 #include "pinconfig.h"
00003 
00004 void FCTN_CDMS_HK_MAIN();
00005 void FCTN_CDMS_HK();
00006 //extern uint8_t CDMS_HK_STATUS;
00007 //extern uint8_t Power_level;
00008 //extern uint8_t Att_level;
00009 //extern char CDMS_HK[8];
00010 
00011 Serial hk_cdms(USBTX, USBRX);
00012 
00013 AnalogIn TempInput(PIN27); // Input from Current Multiplexer
00014 AnalogIn CDMS_temp_sensor(PIN53);
00015 
00016 DigitalOut SelectLinec3 (PIN79); // MSB of Select Lines
00017 DigitalOut SelectLinec2 (PIN78);
00018 DigitalOut SelectLinec1 (PIN77);
00019 DigitalOut SelectLinec0 (PIN76); // LSB of Select Lines
00020 
00021 void FCTN_CDMS_HK_MAIN(void const *args)
00022 {
00023 //    CDMS_HK_STATUS=(CDMS_HK_STATUS)|(HK_MAIN_STATUS);
00024     FCTN_CDMS_HK;
00025     hk_cdms.printf(" \r\nCDMS HK entered Verify COM RX RSSI >0.4 \r\n");
00026    
00027     int HK_I2C;
00028     char BAE_HK[74];
00029     FCTN_I2C_READ(BAE_HK,74);
00030     printf("BAE_HK=%s",BAE_HK);
00031     /*if(HK_I2C==0)
00032     {
00033         if(Power_level!=0)
00034         {
00035             printf("Update Power_level to 0 in Flash");
00036         }
00037         Att_level=0;
00038         CDMS_HK_STATUS=(CDMS_HK_STATUS)|(HK_BAE_ERR_I2C);
00039         CDMS_HK_STATUS=(CDMS_HK_STATUS)&(~(HK_MAIN_STATUS));
00040     }**/
00041         uint8_t CDMS_quant[17];
00042         // printf("BAE HK is %s",BAE_HK);
00043         for(int i=0;i<16;i++)
00044         {
00045            CDMS_quant[i]= (uint8_t)quant_data.temp_quant[i];
00046         }
00047         CDMS_quant[16]= (uint8_t)quant_data.CDMS_temp_quant;
00048         uint64_t time=0x00;//replace with rtc function
00049         char tree[61];
00050         hk_cdms.printf("i am done\r\n");
00051         uint8_t data[512];
00052         for(int i=0;i<512;i++)
00053         {
00054             data[i]=0x00;
00055         }
00056         tree[0]=(char)(time>>(56))&(0xFF);
00057         tree[1]=(char)(time>>(48))&(0xFF);
00058         tree[2]=(char)(time>>(40))&(0xFF);
00059         tree[3]=(char)(time>>(32))&(0xFF);
00060         tree[4]=(char)(time>>(24))&(0xFF);
00061         tree[5]=(char)(time>>(16))&(0xFF);
00062         tree[6]=(char)(time>>(8))&(0xFF);
00063         tree[7]=(char)(time)&(0xFF);
00064         for(int i=0;i<73;i++)
00065         {
00066             tree[i+8]=BAE_HK[i];
00067         }
00068         printf("Hope u r alive \r\n");
00069         for(int i=0;i<81;i++)
00070         {
00071             data[i]=(uint8_t)tree[i];
00072         }
00073         for(int i=81;i<98;i++)
00074         {
00075             data[i]=CDMS_quant[i];
00076         }
00077         for(int i=0;i<512;i++)
00078         {
00079             printf("%d",data[i]);
00080         }
00081         //uint8_t fsc=FCTN_SD_MNGR(0x3);
00082         //printf("FSC where SD is written is %d\r\n",fsc);
00083         //int a=SD_WRITE(data,0x00000012,0x3);
00084         //printf("Result of writing is %d \r\n",a);
00085         //BCN long frame ???
00086         //CDMS_HK_STATUS=(CDMS_HK_STATUS)&(~(HK_MAIN_STATUS));
00087         hk_cdms.printf("CDMS executed succesfully\r\n");
00088 }
00089 
00090 
00091 
00092 int quantiz(float start,float step,float x)
00093 {
00094     int y=(x-start)/step;
00095     if(y<=0)y=0;
00096     if(y>=255)y=255;
00097     return y;
00098 }
00099 
00100 
00101 
00102 void saveMin(char x,char y){
00103     if(y<x){
00104         x=y;
00105     }
00106 
00107 }
00108 void saveMax(char x,char y){
00109     if (y>x)
00110     {
00111        x=y;
00112     }
00113 }
00114 void minMaxHkData(){
00115    
00116   
00117    
00118     if(firstCount==true){
00119         for (int i = 0; i < 16; ++i){   
00120         min_max_data.temp_min[i] = quant_data.temp_quant[i];
00121         min_max_data.temp_max[i] = quant_data.temp_quant[i];
00122         }
00123 
00124         min_max_data.CDMS_temp_min=quant_data.CDMS_temp_quant;
00125         min_max_data.CDMS_temp_max=quant_data.CDMS_temp_quant;
00126    
00127       
00128     }
00129     else {
00130         for (int i = 0; i < 16; ++i)
00131         {
00132             saveMin(min_max_data.temp_min[i],quant_data.temp_quant[i]);
00133             saveMax(min_max_data.temp_max[i],quant_data.temp_quant[i]);
00134         }
00135                
00136         saveMin(min_max_data.CDMS_temp_min,quant_data.CDMS_temp_quant);
00137         saveMax(min_max_data.CDMS_temp_max,quant_data.CDMS_temp_quant);
00138            
00139        
00140     }  
00141     firstCount=false;
00142 }
00143 
00144 void FCTN_CDMS_HK()
00145 {
00146   
00147     int Iteration=0;
00148 
00149     SelectLinec0=0;
00150     SelectLinec1=0;
00151     SelectLinec2=0;
00152     SelectLinec3=0;
00153 
00154     for(Iteration=0; Iteration<16; Iteration++){
00155 
00156         actual_data.temp_actual[Iteration]=TempInput.read();
00157 
00158         SelectLinec0=!(SelectLinec0);
00159         if(Iteration%2==1)
00160             SelectLinec1=!(SelectLinec1);
00161         if(Iteration%4==3)
00162             SelectLinec2=!(SelectLinec2);
00163         if(Iteration%8==7)
00164              SelectLinec3=!(SelectLinec3);
00165     }
00166 
00167 actual_data.CDMS_temp_actual=(-90.7*3.3*CDMS_temp_sensor.read())+190.1543;
00168    
00169     for(Iteration=0;Iteration<16;Iteration++){
00170 
00171         if(Iteration<14){
00172 
00173             actual_data.temp_actual[Iteration]=actual_data.temp_actual[Iteration]*3.3;
00174             int resistance;      
00175             
00176             resistance=24000*actual_data.temp_actual[Iteration]/(3.3-actual_data.temp_actual[Iteration]);
00177             if(actual_data.temp_actual[Iteration]>1.47)
00178             {
00179                 actual_data.temp_actual[Iteration]=3694/log(24.032242*resistance);
00180             }
00181             else{
00182                
00183                 actual_data.temp_actual[Iteration]=3365.4/log(7.60573*resistance);
00184             }
00185         }
00186         else
00187             actual_data.temp_actual[Iteration]=(-90.7*3.3*actual_data.temp_actual[Iteration])+190.1543;
00188     }
00189 
00190     for(Iteration=0;Iteration<16;Iteration++){
00191 
00192         if(Iteration<14){
00193 
00194             quant_data.temp_quant[Iteration]=quantiz(tstart_thermistor,tstep_thermistor,actual_data.temp_actual[Iteration]);
00195         }
00196         else
00197             quant_data.temp_quant[Iteration]=quantiz(tstart,tstep,actual_data.temp_actual[Iteration]);
00198     }
00199 
00200     quant_data.CDMS_temp_quant=quantiz(tstart,tstep,actual_data.CDMS_temp_actual);
00201 
00202     minMaxHkData();
00203 }