Team Fox / Mbed 2 deprecated BAE_QM_MAR9

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of workinQM_5thJan_azad by Team Fox

Committer:
lakshya
Date:
Fri Jul 01 17:55:30 2016 +0000
Revision:
20:949d13045431
Parent:
19:79e69017c855
Child:
27:61c856be467e
BAE final 1.0 (1st july); ; BCN and EPS  code to be upgraded; +; testing and troubleshooting to be done ; +; watchdog to be implemented; ; comparing with flowcharts.

Who changed what in which revision?

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