FINAL ACS TO BE USED FOR TESTING. COMMISSIONING, ACS MAIN, DATA ACQ ALL DONE.

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of ACS_FULL_Flowchart_BAE by Team Fox

Committer:
Bragadeesh153
Date:
Tue Jun 28 10:11:54 2016 +0000
Revision:
19:403cb36e22ed
Parent:
18:21740620c65e
FINAL ACS TO BE USED FOR TESTING

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sakthipriya 0:7b4c00e3912f 1 #include "mbed.h"
sakthipriya 0:7b4c00e3912f 2 #include "TCTM.h"
sakthipriya 3:07e15677a75c 3 #include "crc.h"
Bragadeesh153 18:21740620c65e 4 #include "ACS.h"
sakthipriya 4:39a4ae8c7ecd 5 #include "EPS.h"
sakthipriya 5:bb592f3185cc 6 #include "pin_config.h"
sakthipriya 5:bb592f3185cc 7 #include "FreescaleIAP.h"
sakthipriya 6:036d08b62785 8 #include "inttypes.h"
sakthipriya 6:036d08b62785 9 #include "iostream"
sakthipriya 6:036d08b62785 10 #include "stdint.h"
sakthipriya 6:036d08b62785 11 #include "cassert"
lakshya 10:f93407b97750 12 #include"math.h"
lakshya 10:f93407b97750 13
lakshya 11:1fdb94ae6563 14 /*define the pins for digital out*/
sakthipriya 0:7b4c00e3912f 15
sakthipriya 9:194afacf7449 16 extern DigitalOut ATS1_SW_ENABLE; // enable of att sens2 switch
sakthipriya 9:194afacf7449 17 extern DigitalOut ATS2_SW_ENABLE; // enable of att sens switch
Bragadeesh153 18:21740620c65e 18 extern DigitalOut DRV_Z_EN;
Bragadeesh153 18:21740620c65e 19 extern DigitalOut DRV_XY_EN;
Bragadeesh153 18:21740620c65e 20 extern uint8_t ACS_STATUS;
Bragadeesh153 19:403cb36e22ed 21 extern uint8_t ACS_ATS_STATUS;
Bragadeesh153 18:21740620c65e 22 extern float b_old[3]; // Unit: Tesla
Bragadeesh153 18:21740620c65e 23 extern float db[3];
Bragadeesh153 18:21740620c65e 24 extern uint8_t flag_firsttime;
Bragadeesh153 18:21740620c65e 25 extern uint8_t ACS_DETUMBLING_ALGO_TYPE;
sakthipriya 5:bb592f3185cc 26
Bragadeesh153 13:fb7facaf308b 27 extern DigitalOut TRXY_SW; //TR XY Switch if any TR_SW error arises then it is same as TR_SW_EN
sakthipriya 5:bb592f3185cc 28 extern DigitalOut TRZ_SW; //TR Z Switch
sakthipriya 5:bb592f3185cc 29 extern DigitalOut CDMS_RESET; // CDMS RESET
sakthipriya 5:bb592f3185cc 30 extern DigitalOut BCN_SW; //Beacon switch
lakshya 10:f93407b97750 31 extern uint8_t BCN_TX_STATUS;
lakshya 10:f93407b97750 32 extern uint8_t BCN_FEN;
sakthipriya 4:39a4ae8c7ecd 33 extern BAE_HK_actual actual_data;
sakthipriya 4:39a4ae8c7ecd 34 extern BAE_HK_min_max bae_HK_minmax;
sakthipriya 4:39a4ae8c7ecd 35 extern uint32_t BAE_STATUS;
sakthipriya 5:bb592f3185cc 36 extern float data[6];
sakthipriya 5:bb592f3185cc 37 extern float moment[3];
lakshya 10:f93407b97750 38 extern uint8_t ACS_STATE;
lakshya 10:f93407b97750 39 extern DigitalOut EN_BTRY_HT;
lakshya 10:f93407b97750 40 extern DigitalOut phase_TR_x;
lakshya 10:f93407b97750 41 extern DigitalOut phase_TR_y;
lakshya 10:f93407b97750 42 extern DigitalOut phase_TR_z;
lakshya 10:f93407b97750 43 extern BAE_HK_quant quant_data;
Bragadeesh153 13:fb7facaf308b 44 //extern DigitalOut TRXY_SW;
lakshya 11:1fdb94ae6563 45 //extern DigitalOut TRZ_SW_EN; //same as TRZ_SW
lakshya 11:1fdb94ae6563 46 extern uint32_t BAE_ENABLE;
lakshya 11:1fdb94ae6563 47 //extern DigitalOut ACS_ACQ_DATA_ENABLE;
lakshya 11:1fdb94ae6563 48
lakshya 11:1fdb94ae6563 49 /*given a default value as of now shuld read value from flash and increment it write it back very time it starts(bae)*/
lakshya 11:1fdb94ae6563 50 extern uint8_t BAE_RESET_COUNTER=0;
lakshya 11:1fdb94ae6563 51
lakshya 14:a9588f443f1a 52 //extern uint8_t BCN_FAIL_COUNT;
lakshya 11:1fdb94ae6563 53
Bragadeesh153 13:fb7facaf308b 54 extern PwmOut PWM1; //x //Functions used to generate PWM signal
lakshya 11:1fdb94ae6563 55 extern PwmOut PWM2; //y
lakshya 11:1fdb94ae6563 56 extern PwmOut PWM3; //z //PWM output comes from pins p6
lakshya 11:1fdb94ae6563 57
lakshya 11:1fdb94ae6563 58 extern void F_ACS();
lakshya 11:1fdb94ae6563 59 extern void F_BCN();
lakshya 11:1fdb94ae6563 60 //extern void FCTN_ACS_GENPWM_MAIN();
lakshya 11:1fdb94ae6563 61 extern void F_EPS();
lakshya 11:1fdb94ae6563 62 extern void FCTN_ACS_GENPWM_MAIN(float Moment[3]);
Bragadeesh153 16:cc77770d787f 63 extern int FCTN_ACS_INIT();
Bragadeesh153 18:21740620c65e 64 extern int SENSOR_DATA_ACQ();
Bragadeesh153 18:21740620c65e 65 extern int SENSOR_INIT();
sakthipriya 5:bb592f3185cc 66
Bragadeesh153 16:cc77770d787f 67 extern int FCTN_ATS_DATA_ACQ();
Bragadeesh153 13:fb7facaf308b 68 uint8_t telemetry[135];
lakshya 11:1fdb94ae6563 69
Bragadeesh153 19:403cb36e22ed 70 extern AnalogIn CurrentInput; // Input from Current Multiplexer //PIN54
Bragadeesh153 19:403cb36e22ed 71
Bragadeesh153 19:403cb36e22ed 72
Bragadeesh153 19:403cb36e22ed 73 extern DigitalOut SelectLineb3; // MSB of Select Lines
Bragadeesh153 19:403cb36e22ed 74 extern DigitalOut SelectLineb2;
Bragadeesh153 19:403cb36e22ed 75 extern DigitalOut SelectLineb1;
Bragadeesh153 19:403cb36e22ed 76 extern DigitalOut SelectLineb0; // LSB of Select Lines
Bragadeesh153 19:403cb36e22ed 77
lakshya 11:1fdb94ae6563 78 void FCTN_CONVERT_UINT (uint8_t input[2], float* output)
lakshya 11:1fdb94ae6563 79 {
lakshya 11:1fdb94ae6563 80
lakshya 11:1fdb94ae6563 81 *output = (float) input[1];
lakshya 11:1fdb94ae6563 82 *output = *output/100.0; //input[0] integer part
lakshya 11:1fdb94ae6563 83 *output = *output + (float) input[0]; //input[1] decimal part correct to two decimal places
lakshya 11:1fdb94ae6563 84 }
lakshya 11:1fdb94ae6563 85
lakshya 10:f93407b97750 86 float angle(float x,float y,float z)
lakshya 10:f93407b97750 87 {
lakshya 10:f93407b97750 88 float mag_total=sqrt(x*x + y*y + z*z);
lakshya 10:f93407b97750 89 float cos_z = z/mag_total;
lakshya 10:f93407b97750 90 float theta_z = acosf(cos_z);
Bragadeesh153 13:fb7facaf308b 91
lakshya 10:f93407b97750 92 return theta_z;
lakshya 10:f93407b97750 93 //printf("/n cos_zz= %f /t theta_z= %f /n",cos_z,theta_z);
lakshya 10:f93407b97750 94 }
lakshya 10:f93407b97750 95
Bragadeesh153 13:fb7facaf308b 96 //uint8_t tm1[134];
Bragadeesh153 13:fb7facaf308b 97
Bragadeesh153 13:fb7facaf308b 98 void FCTN_BAE_TM_TC (uint8_t* tc)
sakthipriya 0:7b4c00e3912f 99
sakthipriya 3:07e15677a75c 100 {
Bragadeesh153 13:fb7facaf308b 101 // tm1[0] = 1;
sakthipriya 3:07e15677a75c 102 uint8_t service_type=(tc[2]&0xF0);
lakshya 15:e09aaaccf134 103 /*chaged*/
lakshya 15:e09aaaccf134 104 uint8_t* tm; // without it some identifier error
sakthipriya 3:07e15677a75c 105 uint16_t crc16;
Bragadeesh153 13:fb7facaf308b 106
Bragadeesh153 13:fb7facaf308b 107
sakthipriya 3:07e15677a75c 108 switch(service_type)
sakthipriya 3:07e15677a75c 109 {
sakthipriya 3:07e15677a75c 110 case 0x60:
sakthipriya 3:07e15677a75c 111 {
sakthipriya 3:07e15677a75c 112 printf("Memory Management Service\r\n");
sakthipriya 3:07e15677a75c 113 uint8_t service_subtype=(tc[2]&0x0F);
Bragadeesh153 13:fb7facaf308b 114
sakthipriya 3:07e15677a75c 115 switch(service_subtype)
sakthipriya 3:07e15677a75c 116 {
sakthipriya 3:07e15677a75c 117 case 0x01:
sakthipriya 3:07e15677a75c 118 {
sakthipriya 3:07e15677a75c 119 printf("Read from Flash\r\n");
lakshya 15:e09aaaccf134 120 uint16_t jj;
lakshya 15:e09aaaccf134 121 uint16_t MID = ((uint16_t)tc[3] << 8) | tc[4];
lakshya 15:e09aaaccf134 122 switch(MID)
lakshya 15:e09aaaccf134 123 {case 0x1100:jj=0x00;// using uint16_t as jj typesimilarly used in FCTN_CDMS_WR_FLASH
lakshya 15:e09aaaccf134 124 break;
lakshya 15:e09aaaccf134 125 case 0x0100:jj=0x01;
lakshya 15:e09aaaccf134 126 break;
lakshya 15:e09aaaccf134 127 case 0x0101:jj=0x02;
lakshya 15:e09aaaccf134 128 break;
lakshya 15:e09aaaccf134 129 case 0x0102:jj=0x03;
lakshya 15:e09aaaccf134 130 break;
lakshya 15:e09aaaccf134 131 case 0x0107:jj=0x04;
lakshya 15:e09aaaccf134 132 break;
lakshya 15:e09aaaccf134 133 case 0x0103:jj=0x05;
lakshya 15:e09aaaccf134 134 break;
lakshya 15:e09aaaccf134 135 case 0x0104:jj=0x05;
lakshya 15:e09aaaccf134 136 break;
lakshya 15:e09aaaccf134 137 case 0x0105:jj=0x06;
lakshya 15:e09aaaccf134 138 break;
lakshya 15:e09aaaccf134 139 case 0x0106:jj=0x07;
lakshya 15:e09aaaccf134 140 break;
lakshya 15:e09aaaccf134 141 }
lakshya 15:e09aaaccf134 142 /*pointer....!!!!*/
lakshya 15:e09aaaccf134 143 uint32_t FLASH_TEMP = FCTN_CDMS_RD_FLASH(jj);
lakshya 15:e09aaaccf134 144
lakshya 15:e09aaaccf134 145 tm[0] = 0x60;
lakshya 15:e09aaaccf134 146 tm[1] = tc[0];
lakshya 15:e09aaaccf134 147 tm[2] = ACK_CODE;
lakshya 15:e09aaaccf134 148 for(int i=0; i<8*4; i+=4)
lakshya 15:e09aaaccf134 149 {
lakshya 15:e09aaaccf134 150 tm[4+i] =(uint8_t )(((FLASH_TEMP)>>24)&0xFF);
lakshya 15:e09aaaccf134 151 tm[5+i] =(uint8_t ) (((FLASH_TEMP)>>16)&0xFF);
lakshya 15:e09aaaccf134 152 tm[6+i] =(uint8_t ) (((FLASH_TEMP)>>8)&0xFF);
lakshya 15:e09aaaccf134 153 tm[7+i] =(uint8_t ) ((FLASH_TEMP) & 0xFF);
lakshya 15:e09aaaccf134 154
lakshya 15:e09aaaccf134 155 }
lakshya 15:e09aaaccf134 156
lakshya 15:e09aaaccf134 157
lakshya 15:e09aaaccf134 158 for (int i=4+8*4; i<132;i++)
lakshya 15:e09aaaccf134 159 {
lakshya 15:e09aaaccf134 160 tm[i] = 0x00;
lakshya 15:e09aaaccf134 161 }
lakshya 15:e09aaaccf134 162 crc16 = CRC::crc16_gen(tm,132);
lakshya 15:e09aaaccf134 163 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 15:e09aaaccf134 164 tm[133] = (uint8_t)(crc16&0x00FF);
lakshya 15:e09aaaccf134 165
Bragadeesh153 13:fb7facaf308b 166 break;
sakthipriya 3:07e15677a75c 167 }
sakthipriya 3:07e15677a75c 168 case 0x02:
sakthipriya 3:07e15677a75c 169 {
lakshya 15:e09aaaccf134 170 printf("Read from RAM\r\n");
Bragadeesh153 13:fb7facaf308b 171 uint16_t MID = ((uint16_t)tc[3] << 8) | tc[4];
Bragadeesh153 13:fb7facaf308b 172 switch(MID)
Bragadeesh153 13:fb7facaf308b 173 {
Bragadeesh153 13:fb7facaf308b 174
lakshya 10:f93407b97750 175 case 0x0001:
Bragadeesh153 13:fb7facaf308b 176 {
lakshya 15:e09aaaccf134 177 printf("\nRead from MID 0001 hk\n");
Bragadeesh153 13:fb7facaf308b 178
Bragadeesh153 13:fb7facaf308b 179 /*taking some varible till we find some thing more useful*/
Bragadeesh153 13:fb7facaf308b 180 //uint8_t ref_val=0x01;
Bragadeesh153 13:fb7facaf308b 181 telemetry[0] = 1;
Bragadeesh153 13:fb7facaf308b 182 telemetry[1] = tc[0];
Bragadeesh153 13:fb7facaf308b 183 telemetry[2] = ACK_CODE;
Bragadeesh153 13:fb7facaf308b 184 /*random or with bcn_tx_sw_enable assuming it is 1 bit in length
Bragadeesh153 13:fb7facaf308b 185 how to get that we dont know, now we just assume it to be so*/
Bragadeesh153 13:fb7facaf308b 186 telemetry[3] = (BCN_SW);
Bragadeesh153 13:fb7facaf308b 187 telemetry[3] = telemetry[3]|(TRXY_SW<<1);
Bragadeesh153 13:fb7facaf308b 188 telemetry[3] = telemetry[3]|(TRZ_SW<<2);
Bragadeesh153 13:fb7facaf308b 189 telemetry[3] = telemetry[3]|(ATS1_SW_ENABLE<<3);
Bragadeesh153 13:fb7facaf308b 190 telemetry[3] = telemetry[3]|(ATS2_SW_ENABLE<<4);
Bragadeesh153 13:fb7facaf308b 191
Bragadeesh153 13:fb7facaf308b 192 if(BCN_TX_STATUS==2)
Bragadeesh153 13:fb7facaf308b 193 telemetry[3] = telemetry[3]|0x20;
Bragadeesh153 13:fb7facaf308b 194 else
Bragadeesh153 13:fb7facaf308b 195 telemetry[3] = telemetry[3] & 0xDF;
Bragadeesh153 13:fb7facaf308b 196
Bragadeesh153 13:fb7facaf308b 197 telemetry[3] = telemetry[3]|(BCN_FEN<<6);
Bragadeesh153 13:fb7facaf308b 198 uint8_t mask_val=BAE_ENABLE & 0x00000008;
Bragadeesh153 13:fb7facaf308b 199 /*can be a problem see if any error occurs*/
Bragadeesh153 13:fb7facaf308b 200 telemetry[3] = telemetry[3]|(mask_val<<7);
Bragadeesh153 13:fb7facaf308b 201
Bragadeesh153 13:fb7facaf308b 202 /*not included in the code yet*/
Bragadeesh153 13:fb7facaf308b 203 telemetry[4] = BAE_RESET_COUNTER;
Bragadeesh153 13:fb7facaf308b 204 telemetry[5] = ACS_STATE;
Bragadeesh153 13:fb7facaf308b 205 telemetry[5] = telemetry[5]|(EN_BTRY_HT<<3);
Bragadeesh153 13:fb7facaf308b 206 telemetry[5] = telemetry[5]|(phase_TR_x<<4);
Bragadeesh153 13:fb7facaf308b 207 telemetry[5] = telemetry[5]|(phase_TR_y<<5);
Bragadeesh153 13:fb7facaf308b 208 telemetry[5] = telemetry[5]|(phase_TR_z<<6);
Bragadeesh153 13:fb7facaf308b 209 /*spare to be fixed*/
Bragadeesh153 13:fb7facaf308b 210 //telemetry[5] = telemetry[5]|(Spare))<<7);
Bragadeesh153 13:fb7facaf308b 211 /**/
Bragadeesh153 13:fb7facaf308b 212 uint8_t soc_powerlevel_2=50;
Bragadeesh153 13:fb7facaf308b 213 uint8_t soc_powerlevel_3=65;
Bragadeesh153 13:fb7facaf308b 214
Bragadeesh153 13:fb7facaf308b 215 telemetry[6] = soc_powerlevel_2;
Bragadeesh153 13:fb7facaf308b 216 telemetry[7] = soc_powerlevel_3;
lakshya 10:f93407b97750 217
Bragadeesh153 13:fb7facaf308b 218 /*to be fixed*/
Bragadeesh153 13:fb7facaf308b 219 telemetry[8] = 0;
Bragadeesh153 13:fb7facaf308b 220 telemetry[9] = 0;
Bragadeesh153 13:fb7facaf308b 221 telemetry[10] = 0;
Bragadeesh153 13:fb7facaf308b 222 telemetry[11] = 0;
Bragadeesh153 13:fb7facaf308b 223 //telemetry[8] = Torque Rod X Offset;
Bragadeesh153 13:fb7facaf308b 224 //telemetry[9] = Torque Rod Y Offset;
Bragadeesh153 13:fb7facaf308b 225 //telemetry[10] = Torque Rod Z Offset;
Bragadeesh153 13:fb7facaf308b 226 //telemetry[11] = ACS_DEMAG_TIME_DELAY;
Bragadeesh153 13:fb7facaf308b 227 telemetry[12] = (BAE_STATUS>>24) & 0xFF;
Bragadeesh153 13:fb7facaf308b 228 telemetry[13] = (BAE_STATUS>>16) & 0xFF;
Bragadeesh153 13:fb7facaf308b 229 telemetry[14] = (BAE_STATUS>>8) & 0xFF;
Bragadeesh153 13:fb7facaf308b 230 telemetry[15] = BAE_STATUS & 0xFF;
Bragadeesh153 13:fb7facaf308b 231
Bragadeesh153 13:fb7facaf308b 232 /*to be fixed*/
lakshya 14:a9588f443f1a 233 //telemetry[16] = BCN_FAIL_COUNT;
Bragadeesh153 13:fb7facaf308b 234 telemetry[17] = actual_data.power_mode;
Bragadeesh153 13:fb7facaf308b 235 /*to be fixed*/
Bragadeesh153 13:fb7facaf308b 236 uint16_t P_BAE_I2CRX_COUNTER=0;
Bragadeesh153 13:fb7facaf308b 237 uint16_t P_ACS_MAIN_COUNTER=0;
Bragadeesh153 13:fb7facaf308b 238 uint16_t P_BCN_TX_MAIN_COUNTER=0;
Bragadeesh153 13:fb7facaf308b 239 uint16_t P_EPS_MAIN_COUNTER=0;
Bragadeesh153 13:fb7facaf308b 240
Bragadeesh153 13:fb7facaf308b 241 telemetry[18] = P_BAE_I2CRX_COUNTER>>8;
Bragadeesh153 13:fb7facaf308b 242 telemetry[19] = P_BAE_I2CRX_COUNTER;
Bragadeesh153 13:fb7facaf308b 243 telemetry[20] = P_ACS_MAIN_COUNTER>>8;
Bragadeesh153 13:fb7facaf308b 244 telemetry[21] = P_ACS_MAIN_COUNTER;
Bragadeesh153 13:fb7facaf308b 245 telemetry[22] = P_BCN_TX_MAIN_COUNTER>>8;
Bragadeesh153 13:fb7facaf308b 246 telemetry[23] = P_BCN_TX_MAIN_COUNTER;
Bragadeesh153 13:fb7facaf308b 247 telemetry[24] = P_EPS_MAIN_COUNTER>>8;
Bragadeesh153 13:fb7facaf308b 248 telemetry[25] = P_EPS_MAIN_COUNTER;
Bragadeesh153 13:fb7facaf308b 249
lakshya 15:e09aaaccf134 250 //actual_data.AngularSpeed_actual[0]=5.32498;
Bragadeesh153 13:fb7facaf308b 251 for(int i=0; i<3; i++)
lakshya 15:e09aaaccf134 252 FCTN_CONVERT_FLOAT((float)actual_data.Bvalue_actual[i],&telemetry[26+ (i*4)]);
Bragadeesh153 13:fb7facaf308b 253 for(int i=0; i<3; i++)
lakshya 15:e09aaaccf134 254 FCTN_CONVERT_FLOAT((float)actual_data.AngularSpeed_actual[i],&telemetry[38+(i*4)]);
lakshya 15:e09aaaccf134 255
lakshya 15:e09aaaccf134 256 //printf("\n\rthe value is 38\t %x\n",telemetry[38]);
lakshya 15:e09aaaccf134 257 //printf("\n\rthe value is 39\t%x\n",telemetry[39]);
lakshya 15:e09aaaccf134 258 //printf("\n\rthe value is 40\t%x\n",telemetry[40]);
lakshya 15:e09aaaccf134 259 //printf("\n\rthe value is 41\t%x\n",telemetry[41]);
lakshya 15:e09aaaccf134 260 //printf("\n\rthe value true\t%f\n",actual_data.AngularSpeed_actual[0]);
lakshya 15:e09aaaccf134 261
lakshya 15:e09aaaccf134 262
lakshya 15:e09aaaccf134 263 //uint32_t input_stage1=0x00000000;
lakshya 15:e09aaaccf134 264 //uint8_t output1[4];
lakshya 15:e09aaaccf134 265 //output1[0]=(uint32_t)(telemetry[38]);
lakshya 15:e09aaaccf134 266 //output1[1]=(uint32_t)(telemetry[39]);
lakshya 15:e09aaaccf134 267 //output1[2]=(uint32_t)(telemetry[40]);
lakshya 15:e09aaaccf134 268 //output1[3]=(uint32_t)(telemetry[41]);
lakshya 15:e09aaaccf134 269
lakshya 15:e09aaaccf134 270 //input_stage1=output[3]+(output[2]*(0x100))+(output[1]*(0x10000))+(output[0]*(0x1000000));
lakshya 15:e09aaaccf134 271 //input_stage1=(output1[0]<<24) | (output1[1]<<16) | (output1[2]<<8) | (output1[3]);
lakshya 15:e09aaaccf134 272
lakshya 15:e09aaaccf134 273
lakshya 15:e09aaaccf134 274 //assert(sizeof(float) == sizeof(uint32_t));
lakshya 15:e09aaaccf134 275 //float* temp1 = reinterpret_cast<float*>(&input_stage1);
lakshya 15:e09aaaccf134 276
lakshya 15:e09aaaccf134 277 //printf("\n\r the value is: %f \n",*temp1);
Bragadeesh153 13:fb7facaf308b 278
Bragadeesh153 13:fb7facaf308b 279 //FAULT_FLAG();
Bragadeesh153 13:fb7facaf308b 280 telemetry[50] = actual_data.faultIr_status;
Bragadeesh153 13:fb7facaf308b 281 telemetry[51] = actual_data.faultPoll_status;
Bragadeesh153 13:fb7facaf308b 282 //Bdot Rotation Speed of Command telemetry[52-53]
Bragadeesh153 13:fb7facaf308b 283 //Bdot Output Current telemetry[54]
Bragadeesh153 13:fb7facaf308b 284 //float l_pmw1 = (PWM1);
Bragadeesh153 13:fb7facaf308b 285 //float l_pmw2 = PWM2;
Bragadeesh153 13:fb7facaf308b 286 //float l_pmw3 = PWM3;
Bragadeesh153 13:fb7facaf308b 287
lakshya 11:1fdb94ae6563 288 /*__________________________________________________________________*/
Bragadeesh153 13:fb7facaf308b 289
lakshya 11:1fdb94ae6563 290 /*change and check if changing it to PWM1 causes problem*/
Bragadeesh153 13:fb7facaf308b 291
lakshya 11:1fdb94ae6563 292 /*___________________________________________________________________*/
Bragadeesh153 13:fb7facaf308b 293
lakshya 11:1fdb94ae6563 294 float PWM_measured[3];
Bragadeesh153 13:fb7facaf308b 295
Bragadeesh153 13:fb7facaf308b 296 PWM_measured[0] = PWM1.read();
Bragadeesh153 13:fb7facaf308b 297 PWM_measured[1] = PWM2.read();
Bragadeesh153 13:fb7facaf308b 298 PWM_measured[2] = PWM3.read();
Bragadeesh153 13:fb7facaf308b 299
Bragadeesh153 13:fb7facaf308b 300 FCTN_CONVERT_FLOAT(PWM_measured[0], &telemetry[55]);
Bragadeesh153 13:fb7facaf308b 301 FCTN_CONVERT_FLOAT(PWM_measured[1], &telemetry[59]);
Bragadeesh153 13:fb7facaf308b 302 FCTN_CONVERT_FLOAT(PWM_measured[2], &telemetry[63]);
lakshya 10:f93407b97750 303 float attitude_ang = angle(actual_data.Bvalue_actual[0],actual_data.Bvalue_actual[1],actual_data.Bvalue_actual[2]);
Bragadeesh153 13:fb7facaf308b 304 FCTN_CONVERT_FLOAT(attitude_ang, &telemetry[67]);
lakshya 10:f93407b97750 305
lakshya 10:f93407b97750 306 for (int i=0; i<16; i++)
Bragadeesh153 13:fb7facaf308b 307 telemetry[68+i] = quant_data.voltage_quant[i];
lakshya 10:f93407b97750 308 for (int i=0; i<12; i++)
Bragadeesh153 13:fb7facaf308b 309 telemetry[84+i] = quant_data.current_quant[i];
Bragadeesh153 13:fb7facaf308b 310 //telemetry[96]
Bragadeesh153 13:fb7facaf308b 311 //telemetry[97]
Bragadeesh153 13:fb7facaf308b 312 //telemetry[98]
Bragadeesh153 13:fb7facaf308b 313 //telemetry[99]
Bragadeesh153 13:fb7facaf308b 314 telemetry[100] = quant_data.Batt_voltage_quant;
Bragadeesh153 13:fb7facaf308b 315 telemetry[101] = quant_data.BAE_temp_quant;
Bragadeesh153 13:fb7facaf308b 316 telemetry[102] = quant_data.Batt_gauge_quant[1];
Bragadeesh153 13:fb7facaf308b 317 telemetry[103] = quant_data.Batt_temp_quant[0];
Bragadeesh153 13:fb7facaf308b 318 telemetry[104] = quant_data.Batt_temp_quant[1];
Bragadeesh153 13:fb7facaf308b 319
Bragadeesh153 13:fb7facaf308b 320 //telemetry[105] = beacon temperature;
Bragadeesh153 13:fb7facaf308b 321
lakshya 10:f93407b97750 322 for (int i=105; i<132;i++)
sakthipriya 8:82250e41da81 323 {
Bragadeesh153 13:fb7facaf308b 324 telemetry[i] = 0x00;
sakthipriya 5:bb592f3185cc 325 }
Bragadeesh153 13:fb7facaf308b 326 crc16 = CRC::crc16_gen(telemetry,132);
Bragadeesh153 13:fb7facaf308b 327 telemetry[132] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 328 telemetry[133] = (uint8_t)(crc16&0x00FF);
Bragadeesh153 13:fb7facaf308b 329
Bragadeesh153 13:fb7facaf308b 330 break;
Bragadeesh153 13:fb7facaf308b 331 }
Bragadeesh153 13:fb7facaf308b 332 case 0x0002:
Bragadeesh153 13:fb7facaf308b 333 {
lakshya 15:e09aaaccf134 334 printf("\r\n");
Bragadeesh153 13:fb7facaf308b 335 telemetry[0] = 0x60;
Bragadeesh153 13:fb7facaf308b 336 telemetry[1] = tc[0];
Bragadeesh153 13:fb7facaf308b 337 telemetry[2] = ACK_CODE;
Bragadeesh153 13:fb7facaf308b 338
Bragadeesh153 13:fb7facaf308b 339 for(int i;i<16;i++)
Bragadeesh153 13:fb7facaf308b 340 telemetry[i+3] = bae_HK_minmax.voltage_max[i];
Bragadeesh153 13:fb7facaf308b 341
Bragadeesh153 13:fb7facaf308b 342 for(int i;i<12;i++)
Bragadeesh153 13:fb7facaf308b 343 telemetry[i+18] = bae_HK_minmax.current_max[i];
Bragadeesh153 13:fb7facaf308b 344
Bragadeesh153 13:fb7facaf308b 345 telemetry[29] = bae_HK_minmax.Batt_voltage_max;;
Bragadeesh153 13:fb7facaf308b 346 telemetry[30] = bae_HK_minmax.BAE_temp_max;
Bragadeesh153 13:fb7facaf308b 347
Bragadeesh153 13:fb7facaf308b 348 /*battery soc*/
Bragadeesh153 13:fb7facaf308b 349 //telemetry[31] = BAE_HK_min_max bae_HK_minmax.voltage_max;
Bragadeesh153 13:fb7facaf308b 350
Bragadeesh153 13:fb7facaf308b 351 telemetry[32] = bae_HK_minmax.Batt_temp_max[0];
Bragadeesh153 13:fb7facaf308b 352 telemetry[33] = bae_HK_minmax.Batt_temp_max[1];
Bragadeesh153 13:fb7facaf308b 353
Bragadeesh153 13:fb7facaf308b 354 /*BCN temp not there*/
Bragadeesh153 13:fb7facaf308b 355 //telemetry[34] = BAE_HK_min_max bae_HK_minmax.;
Bragadeesh153 13:fb7facaf308b 356
Bragadeesh153 13:fb7facaf308b 357 for(int i=0; i<3; i++)
Bragadeesh153 13:fb7facaf308b 358 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_max[i],&telemetry[35+(i*4)]);
Bragadeesh153 13:fb7facaf308b 359
Bragadeesh153 13:fb7facaf308b 360 for(int i=0; i<3; i++)
Bragadeesh153 13:fb7facaf308b 361 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_max[i],&telemetry[47+(i*4)]);
Bragadeesh153 13:fb7facaf308b 362
Bragadeesh153 13:fb7facaf308b 363 /*min data*/
Bragadeesh153 13:fb7facaf308b 364
Bragadeesh153 13:fb7facaf308b 365 for(int i;i<16;i++)
Bragadeesh153 13:fb7facaf308b 366 telemetry[i+59] = bae_HK_minmax.voltage_min[i];
Bragadeesh153 13:fb7facaf308b 367
Bragadeesh153 13:fb7facaf308b 368 for(int i;i<12;i++)
Bragadeesh153 13:fb7facaf308b 369 telemetry[i+74] = bae_HK_minmax.current_min[i];
Bragadeesh153 13:fb7facaf308b 370
Bragadeesh153 13:fb7facaf308b 371 telemetry[86] = bae_HK_minmax.Batt_voltage_min;
Bragadeesh153 13:fb7facaf308b 372 telemetry[87] = bae_HK_minmax.BAE_temp_min;
Bragadeesh153 13:fb7facaf308b 373
Bragadeesh153 13:fb7facaf308b 374 /*battery soc*/
Bragadeesh153 13:fb7facaf308b 375 //telemetry[88] = BAE_HK_min_max bae_HK_minmax.voltage_max;
Bragadeesh153 13:fb7facaf308b 376
Bragadeesh153 13:fb7facaf308b 377 telemetry[89] = bae_HK_minmax.Batt_temp_min[0];
Bragadeesh153 13:fb7facaf308b 378 telemetry[90] = bae_HK_minmax.Batt_temp_min[1];
Bragadeesh153 13:fb7facaf308b 379 //huhu//
Bragadeesh153 13:fb7facaf308b 380
Bragadeesh153 13:fb7facaf308b 381 /*BCN temp not there*/
Bragadeesh153 13:fb7facaf308b 382 //telemetry[91] = BAE_HK_min_max bae_HK_minmax.;
Bragadeesh153 13:fb7facaf308b 383
Bragadeesh153 13:fb7facaf308b 384 for(int i=0; i<3; i++)
Bragadeesh153 13:fb7facaf308b 385 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_min[i],&telemetry[91+(i*4)]);
Bragadeesh153 13:fb7facaf308b 386
Bragadeesh153 13:fb7facaf308b 387 for(int i=0; i<3; i++)
Bragadeesh153 13:fb7facaf308b 388 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_min[i],&telemetry[103+(i*4)]);
Bragadeesh153 13:fb7facaf308b 389
Bragadeesh153 13:fb7facaf308b 390
Bragadeesh153 13:fb7facaf308b 391 for (int i=115; i<132;i++)
Bragadeesh153 13:fb7facaf308b 392 {
Bragadeesh153 13:fb7facaf308b 393 telemetry[i] = 0x00;
Bragadeesh153 13:fb7facaf308b 394 }
Bragadeesh153 13:fb7facaf308b 395 crc16 = CRC::crc16_gen(telemetry,132);
Bragadeesh153 13:fb7facaf308b 396 telemetry[132] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 397 telemetry[133] = (uint8_t)(crc16&0x00FF);
Bragadeesh153 13:fb7facaf308b 398 break;
Bragadeesh153 13:fb7facaf308b 399 }
Bragadeesh153 13:fb7facaf308b 400 }
Bragadeesh153 13:fb7facaf308b 401 break;
Bragadeesh153 13:fb7facaf308b 402 }
sakthipriya 3:07e15677a75c 403 case 0x05:
sakthipriya 3:07e15677a75c 404 {
lakshya 15:e09aaaccf134 405 printf("\nRead from MID 0001 min max\n");
lakshya 15:e09aaaccf134 406 /*changed*/
lakshya 15:e09aaaccf134 407 printf("\n\rwrite on flash\n");
lakshya 15:e09aaaccf134 408 uint32_t FLASH_DATA[8];
lakshya 15:e09aaaccf134 409
lakshya 15:e09aaaccf134 410 uint16_t MID = ((uint16_t)tc[3] << 8) | tc[4];
lakshya 15:e09aaaccf134 411 switch(MID )
lakshya 15:e09aaaccf134 412 {
lakshya 15:e09aaaccf134 413
lakshya 15:e09aaaccf134 414 case 0x0100:
lakshya 15:e09aaaccf134 415 {
lakshya 15:e09aaaccf134 416 FLASH_DATA[0] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 15:e09aaaccf134 417 FCTN_CDMS_WR_FLASH(0x00,FLASH_DATA[0]);
lakshya 15:e09aaaccf134 418 break;
lakshya 15:e09aaaccf134 419 }
lakshya 15:e09aaaccf134 420 case 0x0101:
lakshya 15:e09aaaccf134 421 {
lakshya 15:e09aaaccf134 422 FLASH_DATA[1] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 15:e09aaaccf134 423 FCTN_CDMS_WR_FLASH(0x01,FLASH_DATA[1]);
lakshya 15:e09aaaccf134 424 break;
lakshya 15:e09aaaccf134 425 }
lakshya 15:e09aaaccf134 426
lakshya 15:e09aaaccf134 427 case 0x0102:
lakshya 15:e09aaaccf134 428 {
lakshya 15:e09aaaccf134 429 FLASH_DATA[2] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 15:e09aaaccf134 430 FCTN_CDMS_WR_FLASH(0x02,FLASH_DATA[2]);
lakshya 15:e09aaaccf134 431 break;
lakshya 15:e09aaaccf134 432 }
lakshya 15:e09aaaccf134 433
lakshya 15:e09aaaccf134 434 case 0x0103:
lakshya 15:e09aaaccf134 435 {
lakshya 15:e09aaaccf134 436 FLASH_DATA[3] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 15:e09aaaccf134 437 FCTN_CDMS_WR_FLASH(0x03,FLASH_DATA[3]);
lakshya 15:e09aaaccf134 438 break;
lakshya 15:e09aaaccf134 439 }
lakshya 15:e09aaaccf134 440 case 0x0104:
lakshya 15:e09aaaccf134 441 {
lakshya 15:e09aaaccf134 442 FLASH_DATA[4] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 15:e09aaaccf134 443 FCTN_CDMS_WR_FLASH(0x04,FLASH_DATA[4]);
lakshya 15:e09aaaccf134 444 break;
lakshya 15:e09aaaccf134 445 }
lakshya 15:e09aaaccf134 446
lakshya 15:e09aaaccf134 447 case 0x0105:
lakshya 15:e09aaaccf134 448 {
lakshya 15:e09aaaccf134 449 FLASH_DATA[5] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 15:e09aaaccf134 450 FCTN_CDMS_WR_FLASH(0x05,FLASH_DATA[5]);
lakshya 15:e09aaaccf134 451 break;
lakshya 15:e09aaaccf134 452 }
lakshya 15:e09aaaccf134 453 case 0x0106:
lakshya 15:e09aaaccf134 454 {
lakshya 15:e09aaaccf134 455 FLASH_DATA[6] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 15:e09aaaccf134 456 FCTN_CDMS_WR_FLASH(0x06,FLASH_DATA[6]);
lakshya 15:e09aaaccf134 457 break;
lakshya 15:e09aaaccf134 458 }
lakshya 15:e09aaaccf134 459
lakshya 15:e09aaaccf134 460 case 0x0107:
lakshya 15:e09aaaccf134 461 {
lakshya 15:e09aaaccf134 462 FLASH_DATA[7] = (((uint32_t)tc[5] << 24) | ((uint32_t)tc[6] << 16) | ((uint32_t)tc[7] << 8) | (uint32_t)tc[6]);
lakshya 15:e09aaaccf134 463 FCTN_CDMS_WR_FLASH(0x07,FLASH_DATA[7]);
lakshya 15:e09aaaccf134 464 break;
lakshya 15:e09aaaccf134 465 }
lakshya 15:e09aaaccf134 466
lakshya 15:e09aaaccf134 467 default:
lakshya 15:e09aaaccf134 468 {
lakshya 15:e09aaaccf134 469 printf("Invalid MMS\r\n");
lakshya 15:e09aaaccf134 470 }
lakshya 15:e09aaaccf134 471 }
lakshya 15:e09aaaccf134 472
lakshya 15:e09aaaccf134 473
lakshya 15:e09aaaccf134 474 for (int i=4; i<132;i++)
lakshya 15:e09aaaccf134 475 {
lakshya 15:e09aaaccf134 476 tm[i] = 0x00;
lakshya 15:e09aaaccf134 477 }
lakshya 15:e09aaaccf134 478 crc16 = CRC::crc16_gen(tm,132);
lakshya 15:e09aaaccf134 479 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 15:e09aaaccf134 480 tm[133] = (uint8_t)(crc16&0x00FF);
lakshya 15:e09aaaccf134 481 tm[0] = 0x60;
lakshya 15:e09aaaccf134 482 tm[1] = tc[0];
lakshya 15:e09aaaccf134 483 tm[2] = ACK_CODE;
lakshya 15:e09aaaccf134 484
lakshya 15:e09aaaccf134 485 printf("Written on Flash\r\n");
Bragadeesh153 13:fb7facaf308b 486 break;
sakthipriya 3:07e15677a75c 487 }
sakthipriya 3:07e15677a75c 488 default:
sakthipriya 3:07e15677a75c 489 {
sakthipriya 3:07e15677a75c 490 printf("Invalid TC");
Bragadeesh153 13:fb7facaf308b 491 //ACK_L234_telemetry
Bragadeesh153 13:fb7facaf308b 492 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 493 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 494 telemetry[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 495 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 496 {
Bragadeesh153 13:fb7facaf308b 497 telemetry[i]=0x00;
sakthipriya 0:7b4c00e3912f 498 }
Bragadeesh153 13:fb7facaf308b 499 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 500 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 501 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 502 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 503 {
Bragadeesh153 13:fb7facaf308b 504 telemetry[i]=0x00;
sakthipriya 0:7b4c00e3912f 505 }
Bragadeesh153 13:fb7facaf308b 506 break;
sakthipriya 3:07e15677a75c 507 }
sakthipriya 3:07e15677a75c 508 }
Bragadeesh153 13:fb7facaf308b 509 break;
sakthipriya 0:7b4c00e3912f 510 }
sakthipriya 3:07e15677a75c 511 case 0x80:
sakthipriya 3:07e15677a75c 512 {
Bragadeesh153 13:fb7facaf308b 513 //printf("Function Management Service\r\n");
sakthipriya 3:07e15677a75c 514 uint8_t service_subtype=(tc[2]&0x0F);
sakthipriya 3:07e15677a75c 515 switch(service_subtype)
sakthipriya 3:07e15677a75c 516 {
sakthipriya 3:07e15677a75c 517 case 0x01:
sakthipriya 3:07e15677a75c 518 {
sakthipriya 3:07e15677a75c 519 printf("FMS Activated\r\n");
sakthipriya 3:07e15677a75c 520 uint8_t pid=tc[3];
sakthipriya 3:07e15677a75c 521 switch(pid)
sakthipriya 3:07e15677a75c 522 {
sakthipriya 5:bb592f3185cc 523 case 0xE0:
sakthipriya 3:07e15677a75c 524 {
Bragadeesh153 19:403cb36e22ed 525 float mag_data_comm[3]={0,0,0};
Bragadeesh153 19:403cb36e22ed 526 float gyro_data_comm[3]={0,0,0};
Bragadeesh153 19:403cb36e22ed 527 float moment_comm[3];
Bragadeesh153 18:21740620c65e 528 printf("ACS_COMSN SOFTWARE\r\n");
Bragadeesh153 13:fb7facaf308b 529 //ACK_L234_telemetry
Bragadeesh153 13:fb7facaf308b 530
Bragadeesh153 18:21740620c65e 531 ACS_STATE = tc[4];
Bragadeesh153 18:21740620c65e 532
Bragadeesh153 19:403cb36e22ed 533 if(ACS_STATE == 7) // Nominal mode
Bragadeesh153 18:21740620c65e 534 {
Bragadeesh153 18:21740620c65e 535
Bragadeesh153 18:21740620c65e 536 printf("\n\r Nominal mode \n");
Bragadeesh153 19:403cb36e22ed 537
Bragadeesh153 18:21740620c65e 538
Bragadeesh153 19:403cb36e22ed 539 FCTN_ACS_CNTRLALGO(moment_comm,mag_data_comm,gyro_data_comm,0x01,0x00,ACS_DETUMBLING_ALGO_TYPE);
Bragadeesh153 18:21740620c65e 540
Bragadeesh153 18:21740620c65e 541 printf("\n\r Moment values returned by control algo \n");
Bragadeesh153 18:21740620c65e 542 for(int i=0; i<3; i++)
Bragadeesh153 18:21740620c65e 543 {
Bragadeesh153 19:403cb36e22ed 544 printf("%f\t",moment_comm[i]);
Bragadeesh153 19:403cb36e22ed 545 }
Bragadeesh153 18:21740620c65e 546
Bragadeesh153 18:21740620c65e 547
Bragadeesh153 18:21740620c65e 548 }
Bragadeesh153 18:21740620c65e 549
Bragadeesh153 18:21740620c65e 550 else if(ACS_STATE == 8) // Auto Control
Bragadeesh153 18:21740620c65e 551 {
Bragadeesh153 18:21740620c65e 552
Bragadeesh153 19:403cb36e22ed 553 printf("\n\r Auto control mode \n");
Bragadeesh153 19:403cb36e22ed 554
Bragadeesh153 19:403cb36e22ed 555 FCTN_ACS_CNTRLALGO(moment_comm,mag_data_comm,gyro_data_comm,0x00,0x00,ACS_DETUMBLING_ALGO_TYPE);
Bragadeesh153 18:21740620c65e 556 printf("\n\r Moment values returned by control algo \n");
Bragadeesh153 18:21740620c65e 557 for(int i=0; i<3; i++)
Bragadeesh153 18:21740620c65e 558 {
Bragadeesh153 19:403cb36e22ed 559 printf("%f\t",moment_comm[i]);
Bragadeesh153 18:21740620c65e 560 }
Bragadeesh153 13:fb7facaf308b 561
Bragadeesh153 18:21740620c65e 562 }
Bragadeesh153 18:21740620c65e 563
Bragadeesh153 18:21740620c65e 564 else if(ACS_STATE == 9) // Detumbling
sakthipriya 3:07e15677a75c 565 {
Bragadeesh153 19:403cb36e22ed 566
Bragadeesh153 19:403cb36e22ed 567 FCTN_ACS_CNTRLALGO(moment_comm,mag_data_comm,gyro_data_comm,0x00,0x01,ACS_DETUMBLING_ALGO_TYPE);
Bragadeesh153 18:21740620c65e 568 printf("\n\r Moment values returned by control algo \n");
Bragadeesh153 18:21740620c65e 569 for(int i=0; i<3; i++)
Bragadeesh153 18:21740620c65e 570 {
Bragadeesh153 19:403cb36e22ed 571 printf("%f\t",moment_comm[i]);
Bragadeesh153 19:403cb36e22ed 572 }
Bragadeesh153 19:403cb36e22ed 573
sakthipriya 3:07e15677a75c 574 }
Bragadeesh153 18:21740620c65e 575
Bragadeesh153 19:403cb36e22ed 576 else
Bragadeesh153 19:403cb36e22ed 577 {
Bragadeesh153 19:403cb36e22ed 578
Bragadeesh153 19:403cb36e22ed 579 ACS_STATUS = 7;
Bragadeesh153 19:403cb36e22ed 580 }
Bragadeesh153 13:fb7facaf308b 581
lakshya 10:f93407b97750 582 // Control algo commissioning
Bragadeesh153 19:403cb36e22ed 583 FCTN_CONVERT_FLOAT(moment_comm[0],&telemetry[4]); //telemetry[4] - telemetry[7]
Bragadeesh153 19:403cb36e22ed 584 FCTN_CONVERT_FLOAT(moment_comm[1],&telemetry[8]); //telemetry[8] - telemetry[11]
Bragadeesh153 19:403cb36e22ed 585 FCTN_CONVERT_FLOAT(moment_comm[2],&telemetry[12]); //telemetry[12] - telemetry[15]
lakshya 10:f93407b97750 586 // to include commission TR as well
lakshya 10:f93407b97750 587 for(uint8_t i=16;i<132;i++)
lakshya 10:f93407b97750 588 {
Bragadeesh153 13:fb7facaf308b 589 telemetry[i]=0x00;
lakshya 10:f93407b97750 590 }
Bragadeesh153 13:fb7facaf308b 591
Bragadeesh153 13:fb7facaf308b 592 crc16 = CRC::crc16_gen(telemetry,132);
Bragadeesh153 13:fb7facaf308b 593 telemetry[133] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 594 telemetry[134] = (uint8_t)(crc16&0x00FF);
Bragadeesh153 13:fb7facaf308b 595 break;
sakthipriya 3:07e15677a75c 596 }
lakshya 10:f93407b97750 597 case 0xE1:
sakthipriya 3:07e15677a75c 598 {
lakshya 10:f93407b97750 599 printf("HARDWARE_COMSN\r\n");
Bragadeesh153 13:fb7facaf308b 600 //ACK_L234_telemetry
Bragadeesh153 18:21740620c65e 601
Bragadeesh153 19:403cb36e22ed 602 int init1=0;
Bragadeesh153 19:403cb36e22ed 603 int init2=0;
Bragadeesh153 19:403cb36e22ed 604 int data1=0;
Bragadeesh153 19:403cb36e22ed 605 int data2=0;
Bragadeesh153 13:fb7facaf308b 606
Bragadeesh153 18:21740620c65e 607 float PWM_tc[3];
Bragadeesh153 18:21740620c65e 608 PWM_tc[0]=(float(tc[4]))*1;
Bragadeesh153 18:21740620c65e 609 PWM_tc[1]=(float(tc[4]))*1;
Bragadeesh153 18:21740620c65e 610 PWM_tc[2]=(float(tc[4]))*1;
Bragadeesh153 18:21740620c65e 611
Bragadeesh153 18:21740620c65e 612 DRV_Z_EN = 1;
Bragadeesh153 18:21740620c65e 613 DRV_XY_EN = 1;
Bragadeesh153 18:21740620c65e 614
Bragadeesh153 13:fb7facaf308b 615
Bragadeesh153 13:fb7facaf308b 616
Bragadeesh153 13:fb7facaf308b 617 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 618 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 619 telemetry[2]=ACK_CODE;
lakshya 10:f93407b97750 620
Bragadeesh153 18:21740620c65e 621 PWM1 = 0;
Bragadeesh153 18:21740620c65e 622 PWM2 = 0;
Bragadeesh153 18:21740620c65e 623 PWM3 = 0;
Bragadeesh153 18:21740620c65e 624
Bragadeesh153 18:21740620c65e 625 wait_ms(ACS_DEMAG_TIME_DELAY);
Bragadeesh153 18:21740620c65e 626
Bragadeesh153 18:21740620c65e 627 ATS2_SW_ENABLE = 1;
Bragadeesh153 19:403cb36e22ed 628 wait_ms(5);
Bragadeesh153 18:21740620c65e 629 ATS1_SW_ENABLE = 0;
Bragadeesh153 19:403cb36e22ed 630 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 631 init1 = SENSOR_INIT();
Bragadeesh153 19:403cb36e22ed 632 if( init1 == 1)
Bragadeesh153 19:403cb36e22ed 633 {
Bragadeesh153 19:403cb36e22ed 634 data1 = SENSOR_DATA_ACQ();
Bragadeesh153 19:403cb36e22ed 635 }
Bragadeesh153 19:403cb36e22ed 636
Bragadeesh153 19:403cb36e22ed 637
Bragadeesh153 19:403cb36e22ed 638 ATS1_SW_ENABLE = 1;
Bragadeesh153 19:403cb36e22ed 639 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 640 ATS2_SW_ENABLE = 0;
Bragadeesh153 19:403cb36e22ed 641 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 642
Bragadeesh153 19:403cb36e22ed 643 if(data1 == 0)
Bragadeesh153 19:403cb36e22ed 644 {
Bragadeesh153 19:403cb36e22ed 645 ATS2_SW_ENABLE = 0;
Bragadeesh153 19:403cb36e22ed 646 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 647 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0xC0;
Bragadeesh153 19:403cb36e22ed 648 }
Bragadeesh153 19:403cb36e22ed 649 else if(data1==1)
Bragadeesh153 19:403cb36e22ed 650 {
Bragadeesh153 19:403cb36e22ed 651 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x10;
Bragadeesh153 19:403cb36e22ed 652 }
Bragadeesh153 19:403cb36e22ed 653 else if(data1==2)
Bragadeesh153 19:403cb36e22ed 654 {
Bragadeesh153 19:403cb36e22ed 655 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x20;
Bragadeesh153 19:403cb36e22ed 656 }
Bragadeesh153 19:403cb36e22ed 657 else if(data1==3)
Bragadeesh153 19:403cb36e22ed 658 {
Bragadeesh153 19:403cb36e22ed 659 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x30;
Bragadeesh153 19:403cb36e22ed 660 }
Bragadeesh153 19:403cb36e22ed 661
Bragadeesh153 19:403cb36e22ed 662
Bragadeesh153 19:403cb36e22ed 663 init2 = SENSOR_INIT();
Bragadeesh153 19:403cb36e22ed 664 if( init2 == 1)
Bragadeesh153 19:403cb36e22ed 665 {
Bragadeesh153 19:403cb36e22ed 666 data2 = SENSOR_DATA_ACQ();
Bragadeesh153 19:403cb36e22ed 667 }
Bragadeesh153 19:403cb36e22ed 668
Bragadeesh153 19:403cb36e22ed 669 uint8_t ats_data=1;
Bragadeesh153 18:21740620c65e 670
Bragadeesh153 19:403cb36e22ed 671 if(data2 == 0)
Bragadeesh153 19:403cb36e22ed 672 {
Bragadeesh153 19:403cb36e22ed 673 ATS2_SW_ENABLE = 1;
Bragadeesh153 19:403cb36e22ed 674 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 675 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x0C;
Bragadeesh153 19:403cb36e22ed 676 if(data1 == 2)
Bragadeesh153 19:403cb36e22ed 677 {
Bragadeesh153 19:403cb36e22ed 678 ATS1_SW_ENABLE = 0;
Bragadeesh153 19:403cb36e22ed 679 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 680 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x06;
Bragadeesh153 19:403cb36e22ed 681 }
Bragadeesh153 19:403cb36e22ed 682 else if(data1 == 3)
Bragadeesh153 19:403cb36e22ed 683 {
Bragadeesh153 19:403cb36e22ed 684 ATS1_SW_ENABLE = 0;
Bragadeesh153 19:403cb36e22ed 685 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 686 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x07;
Bragadeesh153 19:403cb36e22ed 687 }
Bragadeesh153 19:403cb36e22ed 688 else if(data1 == 1)
Bragadeesh153 19:403cb36e22ed 689 {
Bragadeesh153 19:403cb36e22ed 690 ATS1_SW_ENABLE = 0;
Bragadeesh153 19:403cb36e22ed 691 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 692 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x05;
Bragadeesh153 19:403cb36e22ed 693 ats_data = 0;
Bragadeesh153 19:403cb36e22ed 694 }
Bragadeesh153 19:403cb36e22ed 695
Bragadeesh153 19:403cb36e22ed 696
Bragadeesh153 19:403cb36e22ed 697 }
Bragadeesh153 19:403cb36e22ed 698
Bragadeesh153 19:403cb36e22ed 699 else if(data2==1)
Bragadeesh153 19:403cb36e22ed 700 {
Bragadeesh153 19:403cb36e22ed 701
Bragadeesh153 19:403cb36e22ed 702
Bragadeesh153 19:403cb36e22ed 703
Bragadeesh153 19:403cb36e22ed 704 if(data1 == 2)
Bragadeesh153 19:403cb36e22ed 705 {
Bragadeesh153 19:403cb36e22ed 706 ATS2_SW_ENABLE = 1;
Bragadeesh153 19:403cb36e22ed 707 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 708 ATS1_SW_ENABLE = 0;
Bragadeesh153 19:403cb36e22ed 709 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 710 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x01;
Bragadeesh153 19:403cb36e22ed 711 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x60;
Bragadeesh153 19:403cb36e22ed 712 }
Bragadeesh153 19:403cb36e22ed 713 else if(data1 == 3)
Bragadeesh153 19:403cb36e22ed 714 {
Bragadeesh153 19:403cb36e22ed 715 ATS2_SW_ENABLE = 1;
Bragadeesh153 19:403cb36e22ed 716 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 717 ATS1_SW_ENABLE = 0;
Bragadeesh153 19:403cb36e22ed 718 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 719 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x01;
Bragadeesh153 19:403cb36e22ed 720 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x70;
Bragadeesh153 19:403cb36e22ed 721 }
Bragadeesh153 19:403cb36e22ed 722 else
Bragadeesh153 19:403cb36e22ed 723 {
Bragadeesh153 19:403cb36e22ed 724 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x05;
Bragadeesh153 19:403cb36e22ed 725 ats_data = 0;
Bragadeesh153 19:403cb36e22ed 726 }
Bragadeesh153 19:403cb36e22ed 727 }
Bragadeesh153 19:403cb36e22ed 728
Bragadeesh153 19:403cb36e22ed 729 else if(data2==2)
Bragadeesh153 19:403cb36e22ed 730 {
Bragadeesh153 19:403cb36e22ed 731 if(data1 == 3)
Bragadeesh153 19:403cb36e22ed 732 {
Bragadeesh153 19:403cb36e22ed 733 ATS2_SW_ENABLE = 1;
Bragadeesh153 19:403cb36e22ed 734 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 735 ATS1_SW_ENABLE = 0;
Bragadeesh153 19:403cb36e22ed 736 wait_ms(5);
Bragadeesh153 19:403cb36e22ed 737 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x02;
Bragadeesh153 19:403cb36e22ed 738 ACS_ATS_STATUS = (ACS_ATS_STATUS&0x0F)|0x70;
Bragadeesh153 19:403cb36e22ed 739 }
Bragadeesh153 19:403cb36e22ed 740 else
Bragadeesh153 19:403cb36e22ed 741 {
Bragadeesh153 19:403cb36e22ed 742 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x06;
Bragadeesh153 19:403cb36e22ed 743 }
Bragadeesh153 19:403cb36e22ed 744 }
Bragadeesh153 19:403cb36e22ed 745 else if(data2==3)
Bragadeesh153 19:403cb36e22ed 746 {
Bragadeesh153 19:403cb36e22ed 747 ACS_ATS_STATUS = (ACS_ATS_STATUS&0xF0)|0x07;
Bragadeesh153 19:403cb36e22ed 748 }
Bragadeesh153 19:403cb36e22ed 749
Bragadeesh153 19:403cb36e22ed 750 SelectLineb3 =0;
Bragadeesh153 19:403cb36e22ed 751 SelectLineb2 =1;
Bragadeesh153 19:403cb36e22ed 752 SelectLineb1 =0;
Bragadeesh153 19:403cb36e22ed 753 SelectLineb0 =1;
Bragadeesh153 19:403cb36e22ed 754 int resistance;
Bragadeesh153 19:403cb36e22ed 755
Bragadeesh153 19:403cb36e22ed 756
Bragadeesh153 18:21740620c65e 757
Bragadeesh153 18:21740620c65e 758 PWM1 = PWM_tc[0];
Bragadeesh153 18:21740620c65e 759 PWM2 = 0;
Bragadeesh153 18:21740620c65e 760 PWM3 = 0;
Bragadeesh153 18:21740620c65e 761
Bragadeesh153 18:21740620c65e 762 wait_ms(ACS_DEMAG_TIME_DELAY);
Bragadeesh153 18:21740620c65e 763
Bragadeesh153 19:403cb36e22ed 764 if(ats_data == 0)
Bragadeesh153 19:403cb36e22ed 765 SENSOR_DATA_ACQ();
Bragadeesh153 19:403cb36e22ed 766 actual_data.current_actual[5]=CurrentInput.read();
Bragadeesh153 19:403cb36e22ed 767 actual_data.current_actual[5]= actual_data.current_actual[5]*3.3/(50*rsens);
Bragadeesh153 19:403cb36e22ed 768
Bragadeesh153 19:403cb36e22ed 769
Bragadeesh153 19:403cb36e22ed 770 resistance=24000*actual_data.current_actual[5]/(3.3-actual_data.current_actual[5]);
Bragadeesh153 19:403cb36e22ed 771 if(actual_data.current_actual[5]>1.47)
Bragadeesh153 19:403cb36e22ed 772 {
Bragadeesh153 19:403cb36e22ed 773 actual_data.current_actual[5]=3694/log(24.032242*resistance);
Bragadeesh153 19:403cb36e22ed 774 }
Bragadeesh153 19:403cb36e22ed 775 else{
Bragadeesh153 19:403cb36e22ed 776
Bragadeesh153 19:403cb36e22ed 777 actual_data.current_actual[5]=3365.4/log(7.60573*resistance);
Bragadeesh153 19:403cb36e22ed 778 }
Bragadeesh153 19:403cb36e22ed 779
Bragadeesh153 19:403cb36e22ed 780
Bragadeesh153 18:21740620c65e 781 FCTN_CONVERT_FLOAT(actual_data.current_actual[5],&telemetry[3 + (0*4)]);
Bragadeesh153 18:21740620c65e 782 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[0],&telemetry[3 + (1*4)]);
Bragadeesh153 18:21740620c65e 783 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[1],&telemetry[3 + (2*4)]);
Bragadeesh153 18:21740620c65e 784 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[2],&telemetry[3 + (3*4)]);
lakshya 10:f93407b97750 785
lakshya 10:f93407b97750 786
Bragadeesh153 18:21740620c65e 787 PWM1 = 0;
Bragadeesh153 18:21740620c65e 788 PWM2 = PWM_tc[1];
Bragadeesh153 18:21740620c65e 789 PWM3 = 0;
Bragadeesh153 18:21740620c65e 790
Bragadeesh153 18:21740620c65e 791 wait_ms(ACS_DEMAG_TIME_DELAY);
Bragadeesh153 18:21740620c65e 792
Bragadeesh153 19:403cb36e22ed 793 if(ats_data == 0)
Bragadeesh153 19:403cb36e22ed 794 SENSOR_DATA_ACQ();
Bragadeesh153 19:403cb36e22ed 795 actual_data.current_actual[5]=CurrentInput.read();
Bragadeesh153 19:403cb36e22ed 796 actual_data.current_actual[5]= actual_data.current_actual[5]*3.3/(50*rsens);
Bragadeesh153 19:403cb36e22ed 797
Bragadeesh153 19:403cb36e22ed 798
Bragadeesh153 19:403cb36e22ed 799 resistance=24000*actual_data.current_actual[5]/(3.3-actual_data.current_actual[5]);
Bragadeesh153 19:403cb36e22ed 800 if(actual_data.current_actual[5]>1.47)
Bragadeesh153 19:403cb36e22ed 801 {
Bragadeesh153 19:403cb36e22ed 802 actual_data.current_actual[5]=3694/log(24.032242*resistance);
Bragadeesh153 19:403cb36e22ed 803 }
Bragadeesh153 19:403cb36e22ed 804 else{
Bragadeesh153 19:403cb36e22ed 805
Bragadeesh153 19:403cb36e22ed 806 actual_data.current_actual[5]=3365.4/log(7.60573*resistance);
Bragadeesh153 19:403cb36e22ed 807 }
Bragadeesh153 19:403cb36e22ed 808
Bragadeesh153 18:21740620c65e 809
Bragadeesh153 18:21740620c65e 810 FCTN_CONVERT_FLOAT(actual_data.current_actual[5],&telemetry[3 + (4*4)]);
Bragadeesh153 18:21740620c65e 811 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[0],&telemetry[3 + (5*4)]);
Bragadeesh153 18:21740620c65e 812 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[1],&telemetry[3 + (6*4)]);
Bragadeesh153 18:21740620c65e 813 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[2],&telemetry[3 + (7*4)]);
lakshya 10:f93407b97750 814
Bragadeesh153 18:21740620c65e 815 PWM1 = 0;
Bragadeesh153 18:21740620c65e 816 PWM2 = 0;
Bragadeesh153 18:21740620c65e 817 PWM3 = PWM_tc[2];
Bragadeesh153 18:21740620c65e 818
Bragadeesh153 18:21740620c65e 819 wait_ms(ACS_DEMAG_TIME_DELAY);
Bragadeesh153 18:21740620c65e 820
Bragadeesh153 19:403cb36e22ed 821 if(ats_data == 0)
Bragadeesh153 19:403cb36e22ed 822 SENSOR_DATA_ACQ();
Bragadeesh153 19:403cb36e22ed 823 actual_data.current_actual[5]=CurrentInput.read();
Bragadeesh153 19:403cb36e22ed 824 actual_data.current_actual[5]= actual_data.current_actual[5]*3.3/(50*rsens);
Bragadeesh153 19:403cb36e22ed 825
Bragadeesh153 19:403cb36e22ed 826
Bragadeesh153 19:403cb36e22ed 827 resistance=24000*actual_data.current_actual[5]/(3.3-actual_data.current_actual[5]);
Bragadeesh153 19:403cb36e22ed 828 if(actual_data.current_actual[5]>1.47)
Bragadeesh153 19:403cb36e22ed 829 {
Bragadeesh153 19:403cb36e22ed 830 actual_data.current_actual[5]=3694/log(24.032242*resistance);
Bragadeesh153 19:403cb36e22ed 831 }
Bragadeesh153 19:403cb36e22ed 832 else{
Bragadeesh153 19:403cb36e22ed 833
Bragadeesh153 19:403cb36e22ed 834 actual_data.current_actual[5]=3365.4/log(7.60573*resistance);
Bragadeesh153 19:403cb36e22ed 835 }
Bragadeesh153 19:403cb36e22ed 836
Bragadeesh153 18:21740620c65e 837 FCTN_CONVERT_FLOAT(actual_data.current_actual[5],&telemetry[3 + (4*4)]);
Bragadeesh153 18:21740620c65e 838 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[0],&telemetry[3 + (5*4)]);
Bragadeesh153 18:21740620c65e 839 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[1],&telemetry[3 + (6*4)]);
Bragadeesh153 18:21740620c65e 840 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[2],&telemetry[3 + (7*4)]);
Bragadeesh153 18:21740620c65e 841
Bragadeesh153 19:403cb36e22ed 842 PWM1 = 0;
Bragadeesh153 19:403cb36e22ed 843 PWM2 = 0;
Bragadeesh153 19:403cb36e22ed 844 PWM3 = 0;
Bragadeesh153 18:21740620c65e 845
Bragadeesh153 19:403cb36e22ed 846 wait_ms(ACS_DEMAG_TIME_DELAY);
Bragadeesh153 19:403cb36e22ed 847
Bragadeesh153 19:403cb36e22ed 848 if(ats_data == 0)
Bragadeesh153 19:403cb36e22ed 849 SENSOR_DATA_ACQ();
Bragadeesh153 19:403cb36e22ed 850 actual_data.current_actual[5]=CurrentInput.read();
Bragadeesh153 19:403cb36e22ed 851 actual_data.current_actual[5]= actual_data.current_actual[5]*3.3/(50*rsens);
Bragadeesh153 19:403cb36e22ed 852
Bragadeesh153 19:403cb36e22ed 853
Bragadeesh153 19:403cb36e22ed 854 resistance=24000*actual_data.current_actual[5]/(3.3-actual_data.current_actual[5]);
Bragadeesh153 19:403cb36e22ed 855 if(actual_data.current_actual[5]>1.47)
Bragadeesh153 19:403cb36e22ed 856 {
Bragadeesh153 19:403cb36e22ed 857 actual_data.current_actual[5]=3694/log(24.032242*resistance);
Bragadeesh153 19:403cb36e22ed 858 }
Bragadeesh153 19:403cb36e22ed 859 else{
Bragadeesh153 19:403cb36e22ed 860
Bragadeesh153 19:403cb36e22ed 861 actual_data.current_actual[5]=3365.4/log(7.60573*resistance);
Bragadeesh153 19:403cb36e22ed 862 }
Bragadeesh153 19:403cb36e22ed 863
Bragadeesh153 19:403cb36e22ed 864
Bragadeesh153 19:403cb36e22ed 865 FCTN_CONVERT_FLOAT(actual_data.current_actual[5],&telemetry[3 + (8*4)]);
Bragadeesh153 19:403cb36e22ed 866 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[0],&telemetry[3 + (9*4)]);
Bragadeesh153 19:403cb36e22ed 867 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[1],&telemetry[3 + (10*4)]);
Bragadeesh153 19:403cb36e22ed 868 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[2],&telemetry[3 + (11*4)]);
lakshya 10:f93407b97750 869
Bragadeesh153 13:fb7facaf308b 870 // for(int i=0; i<12; i++)
Bragadeesh153 13:fb7facaf308b 871 // FCTN_CONVERT_FLOAT(actual_data.current_actual[i],&telemetry[16 + (i*4)]);
lakshya 10:f93407b97750 872
Bragadeesh153 13:fb7facaf308b 873
Bragadeesh153 13:fb7facaf308b 874 // FCTN_ATS_DATA_ACQ(); //get data
Bragadeesh153 13:fb7facaf308b 875
lakshya 10:f93407b97750 876
lakshya 10:f93407b97750 877 // to include commission TR as well
Bragadeesh153 18:21740620c65e 878 for(uint8_t i=35;i<132;i++)
lakshya 10:f93407b97750 879 {
Bragadeesh153 13:fb7facaf308b 880 telemetry[i]=0x00;
lakshya 10:f93407b97750 881 }
Bragadeesh153 13:fb7facaf308b 882
Bragadeesh153 13:fb7facaf308b 883 crc16 = CRC::crc16_gen(telemetry,132);
Bragadeesh153 13:fb7facaf308b 884 telemetry[133] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 885 telemetry[134] = (uint8_t)(crc16&0x00FF);
Bragadeesh153 13:fb7facaf308b 886 break;
lakshya 10:f93407b97750 887 }
Bragadeesh153 13:fb7facaf308b 888 case 0x02:
lakshya 10:f93407b97750 889 {
Bragadeesh153 13:fb7facaf308b 890
Bragadeesh153 13:fb7facaf308b 891 printf("Run P_EPS_MAIN\r\n");
Bragadeesh153 13:fb7facaf308b 892 F_EPS();
Bragadeesh153 13:fb7facaf308b 893 //ACK_L234_telemetry
Bragadeesh153 13:fb7facaf308b 894 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 895 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 896 telemetry[2]=ACK_CODE;
lakshya 10:f93407b97750 897 for(uint8_t i=0;i<133;i++)
sakthipriya 3:07e15677a75c 898 {
Bragadeesh153 13:fb7facaf308b 899 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 900 }
Bragadeesh153 13:fb7facaf308b 901 crc16 = CRC::crc16_gen(telemetry,132);
Bragadeesh153 13:fb7facaf308b 902 telemetry[132] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 903 telemetry[133] = (uint8_t)(crc16&0x00FF);
Bragadeesh153 13:fb7facaf308b 904
sakthipriya 3:07e15677a75c 905 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 906 {
Bragadeesh153 13:fb7facaf308b 907 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 908 }
Bragadeesh153 13:fb7facaf308b 909 break;
sakthipriya 3:07e15677a75c 910 }
Bragadeesh153 13:fb7facaf308b 911 case 0x03:
sakthipriya 3:07e15677a75c 912 {
Bragadeesh153 13:fb7facaf308b 913 printf("Run P_ACS_INIT\r\n");
Bragadeesh153 13:fb7facaf308b 914 FCTN_ACS_INIT();
Bragadeesh153 13:fb7facaf308b 915 //ACK_L234_telemetry
Bragadeesh153 13:fb7facaf308b 916 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 917 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 918 telemetry[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 919 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 920 {
Bragadeesh153 13:fb7facaf308b 921 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 922 }
Bragadeesh153 13:fb7facaf308b 923 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 924 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 925 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 926 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 927 {
Bragadeesh153 13:fb7facaf308b 928 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 929 }
Bragadeesh153 13:fb7facaf308b 930 break;
sakthipriya 3:07e15677a75c 931 }
sakthipriya 3:07e15677a75c 932 case 0x04:
sakthipriya 3:07e15677a75c 933 {
Bragadeesh153 13:fb7facaf308b 934
sakthipriya 3:07e15677a75c 935 printf("Run P_ACS_ACQ_DATA\r\n");
Bragadeesh153 13:fb7facaf308b 936 FCTN_ATS_DATA_ACQ();
sakthipriya 3:07e15677a75c 937 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 938 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 939 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 940 telemetry[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 941 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 942 {
Bragadeesh153 13:fb7facaf308b 943 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 944 }
Bragadeesh153 13:fb7facaf308b 945 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 946 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 947 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 948 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 949 {
Bragadeesh153 13:fb7facaf308b 950 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 951 }
Bragadeesh153 13:fb7facaf308b 952 break;
sakthipriya 3:07e15677a75c 953 }
sakthipriya 3:07e15677a75c 954 case 0x05:
sakthipriya 3:07e15677a75c 955 {
sakthipriya 3:07e15677a75c 956 printf("Run P_ACS_MAIN\r\n");
lakshya 10:f93407b97750 957 F_ACS();
Bragadeesh153 13:fb7facaf308b 958 for(int i=0; i<3; i++)
Bragadeesh153 13:fb7facaf308b 959 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[i],&telemetry[(i*4)]);
lakshya 10:f93407b97750 960 for(int i=0; i<3; i++)
Bragadeesh153 13:fb7facaf308b 961 FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[i],&telemetry[12+(i*4)]);
Bragadeesh153 13:fb7facaf308b 962
Bragadeesh153 13:fb7facaf308b 963 telemetry[24] = ACS_STATE;
Bragadeesh153 13:fb7facaf308b 964 telemetry[24] = telemetry[5]|(EN_BTRY_HT<<3);
Bragadeesh153 13:fb7facaf308b 965 telemetry[24] = telemetry[5]|(phase_TR_x<<4);
Bragadeesh153 13:fb7facaf308b 966 telemetry[24] = telemetry[5]|(phase_TR_y<<5);
Bragadeesh153 13:fb7facaf308b 967 telemetry[24] = telemetry[5]|(phase_TR_z<<6);
Bragadeesh153 13:fb7facaf308b 968
lakshya 11:1fdb94ae6563 969 /*___________________change / check pwm working__________________________________*/
Bragadeesh153 13:fb7facaf308b 970
Bragadeesh153 13:fb7facaf308b 971 FCTN_CONVERT_FLOAT(PWM1,&telemetry[25]);
Bragadeesh153 13:fb7facaf308b 972 FCTN_CONVERT_FLOAT(PWM2,&telemetry[29]);
Bragadeesh153 13:fb7facaf308b 973 FCTN_CONVERT_FLOAT(PWM3,&telemetry[33]);
Bragadeesh153 13:fb7facaf308b 974
lakshya 10:f93407b97750 975 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 976 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 977 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 978 telemetry[2]=ACK_CODE;
lakshya 10:f93407b97750 979 for(uint8_t i=3;i<11;i++)
lakshya 10:f93407b97750 980 {
Bragadeesh153 13:fb7facaf308b 981 telemetry[i]=0x00;
lakshya 10:f93407b97750 982 }
Bragadeesh153 13:fb7facaf308b 983
Bragadeesh153 13:fb7facaf308b 984 crc16 = CRC::crc16_gen(telemetry,37);
Bragadeesh153 13:fb7facaf308b 985 telemetry[37] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 986 telemetry[38] = (uint8_t)(crc16&0x00FF);
lakshya 10:f93407b97750 987 for(uint8_t i=39;i<134;i++)
lakshya 10:f93407b97750 988 {
Bragadeesh153 13:fb7facaf308b 989 telemetry[i]=0x00;
lakshya 10:f93407b97750 990 }
Bragadeesh153 13:fb7facaf308b 991 break;
lakshya 10:f93407b97750 992 }
lakshya 10:f93407b97750 993 case 0x06:
lakshya 10:f93407b97750 994 {
lakshya 10:f93407b97750 995 F_BCN();
Bragadeesh153 13:fb7facaf308b 996 printf("Run P_BCN_INIT\r\n");
sakthipriya 3:07e15677a75c 997 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 998 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 999 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1000 telemetry[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 1001 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1002 {
Bragadeesh153 13:fb7facaf308b 1003 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1004 }
Bragadeesh153 13:fb7facaf308b 1005 crc16 = CRC::crc16_gen(telemetry,0);
Bragadeesh153 13:fb7facaf308b 1006 telemetry[0] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1007 telemetry[1] = (uint8_t)(crc16&0x00FF);
lakshya 10:f93407b97750 1008 for(uint8_t i=2;i<134;i++)
sakthipriya 3:07e15677a75c 1009 {
Bragadeesh153 13:fb7facaf308b 1010 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1011 }
Bragadeesh153 13:fb7facaf308b 1012 break;
sakthipriya 3:07e15677a75c 1013 }
sakthipriya 3:07e15677a75c 1014 case 0x07:
sakthipriya 3:07e15677a75c 1015 {
Bragadeesh153 13:fb7facaf308b 1016 printf("Run P_BCN_TX_MAIN\r\n");
sakthipriya 3:07e15677a75c 1017 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1018 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1019 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1020 telemetry[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 1021 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1022 {
Bragadeesh153 13:fb7facaf308b 1023 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1024 }
Bragadeesh153 13:fb7facaf308b 1025 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1026 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1027 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1028 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1029 {
Bragadeesh153 13:fb7facaf308b 1030 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1031 }
Bragadeesh153 13:fb7facaf308b 1032 break;
Bragadeesh153 13:fb7facaf308b 1033 }
Bragadeesh153 13:fb7facaf308b 1034 case 0x11:
sakthipriya 3:07e15677a75c 1035 {
sakthipriya 3:07e15677a75c 1036 printf("SW_ON_ACS_ATS1_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 1037 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1038 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1039 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1040 telemetry[2]=1;
lakshya 10:f93407b97750 1041 ATS1_SW_ENABLE = 1; // making sure we switch off the other
sakthipriya 9:194afacf7449 1042 ATS1_SW_ENABLE = 0;
sakthipriya 3:07e15677a75c 1043 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1044 {
Bragadeesh153 13:fb7facaf308b 1045 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1046 }
Bragadeesh153 13:fb7facaf308b 1047 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1048 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1049 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1050 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1051 {
Bragadeesh153 13:fb7facaf308b 1052 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1053 }
Bragadeesh153 13:fb7facaf308b 1054 break;
sakthipriya 3:07e15677a75c 1055 }
sakthipriya 3:07e15677a75c 1056 case 0x12:
sakthipriya 3:07e15677a75c 1057 {
sakthipriya 3:07e15677a75c 1058 printf("SW_ON_ACS_ATS2_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 1059 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1060 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1061 telemetry[1]=tc[0];
lakshya 10:f93407b97750 1062 ATS1_SW_ENABLE = 1; //make sure u switch off the other
sakthipriya 9:194afacf7449 1063 ATS2_SW_ENABLE = 0;
Bragadeesh153 13:fb7facaf308b 1064 telemetry[2]=1;
sakthipriya 3:07e15677a75c 1065 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1066 {
Bragadeesh153 13:fb7facaf308b 1067 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1068 }
Bragadeesh153 13:fb7facaf308b 1069 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1070 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1071 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1072 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1073 {
Bragadeesh153 13:fb7facaf308b 1074 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1075 }
Bragadeesh153 13:fb7facaf308b 1076 break;
sakthipriya 3:07e15677a75c 1077 }
sakthipriya 3:07e15677a75c 1078 case 0x13:
sakthipriya 3:07e15677a75c 1079 {
sakthipriya 3:07e15677a75c 1080 printf("SW_ON_ACS_TR_XY_ENABLE\r\n");
sakthipriya 3:07e15677a75c 1081 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1082 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1083 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1084 TRXY_SW = 1;
Bragadeesh153 13:fb7facaf308b 1085 telemetry[2]=1;
sakthipriya 3:07e15677a75c 1086 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1087 {
Bragadeesh153 13:fb7facaf308b 1088 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1089 }
Bragadeesh153 13:fb7facaf308b 1090 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1091 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1092 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1093 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1094 {
Bragadeesh153 13:fb7facaf308b 1095 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1096 }
Bragadeesh153 13:fb7facaf308b 1097 break;
sakthipriya 3:07e15677a75c 1098 }
sakthipriya 3:07e15677a75c 1099 case 0x14:
sakthipriya 3:07e15677a75c 1100 {
sakthipriya 3:07e15677a75c 1101 printf("SW_ON_ACS_TR_Z_ENABLE\r\n");
sakthipriya 3:07e15677a75c 1102 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1103 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1104 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1105 telemetry[2]=1;
sakthipriya 5:bb592f3185cc 1106 TRZ_SW = 1;
sakthipriya 3:07e15677a75c 1107 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1108 {
Bragadeesh153 13:fb7facaf308b 1109 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1110 }
Bragadeesh153 13:fb7facaf308b 1111 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1112 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1113 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1114 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1115 {
Bragadeesh153 13:fb7facaf308b 1116 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1117 }
Bragadeesh153 13:fb7facaf308b 1118 break;
sakthipriya 3:07e15677a75c 1119 }
Bragadeesh153 13:fb7facaf308b 1120 case 0x15:
sakthipriya 3:07e15677a75c 1121 {
sakthipriya 3:07e15677a75c 1122 printf("SW_ON_BCN_TX_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 1123 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1124 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1125 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1126 telemetry[2]=1;
Bragadeesh153 13:fb7facaf308b 1127 BCN_SW = 0;
sakthipriya 3:07e15677a75c 1128 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1129 {
Bragadeesh153 13:fb7facaf308b 1130 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1131 }
Bragadeesh153 13:fb7facaf308b 1132 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1133 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1134 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1135 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1136 {
Bragadeesh153 13:fb7facaf308b 1137 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1138 }
Bragadeesh153 13:fb7facaf308b 1139 break;
sakthipriya 3:07e15677a75c 1140 }
sakthipriya 3:07e15677a75c 1141 case 0x21:
sakthipriya 3:07e15677a75c 1142 {
sakthipriya 3:07e15677a75c 1143 printf("SW_OFF_ACS_ATS1_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 1144 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1145 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1146 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1147 telemetry[2]=1;
sakthipriya 9:194afacf7449 1148 ATS1_SW_ENABLE = 1;
sakthipriya 3:07e15677a75c 1149 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1150 {
Bragadeesh153 13:fb7facaf308b 1151 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1152 }
Bragadeesh153 13:fb7facaf308b 1153 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1154 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1155 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1156 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1157 {
Bragadeesh153 13:fb7facaf308b 1158 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1159 }
Bragadeesh153 13:fb7facaf308b 1160 break;
sakthipriya 3:07e15677a75c 1161 }
sakthipriya 3:07e15677a75c 1162 case 0x22:
sakthipriya 3:07e15677a75c 1163 {
sakthipriya 3:07e15677a75c 1164 printf("SW_OFF_ACS_ATS2_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 1165 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1166 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1167 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1168 telemetry[2]=1;
sakthipriya 9:194afacf7449 1169 ATS2_SW_ENABLE = 1;
sakthipriya 3:07e15677a75c 1170 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1171 {
Bragadeesh153 13:fb7facaf308b 1172 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1173 }
Bragadeesh153 13:fb7facaf308b 1174 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1175 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1176 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1177 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1178 {
Bragadeesh153 13:fb7facaf308b 1179 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1180 }
Bragadeesh153 13:fb7facaf308b 1181 break;
sakthipriya 3:07e15677a75c 1182 }
sakthipriya 3:07e15677a75c 1183 case 0x23:
sakthipriya 3:07e15677a75c 1184 {
sakthipriya 3:07e15677a75c 1185 printf("SW_OFF_ACS_TR_XY_ENABLE\r\n");
sakthipriya 3:07e15677a75c 1186 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1187 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1188 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1189 telemetry[2]=1;
Bragadeesh153 13:fb7facaf308b 1190 TRXY_SW= 0;
sakthipriya 3:07e15677a75c 1191 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1192 {
Bragadeesh153 13:fb7facaf308b 1193 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1194 }
Bragadeesh153 13:fb7facaf308b 1195 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1196 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1197 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1198 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1199 {
Bragadeesh153 13:fb7facaf308b 1200 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1201 }
Bragadeesh153 13:fb7facaf308b 1202 break;
sakthipriya 3:07e15677a75c 1203 }
sakthipriya 3:07e15677a75c 1204 case 0x24:
sakthipriya 3:07e15677a75c 1205 {
sakthipriya 3:07e15677a75c 1206 printf("SW_OFF_ACS_TR_Z_ENABLE\r\n");
sakthipriya 3:07e15677a75c 1207 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1208 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1209 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1210 telemetry[2]=1;
sakthipriya 5:bb592f3185cc 1211 TRZ_SW = 0;
sakthipriya 3:07e15677a75c 1212 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1213 {
Bragadeesh153 13:fb7facaf308b 1214 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1215 }
Bragadeesh153 13:fb7facaf308b 1216 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1217 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1218 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1219 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1220 {
Bragadeesh153 13:fb7facaf308b 1221 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1222 }
Bragadeesh153 13:fb7facaf308b 1223 break;
sakthipriya 3:07e15677a75c 1224 }
Bragadeesh153 13:fb7facaf308b 1225 case 0x25:
sakthipriya 3:07e15677a75c 1226 {
sakthipriya 3:07e15677a75c 1227 printf("SW_OFF_BCN_TX_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 1228 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1229 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1230 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1231 telemetry[2]=1;
sakthipriya 5:bb592f3185cc 1232 BCN_SW = 1;
sakthipriya 3:07e15677a75c 1233 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1234 {
Bragadeesh153 13:fb7facaf308b 1235 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1236 }
Bragadeesh153 13:fb7facaf308b 1237 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1238 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1239 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1240 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1241 {
Bragadeesh153 13:fb7facaf308b 1242 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1243 }
Bragadeesh153 13:fb7facaf308b 1244 break;
sakthipriya 3:07e15677a75c 1245 }
sakthipriya 3:07e15677a75c 1246 case 0x31:
sakthipriya 3:07e15677a75c 1247 {
sakthipriya 5:bb592f3185cc 1248 printf("ACS_ATS1_SW_RESET\r\n");
sakthipriya 3:07e15677a75c 1249 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1250 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1251 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1252 telemetry[2]=1;
sakthipriya 9:194afacf7449 1253 ATS1_SW_ENABLE = 1;
sakthipriya 5:bb592f3185cc 1254 wait_us(1);
sakthipriya 9:194afacf7449 1255 ATS1_SW_ENABLE = 0;
sakthipriya 3:07e15677a75c 1256 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1257 {
Bragadeesh153 13:fb7facaf308b 1258 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1259 }
Bragadeesh153 13:fb7facaf308b 1260 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1261 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1262 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1263 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1264 {
Bragadeesh153 13:fb7facaf308b 1265 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1266 }
Bragadeesh153 13:fb7facaf308b 1267 break;
sakthipriya 3:07e15677a75c 1268 }
sakthipriya 3:07e15677a75c 1269 case 0x32:
sakthipriya 3:07e15677a75c 1270 {
sakthipriya 3:07e15677a75c 1271 printf("BCN_SW_RESET\r\n");
sakthipriya 3:07e15677a75c 1272 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1273 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1274 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1275 telemetry[2]=1;
sakthipriya 5:bb592f3185cc 1276 BCN_SW = 1;
sakthipriya 5:bb592f3185cc 1277 wait_us(1);
sakthipriya 5:bb592f3185cc 1278 BCN_SW = 0;
sakthipriya 3:07e15677a75c 1279 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1280 {
Bragadeesh153 13:fb7facaf308b 1281 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1282 }
Bragadeesh153 13:fb7facaf308b 1283 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1284 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1285 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1286 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1287 {
Bragadeesh153 13:fb7facaf308b 1288 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1289 }
Bragadeesh153 13:fb7facaf308b 1290 break;
sakthipriya 3:07e15677a75c 1291 }
sakthipriya 3:07e15677a75c 1292 case 0x33:
sakthipriya 3:07e15677a75c 1293 {
sakthipriya 5:bb592f3185cc 1294 printf("ACS_ATS2_SW_RESET\r\n");
sakthipriya 3:07e15677a75c 1295 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1296 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1297 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1298 telemetry[2]=1;
sakthipriya 9:194afacf7449 1299 ATS1_SW_ENABLE = 1;
sakthipriya 5:bb592f3185cc 1300 wait_us(1);
sakthipriya 9:194afacf7449 1301 ATS1_SW_ENABLE = 0;
sakthipriya 3:07e15677a75c 1302 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1303 {
Bragadeesh153 13:fb7facaf308b 1304 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1305 }
Bragadeesh153 13:fb7facaf308b 1306 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1307 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1308 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1309 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1310 {
Bragadeesh153 13:fb7facaf308b 1311 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1312 }
Bragadeesh153 13:fb7facaf308b 1313 break;
sakthipriya 3:07e15677a75c 1314 }
Bragadeesh153 13:fb7facaf308b 1315 case 0x34:
sakthipriya 3:07e15677a75c 1316 {
sakthipriya 3:07e15677a75c 1317 printf("CDMS_SW_RESET\r\n");
sakthipriya 3:07e15677a75c 1318 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1319 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1320 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1321 telemetry[2]=1;
sakthipriya 5:bb592f3185cc 1322 CDMS_RESET = 0;
sakthipriya 5:bb592f3185cc 1323 wait_us(1);
sakthipriya 5:bb592f3185cc 1324 CDMS_RESET = 1;
sakthipriya 3:07e15677a75c 1325 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1326 {
Bragadeesh153 13:fb7facaf308b 1327 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1328 }
Bragadeesh153 13:fb7facaf308b 1329 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1330 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1331 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1332 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1333 {
Bragadeesh153 13:fb7facaf308b 1334 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1335 }
Bragadeesh153 13:fb7facaf308b 1336 break;
sakthipriya 3:07e15677a75c 1337 }
sakthipriya 3:07e15677a75c 1338 default:
Bragadeesh153 13:fb7facaf308b 1339 {
sakthipriya 3:07e15677a75c 1340 printf("Invalid TC\r\n");
sakthipriya 3:07e15677a75c 1341 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1342 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1343 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1344 telemetry[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 1345 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1346 {
Bragadeesh153 13:fb7facaf308b 1347 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1348 }
Bragadeesh153 13:fb7facaf308b 1349 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1350 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1351 telemetry[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1352 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1353 {
Bragadeesh153 13:fb7facaf308b 1354 telemetry[i]=0x00;
sakthipriya 3:07e15677a75c 1355 }
Bragadeesh153 13:fb7facaf308b 1356 break;
sakthipriya 3:07e15677a75c 1357 }
sakthipriya 3:07e15677a75c 1358 }
Bragadeesh153 13:fb7facaf308b 1359 break;
Bragadeesh153 13:fb7facaf308b 1360 }
sakthipriya 3:07e15677a75c 1361 default:
Bragadeesh153 13:fb7facaf308b 1362 {
Bragadeesh153 13:fb7facaf308b 1363 printf("Invalid TC\r\n");
Bragadeesh153 13:fb7facaf308b 1364 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1365 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1366 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1367 telemetry[2]=ACK_CODE;
Bragadeesh153 13:fb7facaf308b 1368 for(uint8_t i=3;i<11;i++)
Bragadeesh153 13:fb7facaf308b 1369 {
Bragadeesh153 13:fb7facaf308b 1370 telemetry[i]=0x00;
Bragadeesh153 13:fb7facaf308b 1371 }
Bragadeesh153 13:fb7facaf308b 1372 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1373 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1374 telemetry[12] = (uint8_t)(crc16&0x00FF);
Bragadeesh153 13:fb7facaf308b 1375 for(uint8_t i=13;i<134;i++)
Bragadeesh153 13:fb7facaf308b 1376 {
Bragadeesh153 13:fb7facaf308b 1377 telemetry[i]=0x00;
Bragadeesh153 13:fb7facaf308b 1378 }
Bragadeesh153 13:fb7facaf308b 1379 break;
sakthipriya 3:07e15677a75c 1380 }
sakthipriya 3:07e15677a75c 1381 }
Bragadeesh153 13:fb7facaf308b 1382 break;
Bragadeesh153 13:fb7facaf308b 1383 }
Bragadeesh153 13:fb7facaf308b 1384 default:
Bragadeesh153 13:fb7facaf308b 1385 {
Bragadeesh153 13:fb7facaf308b 1386 printf("Invalid TC\r\n");
Bragadeesh153 13:fb7facaf308b 1387 //ACK_L234_TM
Bragadeesh153 13:fb7facaf308b 1388 telemetry[0]=0xB0;
Bragadeesh153 13:fb7facaf308b 1389 telemetry[1]=tc[0];
Bragadeesh153 13:fb7facaf308b 1390 telemetry[2]=ACK_CODE;
Bragadeesh153 13:fb7facaf308b 1391 for(uint8_t i=3;i<11;i++)
Bragadeesh153 13:fb7facaf308b 1392 {
Bragadeesh153 13:fb7facaf308b 1393 telemetry[i]=0x00;
Bragadeesh153 13:fb7facaf308b 1394 }
Bragadeesh153 13:fb7facaf308b 1395 crc16 = CRC::crc16_gen(telemetry,11);
Bragadeesh153 13:fb7facaf308b 1396 telemetry[11] = (uint8_t)((crc16&0xFF00)>>8);
Bragadeesh153 13:fb7facaf308b 1397 telemetry[12] = (uint8_t)(crc16&0x00FF);
Bragadeesh153 13:fb7facaf308b 1398 for(uint8_t i=13;i<134;i++)
Bragadeesh153 13:fb7facaf308b 1399 {
Bragadeesh153 13:fb7facaf308b 1400 telemetry[i]=0x00;
Bragadeesh153 13:fb7facaf308b 1401 }
Bragadeesh153 13:fb7facaf308b 1402 break;
sakthipriya 3:07e15677a75c 1403 }
sakthipriya 3:07e15677a75c 1404 }
Bragadeesh153 13:fb7facaf308b 1405 }
sakthipriya 4:39a4ae8c7ecd 1406
sakthipriya 4:39a4ae8c7ecd 1407
sakthipriya 4:39a4ae8c7ecd 1408
sakthipriya 4:39a4ae8c7ecd 1409
Bragadeesh153 13:fb7facaf308b 1410 int strt_add = flash_size() - (2*SECTOR_SIZE);
sakthipriya 4:39a4ae8c7ecd 1411 uint32_t flasharray[8]; //256+(3*1024)
sakthipriya 4:39a4ae8c7ecd 1412 char *nativeflash = (char*)strt_add;
sakthipriya 4:39a4ae8c7ecd 1413
sakthipriya 4:39a4ae8c7ecd 1414 /*Writing to the Flash*/
sakthipriya 4:39a4ae8c7ecd 1415 void FCTN_CDMS_WR_FLASH(uint16_t j,uint32_t fdata) //j-position to write address ; fdata - flash data to be written
sakthipriya 4:39a4ae8c7ecd 1416 {
Bragadeesh153 13:fb7facaf308b 1417 for(int i=0;i<8;i++)
sakthipriya 4:39a4ae8c7ecd 1418 {
sakthipriya 4:39a4ae8c7ecd 1419 flasharray[i]=nativeflash[i];
sakthipriya 4:39a4ae8c7ecd 1420 }
sakthipriya 4:39a4ae8c7ecd 1421 flasharray[j]=fdata;
sakthipriya 4:39a4ae8c7ecd 1422 erase_sector(strt_add);
sakthipriya 4:39a4ae8c7ecd 1423 program_flash(strt_add, (char*)&flasharray,4*8);
sakthipriya 4:39a4ae8c7ecd 1424 }
sakthipriya 4:39a4ae8c7ecd 1425 /*End*/
sakthipriya 4:39a4ae8c7ecd 1426
sakthipriya 4:39a4ae8c7ecd 1427 /*Reading from Flash*/
sakthipriya 4:39a4ae8c7ecd 1428 uint32_t FCTN_CDMS_RD_FLASH(uint16_t j)
sakthipriya 4:39a4ae8c7ecd 1429 {
sakthipriya 4:39a4ae8c7ecd 1430 for(int i=0;i<8;i++)
sakthipriya 4:39a4ae8c7ecd 1431 {
sakthipriya 4:39a4ae8c7ecd 1432 flasharray[i]=nativeflash[i];
sakthipriya 4:39a4ae8c7ecd 1433 }
sakthipriya 4:39a4ae8c7ecd 1434 return flasharray[j];
sakthipriya 4:39a4ae8c7ecd 1435 }
sakthipriya 5:bb592f3185cc 1436 /*End*/
sakthipriya 5:bb592f3185cc 1437
sakthipriya 5:bb592f3185cc 1438 // Convert float to 4 uint8_t
sakthipriya 5:bb592f3185cc 1439
lakshya 15:e09aaaccf134 1440
sakthipriya 6:036d08b62785 1441 void FCTN_CONVERT_FLOAT(float input, uint8_t output[4])
sakthipriya 5:bb592f3185cc 1442 {
sakthipriya 6:036d08b62785 1443 assert(sizeof(float) == sizeof(uint32_t));
sakthipriya 6:036d08b62785 1444 uint32_t* temp = reinterpret_cast<uint32_t*>(&input);
sakthipriya 6:036d08b62785 1445
sakthipriya 6:036d08b62785 1446 //float* output1 = reinterpret_cast<float*>(temp);
Bragadeesh153 13:fb7facaf308b 1447
lakshya 15:e09aaaccf134 1448 //printf("\n\r %f ", input);
lakshya 15:e09aaaccf134 1449 //std::cout << "\n\r uint32"<<*temp << std::endl;
sakthipriya 6:036d08b62785 1450
sakthipriya 6:036d08b62785 1451 output[0] =(uint8_t )(((*temp)>>24)&0xFF);
lakshya 15:e09aaaccf134 1452 output[1] =(uint8_t ) (((*temp)>>16)&0xFF);
lakshya 15:e09aaaccf134 1453 output[2] =(uint8_t ) (((*temp)>>8)&0xFF);
lakshya 15:e09aaaccf134 1454 output[3] =(uint8_t ) ((*temp) & 0xFF); // verify the logic
lakshya 15:e09aaaccf134 1455
lakshya 15:e09aaaccf134 1456 printf("\n\rthe values generated are\n");
lakshya 15:e09aaaccf134 1457 /*printf("\n\r%x\n",output[0]);
lakshya 15:e09aaaccf134 1458 printf("\n\r%x\n",output[1]);
lakshya 15:e09aaaccf134 1459 printf("\n\r%x\n",output[2]);
lakshya 15:e09aaaccf134 1460 printf("\n\r%x\n",output[3]);
lakshya 15:e09aaaccf134 1461 to check the values generated
lakshya 15:e09aaaccf134 1462 */
sakthipriya 6:036d08b62785 1463 //printf("\n\r inside %d %d %d %d", output[3],output[2],output[1],output[0]);
Bragadeesh153 13:fb7facaf308b 1464 //std:: cout << "\n\r uint8 inside " << output[3] << '\t' << output[2] << '\t' << output[1] << '\t' << output[0] <<std::endl;
Bragadeesh153 13:fb7facaf308b 1465 }