Team Fox / Mbed 2 deprecated BAE_QM_MAR9

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of workinQM_5thJan_azad by Team Fox

Committer:
samp1234
Date:
Thu Mar 09 07:42:15 2017 +0000
Revision:
99:2cc5c0c98cb3
Parent:
97:36a91c432cb1
Child:
100:af43bc82d3eb
final on 9thMarch

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