Team Fox / Mbed 2 deprecated BAE_QM_MAR9

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of workinQM_5thJan_azad by Team Fox

Committer:
lakshya
Date:
Sat Jul 02 14:06:34 2016 +0000
Revision:
27:61c856be467e
Parent:
20:949d13045431
Child:
33:76f2b8735501
changing now ; updating bcn

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