Team Fox / Mbed 2 deprecated RAJANGAM_REVIEW_BAE_CODE

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of QM_BAE_review_1 by Team Fox

Committer:
Bragadeesh153
Date:
Mon Dec 05 10:34:19 2016 +0000
Revision:
74:3fec9935ff1f
Parent:
69:c0dd13285d80
Child:
75:8144029726da
Latest

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lakshya 49:61c9f28332ba 1
sakthipriya 0:7b4c00e3912f 2 #include "mbed.h"
lakshya 20:949d13045431 3 #include "rtos.h"
sakthipriya 0:7b4c00e3912f 4 #include "TCTM.h"
sakthipriya 3:07e15677a75c 5 #include "crc.h"
sakthipriya 4:39a4ae8c7ecd 6 #include "EPS.h"
lakshya 20:949d13045431 7 #include "ACS.h"
sakthipriya 5:bb592f3185cc 8 #include "pin_config.h"
sakthipriya 5:bb592f3185cc 9 #include "FreescaleIAP.h"
sakthipriya 6:036d08b62785 10 #include "inttypes.h"
sakthipriya 6:036d08b62785 11 #include "iostream"
sakthipriya 6:036d08b62785 12 #include "stdint.h"
sakthipriya 6:036d08b62785 13 #include "cassert"
lakshya 10:f93407b97750 14 #include"math.h"
lakshya 10:f93407b97750 15
lakshya 49:61c9f28332ba 16 //Serial pc(USBTX,USBRX);
lakshya 49:61c9f28332ba 17
lakshya 49:61c9f28332ba 18 Serial gpc(USBTX, USBRX);
lakshya 49:61c9f28332ba 19
lakshya 49:61c9f28332ba 20
lakshya 19:79e69017c855 21 //**********************************STATUS_PARAMETERS*****************************************************
lakshya 19:79e69017c855 22 uint8_t BCN_TX_SW_ENABLE=0x00;
lakshya 19:79e69017c855 23
lakshya 19:79e69017c855 24 //***********************************FOR STANDBY TIMER****************************************************
lakshya 19:79e69017c855 25 extern void BAE_STANDBY_TIMER_RESET();
lakshya 19:79e69017c855 26
lakshya 49:61c9f28332ba 27 uint8_t telemetry[134];
lakshya 19:79e69017c855 28
lakshya 20:949d13045431 29 //*****************PARA******************************
lakshya 20:949d13045431 30
lakshya 20:949d13045431 31 //ACS
lakshya 20:949d13045431 32 extern float db[3];
lakshya 20:949d13045431 33 extern float data[6];
lakshya 20:949d13045431 34 extern float b_old[3]; // Unit: Tesla
lakshya 20:949d13045431 35 extern float moment[3];
lakshya 20:949d13045431 36 extern uint8_t ACS_STATE;
lakshya 20:949d13045431 37 extern uint8_t ACS_STATUS;
lakshya 20:949d13045431 38 extern uint8_t flag_firsttime;
lakshya 20:949d13045431 39 extern uint8_t ACS_DETUMBLING_ALGO_TYPE;
lakshya 20:949d13045431 40 extern uint8_t ACS_INIT_STATUS;
lakshya 20:949d13045431 41 extern uint8_t ACS_DATA_ACQ_STATUS;
lakshya 20:949d13045431 42 extern uint8_t ACS_MAIN_STATUS;
lakshya 20:949d13045431 43 extern uint8_t ACS_MAG_TIME_DELAY;
lakshya 20:949d13045431 44 extern uint8_t ACS_DEMAG_TIME_DELAY;
lakshya 20:949d13045431 45 extern uint8_t ACS_Z_FIXED_MOMENT;
lakshya 20:949d13045431 46 extern uint8_t ACS_TR_X_PWM;
lakshya 20:949d13045431 47 extern uint8_t ACS_TR_Y_PWM;
lakshya 20:949d13045431 48 extern uint8_t ACS_TR_Z_PWM;
lakshya 39:670133e7ffd8 49 extern uint8_t B_SCZ_ANGLE;
lakshya 20:949d13045431 50 extern uint8_t alarmmode;
lakshya 20:949d13045431 51 extern uint8_t controlmode_mms;
lakshya 20:949d13045431 52 extern uint8_t invjm_mms[9];
lakshya 20:949d13045431 53 extern uint8_t jm_mms[9];
lakshya 20:949d13045431 54 extern uint8_t bb_mms[3];
lakshya 20:949d13045431 55 extern uint8_t singularity_flag_mms;
lakshya 20:949d13045431 56 extern uint8_t ACS_TR_Z_SW_STATUS;
lakshya 20:949d13045431 57 extern uint8_t ACS_TR_XY_SW_STATUS;
lakshya 20:949d13045431 58
lakshya 20:949d13045431 59 extern uint8_t ATS1_EVENT_STATUS_RGTR;
lakshya 20:949d13045431 60 extern uint8_t ATS1_SENTRAL_STATUS_RGTR;
lakshya 20:949d13045431 61 extern uint8_t ATS1_ERROR_RGTR;
lakshya 20:949d13045431 62 extern uint8_t ATS2_EVENT_STATUS_RGTR;
lakshya 20:949d13045431 63 extern uint8_t ATS2_SENTRAL_STATUS_RGTR;
lakshya 20:949d13045431 64 extern uint8_t ATS2_ERROR_RGTR;
lakshya 20:949d13045431 65 //change
lakshya 20:949d13045431 66 extern uint16_t ACS_MM_X_COMSN;
lakshya 20:949d13045431 67 extern uint16_t ACS_MM_Y_COMSN;
lakshya 20:949d13045431 68 extern uint16_t ACS_MG_X_COMSN;
lakshya 20:949d13045431 69 extern uint16_t ACS_MG_Y_COMSN;
lakshya 20:949d13045431 70 extern uint16_t ACS_MM_Z_COMSN;
lakshya 20:949d13045431 71 extern uint16_t ACS_MG_Z_COMSN;
lakshya 20:949d13045431 72 //acs func
lakshya 20:949d13045431 73 extern void F_ACS();
lakshya 20:949d13045431 74 extern int SENSOR_INIT();
lakshya 20:949d13045431 75 extern int FCTN_ACS_INIT();
lakshya 20:949d13045431 76 extern int SENSOR_DATA_ACQ();
lakshya 20:949d13045431 77 extern int FCTN_ATS_DATA_ACQ();
lakshya 20:949d13045431 78 extern void FCTN_ACS_GENPWM_MAIN(float Moment[3]);
lakshya 20:949d13045431 79 extern void FCTN_ACS_CNTRLALGO(float*,float*,int);
lakshya 20:949d13045431 80
lakshya 20:949d13045431 81
lakshya 20:949d13045431 82 //main
lakshya 49:61c9f28332ba 83 extern Timer BAE_uptime;
lakshya 49:61c9f28332ba 84 extern Timer I2C_last;
lakshya 49:61c9f28332ba 85 extern uint8_t BAE_RESET_COUNTER;
lakshya 49:61c9f28332ba 86 extern void RETURN_UPTIME(float time, uint8_t *day,uint8_t *hour,uint8_t *min);
lakshya 49:61c9f28332ba 87
lakshya 20:949d13045431 88 extern uint8_t ACS_ATS_STATUS;
lakshya 20:949d13045431 89 extern uint16_t ACS_MAIN_COUNTER;//change\apply
lakshya 20:949d13045431 90 extern uint8_t HTR_CYCLE_COUNTER;
lakshya 20:949d13045431 91 extern RtosTimer *HTR_CYCLE;
lakshya 20:949d13045431 92 extern uint8_t HTR_CYCLE_COUNTS; //Count of heater cycles
lakshya 20:949d13045431 93 extern uint8_t HTR_CYCLE_START_DLY; //EPS_HTR_DLY_TIMER timer duration in minutes
lakshya 20:949d13045431 94 extern uint8_t HTR_ON_DURATION; //EPS_HTR_OFF timer duration in minutes
lakshya 20:949d13045431 95 extern uint16_t HTR_CYCLE_PERIOD;
lakshya 20:949d13045431 96
lakshya 49:61c9f28332ba 97 extern DigitalOut ACS_TR_XY_ENABLE;
lakshya 49:61c9f28332ba 98 extern DigitalOut ACS_TR_Z_ENABLE;
lakshya 49:61c9f28332ba 99 extern DigitalIn ACS_TR_XY_OC_FAULT;
lakshya 49:61c9f28332ba 100 extern DigitalIn ACS_TR_Z_OC_FAULT;
lakshya 49:61c9f28332ba 101 extern DigitalIn ACS_TR_XY_FAULT;
lakshya 49:61c9f28332ba 102 extern DigitalIn ACS_TR_Z_FAULT;
lakshya 49:61c9f28332ba 103 extern DigitalIn ACS_ATS1_OC_FAULT;
lakshya 49:61c9f28332ba 104 extern DigitalIn ACS_ATS2_OC_FAULT;
sakthipriya 0:7b4c00e3912f 105
lakshya 49:61c9f28332ba 106 extern DigitalOut ATS1_SW_ENABLE; // enable of att sens2 switch
lakshya 49:61c9f28332ba 107 extern DigitalOut ATS2_SW_ENABLE; // enable of att sens switch
sakthipriya 5:bb592f3185cc 108
lakshya 49:61c9f28332ba 109 extern DigitalOut DRV_Z_EN;
lakshya 49:61c9f28332ba 110 extern DigitalOut DRV_XY_EN;
Bragadeesh153 52:daa685b0e390 111 //extern DigitalOut TRXY_SW; //TR XY Switch if any TR_SW error arises then it is same as TR_SW_EN
Bragadeesh153 52:daa685b0e390 112 //extern DigitalOut TRZ_SW; //TR Z Switch
lakshya 20:949d13045431 113
lakshya 49:61c9f28332ba 114 extern DigitalOut phase_TR_x;
lakshya 49:61c9f28332ba 115 extern DigitalOut phase_TR_y;
lakshya 49:61c9f28332ba 116 extern DigitalOut phase_TR_z;
lakshya 20:949d13045431 117
lakshya 20:949d13045431 118
lakshya 20:949d13045431 119 //CDMS
lakshya 49:61c9f28332ba 120 extern DigitalOut CDMS_RESET; // CDMS RESET
lakshya 20:949d13045431 121 extern uint8_t CDMS_SW_STATUS;
lakshya 49:61c9f28332ba 122 extern DigitalIn CDMS_OC_FAULT;
lakshya 20:949d13045431 123
lakshya 20:949d13045431 124
lakshya 20:949d13045431 125 //BCN
lakshya 49:61c9f28332ba 126 extern DigitalOut BCN_SW; //Beacon switch
lakshya 10:f93407b97750 127 extern uint8_t BCN_TX_STATUS;
lakshya 10:f93407b97750 128 extern uint8_t BCN_FEN;
lakshya 20:949d13045431 129 extern uint8_t BCN_SPND_TX;
lakshya 20:949d13045431 130 extern uint8_t BCN_TX_MAIN_STATUS;
lakshya 20:949d13045431 131 extern uint8_t BCN_TX_SW_STATUS;
lakshya 20:949d13045431 132 extern uint8_t BCN_LONG_MSG_TYPE;
lakshya 20:949d13045431 133 extern uint8_t BCN_INIT_STATUS;
lakshya 20:949d13045431 134 extern uint8_t BCN_FAIL_COUNT;
lakshya 20:949d13045431 135 extern uint16_t BCN_TX_MAIN_COUNTER;
lakshya 49:61c9f28332ba 136 extern DigitalIn BCN_TX_OC_FAULT;
lakshya 20:949d13045431 137 extern uint8_t BCN_TMP;
lakshya 20:949d13045431 138 extern void F_BCN();
lakshya 20:949d13045431 139 extern void FCTN_BCN_TX_MAIN();
lakshya 33:76f2b8735501 140 extern uint8_t SHORT_HK_data[15];
lakshya 33:76f2b8735501 141 extern void FCTN_BCN_SPND_TX();
lakshya 69:c0dd13285d80 142 extern void FCTN_BCN_INIT();
lakshya 20:949d13045431 143
lakshya 20:949d13045431 144
lakshya 20:949d13045431 145 //BAE
lakshya 20:949d13045431 146 extern uint8_t BAE_STANDBY;
lakshya 20:949d13045431 147 extern uint8_t BAE_INIT_STATUS;
lakshya 20:949d13045431 148 extern uint8_t BAE_RESET_COUNTER;
lakshya 27:61c856be467e 149 extern uint8_t BAE_MNG_I2C_STATUS;
lakshya 20:949d13045431 150 /*given a default value as of now shuld read value from flash and increment it write it back very time it starts(bae)*/
lakshya 20:949d13045431 151
lakshya 20:949d13045431 152 extern uint32_t BAE_STATUS;//extern uint32_t BAE_STATUS;
lakshya 20:949d13045431 153 extern BAE_HK_quant quant_data;
sakthipriya 4:39a4ae8c7ecd 154 extern BAE_HK_actual actual_data;
sakthipriya 4:39a4ae8c7ecd 155 extern BAE_HK_min_max bae_HK_minmax;
Bragadeesh153 13:fb7facaf308b 156 //extern DigitalOut TRXY_SW;
lakshya 11:1fdb94ae6563 157 //extern DigitalOut TRZ_SW_EN; //same as TRZ_SW
lakshya 11:1fdb94ae6563 158 extern uint32_t BAE_ENABLE;
lakshya 20:949d13045431 159 extern uint16_t BAE_I2C_COUNTER;
lakshya 33:76f2b8735501 160 extern uint8_t LONG_HK_data[2][134];
lakshya 20:949d13045431 161 //extern uint8_t BCN_FAIL_COUNT;
lakshya 20:949d13045431 162
lakshya 11:1fdb94ae6563 163
lakshya 20:949d13045431 164 //EPS
lakshya 20:949d13045431 165 extern bool firstCount;
lakshya 20:949d13045431 166 extern uint8_t EPS_BTRY_HTR_AUTO;
lakshya 20:949d13045431 167 extern uint8_t EPS_BATT_TEMP_LOW;
lakshya 20:949d13045431 168 extern uint8_t EPS_BATT_TEMP_HIGH;
lakshya 20:949d13045431 169 extern uint8_t EPS_BATT_TEMP_DEFAULT;
lakshya 33:76f2b8735501 170 extern DigitalOut BTRY_HTR_ENABLE;
lakshya 20:949d13045431 171 extern uint8_t EPS_SOC_LEVEL_12;
lakshya 20:949d13045431 172 extern uint8_t EPS_SOC_LEVEL_23;
lakshya 20:949d13045431 173 extern uint8_t EPS_INIT_STATUS;
lakshya 20:949d13045431 174 extern uint8_t EPS_BATTERY_GAUGE_STATUS ;
lakshya 20:949d13045431 175 extern uint8_t EPS_MAIN_STATUS;
lakshya 33:76f2b8735501 176 extern uint8_t EPS_BTRY_TMP_STATUS ;
lakshya 20:949d13045431 177 extern uint8_t EPS_STATUS ;
lakshya 20:949d13045431 178 extern uint8_t EPS_BAT_TEMP_LOW;
lakshya 20:949d13045431 179 extern uint8_t EPS_BAT_TEMP_HIGH;
lakshya 20:949d13045431 180 extern uint8_t EPS_BAT_TEMP_DEFAULT;
lakshya 20:949d13045431 181 extern uint16_t EPS_MAIN_COUNTER;
lakshya 33:76f2b8735501 182 extern uint8_t EPS_BTRY_HTR;
lakshya 11:1fdb94ae6563 183
lakshya 20:949d13045431 184 extern DigitalOut SelectLineb3; // MSB of Select Lines
lakshya 20:949d13045431 185 extern DigitalOut SelectLineb2;
lakshya 20:949d13045431 186 extern DigitalOut SelectLineb1;
lakshya 20:949d13045431 187 extern DigitalOut SelectLineb0;
lakshya 49:61c9f28332ba 188 extern DigitalIn EPS_CHARGER_FAULT;
lakshya 49:61c9f28332ba 189 extern DigitalIn EPS_CHARGER_STATUS;
lakshya 49:61c9f28332ba 190 extern DigitalIn EPS_BATTERY_GAUGE_ALERT;
lakshya 20:949d13045431 191
lakshya 20:949d13045431 192 extern void F_EPS();
lakshya 20:949d13045431 193 extern AnalogIn CurrentInput;
lakshya 20:949d13045431 194
lakshya 20:949d13045431 195 //--------------------check this refer prashant
lakshya 11:1fdb94ae6563 196
Bragadeesh153 13:fb7facaf308b 197 extern PwmOut PWM1; //x //Functions used to generate PWM signal
lakshya 11:1fdb94ae6563 198 extern PwmOut PWM2; //y
lakshya 11:1fdb94ae6563 199 extern PwmOut PWM3; //z //PWM output comes from pins p6
lakshya 11:1fdb94ae6563 200
lakshya 20:949d13045431 201 //included after home
lakshya 11:1fdb94ae6563 202 //extern void FCTN_ACS_GENPWM_MAIN();
lakshya 20:949d13045431 203
lakshya 20:949d13045431 204 uint16_t crc_hk_data()//gencrc16_for_me()
lakshya 20:949d13045431 205 {
lakshya 33:76f2b8735501 206 uint16_t crc = CRC::crc16_gen(&LONG_HK_data[1][0],132);//BAE_chardata i.e char data type usesd earlier BAE_HK_data
lakshya 33:76f2b8735501 207 return crc;
lakshya 33:76f2b8735501 208 }
lakshya 33:76f2b8735501 209
lakshya 33:76f2b8735501 210 uint8_t crc8_short()
lakshya 33:76f2b8735501 211 {
lakshya 33:76f2b8735501 212 uint8_t crc = CRC::crc8_gen(SHORT_HK_data,14);
lakshya 20:949d13045431 213 return crc;
lakshya 20:949d13045431 214 }
lakshya 20:949d13045431 215
lakshya 20:949d13045431 216 float uint16_to_float(float min,float max,uint16_t scale)
lakshya 20:949d13045431 217 {
lakshya 20:949d13045431 218 float div=max-min;
lakshya 20:949d13045431 219 div=(div/(65535.0));
lakshya 20:949d13045431 220 return ((div*(float)scale)+ min);
lakshya 20:949d13045431 221 }
lakshya 11:1fdb94ae6563 222
lakshya 20:949d13045431 223 uint16_t float_to_uint16(float min,float max,float val) //takes care of -ve num as its scale with min and max as reference
lakshya 20:949d13045431 224 {
lakshya 20:949d13045431 225 if(val>max)
lakshya 20:949d13045431 226 {return 0xffff;
lakshya 20:949d13045431 227 }
lakshya 20:949d13045431 228 if(val<min)
lakshya 20:949d13045431 229 {return 0x0000;
lakshya 20:949d13045431 230 }
lakshya 20:949d13045431 231 float div=max-min;
lakshya 20:949d13045431 232 div=(65535.0/div);
lakshya 20:949d13045431 233 val=((val-min)*div);
Bragadeesh153 56:32b1fb074138 234 //gpc.printf("\n\r the scale is %x",(uint16_t)val);
lakshya 20:949d13045431 235 return (uint16_t)val;
lakshya 20:949d13045431 236 }
sakthipriya 5:bb592f3185cc 237
lakshya 20:949d13045431 238 void gen_I_TM()
lakshya 20:949d13045431 239 {
lakshya 20:949d13045431 240 telemetry[0] = 0xB0;
lakshya 20:949d13045431 241 for(int i=1;i<11;i++)
lakshya 20:949d13045431 242 telemetry[i] = 0x00;
lakshya 20:949d13045431 243 uint16_t crc = CRC::crc16_gen(telemetry,11);//BAE_chardata i.e char data type usesd earlier
lakshya 20:949d13045431 244 telemetry[11] = (uint8_t)(crc >> 8);
lakshya 20:949d13045431 245 telemetry[12] = (uint8_t)crc ;
lakshya 20:949d13045431 246 for(int i=13;i<135;i++)
lakshya 20:949d13045431 247 telemetry[i] = 0x00;
lakshya 20:949d13045431 248 }
lakshya 20:949d13045431 249 void FCTN__UINT (uint8_t input[2], float* output)
lakshya 11:1fdb94ae6563 250 {
lakshya 11:1fdb94ae6563 251
lakshya 11:1fdb94ae6563 252 *output = (float) input[1];
lakshya 11:1fdb94ae6563 253 *output = *output/100.0; //input[0] integer part
lakshya 11:1fdb94ae6563 254 *output = *output + (float) input[0]; //input[1] decimal part correct to two decimal places
lakshya 11:1fdb94ae6563 255 }
lakshya 11:1fdb94ae6563 256
lakshya 10:f93407b97750 257 float angle(float x,float y,float z)
lakshya 10:f93407b97750 258 {
lakshya 10:f93407b97750 259 float mag_total=sqrt(x*x + y*y + z*z);
lakshya 10:f93407b97750 260 float cos_z = z/mag_total;
lakshya 10:f93407b97750 261 float theta_z = acosf(cos_z);
Bragadeesh153 13:fb7facaf308b 262
lakshya 10:f93407b97750 263 return theta_z;
lakshya 49:61c9f28332ba 264 //gpc.printf("/n cos_zz= %f /t theta_z= %f /n",cos_z,theta_z);
lakshya 10:f93407b97750 265 }
lakshya 10:f93407b97750 266
Bragadeesh153 13:fb7facaf308b 267 //uint8_t tm1[134];
Bragadeesh153 13:fb7facaf308b 268
Bragadeesh153 13:fb7facaf308b 269 void FCTN_BAE_TM_TC (uint8_t* tc)
sakthipriya 3:07e15677a75c 270 {
lakshya 19:79e69017c855 271 //tm1[0] = 1;
lakshya 19:79e69017c855 272 //calculating crc
lakshya 20:949d13045431 273 for(int i=0;i<134;i++)
lakshya 20:949d13045431 274 {
lakshya 20:949d13045431 275 telemetry[i]=tc[i];
lakshya 20:949d13045431 276 }
lakshya 20:949d13045431 277
lakshya 19:79e69017c855 278
lakshya 15:e09aaaccf134 279 /*chaged*/
lakshya 15:e09aaaccf134 280 uint8_t* tm; // without it some identifier error
lakshya 20:949d13045431 281 uint16_t crc16=CRC::crc16_gen(telemetry,9); //implementing crc
lakshya 49:61c9f28332ba 282 gpc.printf("\n\r the crc is %x",crc16);
lakshya 68:a5d2b8dc6b9e 283 // for(int qw=0;qw<11;qw++);
lakshya 68:a5d2b8dc6b9e 284 // gpc.printf("\n\r the telecommand %d \t %x",qw,tc[qw]);
lakshya 68:a5d2b8dc6b9e 285 // pc.printf("\n the tc provided is %s \n" , tc");
lakshya 19:79e69017c855 286 if( ( ((uint8_t)((crc16 & 0xFF00)>>8)==tc[9]) && ((uint8_t)(crc16 & 0x00FF)==tc[10]) )== 0 )
lakshya 19:79e69017c855 287 {
lakshya 19:79e69017c855 288 telemetry[0]=0xB0;
lakshya 19:79e69017c855 289 telemetry[1]=0x00;//tc psc defined for this case
lakshya 19:79e69017c855 290 telemetry[2]=0x01;//ack code for this case
lakshya 19:79e69017c855 291 for(int i=3;i<11;i++)
lakshya 20:949d13045431 292 {
lakshya 19:79e69017c855 293 telemetry[i]=0x00;
lakshya 19:79e69017c855 294 }
lakshya 19:79e69017c855 295 //add crc
lakshya 19:79e69017c855 296 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 297 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 298 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 49:61c9f28332ba 299 gpc.printf("\n\rincorrect crc");
lakshya 19:79e69017c855 300 for(int i=13;i<134;i++)
lakshya 19:79e69017c855 301 {
lakshya 19:79e69017c855 302 telemetry[i]=0x00;
lakshya 19:79e69017c855 303 }
lakshya 19:79e69017c855 304 }
lakshya 19:79e69017c855 305 else
lakshya 19:79e69017c855 306 {
lakshya 19:79e69017c855 307 //check apid
lakshya 19:79e69017c855 308 uint8_t apid_check=((tc[1]&0xC0)>>6);
lakshya 19:79e69017c855 309 if(apid_check!=0x01)
lakshya 19:79e69017c855 310 {
lakshya 19:79e69017c855 311 telemetry[0]=0xB0;
lakshya 19:79e69017c855 312 telemetry[1]=tc[0];//tc psc defined for this case
lakshya 19:79e69017c855 313 telemetry[2]=0x02;//ack code for this case
lakshya 19:79e69017c855 314 for(int i=3;i<11;i++)
Bragadeesh153 13:fb7facaf308b 315 {
lakshya 19:79e69017c855 316 telemetry[i]=0x00;
Bragadeesh153 13:fb7facaf308b 317 }
Bragadeesh153 13:fb7facaf308b 318 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 319 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 320 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 49:61c9f28332ba 321 gpc.printf("\n\rillegal TC packet APID don't match");
lakshya 19:79e69017c855 322 for(int i=13;i<134;i++)
Bragadeesh153 13:fb7facaf308b 323 {
Bragadeesh153 13:fb7facaf308b 324 telemetry[i]=0x00;
Bragadeesh153 13:fb7facaf308b 325 }
sakthipriya 3:07e15677a75c 326 }
lakshya 19:79e69017c855 327 else
lakshya 19:79e69017c855 328 {// all the possible cases of fms and mms
lakshya 19:79e69017c855 329 uint8_t service_type=(tc[2]&0xF0);
lakshya 19:79e69017c855 330 //check for fms first
lakshya 19:79e69017c855 331 switch(service_type)
lakshya 19:79e69017c855 332 {
lakshya 19:79e69017c855 333 case 0x60:
lakshya 19:79e69017c855 334 {
lakshya 49:61c9f28332ba 335 gpc.printf("Memory Management Service\r\n");
lakshya 19:79e69017c855 336 uint8_t service_subtype=(tc[2]&0x0F);
lakshya 19:79e69017c855 337 switch(service_subtype)
lakshya 19:79e69017c855 338 {
lakshya 19:79e69017c855 339 case 0x02:
lakshya 19:79e69017c855 340 {
lakshya 49:61c9f28332ba 341 gpc.printf("\n\rRead from RAM");
lakshya 19:79e69017c855 342 uint16_t MID = ((uint16_t)tc[3] << 8) | tc[4];
lakshya 19:79e69017c855 343 switch(MID)
lakshya 19:79e69017c855 344 {
lakshya 19:79e69017c855 345 case 0x0000://changed from 0001
lakshya 19:79e69017c855 346 {
lakshya 49:61c9f28332ba 347 gpc.printf("\n\rRead from MID 0000 \n");
lakshya 49:61c9f28332ba 348 gpc.printf("\n\rReading flash parameters");
lakshya 19:79e69017c855 349
lakshya 19:79e69017c855 350 /*taking some varible till we find some thing more useful*/
lakshya 19:79e69017c855 351 //uint8_t ref_val=0x01;
Bragadeesh153 54:d6a45982ace1 352 telemetry[0] = 0x30;
lakshya 19:79e69017c855 353 telemetry[1] = tc[0];
lakshya 19:79e69017c855 354 telemetry[2] = ACK_CODE;
lakshya 19:79e69017c855 355 /*random or with bcn_tx_sw_enable assuming it is 1 bit in length
lakshya 19:79e69017c855 356 how to get that we dont know, now we just assume it to be so*/
lakshya 57:60e8f00d93c3 357 telemetry[3] = 0x00;
lakshya 57:60e8f00d93c3 358 telemetry[4] = ACS_ATS_STATUS;
lakshya 57:60e8f00d93c3 359 telemetry[5] = ACS_TR_XY_SW_STATUS;
lakshya 57:60e8f00d93c3 360 telemetry[5] = (telemetry[5]<<2)| ACS_TR_Z_SW_STATUS;
lakshya 57:60e8f00d93c3 361 telemetry[5] = (telemetry[5]<<4) | ACS_STATE;
lakshya 57:60e8f00d93c3 362 telemetry[6] = ACS_DETUMBLING_ALGO_TYPE;
lakshya 57:60e8f00d93c3 363 telemetry[6] = (telemetry[6]<<2) | BCN_TX_SW_STATUS;
lakshya 57:60e8f00d93c3 364 telemetry[6] = (telemetry[6]<<1) | BCN_SPND_TX;
lakshya 57:60e8f00d93c3 365 telemetry[6] = (telemetry[6]<<1) | BCN_FEN;
lakshya 57:60e8f00d93c3 366 telemetry[6] = (telemetry[6]<<1) | BCN_LONG_MSG_TYPE;
lakshya 57:60e8f00d93c3 367 telemetry[6] = (telemetry[6]<<1) | EPS_BTRY_HTR_AUTO;//EPS_BATTERY_HEATER_ENABLE
lakshya 57:60e8f00d93c3 368 telemetry[6] = (telemetry[6]<<1);
lakshya 57:60e8f00d93c3 369 //now one spares in telemetry[6]
lakshya 57:60e8f00d93c3 370 telemetry[7] = BAE_RESET_COUNTER;
lakshya 57:60e8f00d93c3 371 telemetry[8] = EPS_SOC_LEVEL_12;
lakshya 57:60e8f00d93c3 372 telemetry[9] = EPS_SOC_LEVEL_23;
lakshya 57:60e8f00d93c3 373 telemetry[10] = ACS_MAG_TIME_DELAY;
lakshya 57:60e8f00d93c3 374 telemetry[11] = ACS_DEMAG_TIME_DELAY;
lakshya 57:60e8f00d93c3 375 telemetry[12] = EPS_BAT_TEMP_LOW;
lakshya 57:60e8f00d93c3 376 telemetry[13] = EPS_BAT_TEMP_HIGH;
lakshya 57:60e8f00d93c3 377 telemetry[14] = EPS_BAT_TEMP_DEFAULT;
Bragadeesh153 56:32b1fb074138 378
lakshya 57:60e8f00d93c3 379 telemetry[15] = ACS_MM_X_COMSN >> 8;
lakshya 57:60e8f00d93c3 380 telemetry[16] = ACS_MM_X_COMSN;
lakshya 57:60e8f00d93c3 381 printf("\n\r the mm x commission %d",ACS_MM_X_COMSN);
lakshya 57:60e8f00d93c3 382
lakshya 57:60e8f00d93c3 383 telemetry[17] = ACS_MM_Y_COMSN >> 8;
lakshya 57:60e8f00d93c3 384 telemetry[18] = ACS_MM_Y_COMSN;
lakshya 20:949d13045431 385
lakshya 57:60e8f00d93c3 386 telemetry[19] = ACS_MG_X_COMSN >> 8;
lakshya 57:60e8f00d93c3 387 telemetry[20] = ACS_MG_X_COMSN;
lakshya 20:949d13045431 388
lakshya 57:60e8f00d93c3 389 telemetry[21] = ACS_MG_Y_COMSN >> 8;
lakshya 57:60e8f00d93c3 390 telemetry[22] = ACS_MG_Y_COMSN;
lakshya 20:949d13045431 391
lakshya 57:60e8f00d93c3 392 telemetry[23] = ACS_MM_Z_COMSN >> 8;
lakshya 57:60e8f00d93c3 393 telemetry[24] = ACS_MM_Z_COMSN;
lakshya 20:949d13045431 394
lakshya 57:60e8f00d93c3 395 telemetry[25] = ACS_MG_Z_COMSN >> 8;
lakshya 57:60e8f00d93c3 396 telemetry[26] = ACS_MG_Z_COMSN;
lakshya 20:949d13045431 397
lakshya 57:60e8f00d93c3 398 telemetry[27] = ACS_Z_FIXED_MOMENT >> 8;
lakshya 57:60e8f00d93c3 399 telemetry[28] = ACS_Z_FIXED_MOMENT;
lakshya 57:60e8f00d93c3 400 printf("\n\r the z_fixed_moment %d",ACS_Z_FIXED_MOMENT);
lakshya 57:60e8f00d93c3 401
lakshya 20:949d13045431 402
lakshya 20:949d13045431 403 //BAE RAM PARAMETER
lakshya 57:60e8f00d93c3 404 telemetry[29] = BAE_INIT_STATUS;
lakshya 57:60e8f00d93c3 405 telemetry[29] = (telemetry[29]<<1) | BAE_MNG_I2C_STATUS;//changed
lakshya 57:60e8f00d93c3 406 telemetry[29] = (telemetry[29]<<1) | BCN_INIT_STATUS;
lakshya 57:60e8f00d93c3 407 telemetry[29] = (telemetry[29]<<1) | BCN_TX_MAIN_STATUS;
lakshya 57:60e8f00d93c3 408 telemetry[29] = (telemetry[29]<<3) | BCN_TX_STATUS;
lakshya 57:60e8f00d93c3 409 telemetry[29] = (telemetry[29]<<1) | ACS_INIT_STATUS;
lakshya 20:949d13045431 410
lakshya 57:60e8f00d93c3 411 telemetry[30] = ACS_DATA_ACQ_STATUS;
lakshya 57:60e8f00d93c3 412 telemetry[30] = (telemetry[30]<<1) | ACS_MAIN_STATUS;
lakshya 57:60e8f00d93c3 413 telemetry[30] = (telemetry[30]<<4) | ACS_STATUS;
lakshya 57:60e8f00d93c3 414 telemetry[30] = (telemetry[30]<<1) | EPS_INIT_STATUS;
lakshya 20:949d13045431 415
lakshya 57:60e8f00d93c3 416 telemetry[31] = EPS_BATTERY_GAUGE_STATUS;
lakshya 57:60e8f00d93c3 417 telemetry[31] = (telemetry[31]<<1) | EPS_MAIN_STATUS;
lakshya 57:60e8f00d93c3 418 telemetry[31] = (telemetry[31]<<1) | EPS_BTRY_TMP_STATUS;
lakshya 57:60e8f00d93c3 419 telemetry[31] = (telemetry[31]<<3) | EPS_STATUS;
lakshya 63:55d32e7dcad7 420 telemetry[31] = (telemetry[31]<<2) | CDMS_SW_STATUS;
lakshya 20:949d13045431 421 // telemetry[30] = (telemetry[30]<<1) | EPS_BTRY_HTR_STATUS;//new to : implement
lakshya 33:76f2b8735501 422
lakshya 57:60e8f00d93c3 423 telemetry[32] = EPS_BTRY_HTR; //new to : implement
lakshya 27:61c856be467e 424 //spare 4
lakshya 57:60e8f00d93c3 425 telemetry[32] = (telemetry[32]<<7) | BAE_STANDBY;
lakshya 20:949d13045431 426 // 6 next telemetries value to be given by registers
lakshya 57:60e8f00d93c3 427 telemetry[33] = ATS1_EVENT_STATUS_RGTR;
lakshya 57:60e8f00d93c3 428 telemetry[34] = ATS1_SENTRAL_STATUS_RGTR;
lakshya 57:60e8f00d93c3 429 telemetry[35] = ATS1_ERROR_RGTR;
lakshya 57:60e8f00d93c3 430 telemetry[36] = ATS2_EVENT_STATUS_RGTR;
lakshya 57:60e8f00d93c3 431 telemetry[37] = ATS2_SENTRAL_STATUS_RGTR;
lakshya 57:60e8f00d93c3 432 telemetry[38] = ATS2_ERROR_RGTR;
lakshya 20:949d13045431 433
lakshya 57:60e8f00d93c3 434 telemetry[39] = BCN_FAIL_COUNT;
lakshya 57:60e8f00d93c3 435 telemetry[40] = actual_data.power_mode;
lakshya 57:60e8f00d93c3 436 telemetry[41] = HTR_CYCLE_COUNTER;//new to : implement
lakshya 20:949d13045431 437
lakshya 58:c4203e162d12 438 // GS changed order has to be updated in the telemetry sheet or jithin should change the order
lakshya 58:c4203e162d12 439 telemetry[43] = BAE_I2C_COUNTER;
lakshya 58:c4203e162d12 440 telemetry[42] = BAE_I2C_COUNTER>>8;
lakshya 58:c4203e162d12 441 telemetry[45] = ACS_MAIN_COUNTER;
lakshya 58:c4203e162d12 442 telemetry[44] = ACS_MAIN_COUNTER>>8;
lakshya 58:c4203e162d12 443 telemetry[47] = BCN_TX_MAIN_COUNTER;
lakshya 58:c4203e162d12 444 telemetry[46] = BCN_TX_MAIN_COUNTER>>8;
lakshya 58:c4203e162d12 445 telemetry[49] = EPS_MAIN_COUNTER;
lakshya 58:c4203e162d12 446 telemetry[48] = EPS_MAIN_COUNTER>>8;
lakshya 49:61c9f28332ba 447
lakshya 49:61c9f28332ba 448 uint8_t days,hours,mins;
lakshya 49:61c9f28332ba 449 RETURN_UPTIME(BAE_uptime.read(),&days,&hours,&mins);
lakshya 57:60e8f00d93c3 450 printf("\n\r the values bae of days,hour,min %d, %d, %d",days,hours,mins);
lakshya 57:60e8f00d93c3 451
lakshya 57:60e8f00d93c3 452 telemetry[50] = days;
lakshya 49:61c9f28332ba 453 RETURN_UPTIME(I2C_last.read(),&days,&hours,&mins);
lakshya 57:60e8f00d93c3 454 telemetry[50] = (telemetry[50]<<3) | (hours>>2);
lakshya 57:60e8f00d93c3 455 telemetry[51] = hours;
lakshya 57:60e8f00d93c3 456 telemetry[51] = (telemetry[51]<<6) | mins;
lakshya 57:60e8f00d93c3 457
lakshya 57:60e8f00d93c3 458 printf("\n\r the values of bae uptime %f",BAE_uptime.read());
lakshya 57:60e8f00d93c3 459 printf("\n\r the values i2c of days,hour,min %d, %d, %d",days,hours,mins);
lakshya 57:60e8f00d93c3 460
lakshya 49:61c9f28332ba 461
lakshya 20:949d13045431 462 //sending in uint can be converted back to int by direct conversion for +values
lakshya 20:949d13045431 463 //make sure to convert baack to int for getting negative values
lakshya 20:949d13045431 464 //algo for that done
lakshya 58:c4203e162d12 465
lakshya 58:c4203e162d12 466 uint16_t scaled;
lakshya 20:949d13045431 467
lakshya 58:c4203e162d12 468 scaled = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[0]);
lakshya 58:c4203e162d12 469 telemetry[52] = (scaled>>8);
lakshya 58:c4203e162d12 470 telemetry[53] = scaled;
lakshya 58:c4203e162d12 471 scaled = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[1]);
lakshya 58:c4203e162d12 472 telemetry[54] = (scaled>>8);
lakshya 58:c4203e162d12 473 telemetry[55] = scaled;
lakshya 58:c4203e162d12 474 scaled = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[2]);
lakshya 58:c4203e162d12 475 telemetry[56] = (scaled>>8);
lakshya 58:c4203e162d12 476 telemetry[57] = scaled;
lakshya 58:c4203e162d12 477 scaled = float_to_uint16(-5000,5000,actual_data.AngularSpeed_actual[0]);
lakshya 58:c4203e162d12 478 telemetry[58] = (scaled>>8);
lakshya 58:c4203e162d12 479 telemetry[59] = scaled;
lakshya 58:c4203e162d12 480 scaled = float_to_uint16(-5000,5000,actual_data.AngularSpeed_actual[1]);
lakshya 58:c4203e162d12 481 telemetry[60] = (scaled>>8);
lakshya 58:c4203e162d12 482 telemetry[61] = scaled;
lakshya 58:c4203e162d12 483 scaled = float_to_uint16(-5000,5000,actual_data.AngularSpeed_actual[2]);
lakshya 58:c4203e162d12 484 telemetry[62] = (scaled>>8);
lakshya 58:c4203e162d12 485 telemetry[63] = scaled;
lakshya 58:c4203e162d12 486
lakshya 69:c0dd13285d80 487 telemetry[64] = (~BCN_TX_OC_FAULT);
lakshya 57:60e8f00d93c3 488 telemetry[64] = (telemetry[64]<<1) | ACS_TR_XY_ENABLE;
lakshya 57:60e8f00d93c3 489 telemetry[64] = (telemetry[64]<<1) | ACS_TR_Z_ENABLE;
lakshya 69:c0dd13285d80 490 telemetry[64] = (telemetry[64]<<1) | (~ACS_TR_XY_OC_FAULT);
lakshya 69:c0dd13285d80 491 telemetry[64] = (telemetry[64]<<1) | (~ACS_TR_Z_OC_FAULT);
lakshya 69:c0dd13285d80 492 telemetry[64] = (telemetry[64]<<1) | (~ACS_TR_XY_FAULT);
lakshya 69:c0dd13285d80 493 telemetry[64] = (telemetry[64]<<1) | (~EPS_CHARGER_FAULT);
lakshya 57:60e8f00d93c3 494 telemetry[64] = (telemetry[64]<<1) | EPS_CHARGER_STATUS;
lakshya 20:949d13045431 495
lakshya 57:60e8f00d93c3 496 telemetry[65] = EPS_BATTERY_GAUGE_ALERT;
lakshya 69:c0dd13285d80 497 telemetry[65] = (telemetry[65]<<1) | (~CDMS_OC_FAULT);
lakshya 69:c0dd13285d80 498 telemetry[65] = (telemetry[65]<<1) | (~ACS_ATS1_OC_FAULT);
lakshya 69:c0dd13285d80 499 telemetry[65] = (telemetry[65]<<1) | (~ACS_ATS2_OC_FAULT);
lakshya 69:c0dd13285d80 500 telemetry[65] = (telemetry[65]<<1) | (~ACS_TR_Z_FAULT);
lakshya 57:60e8f00d93c3 501 telemetry[65] = (telemetry[65]<<3);
lakshya 20:949d13045431 502 //3 spare
lakshya 20:949d13045431 503
lakshya 57:60e8f00d93c3 504 telemetry[66] = ACS_TR_X_PWM;
lakshya 57:60e8f00d93c3 505 telemetry[67] = ACS_TR_Y_PWM;
lakshya 57:60e8f00d93c3 506 telemetry[68] = ACS_TR_Z_PWM;
lakshya 20:949d13045431 507 //spare byte
lakshya 20:949d13045431 508 //assigned it to counter HTR_CYCLE_COUNTER
lakshya 20:949d13045431 509
lakshya 20:949d13045431 510 //assign it b_scz_angle
lakshya 57:60e8f00d93c3 511 telemetry[69] = B_SCZ_ANGLE>>4;
lakshya 57:60e8f00d93c3 512 telemetry[69] = (telemetry[69]<<1) | alarmmode;
lakshya 57:60e8f00d93c3 513 telemetry[69] = (telemetry[69]<<1) | controlmode_mms;
lakshya 57:60e8f00d93c3 514 telemetry[69] = (telemetry[69]<<1) | singularity_flag_mms;
lakshya 57:60e8f00d93c3 515 telemetry[69] = (telemetry[69]<<1);
lakshya 49:61c9f28332ba 516 //1 bit spare
lakshya 20:949d13045431 517
lakshya 20:949d13045431 518 for(int i=0;i<9;i++)
lakshya 20:949d13045431 519 {
lakshya 57:60e8f00d93c3 520 telemetry[70+i] = invjm_mms[i];
lakshya 57:60e8f00d93c3 521 telemetry[81+i] = jm_mms[i];
lakshya 20:949d13045431 522 }
lakshya 20:949d13045431 523
lakshya 53:459b71b1861c 524 for(int i=1;i<3;i++)
lakshya 57:60e8f00d93c3 525 telemetry[79+i] = bb_mms[i];
lakshya 20:949d13045431 526
lakshya 20:949d13045431 527 for(int i=0;i<16;i++)
lakshya 20:949d13045431 528 {
lakshya 68:a5d2b8dc6b9e 529 telemetry[90+i] = (uint8_t)(quant_data.voltage_quant[i]);//changed (uint8_t)(quant_data.voltage_quant[i]<<3)+(quant_data.voltage_quant[i]<<1); /*multiplied by 10 */
lakshya 64:241406992336 530 //printf("\n\r %d \t %d",i,telemetry[90+i]);
lakshya 57:60e8f00d93c3 531 telemetry[106+i] = quant_data.current_quant[i];
lakshya 63:55d32e7dcad7 532 /*check the working*/
lakshya 20:949d13045431 533 }
lakshya 20:949d13045431 534
lakshya 68:a5d2b8dc6b9e 535 telemetry[122] = quant_data.Batt_voltage_quant;// changed (quant_data.Batt_voltage_quant<<3)+(quant_data.Batt_voltage_quant<<1);
lakshya 57:60e8f00d93c3 536 telemetry[123] = quant_data.BAE_temp_quant;
lakshya 57:60e8f00d93c3 537 telemetry[124] = (uint8_t)(actual_data.Batt_gauge_actual[1]);
lakshya 57:60e8f00d93c3 538 telemetry[125] = quant_data.Batt_temp_quant[0];
lakshya 57:60e8f00d93c3 539 telemetry[126] = quant_data.Batt_temp_quant[1];
lakshya 58:c4203e162d12 540
lakshya 57:60e8f00d93c3 541 telemetry[127] = BCN_TMP;
lakshya 20:949d13045431 542
lakshya 57:60e8f00d93c3 543 for (int i=128; i<132;i++)
lakshya 19:79e69017c855 544 {
lakshya 19:79e69017c855 545 telemetry[i] = 0x00;
lakshya 19:79e69017c855 546 }
lakshya 19:79e69017c855 547 crc16 = CRC::crc16_gen(telemetry,132);
lakshya 19:79e69017c855 548 telemetry[132] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 549 telemetry[133] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 550
lakshya 19:79e69017c855 551 break;
lakshya 19:79e69017c855 552 }
lakshya 19:79e69017c855 553 case 0x0001:
lakshya 19:79e69017c855 554 {
lakshya 69:c0dd13285d80 555 gpc.printf("\r\nHK data min max");
lakshya 57:60e8f00d93c3 556 telemetry[0] = 0x30; // changed0x06 shifted by 1 bit 0x03
lakshya 19:79e69017c855 557 telemetry[1] = tc[0];
lakshya 19:79e69017c855 558 telemetry[2] = ACK_CODE;
lakshya 57:60e8f00d93c3 559 telemetry[3] = 0x00;
lakshya 19:79e69017c855 560
lakshya 19:79e69017c855 561 for(int i;i<16;i++)
lakshya 20:949d13045431 562 {
lakshya 68:a5d2b8dc6b9e 563 telemetry[i+4] = (uint8_t)bae_HK_minmax.voltage_max[i];//(bae_HK_minmax.voltage_max[i]<<3)+(bae_HK_minmax.voltage_max[i]<<2);
lakshya 57:60e8f00d93c3 564 telemetry[i+20] = bae_HK_minmax.current_max[i];
lakshya 20:949d13045431 565 }
lakshya 19:79e69017c855 566
lakshya 68:a5d2b8dc6b9e 567 telemetry[36] = (uint8_t)bae_HK_minmax.Batt_voltage_max;//(bae_HK_minmax.Batt_voltage_max<<3)+(bae_HK_minmax.Batt_voltage_max<<2);
lakshya 57:60e8f00d93c3 568 telemetry[37] = bae_HK_minmax.BAE_temp_max;
lakshya 19:79e69017c855 569
lakshya 57:60e8f00d93c3 570 telemetry[38] = bae_HK_minmax.Batt_SOC_max;
lakshya 19:79e69017c855 571
lakshya 57:60e8f00d93c3 572 telemetry[39] = bae_HK_minmax.Batt_temp_max[0];
lakshya 57:60e8f00d93c3 573 telemetry[40] = bae_HK_minmax.Batt_temp_max[1];
lakshya 19:79e69017c855 574
lakshya 20:949d13045431 575 /*BCN temp there*/
lakshya 57:60e8f00d93c3 576 telemetry[41] = bae_HK_minmax.BCN_TEMP_max;
lakshya 19:79e69017c855 577
lakshya 19:79e69017c855 578 for(int i=0; i<3; i++)
lakshya 20:949d13045431 579 {
lakshya 57:60e8f00d93c3 580 telemetry[42+(2*i)] = (bae_HK_minmax.bit_data_acs_mm_max[i]>>8);
lakshya 57:60e8f00d93c3 581 telemetry[43+(2*i)] = bae_HK_minmax.bit_data_acs_mm_max[i];
lakshya 53:459b71b1861c 582
lakshya 57:60e8f00d93c3 583 telemetry[48+(2*i)] = (bae_HK_minmax.bit_data_acs_mg_max[i]>>8);
lakshya 57:60e8f00d93c3 584 telemetry[49+(2*i)] = bae_HK_minmax.bit_data_acs_mg_max[i];
lakshya 20:949d13045431 585 }
lakshya 19:79e69017c855 586
lakshya 19:79e69017c855 587 /*min data*/
lakshya 19:79e69017c855 588
lakshya 19:79e69017c855 589 for(int i;i<16;i++)
lakshya 68:a5d2b8dc6b9e 590 { telemetry[i+54] = (uint8_t)bae_HK_minmax.voltage_min[i];//(bae_HK_minmax.voltage_min[i]<<3)+(bae_HK_minmax.voltage_min[i]<<1);
lakshya 68:a5d2b8dc6b9e 591 //for(int i;i<16;i++)
lakshya 68:a5d2b8dc6b9e 592 telemetry[i+70] = bae_HK_minmax.current_min[i];
lakshya 68:a5d2b8dc6b9e 593 }
lakshya 19:79e69017c855 594
lakshya 68:a5d2b8dc6b9e 595 telemetry[86] = (uint8_t)bae_HK_minmax.Batt_voltage_min;//(bae_HK_minmax.Batt_voltage_min<<3)+(bae_HK_minmax.Batt_voltage_min<<1);
lakshya 57:60e8f00d93c3 596 telemetry[87] = bae_HK_minmax.BAE_temp_min;
lakshya 19:79e69017c855 597
lakshya 19:79e69017c855 598 /*battery soc*/
lakshya 57:60e8f00d93c3 599 telemetry[88] = bae_HK_minmax.Batt_SOC_min;
lakshya 19:79e69017c855 600
lakshya 57:60e8f00d93c3 601 telemetry[89] = bae_HK_minmax.Batt_temp_min[0];
lakshya 57:60e8f00d93c3 602 telemetry[90] = bae_HK_minmax.Batt_temp_min[1];
lakshya 19:79e69017c855 603 //huhu//
lakshya 19:79e69017c855 604
lakshya 20:949d13045431 605 /*BCN temp named as BCN_TS_BUFFER there*/
lakshya 57:60e8f00d93c3 606 telemetry[91] = bae_HK_minmax.BCN_TEMP_min;
lakshya 19:79e69017c855 607
lakshya 19:79e69017c855 608 for(int i=0; i<3; i++)
lakshya 20:949d13045431 609 {
lakshya 57:60e8f00d93c3 610 telemetry[92+(2*i)] = (bae_HK_minmax.bit_data_acs_mm_min[i]>>8);
lakshya 57:60e8f00d93c3 611 telemetry[93+(2*i)] = bae_HK_minmax.bit_data_acs_mm_min[i];
lakshya 53:459b71b1861c 612
lakshya 57:60e8f00d93c3 613 telemetry[98+(2*i)] = (bae_HK_minmax.bit_data_acs_mg_min[i]>>8);
lakshya 57:60e8f00d93c3 614 telemetry[99+(2*i)] = bae_HK_minmax.bit_data_acs_mg_min[i];
lakshya 20:949d13045431 615 }
lakshya 69:c0dd13285d80 616 telemetry[104] = (~(BCN_TX_OC_FAULT));
lakshya 69:c0dd13285d80 617 telemetry[104] = (telemetry[104]<<1) | (~(ACS_TR_XY_OC_FAULT));
lakshya 69:c0dd13285d80 618 telemetry[104] = (telemetry[104]<<1) | (~(ACS_TR_Z_OC_FAULT));
lakshya 69:c0dd13285d80 619 telemetry[104] = (telemetry[104]<<1) | (~(ACS_TR_XY_FAULT));
lakshya 20:949d13045431 620 //EPS CHARGER
lakshya 69:c0dd13285d80 621 telemetry[104] = (telemetry[104]<<1) | (~(EPS_CHARGER_FAULT));//eps_charger;
lakshya 69:c0dd13285d80 622 telemetry[104] = (telemetry[104]<<1) | (~(CDMS_OC_FAULT));
lakshya 69:c0dd13285d80 623 telemetry[104] = (telemetry[104]<<1) | (~(ACS_ATS1_OC_FAULT));
lakshya 69:c0dd13285d80 624 telemetry[104] = (telemetry[104]<<1) | (~(ACS_ATS2_OC_FAULT));
lakshya 20:949d13045431 625
lakshya 57:60e8f00d93c3 626 telemetry[105] = (ACS_TR_Z_FAULT<<7);
lakshya 20:949d13045431 627 //spare 23 bits
lakshya 53:459b71b1861c 628 telemetry[106] = 0x00;
lakshya 57:60e8f00d93c3 629 telemetry[107] = 0x00;
lakshya 20:949d13045431 630
lakshya 57:60e8f00d93c3 631 for (int i=108; i<132;i++)
lakshya 19:79e69017c855 632 {
lakshya 19:79e69017c855 633 telemetry[i] = 0x00;
lakshya 19:79e69017c855 634 }
lakshya 19:79e69017c855 635 crc16 = CRC::crc16_gen(telemetry,132);
lakshya 19:79e69017c855 636 telemetry[132] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 637 telemetry[133] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 638 break;
lakshya 19:79e69017c855 639 }
lakshya 19:79e69017c855 640 default://invalid MID
lakshya 19:79e69017c855 641 {
lakshya 19:79e69017c855 642 //ACK_L234_telemetry
lakshya 57:60e8f00d93c3 643 telemetry[0]=0xB0; // check if this needs to be changed
lakshya 19:79e69017c855 644 telemetry[1]=tc[0];
lakshya 19:79e69017c855 645 telemetry[2]=0x02;//for this case
lakshya 19:79e69017c855 646 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 647 {
lakshya 19:79e69017c855 648 telemetry[i]=0x00;
lakshya 19:79e69017c855 649 }
lakshya 19:79e69017c855 650 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 651 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 652 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 653 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 654 {
lakshya 19:79e69017c855 655 telemetry[i]=0x00;
lakshya 19:79e69017c855 656 }
lakshya 19:79e69017c855 657 break;
lakshya 19:79e69017c855 658 }
lakshya 19:79e69017c855 659 }
lakshya 19:79e69017c855 660 break;
lakshya 57:60e8f00d93c3 661 }
lakshya 19:79e69017c855 662 case 0x05:
lakshya 19:79e69017c855 663 {
lakshya 69:c0dd13285d80 664 gpc.printf("\n\rDATA for mms 0x05 flash");
lakshya 19:79e69017c855 665 /*changed*/
lakshya 69:c0dd13285d80 666 gpc.printf("\n\rWrite on flash\n");
lakshya 20:949d13045431 667 uint32_t FLASH_DATA;//256 bits
lakshya 19:79e69017c855 668
lakshya 19:79e69017c855 669 uint8_t VALID_MID;//to determine wether mid is valid or not otherwise to much repetition of code 1 meaning valid
lakshya 19:79e69017c855 670
lakshya 19:79e69017c855 671 uint16_t MID = ((uint16_t)tc[3] << 8) | tc[4];
lakshya 19:79e69017c855 672 switch(MID )
lakshya 19:79e69017c855 673 {
lakshya 20:949d13045431 674 case 0x1100:
lakshya 19:79e69017c855 675 {
lakshya 20:949d13045431 676 //FLASH_DATA[0] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[8]);
lakshya 20:949d13045431 677 //FCTN_BAE_WR_FLASH(0,FLASH_DATA[0]);
lakshya 20:949d13045431 678 BCN_LONG_MSG_TYPE = tc[8];
lakshya 20:949d13045431 679 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(0);
lakshya 27:61c856be467e 680 FLASH_DATA = (FLASH_DATA & 0xFFFFFBFF) | (10<<(uint32_t)tc[8]);//see if uint8 to uint32 conversion works
lakshya 20:949d13045431 681 FCTN_BAE_WR_FLASH(0,FLASH_DATA);
lakshya 19:79e69017c855 682 VALID_MID=1;
lakshya 19:79e69017c855 683 break;
lakshya 19:79e69017c855 684 }
lakshya 19:79e69017c855 685 case 0x0101:
lakshya 19:79e69017c855 686 {
lakshya 20:949d13045431 687 //FLASH_DATA[1] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 27:61c856be467e 688 ACS_DETUMBLING_ALGO_TYPE = (tc[8] & 0x01);
lakshya 49:61c9f28332ba 689 //===============================================
lakshya 49:61c9f28332ba 690 ACS_STATE = 4;
lakshya 49:61c9f28332ba 691 //tc[8] = 1001_
lakshya 49:61c9f28332ba 692 //ACS_STATE = (tc[8]>>1) & 0x0F;
lakshya 20:949d13045431 693 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(0);
lakshya 27:61c856be467e 694 FLASH_DATA = (FLASH_DATA & 0xFFF07FFF) | (15<<(uint32_t)tc[8]);
lakshya 20:949d13045431 695 FCTN_BAE_WR_FLASH(0,FLASH_DATA);
lakshya 19:79e69017c855 696 VALID_MID=1;
lakshya 19:79e69017c855 697 break;
lakshya 19:79e69017c855 698 }
lakshya 19:79e69017c855 699
lakshya 19:79e69017c855 700 case 0x0102:
lakshya 19:79e69017c855 701 {
lakshya 20:949d13045431 702 //FLASH_DATA[2] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 20:949d13045431 703 //EPS_BATTERY_HEATER_ENABLE = tc[8];
lakshya 20:949d13045431 704 EPS_BTRY_HTR_AUTO = tc[8];
lakshya 20:949d13045431 705 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(0);
lakshya 27:61c856be467e 706 FLASH_DATA = (FLASH_DATA & 0xFFFFFDFF) | (9<<(uint32_t)tc[8]);
lakshya 20:949d13045431 707 FCTN_BAE_WR_FLASH(0,FLASH_DATA);
lakshya 19:79e69017c855 708 VALID_MID=1;
lakshya 19:79e69017c855 709 break;
lakshya 19:79e69017c855 710 }
lakshya 19:79e69017c855 711
lakshya 19:79e69017c855 712 case 0x0103:
lakshya 19:79e69017c855 713 {
lakshya 20:949d13045431 714 //FLASH_DATA[3] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 20:949d13045431 715 ACS_MAG_TIME_DELAY = tc[7];
lakshya 20:949d13045431 716 ACS_DEMAG_TIME_DELAY = tc[8];
lakshya 20:949d13045431 717 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(1);
lakshya 20:949d13045431 718 FLASH_DATA = (FLASH_DATA & 0xFFFF0000) | (8<<(uint32_t)tc[7]) | ((uint32_t)tc[8]);
lakshya 20:949d13045431 719 FCTN_BAE_WR_FLASH(1,FLASH_DATA);
lakshya 19:79e69017c855 720 VALID_MID=1;
lakshya 19:79e69017c855 721 break;
lakshya 19:79e69017c855 722 }
lakshya 19:79e69017c855 723 case 0x0104:
lakshya 19:79e69017c855 724 {
lakshya 20:949d13045431 725 //FLASH_DATA[4] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 69:c0dd13285d80 726 ACS_Z_FIXED_MOMENT = ((uint16_t)tc[7]<<8) | (uint16_t)tc[8];
lakshya 20:949d13045431 727 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(6);
lakshya 20:949d13045431 728 FLASH_DATA = (FLASH_DATA & 0x0000FFFF) | ((uint32_t)ACS_Z_FIXED_MOMENT<<16);
lakshya 20:949d13045431 729 FCTN_BAE_WR_FLASH(6,FLASH_DATA);
lakshya 19:79e69017c855 730 VALID_MID=1;
lakshya 19:79e69017c855 731 break;
lakshya 19:79e69017c855 732 }
lakshya 69:c0dd13285d80 733 case 0x0105:
lakshya 69:c0dd13285d80 734 {
lakshya 69:c0dd13285d80 735 //FLASH_DATA[4] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 69:c0dd13285d80 736 EPS_BAT_TEMP_DEFAULT=(uint8_t)tc[6];
lakshya 69:c0dd13285d80 737 EPS_BAT_TEMP_LOW=(uint8_t)tc[7];
lakshya 69:c0dd13285d80 738 EPS_BAT_TEMP_HIGH=(uint8_t)tc[8];
lakshya 69:c0dd13285d80 739 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(2);
lakshya 69:c0dd13285d80 740 FLASH_DATA = (FLASH_DATA & 0x000000FF) | ((uint32_t)EPS_BAT_TEMP_DEFAULT<<24) | ((uint32_t)EPS_BAT_TEMP_LOW<<16) | ((uint32_t)EPS_BAT_TEMP_LOW<<8);
lakshya 69:c0dd13285d80 741 FCTN_BAE_WR_FLASH(6,FLASH_DATA);
lakshya 69:c0dd13285d80 742 VALID_MID=1;
lakshya 69:c0dd13285d80 743 break;
lakshya 69:c0dd13285d80 744 }
lakshya 20:949d13045431 745 case 0x0106:
lakshya 19:79e69017c855 746 {
lakshya 20:949d13045431 747 //FLASH_DATA[6] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 20:949d13045431 748 ACS_MM_Z_COMSN = ((uint16_t)tc[5]<<8) | (uint16_t)tc[6];
lakshya 20:949d13045431 749 ACS_MG_Z_COMSN = ((uint16_t)tc[7]<<8) | (uint16_t)tc[8];
lakshya 20:949d13045431 750 FLASH_DATA = ((uint32_t)ACS_MM_Z_COMSN<<16) | (uint32_t)ACS_MG_Z_COMSN;
lakshya 20:949d13045431 751 FCTN_BAE_WR_FLASH(5,FLASH_DATA);
lakshya 20:949d13045431 752 VALID_MID=1;
lakshya 20:949d13045431 753 break;
lakshya 20:949d13045431 754 }
lakshya 20:949d13045431 755 case 0x0107:
lakshya 20:949d13045431 756 {
lakshya 20:949d13045431 757 //FLASH_DATA[5] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 20:949d13045431 758 EPS_SOC_LEVEL_12 = tc[7];
lakshya 20:949d13045431 759 EPS_SOC_LEVEL_23 = tc[8];
lakshya 20:949d13045431 760 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(1);
lakshya 20:949d13045431 761 FLASH_DATA = (FLASH_DATA & 0x0000FFFF) | ((uint32_t)tc[7]<<24) | ((uint32_t)tc[8]<<16);
lakshya 20:949d13045431 762 FCTN_BAE_WR_FLASH(1,FLASH_DATA);
lakshya 19:79e69017c855 763 VALID_MID=1;
lakshya 19:79e69017c855 764 break;
lakshya 19:79e69017c855 765 }
lakshya 20:949d13045431 766 case 0x0108:
lakshya 19:79e69017c855 767 {
lakshya 20:949d13045431 768 //FLASH_DATA[6] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 20:949d13045431 769 ACS_MM_X_COMSN = ((uint16_t)tc[5]<<8) | (uint16_t)tc[6];
lakshya 20:949d13045431 770 ACS_MM_Y_COMSN = ((uint16_t)tc[7]<<8) | (uint16_t)tc[8];
lakshya 20:949d13045431 771 FLASH_DATA = ((uint32_t)ACS_MM_X_COMSN<<16) | (uint32_t)ACS_MM_Y_COMSN;
lakshya 20:949d13045431 772 FCTN_BAE_WR_FLASH(3,FLASH_DATA);
lakshya 19:79e69017c855 773 VALID_MID=1;
lakshya 19:79e69017c855 774 break;
lakshya 19:79e69017c855 775 }
lakshya 20:949d13045431 776 case 0x0109:
lakshya 19:79e69017c855 777 {
lakshya 20:949d13045431 778 //FLASH_DATA[7] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 20:949d13045431 779 ACS_MG_X_COMSN = ((uint16_t)tc[5]<<8) | (uint16_t)tc[6];
lakshya 20:949d13045431 780 ACS_MG_Y_COMSN = ((uint16_t)tc[7]<<8) | (uint16_t)tc[8];
lakshya 20:949d13045431 781 FLASH_DATA = ((uint32_t)ACS_MG_X_COMSN<<16) | (uint32_t)ACS_MG_Y_COMSN;
lakshya 20:949d13045431 782 FCTN_BAE_WR_FLASH(4,FLASH_DATA);
lakshya 19:79e69017c855 783 VALID_MID=1;
lakshya 19:79e69017c855 784 break;
lakshya 19:79e69017c855 785 }
lakshya 19:79e69017c855 786
lakshya 19:79e69017c855 787 default:
lakshya 19:79e69017c855 788 {
lakshya 49:61c9f28332ba 789 gpc.printf("Invalid MMS case 0x05 invalid MID\r\n");
lakshya 19:79e69017c855 790 VALID_MID=0;
lakshya 19:79e69017c855 791 //ACK_L234_telemetry
lakshya 19:79e69017c855 792 break;
lakshya 19:79e69017c855 793
lakshya 19:79e69017c855 794 }
lakshya 19:79e69017c855 795 }
lakshya 19:79e69017c855 796
lakshya 19:79e69017c855 797 if(VALID_MID==1)//valid MID
lakshya 19:79e69017c855 798 {
lakshya 19:79e69017c855 799 telemetry[0]=0xB0;//or 0x60? check
lakshya 19:79e69017c855 800 telemetry[1]=tc[0];
lakshya 19:79e69017c855 801 telemetry[2]=0xA0;// when valid
lakshya 19:79e69017c855 802 }
lakshya 19:79e69017c855 803 else if(VALID_MID==0)//invalid MID
lakshya 19:79e69017c855 804 {
lakshya 19:79e69017c855 805 telemetry[0]=0xB0;
lakshya 19:79e69017c855 806 telemetry[1]=tc[0];
lakshya 19:79e69017c855 807 telemetry[2]=0x02;//for this case
lakshya 19:79e69017c855 808 }
lakshya 19:79e69017c855 809
lakshya 19:79e69017c855 810 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 811 {
lakshya 19:79e69017c855 812 telemetry[i]=0x00;
lakshya 19:79e69017c855 813 }
lakshya 19:79e69017c855 814 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 815 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 816 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 817 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 818 {
lakshya 19:79e69017c855 819 telemetry[i]=0x00;
lakshya 19:79e69017c855 820 }
lakshya 19:79e69017c855 821
lakshya 49:61c9f28332ba 822 gpc.printf("\n\rWritten on Flash");
lakshya 19:79e69017c855 823 break;
lakshya 19:79e69017c855 824 }
lakshya 19:79e69017c855 825 default://when invalid service subtype
lakshya 19:79e69017c855 826 {
lakshya 49:61c9f28332ba 827 gpc.printf("\n\r MMS invalid Service Subtype");
lakshya 19:79e69017c855 828 //ACK_L234_telemetry
lakshya 19:79e69017c855 829 telemetry[0]=0xB0;
lakshya 19:79e69017c855 830 telemetry[1]=tc[0];
lakshya 19:79e69017c855 831 telemetry[2]=0x02;//for this case
lakshya 19:79e69017c855 832 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 833 {
lakshya 19:79e69017c855 834 telemetry[i]=0x00;
lakshya 19:79e69017c855 835 }
lakshya 19:79e69017c855 836 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 837 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 838 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 839 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 840 {
lakshya 19:79e69017c855 841 telemetry[i]=0x00;
lakshya 19:79e69017c855 842 }
lakshya 19:79e69017c855 843 break;
lakshya 19:79e69017c855 844 }
lakshya 19:79e69017c855 845 }
lakshya 19:79e69017c855 846 break;
lakshya 19:79e69017c855 847 }
lakshya 19:79e69017c855 848 case 0x80:
lakshya 19:79e69017c855 849 {
lakshya 68:a5d2b8dc6b9e 850 gpc.printf("Function Management Service\r\n");//changed
lakshya 19:79e69017c855 851 uint8_t service_subtype=(tc[2]&0x0F);
lakshya 19:79e69017c855 852 switch(service_subtype)
lakshya 19:79e69017c855 853 {
lakshya 19:79e69017c855 854 case 0x01:
lakshya 19:79e69017c855 855 {
lakshya 69:c0dd13285d80 856 gpc.printf("\n\rFMS Activated");
lakshya 19:79e69017c855 857 uint8_t fid=tc[3];//changed from pid to fid
lakshya 19:79e69017c855 858 switch(fid)
lakshya 19:79e69017c855 859 {
lakshya 19:79e69017c855 860 case 0xE0:
lakshya 19:79e69017c855 861 {
lakshya 58:c4203e162d12 862 //float mag_data_comm[3]={uint16_to_float(-1000,1000,ACS_MM_X_COMSN),uint16_to_float(-1000,1000,ACS_MM_Y_COMSN),uint16_to_float(-1000,1000,ACS_MM_Z_COMSN)};
lakshya 58:c4203e162d12 863 //float gyro_data_comm[3]={uint16_to_float(-5000,5000,ACS_MG_X_COMSN),uint16_to_float(-5000,5000,ACS_MG_Y_COMSN),uint16_to_float(-5000,5000,ACS_MG_Z_COMSN)};
lakshya 58:c4203e162d12 864 float mag_data_comm[3] = {ACS_MM_X_COMSN,ACS_MM_Y_COMSN,ACS_MM_Z_COMSN};
lakshya 58:c4203e162d12 865 float gyro_data_comm[3] = {ACS_MG_X_COMSN,ACS_MG_Y_COMSN,ACS_MG_Z_COMSN};
lakshya 20:949d13045431 866 float moment_comm[3];
lakshya 49:61c9f28332ba 867 gpc.printf("ACS_COMSN SOFTWARE\r\n");
lakshya 19:79e69017c855 868 //ACK_L234_telemetry
lakshya 20:949d13045431 869 ACS_STATE = tc[4];
lakshya 49:61c9f28332ba 870 if(ACS_STATE == 2) // Nominal mode
lakshya 20:949d13045431 871 {
lakshya 49:61c9f28332ba 872 gpc.printf("\n\r Nominal mode \n");
lakshya 20:949d13045431 873 FCTN_ACS_CNTRLALGO(moment_comm,mag_data_comm,gyro_data_comm,0x01,0x00,ACS_DETUMBLING_ALGO_TYPE);
lakshya 49:61c9f28332ba 874 gpc.printf("\n\r Moment values returned by control algo \n");
lakshya 20:949d13045431 875 for(int i=0; i<3; i++)
lakshya 20:949d13045431 876 {
lakshya 49:61c9f28332ba 877 gpc.printf("%f\t",moment_comm[i]);
lakshya 20:949d13045431 878 }
lakshya 20:949d13045431 879
lakshya 20:949d13045431 880 }
lakshya 49:61c9f28332ba 881 else if(ACS_STATE == 3) // Auto Control
lakshya 20:949d13045431 882 {
lakshya 49:61c9f28332ba 883 gpc.printf("\n\r Auto control mode \n");
lakshya 20:949d13045431 884 FCTN_ACS_CNTRLALGO(moment_comm,mag_data_comm,gyro_data_comm,0x00,0x00,ACS_DETUMBLING_ALGO_TYPE);
lakshya 49:61c9f28332ba 885 gpc.printf("\n\r Moment values returned by control algo \n");
lakshya 20:949d13045431 886 for(int i=0; i<3; i++)
lakshya 20:949d13045431 887 {
lakshya 49:61c9f28332ba 888 gpc.printf("%f\t",moment_comm[i]);
lakshya 20:949d13045431 889 }
lakshya 20:949d13045431 890 }
lakshya 49:61c9f28332ba 891 else if(ACS_STATE == 4) // Detumbling
lakshya 20:949d13045431 892 {
lakshya 20:949d13045431 893 FCTN_ACS_CNTRLALGO(moment_comm,mag_data_comm,gyro_data_comm,0x00,0x01,ACS_DETUMBLING_ALGO_TYPE);
lakshya 49:61c9f28332ba 894 gpc.printf("\n\r Moment values returned by control algo \n");
lakshya 20:949d13045431 895 for(int i=0; i<3; i++)
lakshya 20:949d13045431 896 {
lakshya 49:61c9f28332ba 897 gpc.printf("%f\t",moment_comm[i]);
lakshya 20:949d13045431 898 }
lakshya 20:949d13045431 899 }
lakshya 19:79e69017c855 900 else
lakshya 19:79e69017c855 901 {
lakshya 20:949d13045431 902 ACS_STATUS = 7;
lakshya 19:79e69017c855 903 }
lakshya 20:949d13045431 904
lakshya 20:949d13045431 905 // Control algo commissioning
lakshya 39:670133e7ffd8 906 uint16_t moment_ret;
lakshya 49:61c9f28332ba 907 telemetry[0] = 0x78;
lakshya 49:61c9f28332ba 908 telemetry[1] = tc[0];
lakshya 49:61c9f28332ba 909 telemetry[2] = ACK_CODE;
lakshya 39:670133e7ffd8 910 telemetry[3] = 0x00;
lakshya 39:670133e7ffd8 911 telemetry[4] = ACS_STATUS;
lakshya 39:670133e7ffd8 912 moment_ret = float_to_uint16(-2.2,2.2,moment_comm[0]);
lakshya 39:670133e7ffd8 913 telemetry[5] = (uint8_t)(moment_ret>>8);
lakshya 39:670133e7ffd8 914 telemetry[6] = (uint8_t)moment_ret;
lakshya 39:670133e7ffd8 915 moment_ret = float_to_uint16(-2.2,2.2,moment_comm[0]);
lakshya 39:670133e7ffd8 916 telemetry[7] = (uint8_t)(moment_ret>>8);
lakshya 39:670133e7ffd8 917 telemetry[8] = (uint8_t)moment_ret;
lakshya 39:670133e7ffd8 918 moment_ret = float_to_uint16(-2.2,2.2,moment_comm[2]);
lakshya 39:670133e7ffd8 919 telemetry[9] = (uint8_t)(moment_ret>>8);
lakshya 39:670133e7ffd8 920 telemetry[10] = (uint8_t)moment_ret;
lakshya 39:670133e7ffd8 921
lakshya 39:670133e7ffd8 922 //FCTN_CONVERT_FLOAT(moment_comm[0],&telemetry[4]); //telemetry[4] - telemetry[7]
lakshya 39:670133e7ffd8 923 //FCTN_CONVERT_FLOAT(moment_comm[1],&telemetry[8]); //telemetry[8] - telemetry[11]
lakshya 39:670133e7ffd8 924 //FCTN_CONVERT_FLOAT(moment_comm[2],&telemetry[12]); //telemetry[12] - telemetry[15]
lakshya 19:79e69017c855 925 // to include commission TR as well
lakshya 39:670133e7ffd8 926 for(uint8_t i=11;i<132;i++)
lakshya 19:79e69017c855 927 {
lakshya 19:79e69017c855 928 telemetry[i]=0x00;
lakshya 19:79e69017c855 929 }
lakshya 19:79e69017c855 930 crc16 = CRC::crc16_gen(telemetry,132);
lakshya 49:61c9f28332ba 931 telemetry[132] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 49:61c9f28332ba 932 telemetry[133] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 933 break;
lakshya 19:79e69017c855 934 }
lakshya 19:79e69017c855 935 case 0xE1:
lakshya 19:79e69017c855 936 {
lakshya 49:61c9f28332ba 937 gpc.printf("HARDWARE_COMSN\r\n");
lakshya 19:79e69017c855 938 //ACK_L234_telemetry
lakshya 39:670133e7ffd8 939 uint8_t SENSOR_NO;
lakshya 20:949d13045431 940
lakshya 20:949d13045431 941 int init1=0;
lakshya 20:949d13045431 942 int init2=0;
lakshya 20:949d13045431 943 int data1=0;
lakshya 20:949d13045431 944 int data2=0;
lakshya 39:670133e7ffd8 945
lakshya 39:670133e7ffd8 946 uint16_t assign_val;
lakshya 19:79e69017c855 947
lakshya 20:949d13045431 948 float PWM_tc[3];
Bragadeesh153 54:d6a45982ace1 949 PWM_tc[0]=(float(tc[4]))/256;
Bragadeesh153 54:d6a45982ace1 950 PWM_tc[1]=(float(tc[5]))/256;
Bragadeesh153 54:d6a45982ace1 951 PWM_tc[2]=(float(tc[6]))/256;
lakshya 20:949d13045431 952
lakshya 20:949d13045431 953 DRV_Z_EN = 1;
lakshya 20:949d13045431 954 DRV_XY_EN = 1;
lakshya 49:61c9f28332ba 955 telemetry[0]=0x78;
lakshya 19:79e69017c855 956 telemetry[1]=tc[0];
lakshya 19:79e69017c855 957 telemetry[2]=ACK_CODE;
lakshya 39:670133e7ffd8 958 telemetry[3] = 0x00;
lakshya 39:670133e7ffd8 959
lakshya 39:670133e7ffd8 960 SENSOR_NO = 0;
lakshya 19:79e69017c855 961
lakshya 20:949d13045431 962 PWM1 = 0;
lakshya 20:949d13045431 963 PWM2 = 0;
lakshya 20:949d13045431 964 PWM3 = 0;
lakshya 20:949d13045431 965
lakshya 20:949d13045431 966 wait_ms(ACS_DEMAG_TIME_DELAY);
lakshya 20:949d13045431 967 ATS2_SW_ENABLE = 1;
lakshya 20:949d13045431 968 wait_ms(5);
Bragadeesh153 52:daa685b0e390 969 ATS1_SW_ENABLE = 1;
lakshya 20:949d13045431 970 wait_ms(5);
lakshya 20:949d13045431 971 //will it lead to causing delay in i2c interrupt
lakshya 20:949d13045431 972 init1 = SENSOR_INIT();
lakshya 20:949d13045431 973 if( init1 == 1)
lakshya 20:949d13045431 974 {
lakshya 20:949d13045431 975 data1 = SENSOR_DATA_ACQ();
lakshya 20:949d13045431 976 }
Bragadeesh153 52:daa685b0e390 977 ATS1_SW_ENABLE = 0;
lakshya 20:949d13045431 978 wait_ms(5);
lakshya 20:949d13045431 979 ATS2_SW_ENABLE = 0;
lakshya 20:949d13045431 980 wait_ms(5);
lakshya 20:949d13045431 981
lakshya 20:949d13045431 982 if(data1 == 0)
lakshya 20:949d13045431 983 {
lakshya 20:949d13045431 984 ATS2_SW_ENABLE = 0;
lakshya 20:949d13045431 985 wait_ms(5);
lakshya 20:949d13045431 986 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0xC0;
lakshya 20:949d13045431 987 }
lakshya 20:949d13045431 988 else if(data1==1)
lakshya 20:949d13045431 989 {
lakshya 20:949d13045431 990 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x10;
lakshya 20:949d13045431 991 }
lakshya 20:949d13045431 992 else if(data1==2)
lakshya 20:949d13045431 993 {
lakshya 20:949d13045431 994 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x20;
lakshya 20:949d13045431 995 }
lakshya 20:949d13045431 996 else if(data1==3)
lakshya 20:949d13045431 997 {
lakshya 20:949d13045431 998 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x30;
lakshya 20:949d13045431 999 }
lakshya 39:670133e7ffd8 1000
lakshya 39:670133e7ffd8 1001 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[0]);
lakshya 39:670133e7ffd8 1002 telemetry[5] = (assign_val>>8);
lakshya 39:670133e7ffd8 1003 telemetry[6] = assign_val;
lakshya 39:670133e7ffd8 1004
lakshya 39:670133e7ffd8 1005 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[1]);
lakshya 39:670133e7ffd8 1006 telemetry[7] = (assign_val>>8);
lakshya 39:670133e7ffd8 1007 telemetry[8] = assign_val;
lakshya 39:670133e7ffd8 1008
lakshya 39:670133e7ffd8 1009 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[2]);
lakshya 39:670133e7ffd8 1010 telemetry[9] = (assign_val>>8);
lakshya 39:670133e7ffd8 1011 telemetry[10] = assign_val;
lakshya 39:670133e7ffd8 1012
lakshya 39:670133e7ffd8 1013 assign_val = float_to_uint16(-5000,5000,actual_data.AngularSpeed_actual[0]);
lakshya 39:670133e7ffd8 1014 telemetry[11] = (assign_val>>8);
lakshya 39:670133e7ffd8 1015 telemetry[12] = assign_val;
lakshya 39:670133e7ffd8 1016
lakshya 39:670133e7ffd8 1017 assign_val = float_to_uint16(-5000,5000,actual_data.AngularSpeed_actual[1]);
lakshya 39:670133e7ffd8 1018 telemetry[13] = (assign_val>>8);
lakshya 39:670133e7ffd8 1019 telemetry[14] = assign_val;
lakshya 39:670133e7ffd8 1020
lakshya 39:670133e7ffd8 1021 assign_val = float_to_uint16(-5000,5000,actual_data.AngularSpeed_actual[2]);
lakshya 39:670133e7ffd8 1022 telemetry[15] = (assign_val>>8);
lakshya 39:670133e7ffd8 1023 telemetry[16] = assign_val;
lakshya 39:670133e7ffd8 1024
lakshya 20:949d13045431 1025 init2 = SENSOR_INIT();
lakshya 20:949d13045431 1026 if( init2 == 1)
lakshya 20:949d13045431 1027 {
lakshya 20:949d13045431 1028 data2 = SENSOR_DATA_ACQ();
lakshya 20:949d13045431 1029 }
lakshya 39:670133e7ffd8 1030 //uint8_t ats_data=1;
lakshya 19:79e69017c855 1031
lakshya 20:949d13045431 1032 if(data2 == 0)
lakshya 20:949d13045431 1033 {
lakshya 20:949d13045431 1034 ATS2_SW_ENABLE = 1;
lakshya 20:949d13045431 1035 wait_ms(5);
lakshya 20:949d13045431 1036 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x0C;
lakshya 39:670133e7ffd8 1037 SENSOR_NO = 0;
lakshya 20:949d13045431 1038 if(data1 == 2)
lakshya 20:949d13045431 1039 {
Bragadeesh153 52:daa685b0e390 1040 ATS1_SW_ENABLE = 1;
lakshya 20:949d13045431 1041 wait_ms(5);
lakshya 20:949d13045431 1042 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x06;
lakshya 39:670133e7ffd8 1043 SENSOR_NO = 1;
lakshya 20:949d13045431 1044 }
lakshya 20:949d13045431 1045 else if(data1 == 3)
lakshya 20:949d13045431 1046 {
Bragadeesh153 52:daa685b0e390 1047 ATS1_SW_ENABLE = 1;
lakshya 20:949d13045431 1048 wait_ms(5);
lakshya 20:949d13045431 1049 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x07;
lakshya 39:670133e7ffd8 1050 SENSOR_NO = 1;
lakshya 20:949d13045431 1051 }
lakshya 20:949d13045431 1052 else if(data1 == 1)
lakshya 20:949d13045431 1053 {
Bragadeesh153 52:daa685b0e390 1054 ATS1_SW_ENABLE = 1;
lakshya 20:949d13045431 1055 wait_ms(5);
lakshya 20:949d13045431 1056 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x05;
lakshya 39:670133e7ffd8 1057 SENSOR_NO = 0;
lakshya 39:670133e7ffd8 1058
lakshya 20:949d13045431 1059 }
lakshya 20:949d13045431 1060
lakshya 20:949d13045431 1061 }
lakshya 20:949d13045431 1062 else if(data2==1)
lakshya 20:949d13045431 1063 {
lakshya 20:949d13045431 1064 if(data1 == 2)
lakshya 20:949d13045431 1065 {
lakshya 20:949d13045431 1066 ATS2_SW_ENABLE = 1;
lakshya 20:949d13045431 1067 wait_ms(5);
Bragadeesh153 52:daa685b0e390 1068 ATS1_SW_ENABLE = 1;
lakshya 20:949d13045431 1069 wait_ms(5);
lakshya 20:949d13045431 1070 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x01;
lakshya 20:949d13045431 1071 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x60;
lakshya 39:670133e7ffd8 1072 SENSOR_NO = 1;
lakshya 20:949d13045431 1073 }
lakshya 20:949d13045431 1074 else if(data1 == 3)
lakshya 20:949d13045431 1075 {
lakshya 20:949d13045431 1076 ATS2_SW_ENABLE = 1;
lakshya 20:949d13045431 1077 wait_ms(5);
Bragadeesh153 52:daa685b0e390 1078 ATS1_SW_ENABLE = 1;
lakshya 20:949d13045431 1079 wait_ms(5);
lakshya 20:949d13045431 1080 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x01;
lakshya 20:949d13045431 1081 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x70;
lakshya 39:670133e7ffd8 1082 SENSOR_NO = 1;
lakshya 20:949d13045431 1083 }
lakshya 20:949d13045431 1084 else
lakshya 20:949d13045431 1085 {
lakshya 20:949d13045431 1086 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x05;
lakshya 39:670133e7ffd8 1087 SENSOR_NO = 0;
lakshya 39:670133e7ffd8 1088 //ats_data = 0;
lakshya 20:949d13045431 1089 }
lakshya 20:949d13045431 1090 }
lakshya 20:949d13045431 1091
lakshya 20:949d13045431 1092 else if(data2==2)
lakshya 20:949d13045431 1093 {
lakshya 20:949d13045431 1094 if(data1 == 3)
lakshya 20:949d13045431 1095 {
lakshya 20:949d13045431 1096 ATS2_SW_ENABLE = 1;
lakshya 20:949d13045431 1097 wait_ms(5);
Bragadeesh153 52:daa685b0e390 1098 ATS1_SW_ENABLE = 1;
lakshya 20:949d13045431 1099 wait_ms(5);
lakshya 20:949d13045431 1100 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x02;
lakshya 20:949d13045431 1101 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x70;
lakshya 39:670133e7ffd8 1102 SENSOR_NO = 1;
lakshya 20:949d13045431 1103 }
lakshya 20:949d13045431 1104 else
lakshya 20:949d13045431 1105 {
lakshya 20:949d13045431 1106 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x06;
lakshya 39:670133e7ffd8 1107 SENSOR_NO = 2;
lakshya 20:949d13045431 1108 }
lakshya 20:949d13045431 1109 }
lakshya 20:949d13045431 1110 else if(data2==3)
lakshya 20:949d13045431 1111 {
lakshya 20:949d13045431 1112 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x07;
lakshya 39:670133e7ffd8 1113 SENSOR_NO = 2;
lakshya 20:949d13045431 1114 }
Bragadeesh153 54:d6a45982ace1 1115
Bragadeesh153 54:d6a45982ace1 1116 SENSOR_NO = 1;
lakshya 39:670133e7ffd8 1117 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[0]);
lakshya 39:670133e7ffd8 1118 telemetry[17] = (assign_val>>8);
lakshya 39:670133e7ffd8 1119 telemetry[18] = assign_val;
lakshya 39:670133e7ffd8 1120
lakshya 39:670133e7ffd8 1121 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[1]);
lakshya 39:670133e7ffd8 1122 telemetry[19] = (assign_val>>8);
lakshya 39:670133e7ffd8 1123 telemetry[20] = assign_val;
lakshya 39:670133e7ffd8 1124
lakshya 39:670133e7ffd8 1125 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[2]);
lakshya 39:670133e7ffd8 1126 telemetry[21] = (assign_val>>8);
lakshya 39:670133e7ffd8 1127 telemetry[22] = assign_val;
lakshya 39:670133e7ffd8 1128
lakshya 39:670133e7ffd8 1129 assign_val = float_to_uint16(-5000,5000,actual_data.AngularSpeed_actual[0]);
lakshya 39:670133e7ffd8 1130 telemetry[23] = (assign_val>>8);
lakshya 39:670133e7ffd8 1131 telemetry[24] = assign_val;
lakshya 39:670133e7ffd8 1132
lakshya 39:670133e7ffd8 1133 assign_val = float_to_uint16(-5000,5000,actual_data.AngularSpeed_actual[1]);
lakshya 39:670133e7ffd8 1134 telemetry[25] = (assign_val>>8);
lakshya 39:670133e7ffd8 1135 telemetry[26] = assign_val;
lakshya 39:670133e7ffd8 1136
lakshya 39:670133e7ffd8 1137 assign_val = float_to_uint16(-5000,5000,actual_data.AngularSpeed_actual[2]);
lakshya 39:670133e7ffd8 1138 telemetry[27] = (assign_val>>8);
lakshya 39:670133e7ffd8 1139 telemetry[28] = assign_val;
lakshya 39:670133e7ffd8 1140
lakshya 39:670133e7ffd8 1141 telemetry[4] = ACS_ATS_STATUS;
lakshya 39:670133e7ffd8 1142
lakshya 19:79e69017c855 1143
lakshya 20:949d13045431 1144 SelectLineb3 =0;
lakshya 20:949d13045431 1145 SelectLineb2 =1;
lakshya 20:949d13045431 1146 SelectLineb1 =0;
lakshya 20:949d13045431 1147 SelectLineb0 =1;
lakshya 20:949d13045431 1148 int resistance;
lakshya 20:949d13045431 1149 PWM1 = PWM_tc[0];
lakshya 20:949d13045431 1150 PWM2 = 0;
lakshya 20:949d13045431 1151 PWM3 = 0;
lakshya 20:949d13045431 1152
lakshya 20:949d13045431 1153 wait_ms(ACS_DEMAG_TIME_DELAY);
lakshya 39:670133e7ffd8 1154 if(SENSOR_NO != 0)
lakshya 20:949d13045431 1155 SENSOR_DATA_ACQ();
lakshya 20:949d13045431 1156 actual_data.current_actual[5]=CurrentInput.read();
lakshya 20:949d13045431 1157 actual_data.current_actual[5]= actual_data.current_actual[5]*3.3/(50*rsens);
lakshya 20:949d13045431 1158
lakshya 20:949d13045431 1159 resistance=24000*actual_data.current_actual[5]/(3.3-actual_data.current_actual[5]);
lakshya 20:949d13045431 1160 if(actual_data.current_actual[5]>1.47)
lakshya 20:949d13045431 1161 {
lakshya 20:949d13045431 1162 actual_data.current_actual[5]=3694/log(24.032242*resistance);
lakshya 20:949d13045431 1163 }
lakshya 20:949d13045431 1164 else
lakshya 20:949d13045431 1165 {
lakshya 20:949d13045431 1166 actual_data.current_actual[5]=3365.4/log(7.60573*resistance);
lakshya 20:949d13045431 1167 }
lakshya 20:949d13045431 1168
lakshya 20:949d13045431 1169 //to be edited final tele
lakshya 39:670133e7ffd8 1170 //uint16_t assign_val;
lakshya 20:949d13045431 1171 assign_val = float_to_uint16(-100,100,actual_data.current_actual[5]);//assuming max min values for current to be diss
lakshya 20:949d13045431 1172 telemetry[29] = (assign_val>>8);
lakshya 20:949d13045431 1173 telemetry[30] = assign_val;
lakshya 20:949d13045431 1174
lakshya 20:949d13045431 1175 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[0]);
lakshya 20:949d13045431 1176 telemetry[31] = (assign_val>>8);
lakshya 20:949d13045431 1177 telemetry[32] = assign_val;
lakshya 20:949d13045431 1178
lakshya 20:949d13045431 1179 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[1]);
lakshya 20:949d13045431 1180 telemetry[33] = (assign_val>>8);
lakshya 20:949d13045431 1181 telemetry[34] = assign_val;
lakshya 20:949d13045431 1182
lakshya 20:949d13045431 1183 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[2]);
lakshya 20:949d13045431 1184 telemetry[35] = (assign_val>>8);
lakshya 20:949d13045431 1185 telemetry[36] = assign_val;
lakshya 20:949d13045431 1186
lakshya 20:949d13045431 1187 PWM1 = 0;
lakshya 20:949d13045431 1188 PWM2 = PWM_tc[1];
lakshya 20:949d13045431 1189 PWM3 = 0;
lakshya 20:949d13045431 1190
lakshya 20:949d13045431 1191 wait_ms(ACS_DEMAG_TIME_DELAY);
lakshya 20:949d13045431 1192
lakshya 39:670133e7ffd8 1193 if(SENSOR_NO != 0)
lakshya 20:949d13045431 1194 SENSOR_DATA_ACQ();
lakshya 20:949d13045431 1195 actual_data.current_actual[5]=CurrentInput.read();
lakshya 20:949d13045431 1196 actual_data.current_actual[5]= actual_data.current_actual[5]*3.3/(50*rsens);
lakshya 20:949d13045431 1197
lakshya 20:949d13045431 1198
lakshya 20:949d13045431 1199 resistance=24000*actual_data.current_actual[5]/(3.3-actual_data.current_actual[5]);
lakshya 20:949d13045431 1200 if(actual_data.current_actual[5]>1.47)
lakshya 20:949d13045431 1201 {
lakshya 20:949d13045431 1202 actual_data.current_actual[5]=3694/log(24.032242*resistance);
lakshya 20:949d13045431 1203 }
lakshya 20:949d13045431 1204 else
lakshya 20:949d13045431 1205 {
lakshya 20:949d13045431 1206 actual_data.current_actual[5]=3365.4/log(7.60573*resistance);
lakshya 20:949d13045431 1207 }
lakshya 39:670133e7ffd8 1208
lakshya 39:670133e7ffd8 1209 assign_val = float_to_uint16(-100,100,actual_data.current_actual[5]);//assuming max min values for current to be diss
lakshya 39:670133e7ffd8 1210 telemetry[37] = (assign_val>>8);
lakshya 39:670133e7ffd8 1211 telemetry[38] = assign_val;
lakshya 39:670133e7ffd8 1212
lakshya 39:670133e7ffd8 1213 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[0]);
lakshya 39:670133e7ffd8 1214 telemetry[39] = (assign_val>>8);
lakshya 39:670133e7ffd8 1215 telemetry[40] = assign_val;
lakshya 39:670133e7ffd8 1216
lakshya 39:670133e7ffd8 1217 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[1]);
lakshya 39:670133e7ffd8 1218 telemetry[41] = (assign_val>>8);
lakshya 39:670133e7ffd8 1219 telemetry[42] = assign_val;
lakshya 39:670133e7ffd8 1220
lakshya 39:670133e7ffd8 1221 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[2]);
lakshya 39:670133e7ffd8 1222 telemetry[43] = (assign_val>>8);
lakshya 39:670133e7ffd8 1223 telemetry[44] = assign_val;
lakshya 20:949d13045431 1224
lakshya 20:949d13045431 1225 PWM1 = 0;
lakshya 20:949d13045431 1226 PWM2 = 0;
lakshya 20:949d13045431 1227 PWM3 = PWM_tc[2];
lakshya 20:949d13045431 1228
lakshya 20:949d13045431 1229 wait_ms(ACS_DEMAG_TIME_DELAY);
lakshya 20:949d13045431 1230
lakshya 39:670133e7ffd8 1231 if(SENSOR_NO != 0)
lakshya 20:949d13045431 1232 SENSOR_DATA_ACQ();
lakshya 20:949d13045431 1233 actual_data.current_actual[5]=CurrentInput.read();
lakshya 20:949d13045431 1234 actual_data.current_actual[5]= actual_data.current_actual[5]*3.3/(50*rsens);
lakshya 20:949d13045431 1235
lakshya 20:949d13045431 1236 resistance=24000*actual_data.current_actual[5]/(3.3-actual_data.current_actual[5]);
lakshya 20:949d13045431 1237 if(actual_data.current_actual[5]>1.47)
lakshya 20:949d13045431 1238 {
lakshya 20:949d13045431 1239 actual_data.current_actual[5]=3694/log(24.032242*resistance);
lakshya 20:949d13045431 1240 }
lakshya 20:949d13045431 1241 else
lakshya 20:949d13045431 1242 {
lakshya 20:949d13045431 1243 actual_data.current_actual[5]=3365.4/log(7.60573*resistance);
lakshya 20:949d13045431 1244 }
lakshya 39:670133e7ffd8 1245 assign_val = float_to_uint16(-100,100,actual_data.current_actual[5]);//assuming max min values for current to be diss
lakshya 39:670133e7ffd8 1246 telemetry[45] = (assign_val>>8);
lakshya 39:670133e7ffd8 1247 telemetry[46] = assign_val;
lakshya 39:670133e7ffd8 1248
lakshya 39:670133e7ffd8 1249 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[0]);
lakshya 39:670133e7ffd8 1250 telemetry[47] = (assign_val>>8);
lakshya 39:670133e7ffd8 1251 telemetry[48] = assign_val;
lakshya 20:949d13045431 1252
lakshya 39:670133e7ffd8 1253 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[1]);
lakshya 39:670133e7ffd8 1254 telemetry[49] = (assign_val>>8);
lakshya 39:670133e7ffd8 1255 telemetry[50] = assign_val;
lakshya 39:670133e7ffd8 1256
lakshya 39:670133e7ffd8 1257 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[2]);
lakshya 39:670133e7ffd8 1258 telemetry[51] = (assign_val>>8);
lakshya 39:670133e7ffd8 1259 telemetry[52] = assign_val;
lakshya 39:670133e7ffd8 1260
lakshya 20:949d13045431 1261 PWM1 = 0;
lakshya 20:949d13045431 1262 PWM2 = 0;
lakshya 20:949d13045431 1263 PWM3 = 0;
lakshya 20:949d13045431 1264
lakshya 20:949d13045431 1265 wait_ms(ACS_DEMAG_TIME_DELAY);
lakshya 20:949d13045431 1266
lakshya 39:670133e7ffd8 1267 if(SENSOR_NO != 0)
lakshya 20:949d13045431 1268 SENSOR_DATA_ACQ();
lakshya 20:949d13045431 1269 actual_data.current_actual[5]=CurrentInput.read();
lakshya 20:949d13045431 1270 actual_data.current_actual[5]= actual_data.current_actual[5]*3.3/(50*rsens);
lakshya 20:949d13045431 1271
lakshya 20:949d13045431 1272 resistance=24000*actual_data.current_actual[5]/(3.3-actual_data.current_actual[5]);
lakshya 20:949d13045431 1273 if(actual_data.current_actual[5]>1.47)
lakshya 20:949d13045431 1274 {
lakshya 20:949d13045431 1275 actual_data.current_actual[5]=3694/log(24.032242*resistance);
lakshya 20:949d13045431 1276 }
lakshya 20:949d13045431 1277 else
lakshya 20:949d13045431 1278 {
lakshya 20:949d13045431 1279 actual_data.current_actual[5]=3365.4/log(7.60573*resistance);
lakshya 20:949d13045431 1280 }
lakshya 39:670133e7ffd8 1281
lakshya 39:670133e7ffd8 1282 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[0]);
lakshya 39:670133e7ffd8 1283 telemetry[53] = (assign_val>>8);
lakshya 39:670133e7ffd8 1284 telemetry[54] = assign_val;
lakshya 39:670133e7ffd8 1285
lakshya 39:670133e7ffd8 1286 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[1]);
lakshya 39:670133e7ffd8 1287 telemetry[55] = (assign_val>>8);
lakshya 39:670133e7ffd8 1288 telemetry[56] = assign_val;
lakshya 39:670133e7ffd8 1289
lakshya 39:670133e7ffd8 1290 assign_val = float_to_uint16(-1000,1000,actual_data.Bvalue_actual[2]);
lakshya 39:670133e7ffd8 1291 telemetry[57] = (assign_val>>8);
lakshya 39:670133e7ffd8 1292 telemetry[58] = assign_val;
lakshya 20:949d13045431 1293
lakshya 20:949d13045431 1294 // for(int i=0; i<12; i++)
lakshya 20:949d13045431 1295 // FCTN_CONVERT_FLOAT(actual_data.current_actual[i],&telemetry[16 + (i*4)]);
lakshya 20:949d13045431 1296
lakshya 20:949d13045431 1297 // FCTN_ATS_DATA_ACQ(); //get data
lakshya 19:79e69017c855 1298
lakshya 20:949d13045431 1299 // to include commission TR as well
lakshya 39:670133e7ffd8 1300
lakshya 49:61c9f28332ba 1301 telemetry[59] = SENSOR_NO;
lakshya 39:670133e7ffd8 1302
lakshya 39:670133e7ffd8 1303 for(uint8_t i=60;i<132;i++)
lakshya 19:79e69017c855 1304 {
lakshya 20:949d13045431 1305 telemetry[i]=0x00;
lakshya 19:79e69017c855 1306 }
lakshya 19:79e69017c855 1307
lakshya 19:79e69017c855 1308 crc16 = CRC::crc16_gen(telemetry,132);
lakshya 49:61c9f28332ba 1309 telemetry[132] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 49:61c9f28332ba 1310 telemetry[133] = (uint8_t)(crc16&0x00FF);
Bragadeesh153 56:32b1fb074138 1311
Bragadeesh153 56:32b1fb074138 1312 if(data1 == 0)
Bragadeesh153 56:32b1fb074138 1313 {
Bragadeesh153 56:32b1fb074138 1314 ATS1_SW_ENABLE = 0;
Bragadeesh153 56:32b1fb074138 1315 //wait_ms(5);
Bragadeesh153 56:32b1fb074138 1316 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0xC0;
Bragadeesh153 56:32b1fb074138 1317 }
Bragadeesh153 56:32b1fb074138 1318 else if(data1==1)
Bragadeesh153 56:32b1fb074138 1319 {
Bragadeesh153 56:32b1fb074138 1320 ATS1_SW_ENABLE = 1;
Bragadeesh153 56:32b1fb074138 1321 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x40;
Bragadeesh153 56:32b1fb074138 1322 }
Bragadeesh153 56:32b1fb074138 1323 else if(data1==2)
Bragadeesh153 56:32b1fb074138 1324 {
Bragadeesh153 56:32b1fb074138 1325 ATS1_SW_ENABLE = 1;
Bragadeesh153 56:32b1fb074138 1326 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x60;
Bragadeesh153 56:32b1fb074138 1327 }
Bragadeesh153 56:32b1fb074138 1328 else if(data1==3)
Bragadeesh153 56:32b1fb074138 1329 {
Bragadeesh153 56:32b1fb074138 1330 ATS1_SW_ENABLE = 1;
Bragadeesh153 56:32b1fb074138 1331 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x70;
Bragadeesh153 56:32b1fb074138 1332 }
Bragadeesh153 56:32b1fb074138 1333 printf("Exited HW\r\n");
lakshya 19:79e69017c855 1334 break;
lakshya 19:79e69017c855 1335 }
lakshya 19:79e69017c855 1336 case 0xE2:
lakshya 19:79e69017c855 1337 {
lakshya 20:949d13045431 1338 uint8_t BCN_SPND_STATE;
lakshya 20:949d13045431 1339 BCN_SPND_STATE=tc[4];
lakshya 20:949d13045431 1340 if(BCN_SPND_STATE==0x00)
lakshya 19:79e69017c855 1341 {
lakshya 20:949d13045431 1342 BCN_SPND_TX=0;
lakshya 19:79e69017c855 1343 //stop BCN_STANDBY_TIMER.stop();//create
lakshya 19:79e69017c855 1344 telemetry[2]=0xA0;
lakshya 19:79e69017c855 1345 }
lakshya 20:949d13045431 1346 else if(BCN_SPND_STATE==0x01)
lakshya 19:79e69017c855 1347 {
lakshya 33:76f2b8735501 1348 FCTN_BCN_SPND_TX();
lakshya 68:a5d2b8dc6b9e 1349 //BCN_SW =1;
lakshya 19:79e69017c855 1350 //stop BCN_STANDBY_TIMER.start();//create
lakshya 19:79e69017c855 1351 if(BCN_TX_MAIN_STATUS==0)
lakshya 19:79e69017c855 1352 {
lakshya 19:79e69017c855 1353 telemetry[2]=0xA0;
lakshya 19:79e69017c855 1354 }
lakshya 19:79e69017c855 1355 else if(BCN_TX_MAIN_STATUS==1)
lakshya 19:79e69017c855 1356 {
lakshya 19:79e69017c855 1357 telemetry[2]=0xC0;
lakshya 19:79e69017c855 1358 }
lakshya 19:79e69017c855 1359 }
lakshya 19:79e69017c855 1360 else
lakshya 19:79e69017c855 1361 {
lakshya 19:79e69017c855 1362 telemetry[2]=0x02;
lakshya 19:79e69017c855 1363 }
lakshya 19:79e69017c855 1364 //ACK_L234_telemetry
lakshya 19:79e69017c855 1365 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1366 telemetry[1]=tc[0];
lakshya 19:79e69017c855 1367 //ack_code taken care above
lakshya 19:79e69017c855 1368 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1369 {
lakshya 19:79e69017c855 1370 telemetry[i]=0x00;
lakshya 19:79e69017c855 1371 }
lakshya 19:79e69017c855 1372 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1373 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1374 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1375 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1376 {
lakshya 19:79e69017c855 1377 telemetry[i]=0x00;
lakshya 19:79e69017c855 1378 }
lakshya 19:79e69017c855 1379 break;
lakshya 19:79e69017c855 1380 }
lakshya 20:949d13045431 1381 case 0xE3:
lakshya 20:949d13045431 1382 {
lakshya 69:c0dd13285d80 1383 gpc.printf("\n\n\rE3 batter heater\n");
lakshya 69:c0dd13285d80 1384
lakshya 20:949d13045431 1385 if(EPS_BTRY_HTR_AUTO != 0)
lakshya 20:949d13045431 1386 telemetry[2]=0x87;
lakshya 20:949d13045431 1387 else
lakshya 20:949d13045431 1388 {
lakshya 20:949d13045431 1389 HTR_CYCLE_COUNTS = tc[4];
lakshya 20:949d13045431 1390 if(HTR_CYCLE_COUNTS==0x00)
lakshya 20:949d13045431 1391 {
lakshya 33:76f2b8735501 1392 BTRY_HTR_ENABLE = 0;
lakshya 20:949d13045431 1393 HTR_CYCLE->stop();
lakshya 20:949d13045431 1394 //clear EPS_BTRY_HTR is it
lakshya 20:949d13045431 1395 EPS_BTRY_HTR_AUTO = 0;
lakshya 69:c0dd13285d80 1396 gpc.printf("\n\n\rheater OFF\n");
lakshya 20:949d13045431 1397
lakshya 20:949d13045431 1398 }
lakshya 20:949d13045431 1399 else
lakshya 20:949d13045431 1400 {
lakshya 69:c0dd13285d80 1401 gpc.printf("\n\n\rheater ON\n");
lakshya 69:c0dd13285d80 1402
lakshya 20:949d13045431 1403 if(HTR_CYCLE_COUNTS != 0xFF)
lakshya 20:949d13045431 1404 {
lakshya 20:949d13045431 1405 HTR_CYCLE_COUNTER = 0;
lakshya 20:949d13045431 1406 }
lakshya 20:949d13045431 1407 //uint8_t HTR_CYCLE_START_DLY = tc[5];
lakshya 20:949d13045431 1408 HTR_CYCLE_START_DLY = tc[5];
lakshya 20:949d13045431 1409 HTR_ON_DURATION = tc[6];
lakshya 20:949d13045431 1410
lakshya 20:949d13045431 1411 //make it uint16_t
lakshya 20:949d13045431 1412 HTR_CYCLE_PERIOD = (tc[7]<<8) | tc[8];
lakshya 20:949d13045431 1413 //start BTRY_HTR_DLY_TIMER;
lakshya 20:949d13045431 1414 }
lakshya 20:949d13045431 1415 telemetry[2]=0xA0;
lakshya 20:949d13045431 1416 }
lakshya 20:949d13045431 1417 //ACK_L234_telemetry
lakshya 20:949d13045431 1418 telemetry[0]=0xB0;
lakshya 20:949d13045431 1419 telemetry[1]=tc[0];
lakshya 20:949d13045431 1420 //ACK code taken care of
lakshya 20:949d13045431 1421 for(uint8_t i=3;i<11;i++)
lakshya 20:949d13045431 1422 {
lakshya 20:949d13045431 1423 telemetry[i]=0x00;
lakshya 20:949d13045431 1424 }
lakshya 20:949d13045431 1425 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 20:949d13045431 1426 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 20:949d13045431 1427 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 20:949d13045431 1428 for(uint8_t i=13;i<134;i++)
lakshya 20:949d13045431 1429 {
lakshya 20:949d13045431 1430 telemetry[i]=0x00;
lakshya 20:949d13045431 1431 }
lakshya 20:949d13045431 1432
lakshya 20:949d13045431 1433 break;
lakshya 20:949d13045431 1434 }
lakshya 19:79e69017c855 1435 case 0x01:
lakshya 69:c0dd13285d80 1436 { if(BAE_STANDBY==0x00)
lakshya 19:79e69017c855 1437 {
lakshya 69:c0dd13285d80 1438 gpc.printf("\n\n\rRun P_EPS_INIT\n");
lakshya 19:79e69017c855 1439 FCTN_EPS_INIT();
lakshya 19:79e69017c855 1440 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1441 }
lakshya 19:79e69017c855 1442 else
lakshya 19:79e69017c855 1443 {
lakshya 69:c0dd13285d80 1444 gpc.printf("\n\runable to Run P_EPS_INIT as BAE_STATUS not 000 ");;
lakshya 19:79e69017c855 1445 telemetry[2]=0x87;
lakshya 19:79e69017c855 1446 }
lakshya 19:79e69017c855 1447
lakshya 19:79e69017c855 1448 //ACK_L234_telemetry
lakshya 19:79e69017c855 1449 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1450 telemetry[1]=tc[0];
lakshya 19:79e69017c855 1451 //ACK code taken care of
lakshya 19:79e69017c855 1452 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1453 {
lakshya 19:79e69017c855 1454 telemetry[i]=0x00;
lakshya 19:79e69017c855 1455 }
lakshya 19:79e69017c855 1456 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1457 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1458 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1459 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1460 {
lakshya 19:79e69017c855 1461 telemetry[i]=0x00;
lakshya 19:79e69017c855 1462 }
lakshya 19:79e69017c855 1463
lakshya 19:79e69017c855 1464 break;
lakshya 19:79e69017c855 1465 }
lakshya 19:79e69017c855 1466 case 0x02:
lakshya 19:79e69017c855 1467 {
lakshya 69:c0dd13285d80 1468 if(BAE_STANDBY==0x00)
lakshya 19:79e69017c855 1469 {
lakshya 69:c0dd13285d80 1470 gpc.printf("\n\n\rRun P_EPS_MAIN\n");
lakshya 19:79e69017c855 1471 F_EPS();
lakshya 19:79e69017c855 1472 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1473 }
lakshya 19:79e69017c855 1474 else
lakshya 19:79e69017c855 1475 {
lakshya 69:c0dd13285d80 1476 gpc.printf("\n\runable to Run P_EPS_MAIN as BAE_STATUS not 000 ");;
lakshya 19:79e69017c855 1477 telemetry[2]=0x87;
lakshya 19:79e69017c855 1478 }
lakshya 19:79e69017c855 1479
lakshya 19:79e69017c855 1480 //ACK_L234_telemetry
lakshya 19:79e69017c855 1481 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1482 telemetry[1]=tc[0];
lakshya 19:79e69017c855 1483 //ACK code taken care of
lakshya 19:79e69017c855 1484 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1485 {
lakshya 19:79e69017c855 1486 telemetry[i]=0x00;
lakshya 19:79e69017c855 1487 }
lakshya 19:79e69017c855 1488 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1489 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1490 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1491 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1492 {
lakshya 19:79e69017c855 1493 telemetry[i]=0x00;
lakshya 19:79e69017c855 1494 }
lakshya 19:79e69017c855 1495 break;
lakshya 19:79e69017c855 1496 }
lakshya 19:79e69017c855 1497 case 0x03:
lakshya 19:79e69017c855 1498 {
lakshya 69:c0dd13285d80 1499 if(BAE_STANDBY==0x00)
lakshya 19:79e69017c855 1500 {
lakshya 69:c0dd13285d80 1501 gpc.printf("\n\n\rRun P_ACS_INIT\n");
lakshya 19:79e69017c855 1502 FCTN_ACS_INIT();
lakshya 19:79e69017c855 1503 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1504 }
lakshya 19:79e69017c855 1505 else
lakshya 19:79e69017c855 1506 {
lakshya 69:c0dd13285d80 1507 gpc.printf("\n\runable to Run P_ACS_INIT as BAE_STATUS not 000 ");;
lakshya 19:79e69017c855 1508 telemetry[2]=0x87;
lakshya 19:79e69017c855 1509 }
lakshya 19:79e69017c855 1510
lakshya 19:79e69017c855 1511 //ACK_L234_telemetry
lakshya 19:79e69017c855 1512 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1513 telemetry[1]=tc[0];
lakshya 19:79e69017c855 1514 //ACK CODE TAKEN CARE OF
lakshya 19:79e69017c855 1515 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1516 {
lakshya 19:79e69017c855 1517 telemetry[i]=0x00;
lakshya 19:79e69017c855 1518 }
lakshya 19:79e69017c855 1519 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1520 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1521 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1522 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1523 {
lakshya 19:79e69017c855 1524 telemetry[i]=0x00;
lakshya 19:79e69017c855 1525 }
lakshya 19:79e69017c855 1526 break;
lakshya 19:79e69017c855 1527 }
lakshya 19:79e69017c855 1528 case 0x05:
lakshya 19:79e69017c855 1529 {
lakshya 69:c0dd13285d80 1530 if(BAE_STANDBY==0x00)
lakshya 19:79e69017c855 1531 {
lakshya 69:c0dd13285d80 1532 gpc.printf("\n\n\rRun P_ACS_MAIN\n");
lakshya 19:79e69017c855 1533 F_ACS();
lakshya 19:79e69017c855 1534 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1535 }
lakshya 19:79e69017c855 1536 else
lakshya 19:79e69017c855 1537 {
lakshya 69:c0dd13285d80 1538 gpc.printf("\n\runable to Run P_ACS_MAIN as BAE_STATUS not 000 ");;
lakshya 19:79e69017c855 1539 telemetry[2]=0x87;
lakshya 19:79e69017c855 1540 }
lakshya 19:79e69017c855 1541
lakshya 19:79e69017c855 1542 //ACK_L234_TM
lakshya 19:79e69017c855 1543 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1544 telemetry[1]=tc[0];
lakshya 19:79e69017c855 1545 //ACK CODE TAKEN CARE OF
lakshya 19:79e69017c855 1546 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1547 {
lakshya 19:79e69017c855 1548 telemetry[i]=0x00;
lakshya 19:79e69017c855 1549 }
lakshya 19:79e69017c855 1550
lakshya 19:79e69017c855 1551 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1552 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1553 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1554 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1555 {
lakshya 19:79e69017c855 1556 telemetry[i]=0x00;
lakshya 19:79e69017c855 1557 }
lakshya 19:79e69017c855 1558 break;
lakshya 19:79e69017c855 1559 }
lakshya 19:79e69017c855 1560 case 0x06:
lakshya 19:79e69017c855 1561 {
lakshya 69:c0dd13285d80 1562 if(BAE_STANDBY==0x00)
lakshya 19:79e69017c855 1563 {
lakshya 69:c0dd13285d80 1564 gpc.printf("\n\n\rRun P_BCN_INIT\n");
lakshya 69:c0dd13285d80 1565 // F_BCN(); why was this written?
lakshya 69:c0dd13285d80 1566
lakshya 69:c0dd13285d80 1567 FCTN_BCN_INIT(); // does this makes sense??
lakshya 19:79e69017c855 1568 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1569 }
lakshya 19:79e69017c855 1570 else
lakshya 19:79e69017c855 1571 {
lakshya 69:c0dd13285d80 1572 gpc.printf("\n\runable to Run P_BCN_INIT as BAE_STATUS not 000 ");;
lakshya 19:79e69017c855 1573 telemetry[2]=0x87;
lakshya 19:79e69017c855 1574 }
lakshya 19:79e69017c855 1575
lakshya 19:79e69017c855 1576 //ACK_L234_TM
lakshya 19:79e69017c855 1577 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1578 telemetry[1]=tc[0];
lakshya 19:79e69017c855 1579 //ACK CODE TAKEN CARE OF
lakshya 19:79e69017c855 1580 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1581 {
lakshya 19:79e69017c855 1582 telemetry[i]=0x00;
lakshya 19:79e69017c855 1583 }
lakshya 19:79e69017c855 1584 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1585 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1586 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1587 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1588 {
lakshya 19:79e69017c855 1589 telemetry[i]=0x00;
lakshya 19:79e69017c855 1590 }
lakshya 19:79e69017c855 1591 break;
lakshya 19:79e69017c855 1592 }
lakshya 19:79e69017c855 1593 case 0x07:
lakshya 19:79e69017c855 1594 {
lakshya 69:c0dd13285d80 1595 if(BAE_STANDBY==0x00)
lakshya 19:79e69017c855 1596 {
lakshya 69:c0dd13285d80 1597 gpc.printf("\n\n\rRun P_BCN_TX_MAIN\n");
lakshya 19:79e69017c855 1598 FCTN_BCN_TX_MAIN();//correct function check once
lakshya 19:79e69017c855 1599 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1600 }
lakshya 19:79e69017c855 1601 else
lakshya 19:79e69017c855 1602 {
lakshya 69:c0dd13285d80 1603 gpc.printf("\n\runable to Run P_BCN_TX_MAIN as BAE_STATUS not 000 ");;
lakshya 19:79e69017c855 1604 telemetry[2]=0x87;
lakshya 19:79e69017c855 1605 }
lakshya 19:79e69017c855 1606
lakshya 19:79e69017c855 1607 //ACK_L234_TM
lakshya 19:79e69017c855 1608 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1609 telemetry[1]=tc[0];
lakshya 19:79e69017c855 1610 //ACK CODE TAKEN CARE OF
lakshya 19:79e69017c855 1611 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1612 {
lakshya 19:79e69017c855 1613 telemetry[i]=0x00;
lakshya 19:79e69017c855 1614 }
lakshya 19:79e69017c855 1615 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1616 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1617 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1618 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1619 {
lakshya 19:79e69017c855 1620 telemetry[i]=0x00;
lakshya 19:79e69017c855 1621 }
lakshya 19:79e69017c855 1622 break;
lakshya 19:79e69017c855 1623 }
lakshya 19:79e69017c855 1624 case 0x11:
lakshya 19:79e69017c855 1625 {
lakshya 69:c0dd13285d80 1626 gpc.printf("\n\n\rSW_ON_ACS_ATS1_SW_ENABLE\n");
lakshya 19:79e69017c855 1627 //ACK_L234_TM
lakshya 19:79e69017c855 1628 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1629 telemetry[1]=tc[0];
lakshya 19:79e69017c855 1630 //____________________________________________************************************
lakshya 19:79e69017c855 1631 /*
lakshya 19:79e69017c855 1632 ATS PIN OR STATUS YET TO BE DECIDED. DECIDED THAT IT IS PIN TC CAN SWITCH ON/OFF THE SENSOR
lakshya 19:79e69017c855 1633 */
Bragadeesh153 74:3fec9935ff1f 1634 ATS2_SW_ENABLE = 0; // making sure we switch off the other
lakshya 39:670133e7ffd8 1635 //ACS_ATS_STATUS = (ACS_ATS_STATUS & 0xF3) | 0x0C ;
lakshya 39:670133e7ffd8 1636 ACS_ATS_STATUS = (ACS_ATS_STATUS & 0xF0) | 0x0C ;
lakshya 69:c0dd13285d80 1637 ATS1_SW_ENABLE = 1; // what should the signal be for unabling 0 or 1
lakshya 39:670133e7ffd8 1638 //ACS_ATS_STATUS = (ACS_ATS_STATUS & 0x3F);
lakshya 69:c0dd13285d80 1639 ACS_ATS_STATUS = (ACS_ATS_STATUS & 0x0F);// state now 00|0x40; //changed device status
lakshya 19:79e69017c855 1640 telemetry[2]=ACK_CODE;
lakshya 69:c0dd13285d80 1641
lakshya 69:c0dd13285d80 1642 /*update in flash here*/
lakshya 69:c0dd13285d80 1643 uint32_t FLASH_DATA;
lakshya 69:c0dd13285d80 1644 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(0);
lakshya 69:c0dd13285d80 1645 FLASH_DATA = (FLASH_DATA & 0x3FFFFFFF);
lakshya 69:c0dd13285d80 1646 FCTN_BAE_WR_FLASH(0,FLASH_DATA);
lakshya 69:c0dd13285d80 1647
lakshya 69:c0dd13285d80 1648
lakshya 19:79e69017c855 1649 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1650 {
lakshya 19:79e69017c855 1651 telemetry[i]=0x00;
lakshya 19:79e69017c855 1652 }
lakshya 19:79e69017c855 1653 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1654 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1655 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1656 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1657 {
lakshya 19:79e69017c855 1658 telemetry[i]=0x00;
lakshya 19:79e69017c855 1659 }
lakshya 19:79e69017c855 1660 break;
lakshya 19:79e69017c855 1661 }
lakshya 19:79e69017c855 1662 case 0x12:
lakshya 19:79e69017c855 1663 {
lakshya 49:61c9f28332ba 1664 gpc.printf("\n\rSW_ON_ACS_ATS2_SW_ENABLE");
lakshya 19:79e69017c855 1665 //ACK_L234_TM
lakshya 19:79e69017c855 1666 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1667 telemetry[1]=tc[0];
Bragadeesh153 52:daa685b0e390 1668 ATS1_SW_ENABLE = 0; //make sure u switch off the other
lakshya 39:670133e7ffd8 1669 ACS_ATS_STATUS = (ACS_ATS_STATUS & 0x0F) | 0xC0 ;
Bragadeesh153 74:3fec9935ff1f 1670 ATS2_SW_ENABLE = 1;
lakshya 69:c0dd13285d80 1671 ACS_ATS_STATUS = (ACS_ATS_STATUS & 0xF0);//|0x04; changed here
lakshya 69:c0dd13285d80 1672
lakshya 69:c0dd13285d80 1673 /*update in flash here*/
lakshya 69:c0dd13285d80 1674 uint32_t FLASH_DATA;
lakshya 69:c0dd13285d80 1675 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(0);
lakshya 69:c0dd13285d80 1676 FLASH_DATA = (FLASH_DATA & 0xF3FFFFFF);
lakshya 69:c0dd13285d80 1677 FCTN_BAE_WR_FLASH(0,FLASH_DATA);
lakshya 69:c0dd13285d80 1678
lakshya 69:c0dd13285d80 1679
lakshya 19:79e69017c855 1680 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1681 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1682 {
lakshya 19:79e69017c855 1683 telemetry[i]=0x00;
lakshya 19:79e69017c855 1684 }
lakshya 19:79e69017c855 1685 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1686 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1687 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1688 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1689 {
lakshya 19:79e69017c855 1690 telemetry[i]=0x00;
lakshya 19:79e69017c855 1691 }
lakshya 19:79e69017c855 1692 break;
lakshya 19:79e69017c855 1693 }
lakshya 19:79e69017c855 1694 case 0x13:
lakshya 19:79e69017c855 1695 {
lakshya 69:c0dd13285d80 1696 gpc.printf("\n\n\rSW_ON_ACS_TR_XY_ENABLE\n");
lakshya 19:79e69017c855 1697 //ACK_L234_TM
lakshya 19:79e69017c855 1698 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1699 telemetry[1]=tc[0];
lakshya 49:61c9f28332ba 1700 DRV_XY_EN = 1;//1 SWITCH enable here
Bragadeesh153 52:daa685b0e390 1701 ACS_TR_XY_ENABLE = 1;
lakshya 19:79e69017c855 1702 ACS_TR_XY_SW_STATUS=0x01;
lakshya 69:c0dd13285d80 1703
lakshya 69:c0dd13285d80 1704 /*update in flash here*/
lakshya 69:c0dd13285d80 1705 uint32_t FLASH_DATA;
lakshya 69:c0dd13285d80 1706 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(0);
lakshya 69:c0dd13285d80 1707 FLASH_DATA = ((FLASH_DATA & 0xFF3FFFFF) | 0x00400000 ) ;
lakshya 69:c0dd13285d80 1708 FCTN_BAE_WR_FLASH(0,FLASH_DATA);
lakshya 69:c0dd13285d80 1709
lakshya 69:c0dd13285d80 1710
lakshya 19:79e69017c855 1711 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1712 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1713 {
lakshya 19:79e69017c855 1714 telemetry[i]=0x00;
lakshya 19:79e69017c855 1715 }
lakshya 19:79e69017c855 1716 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1717 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1718 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1719 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1720 {
lakshya 19:79e69017c855 1721 telemetry[i]=0x00;
lakshya 19:79e69017c855 1722 }
lakshya 19:79e69017c855 1723 break;
lakshya 19:79e69017c855 1724 }
lakshya 19:79e69017c855 1725 case 0x14:
lakshya 19:79e69017c855 1726 {
lakshya 69:c0dd13285d80 1727 gpc.printf("\n\n\rSW_ON_ACS_TR_Z_ENABLE\n");
lakshya 19:79e69017c855 1728 //ACK_L234_TM
lakshya 19:79e69017c855 1729 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1730 telemetry[1]=tc[0];
lakshya 49:61c9f28332ba 1731 DRV_Z_EN = 1;
Bragadeesh153 52:daa685b0e390 1732 ACS_TR_Z_ENABLE = 1;
lakshya 19:79e69017c855 1733 ACS_TR_Z_SW_STATUS=0x01;
lakshya 69:c0dd13285d80 1734
lakshya 69:c0dd13285d80 1735 /*update in flash here*/
lakshya 69:c0dd13285d80 1736 uint32_t FLASH_DATA;
lakshya 69:c0dd13285d80 1737 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(0);
lakshya 69:c0dd13285d80 1738 FLASH_DATA = ((FLASH_DATA & 0xFFCFFFFF) | 0x00100000 ) ;
lakshya 69:c0dd13285d80 1739 FCTN_BAE_WR_FLASH(0,FLASH_DATA);
lakshya 69:c0dd13285d80 1740
lakshya 69:c0dd13285d80 1741
lakshya 19:79e69017c855 1742 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1743 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1744 {
lakshya 19:79e69017c855 1745 telemetry[i]=0x00;
lakshya 19:79e69017c855 1746 }
lakshya 19:79e69017c855 1747 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1748 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1749 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1750 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1751 {
lakshya 19:79e69017c855 1752 telemetry[i]=0x00;
lakshya 19:79e69017c855 1753 }
lakshya 19:79e69017c855 1754 break;
lakshya 19:79e69017c855 1755 }
lakshya 19:79e69017c855 1756 case 0x15:
lakshya 19:79e69017c855 1757 {
lakshya 69:c0dd13285d80 1758 gpc.printf("\n\n\rSW_ON_BCN_TX_SW_ENABLE\n");
lakshya 19:79e69017c855 1759 //ACK_L234_TM
lakshya 19:79e69017c855 1760 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1761 telemetry[1]=tc[0];
lakshya 19:79e69017c855 1762 BCN_SW = 0;//here 0 is switch enable
lakshya 69:c0dd13285d80 1763 BCN_TX_SW_STATUS=0x01;//BCN_TX_SW_ENABLE CHANGED TO BCN_TX_SW_STATUS
lakshya 69:c0dd13285d80 1764
lakshya 69:c0dd13285d80 1765 /*update in flash here*/
lakshya 69:c0dd13285d80 1766 uint32_t FLASH_DATA;
lakshya 69:c0dd13285d80 1767 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(0);
lakshya 69:c0dd13285d80 1768 FLASH_DATA = ((FLASH_DATA & 0xFFFF9FFF) | 0x00002000 ) ;
lakshya 69:c0dd13285d80 1769 FCTN_BAE_WR_FLASH(0,FLASH_DATA);
lakshya 69:c0dd13285d80 1770
lakshya 69:c0dd13285d80 1771
lakshya 19:79e69017c855 1772 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1773 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1774 {
lakshya 19:79e69017c855 1775 telemetry[i]=0x00;
lakshya 19:79e69017c855 1776 }
lakshya 19:79e69017c855 1777 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1778 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1779 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1780 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1781 {
lakshya 19:79e69017c855 1782 telemetry[i]=0x00;
lakshya 19:79e69017c855 1783 }
lakshya 19:79e69017c855 1784 break;
lakshya 19:79e69017c855 1785 }
lakshya 19:79e69017c855 1786 case 0x21:
lakshya 19:79e69017c855 1787 {
lakshya 69:c0dd13285d80 1788 gpc.printf("\n\n\rSW_OFF_ACS_ATS1_SW_ENABLE\n");
lakshya 19:79e69017c855 1789 //ACK_L234_TM
lakshya 19:79e69017c855 1790 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1791 telemetry[1]=tc[0];
Bragadeesh153 52:daa685b0e390 1792 ATS1_SW_ENABLE = 0;
lakshya 20:949d13045431 1793 ACS_ATS_STATUS = (ACS_ATS_STATUS & 0x3F) | 0xC0 ;
lakshya 19:79e69017c855 1794 telemetry[2]=ACK_CODE;
lakshya 49:61c9f28332ba 1795
lakshya 69:c0dd13285d80 1796 /*update in flaash here*/
lakshya 49:61c9f28332ba 1797 uint32_t FLASH_DATA;
lakshya 49:61c9f28332ba 1798 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(0);
lakshya 69:c0dd13285d80 1799 FLASH_DATA = (FLASH_DATA | 0xC0000000 ) ;
lakshya 49:61c9f28332ba 1800 FCTN_BAE_WR_FLASH(0,FLASH_DATA);
lakshya 49:61c9f28332ba 1801
lakshya 69:c0dd13285d80 1802
lakshya 19:79e69017c855 1803 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1804 {
lakshya 19:79e69017c855 1805 telemetry[i]=0x00;
lakshya 19:79e69017c855 1806 }
lakshya 19:79e69017c855 1807 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1808 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1809 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1810 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1811 {
lakshya 19:79e69017c855 1812 telemetry[i]=0x00;
lakshya 19:79e69017c855 1813 }
lakshya 19:79e69017c855 1814 break;
lakshya 19:79e69017c855 1815 }
lakshya 19:79e69017c855 1816 case 0x22:
lakshya 19:79e69017c855 1817 {
lakshya 49:61c9f28332ba 1818 gpc.printf("\n\rSW_OFF_ACS_ATS2_SW_ENABLE");
lakshya 19:79e69017c855 1819 //ACK_L234_TM
lakshya 19:79e69017c855 1820 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1821 telemetry[1]=tc[0];
Bragadeesh153 74:3fec9935ff1f 1822 ATS2_SW_ENABLE = 0;
lakshya 49:61c9f28332ba 1823
lakshya 49:61c9f28332ba 1824 uint32_t FLASH_DATA;
lakshya 49:61c9f28332ba 1825 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(0);
lakshya 49:61c9f28332ba 1826 FLASH_DATA = (FLASH_DATA | 0x0C000000);
lakshya 49:61c9f28332ba 1827 FCTN_BAE_WR_FLASH(0,FLASH_DATA);
lakshya 49:61c9f28332ba 1828
lakshya 20:949d13045431 1829 ACS_ATS_STATUS = (ACS_ATS_STATUS & 0xF3) | 0x0C ;
lakshya 19:79e69017c855 1830 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1831 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1832 {
lakshya 19:79e69017c855 1833 telemetry[i]=0x00;
lakshya 19:79e69017c855 1834 }
lakshya 19:79e69017c855 1835 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1836 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1837 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1838 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1839 {
lakshya 19:79e69017c855 1840 telemetry[i]=0x00;
lakshya 19:79e69017c855 1841 }
lakshya 19:79e69017c855 1842 break;
lakshya 19:79e69017c855 1843 }
lakshya 19:79e69017c855 1844 case 0x23:
lakshya 19:79e69017c855 1845 {
lakshya 69:c0dd13285d80 1846 gpc.printf("\n\n\rSW_OFF_ACS_TR_XY_ENABLE\n");
lakshya 19:79e69017c855 1847 //ACK_L234_TM
lakshya 19:79e69017c855 1848 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1849 telemetry[1]=tc[0];
Bragadeesh153 52:daa685b0e390 1850 ACS_TR_XY_ENABLE = 0;
lakshya 19:79e69017c855 1851 ACS_TR_XY_SW_STATUS=0x03;
lakshya 69:c0dd13285d80 1852
lakshya 69:c0dd13285d80 1853 /*update in flash here*/
lakshya 69:c0dd13285d80 1854 uint32_t FLASH_DATA;
lakshya 69:c0dd13285d80 1855 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(0);
lakshya 69:c0dd13285d80 1856 FLASH_DATA = (FLASH_DATA | 0x00C00000 ) ;
lakshya 69:c0dd13285d80 1857 FCTN_BAE_WR_FLASH(0,FLASH_DATA);
lakshya 69:c0dd13285d80 1858
lakshya 69:c0dd13285d80 1859
lakshya 19:79e69017c855 1860 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1861 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1862 {
lakshya 19:79e69017c855 1863 telemetry[i]=0x00;
lakshya 19:79e69017c855 1864 }
lakshya 19:79e69017c855 1865 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1866 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1867 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1868 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1869 {
lakshya 19:79e69017c855 1870 telemetry[i]=0x00;
lakshya 19:79e69017c855 1871 }
lakshya 19:79e69017c855 1872 break;
lakshya 19:79e69017c855 1873 }
lakshya 19:79e69017c855 1874 case 0x24:
lakshya 19:79e69017c855 1875 {
lakshya 69:c0dd13285d80 1876 gpc.printf("\n\n\rSW_OFF_ACS_TR_Z_ENABLE\n");
lakshya 19:79e69017c855 1877 //ACK_L234_TM
lakshya 19:79e69017c855 1878 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1879 telemetry[1]=tc[0];
Bragadeesh153 52:daa685b0e390 1880 ACS_TR_Z_ENABLE = 0;
lakshya 19:79e69017c855 1881 ACS_TR_Z_SW_STATUS=0x03;
lakshya 69:c0dd13285d80 1882
lakshya 69:c0dd13285d80 1883 /*update in flash here*/
lakshya 69:c0dd13285d80 1884 uint32_t FLASH_DATA;
lakshya 69:c0dd13285d80 1885 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(0);
lakshya 69:c0dd13285d80 1886 FLASH_DATA = (FLASH_DATA | 0x00300000 ) ;
lakshya 69:c0dd13285d80 1887 FCTN_BAE_WR_FLASH(0,FLASH_DATA);
lakshya 69:c0dd13285d80 1888
lakshya 69:c0dd13285d80 1889
lakshya 19:79e69017c855 1890 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1891 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1892 {
lakshya 19:79e69017c855 1893 telemetry[i]=0x00;
lakshya 19:79e69017c855 1894 }
lakshya 19:79e69017c855 1895 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1896 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1897 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1898 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1899 {
lakshya 19:79e69017c855 1900 telemetry[i]=0x00;
lakshya 19:79e69017c855 1901 }
lakshya 19:79e69017c855 1902 break;
lakshya 19:79e69017c855 1903 }
lakshya 19:79e69017c855 1904 case 0x25:
lakshya 19:79e69017c855 1905 {
lakshya 69:c0dd13285d80 1906 gpc.printf("\n\n\rSW_OFF_BCN_TX_SW_ENABLE\n");
lakshya 19:79e69017c855 1907 //ACK_L234_TM
lakshya 19:79e69017c855 1908 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1909 telemetry[1]=tc[0];
lakshya 19:79e69017c855 1910 BCN_SW = 1;
lakshya 19:79e69017c855 1911 BCN_TX_SW_ENABLE=0x03;
lakshya 69:c0dd13285d80 1912
lakshya 69:c0dd13285d80 1913 /*update in the flash*/
lakshya 69:c0dd13285d80 1914 uint32_t FLASH_DATA;
lakshya 69:c0dd13285d80 1915 FLASH_DATA = FCTN_BAE_RD_FLASH_ENTITY(0);
lakshya 69:c0dd13285d80 1916 FLASH_DATA = (FLASH_DATA | 0x00006000 ) ;
lakshya 69:c0dd13285d80 1917 FCTN_BAE_WR_FLASH(0,FLASH_DATA);
lakshya 69:c0dd13285d80 1918
lakshya 69:c0dd13285d80 1919
lakshya 19:79e69017c855 1920 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1921 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1922 {
lakshya 19:79e69017c855 1923 telemetry[i]=0x00;
lakshya 19:79e69017c855 1924 }
lakshya 19:79e69017c855 1925 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1926 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1927 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1928 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1929 {
lakshya 19:79e69017c855 1930 telemetry[i]=0x00;
lakshya 19:79e69017c855 1931 }
lakshya 19:79e69017c855 1932 break;
lakshya 19:79e69017c855 1933 }
lakshya 19:79e69017c855 1934 case 0x31:
lakshya 19:79e69017c855 1935 {
lakshya 69:c0dd13285d80 1936 gpc.printf("\n\n\rACS_ATS1_SW_RESET\n");
lakshya 19:79e69017c855 1937 //ACK_L234_TM
lakshya 19:79e69017c855 1938 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1939 telemetry[1]=tc[0];
lakshya 19:79e69017c855 1940 ATS2_SW_ENABLE = 1;//as ats switched off
Bragadeesh153 52:daa685b0e390 1941 ATS1_SW_ENABLE = 0;
lakshya 19:79e69017c855 1942 wait_ms(5);
Bragadeesh153 52:daa685b0e390 1943 ATS1_SW_ENABLE = 1;
lakshya 19:79e69017c855 1944 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1945 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1946 {
lakshya 19:79e69017c855 1947 telemetry[i]=0x00;
lakshya 19:79e69017c855 1948 }
lakshya 19:79e69017c855 1949 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1950 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1951 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1952 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1953 {
lakshya 19:79e69017c855 1954 telemetry[i]=0x00;
lakshya 19:79e69017c855 1955 }
lakshya 19:79e69017c855 1956 break;
lakshya 19:79e69017c855 1957 }
lakshya 19:79e69017c855 1958 case 0x32:
lakshya 19:79e69017c855 1959 {
lakshya 69:c0dd13285d80 1960 gpc.printf("\n\n\rACS_ATS2_SW_RESET\n");
lakshya 19:79e69017c855 1961 //ACK_L234_TM
lakshya 19:79e69017c855 1962 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1963 telemetry[1]=tc[0];
Bragadeesh153 52:daa685b0e390 1964 ATS1_SW_ENABLE = 0;//as ats1 switched off
lakshya 19:79e69017c855 1965 ATS2_SW_ENABLE = 1;
lakshya 19:79e69017c855 1966 wait_ms(5);
lakshya 19:79e69017c855 1967 ATS2_SW_ENABLE = 0;
lakshya 19:79e69017c855 1968 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1969 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1970 {
lakshya 19:79e69017c855 1971 telemetry[i]=0x00;
lakshya 19:79e69017c855 1972 }
lakshya 19:79e69017c855 1973 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1974 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1975 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1976 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 1977 {
lakshya 19:79e69017c855 1978 telemetry[i]=0x00;
lakshya 19:79e69017c855 1979 }
lakshya 19:79e69017c855 1980 break;
lakshya 19:79e69017c855 1981 }
lakshya 19:79e69017c855 1982 case 0x33:
lakshya 19:79e69017c855 1983 {
lakshya 69:c0dd13285d80 1984 gpc.printf("\n\n\rACS_TR_XY_SW_RESET\n");
lakshya 19:79e69017c855 1985 //ACK_L234_TM
lakshya 19:79e69017c855 1986 telemetry[0]=0xB0;
lakshya 19:79e69017c855 1987 telemetry[1]=tc[0];
Bragadeesh153 52:daa685b0e390 1988 ACS_TR_XY_ENABLE= 0;
lakshya 19:79e69017c855 1989 wait_ms(5);
Bragadeesh153 52:daa685b0e390 1990 ACS_TR_XY_ENABLE= 1;
lakshya 19:79e69017c855 1991 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 1992 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 1993 {
lakshya 19:79e69017c855 1994 telemetry[i]=0x00;
lakshya 19:79e69017c855 1995 }
lakshya 19:79e69017c855 1996 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 1997 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 1998 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 1999 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 2000 {
lakshya 19:79e69017c855 2001 telemetry[i]=0x00;
lakshya 19:79e69017c855 2002 }
lakshya 19:79e69017c855 2003 break;
lakshya 19:79e69017c855 2004 }
lakshya 19:79e69017c855 2005 case 0x34:
lakshya 19:79e69017c855 2006 {
lakshya 69:c0dd13285d80 2007 gpc.printf("\n\n\rACS_TR_Z_SW_RESET\n");
lakshya 19:79e69017c855 2008 //ACK_L234_TM
lakshya 19:79e69017c855 2009 telemetry[0]=0xB0;
lakshya 19:79e69017c855 2010 telemetry[1]=tc[0];
Bragadeesh153 52:daa685b0e390 2011 ACS_TR_Z_ENABLE= 0;
lakshya 19:79e69017c855 2012 wait_ms(5);
Bragadeesh153 52:daa685b0e390 2013 ACS_TR_Z_ENABLE= 1;
lakshya 19:79e69017c855 2014 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 2015 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 2016 {
lakshya 19:79e69017c855 2017 telemetry[i]=0x00;
lakshya 19:79e69017c855 2018 }
lakshya 19:79e69017c855 2019 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 2020 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 2021 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 2022 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 2023 {
lakshya 19:79e69017c855 2024 telemetry[i]=0x00;
lakshya 19:79e69017c855 2025 }
lakshya 19:79e69017c855 2026 break;
lakshya 19:79e69017c855 2027 }
lakshya 19:79e69017c855 2028 case 0x35:
lakshya 19:79e69017c855 2029 {
lakshya 69:c0dd13285d80 2030 gpc.printf("\n\n\rBCN_TX_SW_RESET\n");
lakshya 19:79e69017c855 2031 //ACK_L234_TM
lakshya 19:79e69017c855 2032 telemetry[0]=0xB0;
lakshya 19:79e69017c855 2033 telemetry[1]=tc[0];
lakshya 19:79e69017c855 2034 BCN_SW = 1;
lakshya 19:79e69017c855 2035 wait_ms(5);
lakshya 19:79e69017c855 2036 BCN_SW = 0;
lakshya 19:79e69017c855 2037 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 2038 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 2039 {
lakshya 19:79e69017c855 2040 telemetry[i]=0x00;
lakshya 19:79e69017c855 2041 }
lakshya 19:79e69017c855 2042 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 2043 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 2044 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 2045 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 2046 {
lakshya 19:79e69017c855 2047 telemetry[i]=0x00;
lakshya 19:79e69017c855 2048 }
lakshya 19:79e69017c855 2049 break;
lakshya 19:79e69017c855 2050 }
lakshya 19:79e69017c855 2051 case 0x36:
lakshya 19:79e69017c855 2052 {
lakshya 69:c0dd13285d80 2053 gpc.printf("\n\n\rBAE_INTERNAL_RESET TO be done \n");
lakshya 20:949d13045431 2054 NVIC_SystemReset();
lakshya 19:79e69017c855 2055 break;
lakshya 19:79e69017c855 2056 }
lakshya 19:79e69017c855 2057 case 0x37:
lakshya 19:79e69017c855 2058 {
lakshya 69:c0dd13285d80 2059 gpc.printf("\n\n\rCDMS_RESET\n");
lakshya 19:79e69017c855 2060 //ACK_L234_TM
lakshya 19:79e69017c855 2061 telemetry[0]=0xB0;
lakshya 19:79e69017c855 2062 telemetry[1]=tc[0];
lakshya 19:79e69017c855 2063 CDMS_RESET = 0;
lakshya 19:79e69017c855 2064 wait_ms(5);
lakshya 19:79e69017c855 2065 CDMS_RESET = 1;
lakshya 19:79e69017c855 2066 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 2067 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 2068 {
lakshya 19:79e69017c855 2069 telemetry[i]=0x00;
lakshya 19:79e69017c855 2070 }
lakshya 19:79e69017c855 2071 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 2072 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 2073 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 2074 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 2075 {
lakshya 19:79e69017c855 2076 telemetry[i]=0x00;
lakshya 19:79e69017c855 2077 }
lakshya 19:79e69017c855 2078 break;
lakshya 19:79e69017c855 2079 }
lakshya 49:61c9f28332ba 2080 case 0x38://not in IF present in SBC
lakshya 19:79e69017c855 2081 {
lakshya 49:61c9f28332ba 2082 gpc.printf("\n\rCDMS_SW_RESET pin yet to be decided");
lakshya 19:79e69017c855 2083 //ACK_L234_TM
lakshya 19:79e69017c855 2084 telemetry[0]=0xB0;
lakshya 19:79e69017c855 2085 telemetry[1]=tc[0];
lakshya 19:79e69017c855 2086 /*
lakshya 19:79e69017c855 2087 PIN to be DECIDED***************************************************************8
lakshya 19:79e69017c855 2088 */
lakshya 19:79e69017c855 2089 telemetry[2]=ACK_CODE;
lakshya 19:79e69017c855 2090 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 2091 {
lakshya 19:79e69017c855 2092 telemetry[i]=0x00;
lakshya 19:79e69017c855 2093 }
lakshya 19:79e69017c855 2094 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 2095 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 2096 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 2097 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 2098 {
lakshya 19:79e69017c855 2099 telemetry[i]=0x00;
lakshya 19:79e69017c855 2100 }
lakshya 19:79e69017c855 2101 break;
lakshya 19:79e69017c855 2102 }
lakshya 49:61c9f28332ba 2103 case 0x40://condition changed by AK47 now 00 means off in TC
lakshya 19:79e69017c855 2104 {
lakshya 69:c0dd13285d80 2105 printf("\n\n\r EN_PRCS\n");
lakshya 19:79e69017c855 2106 uint8_t STANDBY_DATA_TC;
lakshya 68:a5d2b8dc6b9e 2107 BAE_STANDBY=0x07;
lakshya 19:79e69017c855 2108 STANDBY_DATA_TC=tc[4];
lakshya 49:61c9f28332ba 2109 if(STANDBY_DATA_TC==0x00)
lakshya 19:79e69017c855 2110 {
lakshya 69:c0dd13285d80 2111 BAE_STANDBY &=0x03;
lakshya 68:a5d2b8dc6b9e 2112 //$ L BAE_STANDBY_TIMER_RESET();
lakshya 19:79e69017c855 2113 //BAE_STANDBY_TIMER();//to be created to make all sensor on after 20 minutes
lakshya 19:79e69017c855 2114 }
lakshya 69:c0dd13285d80 2115 STANDBY_DATA_TC=tc[5];
lakshya 49:61c9f28332ba 2116 if(STANDBY_DATA_TC==0x00)
lakshya 19:79e69017c855 2117 {
lakshya 68:a5d2b8dc6b9e 2118 BAE_STANDBY &=0x05;
lakshya 68:a5d2b8dc6b9e 2119 //$ L BAE_STANDBY_TIMER_RESET();
lakshya 19:79e69017c855 2120 //BAE_STANDBY_TIMER();//to be created to make all sensor on after 20 minutes
lakshya 19:79e69017c855 2121 }
lakshya 69:c0dd13285d80 2122 STANDBY_DATA_TC=tc[6];
lakshya 49:61c9f28332ba 2123 if(STANDBY_DATA_TC==0x00)
lakshya 19:79e69017c855 2124 {
lakshya 68:a5d2b8dc6b9e 2125 BAE_STANDBY &=0x06;
lakshya 68:a5d2b8dc6b9e 2126 //$ L BAE_STANDBY_TIMER_RESET();
lakshya 19:79e69017c855 2127 //BAE_STANDBY_TIMER();//to be created to make all sensor on after 20 minutes
lakshya 19:79e69017c855 2128 }
lakshya 19:79e69017c855 2129 telemetry[0]=0xB0;
lakshya 19:79e69017c855 2130 telemetry[1]=tc[0];
lakshya 19:79e69017c855 2131 telemetry[2]=0xC0;//ack_code for this case
lakshya 19:79e69017c855 2132 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 2133 {
lakshya 19:79e69017c855 2134 telemetry[i]=0x00;
lakshya 19:79e69017c855 2135 }
lakshya 19:79e69017c855 2136 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 2137 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 2138 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 2139 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 2140 {
lakshya 19:79e69017c855 2141 telemetry[i]=0x00;
lakshya 19:79e69017c855 2142 }
lakshya 19:79e69017c855 2143 break;
lakshya 19:79e69017c855 2144 }
lakshya 19:79e69017c855 2145 case 0x41:
lakshya 19:79e69017c855 2146 {
lakshya 69:c0dd13285d80 2147 gpc.printf("\n\n\rexecutng BAE reset HK counter\n");
lakshya 20:949d13045431 2148 firstCount=true;
lakshya 20:949d13045431 2149 void minMaxHkData();
lakshya 49:61c9f28332ba 2150
lakshya 19:79e69017c855 2151 //ACK_L234_TM
lakshya 19:79e69017c855 2152 telemetry[0]=0xB0;
lakshya 19:79e69017c855 2153 telemetry[1]=tc[0];
lakshya 19:79e69017c855 2154 telemetry[2]=0x02;
lakshya 19:79e69017c855 2155 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 2156 {
lakshya 19:79e69017c855 2157 telemetry[i]=0x00;
lakshya 19:79e69017c855 2158 }
lakshya 19:79e69017c855 2159 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 2160 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 2161 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 2162 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 2163 {
lakshya 19:79e69017c855 2164 telemetry[i]=0x00;
lakshya 19:79e69017c855 2165 }
lakshya 19:79e69017c855 2166 break;
lakshya 19:79e69017c855 2167 }
lakshya 19:79e69017c855 2168 default:
lakshya 19:79e69017c855 2169 {
lakshya 49:61c9f28332ba 2170 gpc.printf("\n\rInvalid TC for FMS no matching FID");
lakshya 19:79e69017c855 2171 //ACK_L234_TM
lakshya 19:79e69017c855 2172 telemetry[0]=0xB0;
lakshya 19:79e69017c855 2173 telemetry[1]=tc[0];
lakshya 19:79e69017c855 2174 telemetry[2]=0x02;
lakshya 19:79e69017c855 2175 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 2176 {
lakshya 19:79e69017c855 2177 telemetry[i]=0x00;
lakshya 19:79e69017c855 2178 }
lakshya 19:79e69017c855 2179 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 2180 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 2181 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 2182 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 2183 {
lakshya 19:79e69017c855 2184 telemetry[i]=0x00;
lakshya 19:79e69017c855 2185 }
lakshya 19:79e69017c855 2186 break;
lakshya 19:79e69017c855 2187 }
lakshya 19:79e69017c855 2188 }
lakshya 19:79e69017c855 2189 break;
lakshya 19:79e69017c855 2190 }
lakshya 19:79e69017c855 2191 default:
lakshya 19:79e69017c855 2192 {
lakshya 49:61c9f28332ba 2193 gpc.printf("\n\rInvalid TC, FMS service subtype mismacth");
lakshya 19:79e69017c855 2194 //ACK_L234_TM
lakshya 19:79e69017c855 2195 telemetry[0]=0xB0;
lakshya 19:79e69017c855 2196 telemetry[1]=tc[0];
lakshya 19:79e69017c855 2197 telemetry[2]=0x02;
lakshya 19:79e69017c855 2198 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 2199 {
lakshya 19:79e69017c855 2200 telemetry[i]=0x00;
lakshya 19:79e69017c855 2201 }
lakshya 19:79e69017c855 2202 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 2203 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 2204 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 2205 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 2206 {
lakshya 19:79e69017c855 2207 telemetry[i]=0x00;
lakshya 19:79e69017c855 2208 }
lakshya 19:79e69017c855 2209 break;
lakshya 19:79e69017c855 2210 }
lakshya 19:79e69017c855 2211 }
lakshya 19:79e69017c855 2212 break;
lakshya 19:79e69017c855 2213 }
lakshya 19:79e69017c855 2214 default:
lakshya 19:79e69017c855 2215 {
lakshya 49:61c9f28332ba 2216 gpc.printf("\n\rInvalid TC neither FMS nor MMS");
lakshya 19:79e69017c855 2217 //ACK_L234_TM
lakshya 19:79e69017c855 2218 telemetry[0]=0xB0;
lakshya 19:79e69017c855 2219 telemetry[1]=tc[0];
lakshya 19:79e69017c855 2220 telemetry[2]=0x02;
lakshya 19:79e69017c855 2221 for(uint8_t i=3;i<11;i++)
lakshya 19:79e69017c855 2222 {
lakshya 19:79e69017c855 2223 telemetry[i]=0x00;
lakshya 19:79e69017c855 2224 }
lakshya 19:79e69017c855 2225 crc16 = CRC::crc16_gen(telemetry,11);
lakshya 19:79e69017c855 2226 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 19:79e69017c855 2227 telemetry[12] = (uint8_t)(crc16&0x00FF);
lakshya 19:79e69017c855 2228 for(uint8_t i=13;i<134;i++)
lakshya 19:79e69017c855 2229 {
lakshya 19:79e69017c855 2230 telemetry[i]=0x00;
lakshya 19:79e69017c855 2231 }
lakshya 19:79e69017c855 2232 break;
lakshya 19:79e69017c855 2233 }
lakshya 19:79e69017c855 2234 }
lakshya 19:79e69017c855 2235 }
Bragadeesh153 13:fb7facaf308b 2236 }
Bragadeesh153 13:fb7facaf308b 2237 }
sakthipriya 4:39a4ae8c7ecd 2238
sakthipriya 4:39a4ae8c7ecd 2239
lakshya 69:c0dd13285d80 2240
Bragadeesh153 13:fb7facaf308b 2241 int strt_add = flash_size() - (2*SECTOR_SIZE);
sakthipriya 4:39a4ae8c7ecd 2242 uint32_t flasharray[8]; //256+(3*1024)
lakshya 19:79e69017c855 2243 /*corrected*/
lakshya 19:79e69017c855 2244 int *nativeflash = (int*)strt_add;
sakthipriya 4:39a4ae8c7ecd 2245
sakthipriya 4:39a4ae8c7ecd 2246 /*Writing to the Flash*/
lakshya 19:79e69017c855 2247 void FCTN_BAE_WR_FLASH(uint16_t j,uint32_t fdata) //j-position to write address ; fdata - flash data to be written
sakthipriya 4:39a4ae8c7ecd 2248 {
Bragadeesh153 13:fb7facaf308b 2249 for(int i=0;i<8;i++)
sakthipriya 4:39a4ae8c7ecd 2250 {
sakthipriya 4:39a4ae8c7ecd 2251 flasharray[i]=nativeflash[i];
sakthipriya 4:39a4ae8c7ecd 2252 }
sakthipriya 4:39a4ae8c7ecd 2253 flasharray[j]=fdata;
sakthipriya 4:39a4ae8c7ecd 2254 erase_sector(strt_add);
lakshya 20:949d13045431 2255 program_flash(strt_add, (char*)flasharray,32);
sakthipriya 4:39a4ae8c7ecd 2256 }
lakshya 19:79e69017c855 2257
sakthipriya 4:39a4ae8c7ecd 2258 /*End*/
sakthipriya 4:39a4ae8c7ecd 2259
sakthipriya 4:39a4ae8c7ecd 2260 /*Reading from Flash*/
lakshya 19:79e69017c855 2261 /*return choice parameter included so that i f we want the whole 32 packet data to be sent back we can do so*/
lakshya 19:79e69017c855 2262 uint32_t FCTN_BAE_RD_FLASH_ENTITY(uint16_t entity)
sakthipriya 4:39a4ae8c7ecd 2263 {
sakthipriya 4:39a4ae8c7ecd 2264 for(int i=0;i<8;i++)
sakthipriya 4:39a4ae8c7ecd 2265 {
sakthipriya 4:39a4ae8c7ecd 2266 flasharray[i]=nativeflash[i];
sakthipriya 4:39a4ae8c7ecd 2267 }
lakshya 19:79e69017c855 2268 return flasharray[entity];
sakthipriya 4:39a4ae8c7ecd 2269 }
lakshya 19:79e69017c855 2270
lakshya 19:79e69017c855 2271 uint32_t* FCTN_BAE_RD_FLASH()
lakshya 19:79e69017c855 2272 {
lakshya 19:79e69017c855 2273 for(int i=0;i<8;i++)
lakshya 19:79e69017c855 2274 {
lakshya 19:79e69017c855 2275 flasharray[i]=nativeflash[i];
lakshya 19:79e69017c855 2276 }
lakshya 19:79e69017c855 2277 return flasharray;
lakshya 19:79e69017c855 2278 }
lakshya 19:79e69017c855 2279
sakthipriya 5:bb592f3185cc 2280 /*End*/
sakthipriya 5:bb592f3185cc 2281
sakthipriya 5:bb592f3185cc 2282 // Convert float to 4 uint8_t
sakthipriya 5:bb592f3185cc 2283
lakshya 15:e09aaaccf134 2284
sakthipriya 6:036d08b62785 2285 void FCTN_CONVERT_FLOAT(float input, uint8_t output[4])
sakthipriya 5:bb592f3185cc 2286 {
sakthipriya 6:036d08b62785 2287 assert(sizeof(float) == sizeof(uint32_t));
sakthipriya 6:036d08b62785 2288 uint32_t* temp = reinterpret_cast<uint32_t*>(&input);
sakthipriya 6:036d08b62785 2289
sakthipriya 6:036d08b62785 2290 //float* output1 = reinterpret_cast<float*>(temp);
Bragadeesh153 13:fb7facaf308b 2291
lakshya 49:61c9f28332ba 2292 //gpc.printf("\n\r %f ", input);
lakshya 15:e09aaaccf134 2293 //std::cout << "\n\r uint32"<<*temp << std::endl;
sakthipriya 6:036d08b62785 2294
sakthipriya 6:036d08b62785 2295 output[0] =(uint8_t )(((*temp)>>24)&0xFF);
lakshya 15:e09aaaccf134 2296 output[1] =(uint8_t ) (((*temp)>>16)&0xFF);
lakshya 15:e09aaaccf134 2297 output[2] =(uint8_t ) (((*temp)>>8)&0xFF);
lakshya 15:e09aaaccf134 2298 output[3] =(uint8_t ) ((*temp) & 0xFF); // verify the logic
lakshya 15:e09aaaccf134 2299
lakshya 49:61c9f28332ba 2300 // gpc.printf("\n\rthe values generated are\n");
lakshya 49:61c9f28332ba 2301 /*gpc.printf("\n\r%x\n",output[0]);
lakshya 49:61c9f28332ba 2302 gpc.printf("\n\r%x\n",output[1]);
lakshya 49:61c9f28332ba 2303 gpc.printf("\n\r%x\n",output[2]);
lakshya 49:61c9f28332ba 2304 gpc.printf("\n\r%x\n",output[3]);
lakshya 15:e09aaaccf134 2305 to check the values generated
lakshya 15:e09aaaccf134 2306 */
lakshya 49:61c9f28332ba 2307 //gpc.printf("\n\r inside %d %d %d %d", output[3],output[2],output[1],output[0]);
Bragadeesh153 13:fb7facaf308b 2308 //std:: cout << "\n\r uint8 inside " << output[3] << '\t' << output[2] << '\t' << output[1] << '\t' << output[0] <<std::endl;
Bragadeesh153 13:fb7facaf308b 2309 }