ACS data acq changed completely. Tested and working. Deals all faults.

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of QM_BAE_review_1 by Team Fox

Committer:
Bragadeesh153
Date:
Wed Apr 13 18:34:28 2016 +0000
Revision:
12:af1d7e18b868
Parent:
11:1fdb94ae6563
Child:
13:fb7facaf308b
Working

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"
sakthipriya 4:39a4ae8c7ecd 4 #include "EPS.h"
sakthipriya 5:bb592f3185cc 5 #include "pin_config.h"
sakthipriya 5:bb592f3185cc 6 #include "FreescaleIAP.h"
sakthipriya 6:036d08b62785 7 #include "inttypes.h"
sakthipriya 6:036d08b62785 8 #include "iostream"
sakthipriya 6:036d08b62785 9 #include "stdint.h"
sakthipriya 6:036d08b62785 10 #include "cassert"
lakshya 10:f93407b97750 11 #include"math.h"
lakshya 10:f93407b97750 12
lakshya 11:1fdb94ae6563 13 /*define the pins for digital out*/
sakthipriya 0:7b4c00e3912f 14
sakthipriya 9:194afacf7449 15 extern DigitalOut ATS1_SW_ENABLE; // enable of att sens2 switch
sakthipriya 9:194afacf7449 16 extern DigitalOut ATS2_SW_ENABLE; // enable of att sens switch
sakthipriya 5:bb592f3185cc 17
lakshya 11:1fdb94ae6563 18 extern DigitalOut TRXY_SW_EN; //TR XY Switch if any TR_SW error arises then it is same as TR_SW_EN
sakthipriya 5:bb592f3185cc 19 extern DigitalOut TRZ_SW; //TR Z Switch
sakthipriya 5:bb592f3185cc 20 extern DigitalOut CDMS_RESET; // CDMS RESET
sakthipriya 5:bb592f3185cc 21 extern DigitalOut BCN_SW; //Beacon switch
lakshya 10:f93407b97750 22 extern uint8_t BCN_TX_STATUS;
lakshya 10:f93407b97750 23 extern uint8_t BCN_FEN;
sakthipriya 4:39a4ae8c7ecd 24 extern BAE_HK_actual actual_data;
sakthipriya 4:39a4ae8c7ecd 25 extern BAE_HK_min_max bae_HK_minmax;
sakthipriya 4:39a4ae8c7ecd 26 extern uint32_t BAE_STATUS;
sakthipriya 5:bb592f3185cc 27 extern float data[6];
sakthipriya 5:bb592f3185cc 28 extern float moment[3];
lakshya 10:f93407b97750 29 extern uint8_t ACS_STATE;
lakshya 10:f93407b97750 30 extern DigitalOut EN_BTRY_HT;
lakshya 10:f93407b97750 31 extern DigitalOut phase_TR_x;
lakshya 10:f93407b97750 32 extern DigitalOut phase_TR_y;
lakshya 10:f93407b97750 33 extern DigitalOut phase_TR_z;
lakshya 10:f93407b97750 34 extern BAE_HK_quant quant_data;
lakshya 11:1fdb94ae6563 35 //extern DigitalOut TRXY_SW_EN;
lakshya 11:1fdb94ae6563 36 //extern DigitalOut TRZ_SW_EN; //same as TRZ_SW
lakshya 11:1fdb94ae6563 37 extern uint32_t BAE_ENABLE;
lakshya 11:1fdb94ae6563 38 //extern DigitalOut ACS_ACQ_DATA_ENABLE;
lakshya 11:1fdb94ae6563 39
lakshya 11:1fdb94ae6563 40 /*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 41 extern uint8_t BAE_RESET_COUNTER=0;
lakshya 11:1fdb94ae6563 42
lakshya 11:1fdb94ae6563 43 extern uint8_t BCN_FAIL_COUNT;
lakshya 11:1fdb94ae6563 44
lakshya 11:1fdb94ae6563 45 extern PwmOut PWM1; //x //Functions used to generate PWM signal
lakshya 11:1fdb94ae6563 46 extern PwmOut PWM2; //y
lakshya 11:1fdb94ae6563 47 extern PwmOut PWM3; //z //PWM output comes from pins p6
lakshya 11:1fdb94ae6563 48
lakshya 11:1fdb94ae6563 49 extern void F_ACS();
lakshya 11:1fdb94ae6563 50 extern void F_BCN();
lakshya 11:1fdb94ae6563 51 //extern void FCTN_ACS_GENPWM_MAIN();
lakshya 11:1fdb94ae6563 52 extern void F_EPS();
lakshya 11:1fdb94ae6563 53 extern void FCTN_ACS_GENPWM_MAIN(float Moment[3]);
lakshya 11:1fdb94ae6563 54
sakthipriya 5:bb592f3185cc 55
sakthipriya 5:bb592f3185cc 56 extern void FCTN_ATS_DATA_ACQ();
sakthipriya 5:bb592f3185cc 57 extern void FCTN_ACS_CNTRLALGO(float*,float*);
sakthipriya 0:7b4c00e3912f 58
lakshya 11:1fdb94ae6563 59
lakshya 11:1fdb94ae6563 60 void FCTN_CONVERT_UINT (uint8_t input[2], float* output)
lakshya 11:1fdb94ae6563 61 {
lakshya 11:1fdb94ae6563 62
lakshya 11:1fdb94ae6563 63 *output = (float) input[1];
lakshya 11:1fdb94ae6563 64 *output = *output/100.0; //input[0] integer part
lakshya 11:1fdb94ae6563 65 *output = *output + (float) input[0]; //input[1] decimal part correct to two decimal places
lakshya 11:1fdb94ae6563 66 }
lakshya 11:1fdb94ae6563 67
lakshya 10:f93407b97750 68 float angle(float x,float y,float z)
lakshya 10:f93407b97750 69 {
lakshya 10:f93407b97750 70 float mag_total=sqrt(x*x + y*y + z*z);
lakshya 10:f93407b97750 71 float cos_z = z/mag_total;
lakshya 10:f93407b97750 72 float theta_z = acosf(cos_z);
lakshya 10:f93407b97750 73
lakshya 10:f93407b97750 74 return theta_z;
lakshya 10:f93407b97750 75 //printf("/n cos_zz= %f /t theta_z= %f /n",cos_z,theta_z);
lakshya 10:f93407b97750 76 }
lakshya 10:f93407b97750 77
sakthipriya 3:07e15677a75c 78 uint8_t* FCTN_BAE_TM_TC (uint8_t* tc)
sakthipriya 0:7b4c00e3912f 79
sakthipriya 3:07e15677a75c 80 {
sakthipriya 3:07e15677a75c 81 uint8_t service_type=(tc[2]&0xF0);
sakthipriya 3:07e15677a75c 82 uint8_t* tm;
sakthipriya 3:07e15677a75c 83 uint16_t crc16;
lakshya 10:f93407b97750 84
sakthipriya 3:07e15677a75c 85
sakthipriya 3:07e15677a75c 86 switch(service_type)
sakthipriya 3:07e15677a75c 87 {
sakthipriya 3:07e15677a75c 88 case 0x60:
sakthipriya 3:07e15677a75c 89 {
sakthipriya 3:07e15677a75c 90 printf("Memory Management Service\r\n");
sakthipriya 3:07e15677a75c 91 uint8_t service_subtype=(tc[2]&0x0F);
sakthipriya 3:07e15677a75c 92
sakthipriya 3:07e15677a75c 93 switch(service_subtype)
sakthipriya 3:07e15677a75c 94 {
sakthipriya 3:07e15677a75c 95 case 0x01:
sakthipriya 3:07e15677a75c 96 {
sakthipriya 3:07e15677a75c 97 printf("Read from Flash\r\n");
sakthipriya 3:07e15677a75c 98 }
sakthipriya 3:07e15677a75c 99 case 0x02:
sakthipriya 3:07e15677a75c 100 {
lakshya 10:f93407b97750 101 uint16_t MID = ((uint16_t)tc[3] << 8) | tc[4];
lakshya 10:f93407b97750 102 switch(MID)
lakshya 10:f93407b97750 103 {
lakshya 10:f93407b97750 104
lakshya 10:f93407b97750 105 case 0x0001:
lakshya 10:f93407b97750 106 {
sakthipriya 4:39a4ae8c7ecd 107 printf("Read from RAM\r\n");
sakthipriya 8:82250e41da81 108
lakshya 10:f93407b97750 109 /*taking some varible till we find some thing more useful*/
lakshya 10:f93407b97750 110 //uint8_t ref_val=0x01;
sakthipriya 8:82250e41da81 111 tm[0] = 0x60;
sakthipriya 8:82250e41da81 112 tm[1] = tc[0];
sakthipriya 8:82250e41da81 113 tm[2] = ACK_CODE;
lakshya 10:f93407b97750 114 /*random or with bcn_tx_sw_enable assuming it is 1 bit in length
lakshya 10:f93407b97750 115 how to get that we dont know, now we just assume it to be so*/
lakshya 10:f93407b97750 116 tm[3] = (BCN_SW);
lakshya 10:f93407b97750 117 tm[3] = tm[3]|(TRXY_SW_EN<<1);
lakshya 11:1fdb94ae6563 118 tm[3] = tm[3]|(TRZ_SW<<2);
lakshya 10:f93407b97750 119 tm[3] = tm[3]|(ATS1_SW_ENABLE<<3);
lakshya 10:f93407b97750 120 tm[3] = tm[3]|(ATS2_SW_ENABLE<<4);
lakshya 10:f93407b97750 121
lakshya 10:f93407b97750 122 if(BCN_TX_STATUS==2)
lakshya 10:f93407b97750 123 tm[3] = tm[3]|0x20;
lakshya 10:f93407b97750 124 else
lakshya 10:f93407b97750 125 tm[3] = tm[3] & 0xDF;
lakshya 10:f93407b97750 126
lakshya 10:f93407b97750 127 tm[3] = tm[3]|(BCN_FEN<<6);
lakshya 11:1fdb94ae6563 128 uint8_t mask_val=BAE_ENABLE & 0x00000008;
lakshya 11:1fdb94ae6563 129 /*can be a problem see if any error occurs*/
lakshya 11:1fdb94ae6563 130 tm[3] = tm[3]|(mask_val<<7);
lakshya 10:f93407b97750 131
lakshya 10:f93407b97750 132 /*not included in the code yet*/
lakshya 10:f93407b97750 133 tm[4] = BAE_RESET_COUNTER;
lakshya 10:f93407b97750 134
lakshya 10:f93407b97750 135 tm[5] = ACS_STATE;
lakshya 10:f93407b97750 136 tm[5] = tm[5]|(EN_BTRY_HT<<3);
lakshya 10:f93407b97750 137 tm[5] = tm[5]|(phase_TR_x<<4);
lakshya 10:f93407b97750 138 tm[5] = tm[5]|(phase_TR_y<<5);
lakshya 10:f93407b97750 139 tm[5] = tm[5]|(phase_TR_z<<6);
lakshya 10:f93407b97750 140 /*spare to be fixed*/
lakshya 11:1fdb94ae6563 141 //tm[5] = tm[5]|(Spare))<<7);
lakshya 10:f93407b97750 142 /**/
lakshya 10:f93407b97750 143 uint8_t soc_powerlevel_2=50;
lakshya 10:f93407b97750 144 uint8_t soc_powerlevel_3=65;
lakshya 10:f93407b97750 145
lakshya 10:f93407b97750 146 tm[6] = soc_powerlevel_2;
lakshya 10:f93407b97750 147 tm[7] = soc_powerlevel_3;
lakshya 10:f93407b97750 148
lakshya 10:f93407b97750 149 /*to be fixed*/
lakshya 10:f93407b97750 150 tm[8] = 0;
lakshya 10:f93407b97750 151 tm[9] = 0;
lakshya 10:f93407b97750 152 tm[10] = 0;
lakshya 10:f93407b97750 153 tm[11] = 0;
lakshya 10:f93407b97750 154 //tm[8] = Torque Rod X Offset;
lakshya 10:f93407b97750 155 //tm[9] = Torque Rod Y Offset;
lakshya 10:f93407b97750 156 //tm[10] = Torque Rod Z Offset;
lakshya 10:f93407b97750 157 //tm[11] = ACS_DEMAG_TIME_DELAY;
lakshya 10:f93407b97750 158 tm[12] = (BAE_STATUS>>24) & 0xFF;
lakshya 10:f93407b97750 159 tm[13] = (BAE_STATUS>>16) & 0xFF;
lakshya 10:f93407b97750 160 tm[14] = (BAE_STATUS>>8) & 0xFF;
lakshya 10:f93407b97750 161 tm[15] = BAE_STATUS & 0xFF;
sakthipriya 8:82250e41da81 162
lakshya 10:f93407b97750 163 /*to be fixed*/
lakshya 10:f93407b97750 164 tm[16] = BCN_FAIL_COUNT;
lakshya 10:f93407b97750 165 tm[17] = actual_data.power_mode;
lakshya 10:f93407b97750 166 /*to be fixed*/
lakshya 10:f93407b97750 167 uint16_t P_BAE_I2CRX_COUNTER=0;
lakshya 10:f93407b97750 168 uint16_t P_ACS_MAIN_COUNTER=0;
Bragadeesh153 12:af1d7e18b868 169 uint16_t FCTN_BCN_TX_MAIN_COUNTER=0;
lakshya 10:f93407b97750 170 uint16_t P_EPS_MAIN_COUNTER=0;
lakshya 10:f93407b97750 171
lakshya 11:1fdb94ae6563 172 tm[18] = P_BAE_I2CRX_COUNTER>>8;
lakshya 10:f93407b97750 173 tm[19] = P_BAE_I2CRX_COUNTER;
lakshya 10:f93407b97750 174 tm[20] = P_ACS_MAIN_COUNTER>>8;
lakshya 10:f93407b97750 175 tm[21] = P_ACS_MAIN_COUNTER;
Bragadeesh153 12:af1d7e18b868 176 tm[22] = FCTN_BCN_TX_MAIN_COUNTER>>8;
Bragadeesh153 12:af1d7e18b868 177 tm[23] = FCTN_BCN_TX_MAIN_COUNTER;
lakshya 10:f93407b97750 178 tm[24] = P_EPS_MAIN_COUNTER>>8;
lakshya 10:f93407b97750 179 tm[25] = P_EPS_MAIN_COUNTER;
lakshya 10:f93407b97750 180
lakshya 10:f93407b97750 181 for(int i=0; i<3; i++)
lakshya 10:f93407b97750 182 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[i],&tm[26+ (i*4)]);
lakshya 10:f93407b97750 183 for(int i=0; i<3; i++)
lakshya 10:f93407b97750 184 FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[i],&tm[38+(i*4)]);
lakshya 10:f93407b97750 185
lakshya 10:f93407b97750 186 //FAULT_FLAG();
lakshya 10:f93407b97750 187 tm[50] = actual_data.faultIr_status;
lakshya 10:f93407b97750 188 tm[51] = actual_data.faultPoll_status;
lakshya 10:f93407b97750 189 //Bdot Rotation Speed of Command tm[52-53]
lakshya 10:f93407b97750 190 //Bdot Output Current tm[54]
lakshya 11:1fdb94ae6563 191 //float l_pmw1 = (PWM1);
lakshya 11:1fdb94ae6563 192 //float l_pmw2 = PWM2;
lakshya 11:1fdb94ae6563 193 //float l_pmw3 = PWM3;
lakshya 11:1fdb94ae6563 194
lakshya 11:1fdb94ae6563 195 /*__________________________________________________________________*/
lakshya 11:1fdb94ae6563 196
lakshya 11:1fdb94ae6563 197 /*change and check if changing it to PWM1 causes problem*/
lakshya 11:1fdb94ae6563 198
lakshya 11:1fdb94ae6563 199 /*___________________________________________________________________*/
lakshya 11:1fdb94ae6563 200
lakshya 11:1fdb94ae6563 201 float PWM_measured[3];
lakshya 11:1fdb94ae6563 202
lakshya 11:1fdb94ae6563 203 PWM_measured[0] = PWM1.read();
lakshya 11:1fdb94ae6563 204 PWM_measured[1] = PWM2.read();
lakshya 11:1fdb94ae6563 205 PWM_measured[2] = PWM3.read();
lakshya 11:1fdb94ae6563 206
lakshya 11:1fdb94ae6563 207 FCTN_CONVERT_FLOAT(PWM_measured[0], &tm[55]);
lakshya 11:1fdb94ae6563 208 FCTN_CONVERT_FLOAT(PWM_measured[1], &tm[59]);
lakshya 11:1fdb94ae6563 209 FCTN_CONVERT_FLOAT(PWM_measured[2], &tm[63]);
lakshya 10:f93407b97750 210 float attitude_ang = angle(actual_data.Bvalue_actual[0],actual_data.Bvalue_actual[1],actual_data.Bvalue_actual[2]);
lakshya 10:f93407b97750 211 FCTN_CONVERT_FLOAT(attitude_ang, &tm[67]);
lakshya 10:f93407b97750 212
lakshya 10:f93407b97750 213 for (int i=0; i<16; i++)
lakshya 10:f93407b97750 214 tm[68+i] = quant_data.voltage_quant[i];
lakshya 10:f93407b97750 215 for (int i=0; i<12; i++)
lakshya 10:f93407b97750 216 tm[84+i] = quant_data.current_quant[i];
lakshya 10:f93407b97750 217 //tm[96]
lakshya 10:f93407b97750 218 //tm[97]
lakshya 10:f93407b97750 219 //tm[98]
lakshya 10:f93407b97750 220 //tm[99]
lakshya 10:f93407b97750 221 tm[100] = quant_data.Batt_voltage_quant;
lakshya 10:f93407b97750 222 tm[101] = quant_data.BAE_temp_quant;
lakshya 10:f93407b97750 223 tm[102] = quant_data.Batt_gauge_quant[1];
lakshya 10:f93407b97750 224 tm[103] = quant_data.Batt_temp_quant[0];
lakshya 10:f93407b97750 225 tm[104] = quant_data.Batt_temp_quant[1];
lakshya 10:f93407b97750 226
lakshya 10:f93407b97750 227 //tm[105] = beacon temperature;
lakshya 10:f93407b97750 228
lakshya 10:f93407b97750 229 for (int i=105; i<132;i++)
sakthipriya 8:82250e41da81 230 {
sakthipriya 8:82250e41da81 231 tm[i] = 0x00;
sakthipriya 8:82250e41da81 232 }
sakthipriya 8:82250e41da81 233 crc16 = CRC::crc16_gen(tm,132);
sakthipriya 8:82250e41da81 234 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 8:82250e41da81 235 tm[133] = (uint8_t)(crc16&0x00FF);
sakthipriya 8:82250e41da81 236 return tm;
lakshya 10:f93407b97750 237
lakshya 10:f93407b97750 238 }
lakshya 10:f93407b97750 239 case 0x0002:
lakshya 10:f93407b97750 240 {
lakshya 10:f93407b97750 241 tm[0] = 0x60;
lakshya 10:f93407b97750 242 tm[1] = tc[0];
lakshya 10:f93407b97750 243 tm[2] = ACK_CODE;
lakshya 10:f93407b97750 244
lakshya 10:f93407b97750 245 for(int i;i<16;i++)
lakshya 11:1fdb94ae6563 246 tm[i+3] = bae_HK_minmax.voltage_max[i];
lakshya 10:f93407b97750 247
lakshya 10:f93407b97750 248 for(int i;i<12;i++)
lakshya 11:1fdb94ae6563 249 tm[i+18] = bae_HK_minmax.current_max[i];
lakshya 10:f93407b97750 250
lakshya 11:1fdb94ae6563 251 tm[29] = bae_HK_minmax.Batt_voltage_max;;
lakshya 11:1fdb94ae6563 252 tm[30] = bae_HK_minmax.BAE_temp_max;
lakshya 10:f93407b97750 253
lakshya 10:f93407b97750 254 /*battery soc*/
lakshya 10:f93407b97750 255 //tm[31] = BAE_HK_min_max bae_HK_minmax.voltage_max;
lakshya 10:f93407b97750 256
lakshya 11:1fdb94ae6563 257 tm[32] = bae_HK_minmax.Batt_temp_max[1];
lakshya 11:1fdb94ae6563 258 tm[33] = bae_HK_minmax.Batt_temp_max[2];
lakshya 10:f93407b97750 259
lakshya 10:f93407b97750 260 /*BCN temp not there*/
lakshya 10:f93407b97750 261 //tm[34] = BAE_HK_min_max bae_HK_minmax.;
lakshya 10:f93407b97750 262
lakshya 10:f93407b97750 263 for(int i=0; i<3; i++)
lakshya 11:1fdb94ae6563 264 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_max[i],&tm[35+(i*4)]);
lakshya 10:f93407b97750 265
lakshya 10:f93407b97750 266 for(int i=0; i<3; i++)
lakshya 11:1fdb94ae6563 267 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_max[i],&tm[47+(i*4)]);
lakshya 10:f93407b97750 268
lakshya 10:f93407b97750 269 /*min data*/
lakshya 10:f93407b97750 270
lakshya 10:f93407b97750 271 for(int i;i<16;i++)
lakshya 11:1fdb94ae6563 272 tm[i+59] = bae_HK_minmax.voltage_min[i];
lakshya 10:f93407b97750 273
lakshya 10:f93407b97750 274 for(int i;i<12;i++)
lakshya 11:1fdb94ae6563 275 tm[i+74] = bae_HK_minmax.current_min[i];
lakshya 10:f93407b97750 276
lakshya 11:1fdb94ae6563 277 tm[86] = bae_HK_minmax.Batt_voltage_min;
lakshya 11:1fdb94ae6563 278 tm[87] = bae_HK_minmax.BAE_temp_min;
lakshya 10:f93407b97750 279
lakshya 10:f93407b97750 280 /*battery soc*/
lakshya 10:f93407b97750 281 //tm[88] = BAE_HK_min_max bae_HK_minmax.voltage_max;
lakshya 10:f93407b97750 282
lakshya 11:1fdb94ae6563 283 tm[89] = bae_HK_minmax.Batt_temp_min[1];
lakshya 11:1fdb94ae6563 284 tm[90] = bae_HK_minmax.Batt_temp_min[2];
lakshya 11:1fdb94ae6563 285 //huhu//
lakshya 10:f93407b97750 286
lakshya 10:f93407b97750 287 /*BCN temp not there*/
lakshya 10:f93407b97750 288 //tm[91] = BAE_HK_min_max bae_HK_minmax.;
lakshya 10:f93407b97750 289
lakshya 10:f93407b97750 290 for(int i=0; i<3; i++)
lakshya 11:1fdb94ae6563 291 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_min[i],&tm[91+(i*4)]);
lakshya 10:f93407b97750 292
lakshya 10:f93407b97750 293 for(int i=0; i<3; i++)
lakshya 11:1fdb94ae6563 294 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_min[i],&tm[103+(i*4)]);
lakshya 10:f93407b97750 295
lakshya 10:f93407b97750 296
lakshya 10:f93407b97750 297 for (int i=115; i<132;i++)
lakshya 10:f93407b97750 298 {
lakshya 10:f93407b97750 299 tm[i] = 0x00;
lakshya 10:f93407b97750 300 }
lakshya 10:f93407b97750 301 crc16 = CRC::crc16_gen(tm,132);
lakshya 10:f93407b97750 302 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 10:f93407b97750 303 tm[133] = (uint8_t)(crc16&0x00FF);
lakshya 10:f93407b97750 304 return tm;
lakshya 10:f93407b97750 305
lakshya 10:f93407b97750 306 }
lakshya 10:f93407b97750 307
lakshya 10:f93407b97750 308
lakshya 10:f93407b97750 309 }
lakshya 10:f93407b97750 310 }
lakshya 10:f93407b97750 311
lakshya 10:f93407b97750 312 /*
lakshya 10:f93407b97750 313 switch(tc[3])
lakshya 10:f93407b97750 314 {
lakshya 10:f93407b97750 315 case 0x01:
sakthipriya 5:bb592f3185cc 316 {
sakthipriya 5:bb592f3185cc 317 printf("Read MUX DATA\r\n");
sakthipriya 5:bb592f3185cc 318 tm[0] = 0x60;
sakthipriya 5:bb592f3185cc 319 tm[1] = tc[0];
sakthipriya 5:bb592f3185cc 320 tm[2] = ACK_CODE;
sakthipriya 5:bb592f3185cc 321 for(int i=0; i<16; i++) //16*4 = 64 bytes //tm[4] to tm[67] filled
sakthipriya 5:bb592f3185cc 322 FCTN_CONVERT_FLOAT(actual_data.voltage_actual[i], &tm[4+(i*4)]);
sakthipriya 5:bb592f3185cc 323 for(int i=0; i<12; i++) //12*4 = 48 //tm[68] to tm[115] filled
sakthipriya 5:bb592f3185cc 324 FCTN_CONVERT_FLOAT(actual_data.current_actual[i],&tm[68 + (i*4)]);
sakthipriya 5:bb592f3185cc 325 for (int i=116; i<132;i++)
sakthipriya 5:bb592f3185cc 326 {
sakthipriya 5:bb592f3185cc 327 tm[i] = 0x00;
sakthipriya 5:bb592f3185cc 328 }
sakthipriya 5:bb592f3185cc 329 crc16 = CRC::crc16_gen(tm,132);
sakthipriya 5:bb592f3185cc 330 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 5:bb592f3185cc 331 tm[133] = (uint8_t)(crc16&0x00FF);
sakthipriya 5:bb592f3185cc 332 return tm;
lakshya 10:f93407b97750 333 }
lakshya 10:f93407b97750 334 case 0x02:
sakthipriya 4:39a4ae8c7ecd 335 {
sakthipriya 4:39a4ae8c7ecd 336 printf("Read HK\r\n");
sakthipriya 4:39a4ae8c7ecd 337 tm[0] = 0x60;
sakthipriya 4:39a4ae8c7ecd 338 tm[1] = tc[0];
sakthipriya 4:39a4ae8c7ecd 339 tm[2] = ACK_CODE;
sakthipriya 5:bb592f3185cc 340 FCTN_CONVERT_FLOAT(actual_data.Batt_temp_actual[0],&tm[4]); //tm[4]-tm[7]
sakthipriya 5:bb592f3185cc 341 FCTN_CONVERT_FLOAT(actual_data.Batt_temp_actual[1],&tm[8]); //tm[8]- tm[11]
sakthipriya 5:bb592f3185cc 342 for(int i=0; i<4; i++)
sakthipriya 5:bb592f3185cc 343 FCTN_CONVERT_FLOAT(actual_data.Batt_gauge_actual[i],&tm[12+(i*4)]); //tm[12] - tm[27]
sakthipriya 5:bb592f3185cc 344 FCTN_CONVERT_FLOAT(actual_data.BAE_temp_actual,&tm[28]); //tm[28] - tm[31]
sakthipriya 5:bb592f3185cc 345 tm[32] = (uint8_t)actual_data.power_mode;
sakthipriya 5:bb592f3185cc 346 tm[33] = actual_data.faultPoll_status;
sakthipriya 5:bb592f3185cc 347 tm[34] = actual_data.faultIr_status;
lakshya 10:f93407b97750 348 for(int i=0; i<3; i++)
lakshya 10:f93407b97750 349 FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[i],&tm[35+(i*4)]); //35 -46
lakshya 10:f93407b97750 350 for(int i=0; i<3; i++)
lakshya 10:f93407b97750 351 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[i],&tm[47+(i*4)]); //47 -58
sakthipriya 5:bb592f3185cc 352 FCTN_CONVERT_FLOAT(actual_data.Batt_voltage_actual,&tm[59]); //59 - 62
sakthipriya 5:bb592f3185cc 353 for (int i=63; i<132;i++)
sakthipriya 4:39a4ae8c7ecd 354 {
sakthipriya 5:bb592f3185cc 355 tm[i] = 0x00;
sakthipriya 4:39a4ae8c7ecd 356 }
sakthipriya 4:39a4ae8c7ecd 357 crc16 = CRC::crc16_gen(tm,132);
sakthipriya 4:39a4ae8c7ecd 358 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 4:39a4ae8c7ecd 359 tm[133] = (uint8_t)(crc16&0x00FF);
sakthipriya 5:bb592f3185cc 360 return tm;
sakthipriya 4:39a4ae8c7ecd 361
sakthipriya 5:bb592f3185cc 362 }
lakshya 10:f93407b97750 363 case 0x03:
sakthipriya 4:39a4ae8c7ecd 364 {
sakthipriya 4:39a4ae8c7ecd 365 printf("Read min max data");
sakthipriya 5:bb592f3185cc 366 tm[0] = 0x60;
sakthipriya 5:bb592f3185cc 367 tm[1] = tc[0];
sakthipriya 5:bb592f3185cc 368 tm[2] = ACK_CODE;
sakthipriya 5:bb592f3185cc 369 for(int i=4; i<20; i++)
sakthipriya 5:bb592f3185cc 370 tm[i] = (uint8_t)bae_HK_minmax.voltage_max[i-4];
sakthipriya 5:bb592f3185cc 371 for(int i=20; i<32; i++)
sakthipriya 5:bb592f3185cc 372 tm[i] = (uint8_t)bae_HK_minmax.current_max[i-20];
sakthipriya 5:bb592f3185cc 373 tm[32] = (uint8_t)bae_HK_minmax.Batt_temp_max[0];
sakthipriya 5:bb592f3185cc 374 tm[33] = (uint8_t)bae_HK_minmax.Batt_temp_max[1];
sakthipriya 5:bb592f3185cc 375 tm[34] = (uint8_t)bae_HK_minmax.Batt_gauge_max[0];
sakthipriya 5:bb592f3185cc 376 tm[35] = (uint8_t)bae_HK_minmax.Batt_gauge_max[1];
sakthipriya 5:bb592f3185cc 377 tm[36] = (uint8_t)bae_HK_minmax.Batt_gauge_max[2];
sakthipriya 5:bb592f3185cc 378 tm[37] = (uint8_t)bae_HK_minmax.BAE_temp_max;
sakthipriya 5:bb592f3185cc 379 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_max[0],&tm[38]); //tm[38] - tm[41]
sakthipriya 5:bb592f3185cc 380 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_max[1],&tm[42]); //tm[42] - tm[45]
sakthipriya 5:bb592f3185cc 381 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_max[2],&tm[46]); //tm[46] - tm[49]
sakthipriya 5:bb592f3185cc 382 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_max[0],&tm[50]); //tm[50] - tm[53]
sakthipriya 5:bb592f3185cc 383 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_max[1],&tm[54]); //tm[54] - tm[57]
sakthipriya 5:bb592f3185cc 384 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_max[2],&tm[58]); //tm[58] - tm[61]
sakthipriya 5:bb592f3185cc 385 tm[62] = (uint8_t)bae_HK_minmax.Bvalue_max[0];
sakthipriya 5:bb592f3185cc 386 tm[63] = (uint8_t)bae_HK_minmax.Bvalue_max[1];
sakthipriya 5:bb592f3185cc 387 tm[64] = (uint8_t)bae_HK_minmax.Bvalue_max[2];
sakthipriya 5:bb592f3185cc 388 tm[65] = (uint8_t)bae_HK_minmax.Batt_voltage_max;
sakthipriya 5:bb592f3185cc 389 for(int i=66; i<82; i++)
sakthipriya 5:bb592f3185cc 390 tm[i] = (uint8_t)bae_HK_minmax.voltage_min[i-66];
sakthipriya 5:bb592f3185cc 391 for(int i=82; i<94; i++)
sakthipriya 5:bb592f3185cc 392 tm[i] = (uint8_t)bae_HK_minmax.current_min[i-82];
sakthipriya 5:bb592f3185cc 393 tm[94] = (uint8_t)bae_HK_minmax.Batt_temp_min[0];
sakthipriya 5:bb592f3185cc 394 tm[95] = (uint8_t)bae_HK_minmax.Batt_temp_min[1];
sakthipriya 5:bb592f3185cc 395 tm[96] = (uint8_t)bae_HK_minmax.Batt_gauge_min[0];
sakthipriya 5:bb592f3185cc 396 tm[97] = (uint8_t)bae_HK_minmax.Batt_gauge_min[1];
sakthipriya 5:bb592f3185cc 397 tm[98] = (uint8_t)bae_HK_minmax.Batt_gauge_min[2];
sakthipriya 5:bb592f3185cc 398 tm[99] = (uint8_t)bae_HK_minmax.BAE_temp_min;
sakthipriya 5:bb592f3185cc 399 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_min[0],&tm[100]); //tm[100] - tm[103]
sakthipriya 5:bb592f3185cc 400 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_min[1],&tm[104]); //tm[104] - tm[107]
sakthipriya 5:bb592f3185cc 401 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_min[2],&tm[108]); //tm[108] - tm[111]
sakthipriya 5:bb592f3185cc 402 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_min[0],&tm[112]); //tm[112] - tm[115]
sakthipriya 5:bb592f3185cc 403 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_min[1],&tm[116]); //tm[116] - tm[119]
sakthipriya 5:bb592f3185cc 404 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_min[2],&tm[120]); //tm[120] - tm[123]
sakthipriya 5:bb592f3185cc 405 tm[124] = (uint8_t)bae_HK_minmax.Batt_voltage_min;
sakthipriya 5:bb592f3185cc 406 for (int i=125; i<132;i++)
sakthipriya 5:bb592f3185cc 407 {
sakthipriya 5:bb592f3185cc 408 tm[i] = 0x00;
sakthipriya 5:bb592f3185cc 409 }
sakthipriya 5:bb592f3185cc 410 crc16 = CRC::crc16_gen(tm,132);
sakthipriya 5:bb592f3185cc 411 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 5:bb592f3185cc 412 tm[133] = (uint8_t)(crc16&0x00FF);
sakthipriya 5:bb592f3185cc 413 return tm;
sakthipriya 4:39a4ae8c7ecd 414 }
lakshya 10:f93407b97750 415 case 0x04:
sakthipriya 4:39a4ae8c7ecd 416 {
sakthipriya 4:39a4ae8c7ecd 417 printf("Read status");
sakthipriya 5:bb592f3185cc 418 tm[0] = 0x60;
sakthipriya 5:bb592f3185cc 419 tm[1] = tc[0];
sakthipriya 5:bb592f3185cc 420 tm[2] = ACK_CODE;
sakthipriya 5:bb592f3185cc 421 tm[4] = (BAE_STATUS>>24) & 0xFF;
sakthipriya 5:bb592f3185cc 422 tm[5] = (BAE_STATUS>>16) & 0xFF;
sakthipriya 5:bb592f3185cc 423 tm[6] = (BAE_STATUS>>8) & 0xFF;
sakthipriya 5:bb592f3185cc 424 tm[7] = BAE_STATUS & 0xFF;
sakthipriya 5:bb592f3185cc 425 for (int i=8; i<132;i++)
sakthipriya 5:bb592f3185cc 426 {
sakthipriya 5:bb592f3185cc 427 tm[i] = 0x00;
sakthipriya 5:bb592f3185cc 428 }
sakthipriya 5:bb592f3185cc 429 crc16 = CRC::crc16_gen(tm,132);
sakthipriya 5:bb592f3185cc 430 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 5:bb592f3185cc 431 tm[133] = (uint8_t)(crc16&0x00FF);
sakthipriya 5:bb592f3185cc 432 return tm;
sakthipriya 4:39a4ae8c7ecd 433
sakthipriya 4:39a4ae8c7ecd 434 }
sakthipriya 4:39a4ae8c7ecd 435 }
lakshya 10:f93407b97750 436 */
lakshya 10:f93407b97750 437
sakthipriya 3:07e15677a75c 438 case 0x05:
sakthipriya 3:07e15677a75c 439 {
sakthipriya 3:07e15677a75c 440 printf("Write on Flash\r\n");
sakthipriya 3:07e15677a75c 441 }
sakthipriya 3:07e15677a75c 442 default:
sakthipriya 3:07e15677a75c 443 {
sakthipriya 3:07e15677a75c 444 printf("Invalid TC");
sakthipriya 3:07e15677a75c 445 //ACK_L234_TM
sakthipriya 3:07e15677a75c 446 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 447 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 448 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 449 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 450 {
sakthipriya 3:07e15677a75c 451 tm[i]=0x00;
sakthipriya 0:7b4c00e3912f 452 }
sakthipriya 3:07e15677a75c 453 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 454 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 455 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 456 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 457 {
sakthipriya 3:07e15677a75c 458 tm[i]=0x00;
sakthipriya 0:7b4c00e3912f 459 }
sakthipriya 3:07e15677a75c 460 return tm;
sakthipriya 3:07e15677a75c 461 }
sakthipriya 3:07e15677a75c 462 }
sakthipriya 0:7b4c00e3912f 463 }
sakthipriya 0:7b4c00e3912f 464
sakthipriya 3:07e15677a75c 465 case 0x80:
sakthipriya 3:07e15677a75c 466 {
sakthipriya 3:07e15677a75c 467 printf("Function Management Service\r\n");
sakthipriya 3:07e15677a75c 468 uint8_t service_subtype=(tc[2]&0x0F);
sakthipriya 3:07e15677a75c 469
sakthipriya 3:07e15677a75c 470 switch(service_subtype)
sakthipriya 3:07e15677a75c 471 {
sakthipriya 3:07e15677a75c 472 case 0x01:
sakthipriya 3:07e15677a75c 473 {
sakthipriya 3:07e15677a75c 474 printf("FMS Activated\r\n");
sakthipriya 3:07e15677a75c 475
sakthipriya 3:07e15677a75c 476 uint8_t pid=tc[3];
sakthipriya 3:07e15677a75c 477 switch(pid)
sakthipriya 3:07e15677a75c 478 {
sakthipriya 5:bb592f3185cc 479 case 0xE0:
sakthipriya 3:07e15677a75c 480 {
lakshya 10:f93407b97750 481 float B[3],W[3];
sakthipriya 5:bb592f3185cc 482 printf("ACS_COMSN\r\n");
sakthipriya 3:07e15677a75c 483 //ACK_L234_TM
lakshya 10:f93407b97750 484
lakshya 10:f93407b97750 485 uint8_t B_x[2];
lakshya 10:f93407b97750 486 uint8_t B_y[2];
lakshya 10:f93407b97750 487 uint8_t B_z[2];
lakshya 10:f93407b97750 488 uint8_t W_x[2];
lakshya 10:f93407b97750 489 uint8_t W_y[2];
lakshya 10:f93407b97750 490 uint8_t W_z[2];
lakshya 10:f93407b97750 491
lakshya 10:f93407b97750 492 B_x[0]=tc[3];
lakshya 10:f93407b97750 493 B_x[1]=tc[4];
lakshya 10:f93407b97750 494 B_y[0]=tc[5];
lakshya 10:f93407b97750 495 B_y[1]=tc[6];
lakshya 10:f93407b97750 496 B_z[0]=tc[7];
lakshya 10:f93407b97750 497 B_z[1]=tc[8];
lakshya 10:f93407b97750 498
lakshya 10:f93407b97750 499 W_x[0]=tc[9];
lakshya 10:f93407b97750 500 W_x[1]=tc[10];
lakshya 10:f93407b97750 501 W_y[0]=tc[11];
lakshya 10:f93407b97750 502 W_y[1]=tc[12];
lakshya 10:f93407b97750 503 W_z[0]=tc[13];
lakshya 10:f93407b97750 504 W_z[1]=tc[14];
lakshya 10:f93407b97750 505
lakshya 11:1fdb94ae6563 506 FCTN_CONVERT_UINT(B_x,&B[0]);
lakshya 11:1fdb94ae6563 507 FCTN_CONVERT_UINT(B_y,&B[1]);
lakshya 11:1fdb94ae6563 508 FCTN_CONVERT_UINT(B_z,&B[2]);
lakshya 10:f93407b97750 509
lakshya 10:f93407b97750 510 FCTN_CONVERT_UINT (W_x, &W[0]);
lakshya 10:f93407b97750 511 FCTN_CONVERT_UINT (W_y, &W[1]);
lakshya 10:f93407b97750 512 FCTN_CONVERT_UINT (W_z, &W[2]);
lakshya 10:f93407b97750 513
sakthipriya 3:07e15677a75c 514 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 515 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 516 tm[2]=ACK_CODE;
lakshya 10:f93407b97750 517 //FCTN_ATS_DATA_ACQ(); //get data
sakthipriya 5:bb592f3185cc 518 printf("gyro values\n\r");
sakthipriya 5:bb592f3185cc 519 for(int i=0; i<3; i++)
lakshya 10:f93407b97750 520 printf("%f\n\r",W[i]);
sakthipriya 5:bb592f3185cc 521 printf("mag values\n\r");
lakshya 10:f93407b97750 522 for(int i=0; i<3; i++)
lakshya 10:f93407b97750 523 printf("%f\n\r",B[i]);
lakshya 10:f93407b97750 524 /* FCTN_CONVERT_FLOAT(data[0],&tm[4]); //tm[4] - tm[7]
sakthipriya 5:bb592f3185cc 525 FCTN_CONVERT_FLOAT(data[1],&tm[8]); //tm[8] - tm[11]
sakthipriya 5:bb592f3185cc 526 FCTN_CONVERT_FLOAT(data[2],&tm[12]); //tm[12] - tm[15]
sakthipriya 5:bb592f3185cc 527 FCTN_CONVERT_FLOAT(data[0],&tm[16]); //tm[16] - tm[19]
sakthipriya 5:bb592f3185cc 528 FCTN_CONVERT_FLOAT(data[1],&tm[20]); //tm[20] - tm[23]
sakthipriya 5:bb592f3185cc 529 FCTN_CONVERT_FLOAT(data[2],&tm[24]); //tm[24] - tm[27]
sakthipriya 5:bb592f3185cc 530 if((data[0]<8) && (data[1]<8) && (data[2] <8))
sakthipriya 5:bb592f3185cc 531 tm[28] = 1; // gyro values in correct range
sakthipriya 5:bb592f3185cc 532 else
sakthipriya 5:bb592f3185cc 533 tm[28] = 0;
sakthipriya 5:bb592f3185cc 534 if ((data[3] > 20 ) && (data[4] >20) && (data[5]>20)&& (data[3] < 50 ) && (data[4] <50) && (data[5]<50))
sakthipriya 5:bb592f3185cc 535 tm[29] = 1; // mag values in correct range
sakthipriya 5:bb592f3185cc 536 else
sakthipriya 5:bb592f3185cc 537 tm[29] = 0;
lakshya 10:f93407b97750 538 */
lakshya 10:f93407b97750 539 // float B[3],W[3];
lakshya 10:f93407b97750 540 // B[0] = B0;
lakshya 10:f93407b97750 541 // B[1] = B1;
lakshya 10:f93407b97750 542 // B[2] = B2;
lakshya 10:f93407b97750 543 // W[0] = W0;
lakshya 10:f93407b97750 544 // W[1] = W1;
lakshya 10:f93407b97750 545 // W[2] = W2;
sakthipriya 5:bb592f3185cc 546 // Control algo commissioning
lakshya 10:f93407b97750 547 /* FCTN_ACS_CNTRLALGO(B,W);
sakthipriya 5:bb592f3185cc 548 FCTN_CONVERT_FLOAT(moment[0],&tm[30]); //tm[30] - tm[33]
sakthipriya 5:bb592f3185cc 549 FCTN_CONVERT_FLOAT(moment[1],&tm[34]); //tm[34] - tm[37]
sakthipriya 5:bb592f3185cc 550 FCTN_CONVERT_FLOAT(moment[2],&tm[38]); //tm[38] - tm[41]
sakthipriya 5:bb592f3185cc 551 // to include commission TR as well
sakthipriya 5:bb592f3185cc 552 for(uint8_t i=42;i<132;i++)
sakthipriya 3:07e15677a75c 553 {
sakthipriya 3:07e15677a75c 554 tm[i]=0x00;
sakthipriya 3:07e15677a75c 555 }
sakthipriya 5:bb592f3185cc 556
sakthipriya 5:bb592f3185cc 557 crc16 = CRC::crc16_gen(tm,132);
sakthipriya 5:bb592f3185cc 558 tm[133] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 5:bb592f3185cc 559 tm[134] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 560 return tm;
lakshya 10:f93407b97750 561 */
lakshya 10:f93407b97750 562
lakshya 10:f93407b97750 563 // Control algo commissioning
lakshya 10:f93407b97750 564 FCTN_ACS_CNTRLALGO(B,W);
lakshya 10:f93407b97750 565 FCTN_CONVERT_FLOAT(moment[0],&tm[4]); //tm[4] - tm[7]
lakshya 10:f93407b97750 566 FCTN_CONVERT_FLOAT(moment[1],&tm[8]); //tm[8] - tm[11]
lakshya 10:f93407b97750 567 FCTN_CONVERT_FLOAT(moment[2],&tm[12]); //tm[12] - tm[15]
lakshya 10:f93407b97750 568 // to include commission TR as well
lakshya 10:f93407b97750 569 for(uint8_t i=16;i<132;i++)
lakshya 10:f93407b97750 570 {
lakshya 10:f93407b97750 571 tm[i]=0x00;
lakshya 10:f93407b97750 572 }
lakshya 10:f93407b97750 573
lakshya 10:f93407b97750 574 crc16 = CRC::crc16_gen(tm,132);
lakshya 10:f93407b97750 575 tm[133] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 10:f93407b97750 576 tm[134] = (uint8_t)(crc16&0x00FF);
lakshya 10:f93407b97750 577 return tm;
sakthipriya 3:07e15677a75c 578
sakthipriya 3:07e15677a75c 579 }
lakshya 10:f93407b97750 580
lakshya 10:f93407b97750 581
lakshya 10:f93407b97750 582
lakshya 10:f93407b97750 583 case 0xE1:
sakthipriya 3:07e15677a75c 584 {
lakshya 10:f93407b97750 585 float moment_tc[3];
lakshya 10:f93407b97750 586 printf("HARDWARE_COMSN\r\n");
lakshya 10:f93407b97750 587 //ACK_L234_TM
lakshya 10:f93407b97750 588 uint8_t M0[2];
lakshya 10:f93407b97750 589 uint8_t M1[2];
lakshya 10:f93407b97750 590 uint8_t M2[2];
lakshya 10:f93407b97750 591
lakshya 10:f93407b97750 592 M0[0]=tc[3];
lakshya 10:f93407b97750 593 M0[1]=tc[4];
lakshya 10:f93407b97750 594 M1[0]=tc[5];
lakshya 10:f93407b97750 595 M1[1]=tc[6];
lakshya 10:f93407b97750 596 M2[0]=tc[7];
lakshya 10:f93407b97750 597 M2[1]=tc[8];
lakshya 10:f93407b97750 598
lakshya 10:f93407b97750 599
lakshya 10:f93407b97750 600 tm[0]=0xB0;
lakshya 10:f93407b97750 601 tm[1]=tc[0];
lakshya 10:f93407b97750 602 tm[2]=ACK_CODE;
lakshya 11:1fdb94ae6563 603 FCTN_CONVERT_UINT(M0,&moment_tc[0]);
lakshya 11:1fdb94ae6563 604 FCTN_CONVERT_UINT(M1, &moment_tc[1]);
lakshya 11:1fdb94ae6563 605 FCTN_CONVERT_UINT(M2, &moment_tc[2]);
lakshya 10:f93407b97750 606
lakshya 10:f93407b97750 607
lakshya 10:f93407b97750 608
lakshya 10:f93407b97750 609 FCTN_ACS_GENPWM_MAIN(moment_tc);
lakshya 10:f93407b97750 610
lakshya 10:f93407b97750 611 float PWM_measured[3];
lakshya 10:f93407b97750 612
lakshya 10:f93407b97750 613 PWM_measured[0] = PWM1.read();
lakshya 10:f93407b97750 614 PWM_measured[1] = PWM2.read();
lakshya 10:f93407b97750 615 PWM_measured[2] = PWM3.read();
lakshya 10:f93407b97750 616
lakshya 10:f93407b97750 617
lakshya 10:f93407b97750 618 FCTN_CONVERT_FLOAT(PWM_measured[0],&tm[4]); //4-7
lakshya 10:f93407b97750 619 FCTN_CONVERT_FLOAT(PWM_measured[1],&tm[8]); //8-11
lakshya 10:f93407b97750 620 FCTN_CONVERT_FLOAT(PWM_measured[2],&tm[12]); //12-15
lakshya 10:f93407b97750 621 for(int i=0; i<12; i++)
lakshya 10:f93407b97750 622 FCTN_CONVERT_FLOAT(actual_data.current_actual[i],&tm[16 + (i*4)]);
lakshya 10:f93407b97750 623
lakshya 10:f93407b97750 624
lakshya 10:f93407b97750 625 FCTN_ATS_DATA_ACQ(); //get data
lakshya 10:f93407b97750 626
lakshya 10:f93407b97750 627
lakshya 10:f93407b97750 628 // to include commission TR as well
lakshya 10:f93407b97750 629 for(uint8_t i=64;i<132;i++)
lakshya 10:f93407b97750 630 {
lakshya 10:f93407b97750 631 tm[i]=0x00;
lakshya 10:f93407b97750 632 }
lakshya 10:f93407b97750 633
lakshya 10:f93407b97750 634 crc16 = CRC::crc16_gen(tm,132);
lakshya 10:f93407b97750 635 tm[133] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 10:f93407b97750 636 tm[134] = (uint8_t)(crc16&0x00FF);
lakshya 10:f93407b97750 637 return tm;
lakshya 10:f93407b97750 638
lakshya 10:f93407b97750 639 }
lakshya 10:f93407b97750 640 case 0x02:
lakshya 10:f93407b97750 641 {
lakshya 10:f93407b97750 642 F_EPS();
lakshya 10:f93407b97750 643 /* printf("Run P_EPS_MAIN\r\n");
sakthipriya 3:07e15677a75c 644 //ACK_L234_TM
sakthipriya 3:07e15677a75c 645 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 646 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 647 tm[2]=ACK_CODE;
lakshya 10:f93407b97750 648 */
lakshya 10:f93407b97750 649 for(uint8_t i=0;i<133;i++)
sakthipriya 3:07e15677a75c 650 {
sakthipriya 3:07e15677a75c 651 tm[i]=0x00;
sakthipriya 3:07e15677a75c 652 }
lakshya 10:f93407b97750 653 crc16 = CRC::crc16_gen(tm,132);
lakshya 10:f93407b97750 654 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 10:f93407b97750 655 tm[133] = (uint8_t)(crc16&0x00FF);
lakshya 10:f93407b97750 656 /*
sakthipriya 3:07e15677a75c 657 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 658 {
sakthipriya 3:07e15677a75c 659 tm[i]=0x00;
sakthipriya 3:07e15677a75c 660 }
lakshya 10:f93407b97750 661 */
lakshya 10:f93407b97750 662
sakthipriya 3:07e15677a75c 663 return tm;
sakthipriya 3:07e15677a75c 664 }
lakshya 10:f93407b97750 665
lakshya 10:f93407b97750 666 /* case 0x03:
sakthipriya 3:07e15677a75c 667 {
lakshya 10:f93407b97750 668
lakshya 10:f93407b97750 669 /* printf("Run P_ACS_INIT\r\n");
sakthipriya 3:07e15677a75c 670 //ACK_L234_TM
sakthipriya 3:07e15677a75c 671 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 672 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 673 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 674 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 675 {
sakthipriya 3:07e15677a75c 676 tm[i]=0x00;
sakthipriya 3:07e15677a75c 677 }
sakthipriya 3:07e15677a75c 678 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 679 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 680 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 681 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 682 {
sakthipriya 3:07e15677a75c 683 tm[i]=0x00;
sakthipriya 3:07e15677a75c 684 }
sakthipriya 3:07e15677a75c 685 return tm;
sakthipriya 3:07e15677a75c 686 }
sakthipriya 3:07e15677a75c 687 case 0x04:
sakthipriya 3:07e15677a75c 688 {
sakthipriya 3:07e15677a75c 689 printf("Run P_ACS_ACQ_DATA\r\n");
sakthipriya 3:07e15677a75c 690 //ACK_L234_TM
sakthipriya 3:07e15677a75c 691 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 692 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 693 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 694 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 695 {
sakthipriya 3:07e15677a75c 696 tm[i]=0x00;
sakthipriya 3:07e15677a75c 697 }
sakthipriya 3:07e15677a75c 698 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 699 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 700 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 701 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 702 {
sakthipriya 3:07e15677a75c 703 tm[i]=0x00;
sakthipriya 3:07e15677a75c 704 }
sakthipriya 3:07e15677a75c 705 return tm;
sakthipriya 3:07e15677a75c 706 }
lakshya 10:f93407b97750 707 */
sakthipriya 3:07e15677a75c 708 case 0x05:
sakthipriya 3:07e15677a75c 709 {
sakthipriya 3:07e15677a75c 710 printf("Run P_ACS_MAIN\r\n");
lakshya 10:f93407b97750 711 F_ACS();
lakshya 10:f93407b97750 712
lakshya 10:f93407b97750 713
lakshya 10:f93407b97750 714 for(int i=0; i<3; i++)
lakshya 10:f93407b97750 715 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[i],&tm[(i*4)]);
lakshya 10:f93407b97750 716 for(int i=0; i<3; i++)
lakshya 10:f93407b97750 717 FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[i],&tm[12+(i*4)]);
lakshya 10:f93407b97750 718
lakshya 10:f93407b97750 719 tm[24] = ACS_STATE;
lakshya 10:f93407b97750 720 tm[24] = tm[5]|(EN_BTRY_HT<<3);
lakshya 10:f93407b97750 721 tm[24] = tm[5]|(phase_TR_x<<4);
lakshya 10:f93407b97750 722 tm[24] = tm[5]|(phase_TR_y<<5);
lakshya 10:f93407b97750 723 tm[24] = tm[5]|(phase_TR_z<<6);
lakshya 10:f93407b97750 724
lakshya 11:1fdb94ae6563 725 /*___________________change / check pwm working__________________________________*/
lakshya 11:1fdb94ae6563 726
lakshya 11:1fdb94ae6563 727 FCTN_CONVERT_FLOAT(PWM1,&tm[25]);
lakshya 11:1fdb94ae6563 728 FCTN_CONVERT_FLOAT(PWM2,&tm[29]);
lakshya 11:1fdb94ae6563 729 FCTN_CONVERT_FLOAT(PWM3,&tm[33]);
lakshya 10:f93407b97750 730
lakshya 10:f93407b97750 731 //ACK_L234_TM
lakshya 10:f93407b97750 732 /* tm[0]=0xB0;
lakshya 10:f93407b97750 733 tm[1]=tc[0];
lakshya 10:f93407b97750 734 tm[2]=ACK_CODE;
lakshya 10:f93407b97750 735 for(uint8_t i=3;i<11;i++)
lakshya 10:f93407b97750 736 {
lakshya 10:f93407b97750 737 tm[i]=0x00;
lakshya 10:f93407b97750 738 }
lakshya 10:f93407b97750 739 */
lakshya 10:f93407b97750 740 crc16 = CRC::crc16_gen(tm,37);
lakshya 10:f93407b97750 741 tm[37] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 10:f93407b97750 742 tm[38] = (uint8_t)(crc16&0x00FF);
lakshya 10:f93407b97750 743 for(uint8_t i=39;i<134;i++)
lakshya 10:f93407b97750 744 {
lakshya 10:f93407b97750 745 tm[i]=0x00;
lakshya 10:f93407b97750 746 }
lakshya 10:f93407b97750 747 return tm;
lakshya 10:f93407b97750 748 }
lakshya 10:f93407b97750 749
lakshya 10:f93407b97750 750
lakshya 10:f93407b97750 751
lakshya 10:f93407b97750 752 case 0x06:
lakshya 10:f93407b97750 753 {
lakshya 10:f93407b97750 754 F_BCN();
Bragadeesh153 12:af1d7e18b868 755 /* printf("Run FCTN_BCN_INIT\r\n");
sakthipriya 3:07e15677a75c 756 //ACK_L234_TM
sakthipriya 3:07e15677a75c 757 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 758 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 759 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 760 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 761 {
sakthipriya 3:07e15677a75c 762 tm[i]=0x00;
sakthipriya 3:07e15677a75c 763 }
lakshya 10:f93407b97750 764 */
lakshya 10:f93407b97750 765 crc16 = CRC::crc16_gen(tm,0);
lakshya 10:f93407b97750 766 tm[0] = (uint8_t)((crc16&0xFF00)>>8);
lakshya 10:f93407b97750 767 tm[1] = (uint8_t)(crc16&0x00FF);
lakshya 10:f93407b97750 768 for(uint8_t i=2;i<134;i++)
sakthipriya 3:07e15677a75c 769 {
sakthipriya 3:07e15677a75c 770 tm[i]=0x00;
sakthipriya 3:07e15677a75c 771 }
sakthipriya 3:07e15677a75c 772 return tm;
sakthipriya 3:07e15677a75c 773 }
lakshya 10:f93407b97750 774 /*
sakthipriya 3:07e15677a75c 775 case 0x07:
sakthipriya 3:07e15677a75c 776 {
Bragadeesh153 12:af1d7e18b868 777 printf("Run FCTN_BCN_TX_MAIN\r\n");
sakthipriya 3:07e15677a75c 778 //ACK_L234_TM
sakthipriya 3:07e15677a75c 779 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 780 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 781 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 782 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 783 {
sakthipriya 3:07e15677a75c 784 tm[i]=0x00;
sakthipriya 3:07e15677a75c 785 }
sakthipriya 3:07e15677a75c 786 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 787 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 788 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 789 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 790 {
sakthipriya 3:07e15677a75c 791 tm[i]=0x00;
sakthipriya 3:07e15677a75c 792 }
sakthipriya 3:07e15677a75c 793 return tm;
sakthipriya 5:bb592f3185cc 794 }*/
lakshya 10:f93407b97750 795 case 0x11:
sakthipriya 3:07e15677a75c 796 {
sakthipriya 3:07e15677a75c 797 printf("SW_ON_ACS_ATS1_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 798 //ACK_L234_TM
sakthipriya 3:07e15677a75c 799 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 800 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 801 tm[2]=1;
lakshya 10:f93407b97750 802 ATS1_SW_ENABLE = 1; // making sure we switch off the other
sakthipriya 9:194afacf7449 803 ATS1_SW_ENABLE = 0;
sakthipriya 3:07e15677a75c 804 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 805 {
sakthipriya 3:07e15677a75c 806 tm[i]=0x00;
sakthipriya 3:07e15677a75c 807 }
sakthipriya 3:07e15677a75c 808 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 809 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 810 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 811 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 812 {
sakthipriya 3:07e15677a75c 813 tm[i]=0x00;
sakthipriya 3:07e15677a75c 814 }
sakthipriya 3:07e15677a75c 815 return tm;
sakthipriya 3:07e15677a75c 816 }
sakthipriya 3:07e15677a75c 817 case 0x12:
sakthipriya 3:07e15677a75c 818 {
sakthipriya 3:07e15677a75c 819 printf("SW_ON_ACS_ATS2_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 820 //ACK_L234_TM
sakthipriya 3:07e15677a75c 821 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 822 tm[1]=tc[0];
lakshya 10:f93407b97750 823 ATS1_SW_ENABLE = 1; //make sure u switch off the other
sakthipriya 9:194afacf7449 824 ATS2_SW_ENABLE = 0;
sakthipriya 5:bb592f3185cc 825 tm[2]=1;
sakthipriya 3:07e15677a75c 826 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 827 {
sakthipriya 3:07e15677a75c 828 tm[i]=0x00;
sakthipriya 3:07e15677a75c 829 }
sakthipriya 3:07e15677a75c 830 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 831 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 832 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 833 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 834 {
sakthipriya 3:07e15677a75c 835 tm[i]=0x00;
sakthipriya 3:07e15677a75c 836 }
sakthipriya 3:07e15677a75c 837 return tm;
sakthipriya 3:07e15677a75c 838 }
sakthipriya 3:07e15677a75c 839 case 0x13:
sakthipriya 3:07e15677a75c 840 {
sakthipriya 3:07e15677a75c 841 printf("SW_ON_ACS_TR_XY_ENABLE\r\n");
sakthipriya 3:07e15677a75c 842 //ACK_L234_TM
sakthipriya 3:07e15677a75c 843 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 844 tm[1]=tc[0];
lakshya 11:1fdb94ae6563 845 TRXY_SW_EN = 1;
sakthipriya 5:bb592f3185cc 846 tm[2]=1;
sakthipriya 3:07e15677a75c 847 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 848 {
sakthipriya 3:07e15677a75c 849 tm[i]=0x00;
sakthipriya 3:07e15677a75c 850 }
sakthipriya 3:07e15677a75c 851 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 852 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 853 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 854 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 855 {
sakthipriya 3:07e15677a75c 856 tm[i]=0x00;
sakthipriya 3:07e15677a75c 857 }
sakthipriya 3:07e15677a75c 858 return tm;
sakthipriya 3:07e15677a75c 859 }
sakthipriya 3:07e15677a75c 860 case 0x14:
sakthipriya 3:07e15677a75c 861 {
sakthipriya 3:07e15677a75c 862 printf("SW_ON_ACS_TR_Z_ENABLE\r\n");
sakthipriya 3:07e15677a75c 863 //ACK_L234_TM
sakthipriya 3:07e15677a75c 864 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 865 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 866 tm[2]=1;
sakthipriya 5:bb592f3185cc 867 TRZ_SW = 1;
sakthipriya 3:07e15677a75c 868 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 869 {
sakthipriya 3:07e15677a75c 870 tm[i]=0x00;
sakthipriya 3:07e15677a75c 871 }
sakthipriya 3:07e15677a75c 872 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 873 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 874 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 875 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 876 {
sakthipriya 3:07e15677a75c 877 tm[i]=0x00;
sakthipriya 3:07e15677a75c 878 }
sakthipriya 3:07e15677a75c 879 return tm;
sakthipriya 3:07e15677a75c 880 }
sakthipriya 3:07e15677a75c 881 case 0x15:
sakthipriya 3:07e15677a75c 882 {
sakthipriya 3:07e15677a75c 883 printf("SW_ON_BCN_TX_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 884 //ACK_L234_TM
sakthipriya 3:07e15677a75c 885 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 886 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 887 tm[2]=1;
sakthipriya 5:bb592f3185cc 888 BCN_SW = 0;
sakthipriya 3:07e15677a75c 889 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 890 {
sakthipriya 3:07e15677a75c 891 tm[i]=0x00;
sakthipriya 3:07e15677a75c 892 }
sakthipriya 3:07e15677a75c 893 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 894 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 895 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 896 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 897 {
sakthipriya 3:07e15677a75c 898 tm[i]=0x00;
sakthipriya 3:07e15677a75c 899 }
sakthipriya 3:07e15677a75c 900 return tm;
sakthipriya 3:07e15677a75c 901 }
sakthipriya 3:07e15677a75c 902 case 0x21:
sakthipriya 3:07e15677a75c 903 {
sakthipriya 3:07e15677a75c 904 printf("SW_OFF_ACS_ATS1_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 905 //ACK_L234_TM
sakthipriya 3:07e15677a75c 906 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 907 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 908 tm[2]=1;
sakthipriya 9:194afacf7449 909 ATS1_SW_ENABLE = 1;
sakthipriya 3:07e15677a75c 910 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 911 {
sakthipriya 3:07e15677a75c 912 tm[i]=0x00;
sakthipriya 3:07e15677a75c 913 }
sakthipriya 3:07e15677a75c 914 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 915 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 916 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 917 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 918 {
sakthipriya 3:07e15677a75c 919 tm[i]=0x00;
sakthipriya 3:07e15677a75c 920 }
sakthipriya 3:07e15677a75c 921 return tm;
sakthipriya 3:07e15677a75c 922 }
sakthipriya 3:07e15677a75c 923 case 0x22:
sakthipriya 3:07e15677a75c 924 {
sakthipriya 3:07e15677a75c 925 printf("SW_OFF_ACS_ATS2_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 926 //ACK_L234_TM
sakthipriya 3:07e15677a75c 927 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 928 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 929 tm[2]=1;
sakthipriya 9:194afacf7449 930 ATS2_SW_ENABLE = 1;
sakthipriya 3:07e15677a75c 931 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 932 {
sakthipriya 3:07e15677a75c 933 tm[i]=0x00;
sakthipriya 3:07e15677a75c 934 }
sakthipriya 3:07e15677a75c 935 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 936 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 937 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 938 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 939 {
sakthipriya 3:07e15677a75c 940 tm[i]=0x00;
sakthipriya 3:07e15677a75c 941 }
sakthipriya 3:07e15677a75c 942 return tm;
sakthipriya 3:07e15677a75c 943 }
sakthipriya 3:07e15677a75c 944 case 0x23:
sakthipriya 3:07e15677a75c 945 {
sakthipriya 3:07e15677a75c 946 printf("SW_OFF_ACS_TR_XY_ENABLE\r\n");
sakthipriya 3:07e15677a75c 947 //ACK_L234_TM
sakthipriya 3:07e15677a75c 948 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 949 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 950 tm[2]=1;
lakshya 11:1fdb94ae6563 951 TRXY_SW_EN= 0;
sakthipriya 3:07e15677a75c 952 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 953 {
sakthipriya 3:07e15677a75c 954 tm[i]=0x00;
sakthipriya 3:07e15677a75c 955 }
sakthipriya 3:07e15677a75c 956 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 957 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 958 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 959 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 960 {
sakthipriya 3:07e15677a75c 961 tm[i]=0x00;
sakthipriya 3:07e15677a75c 962 }
sakthipriya 3:07e15677a75c 963 return tm;
sakthipriya 3:07e15677a75c 964 }
sakthipriya 3:07e15677a75c 965 case 0x24:
sakthipriya 3:07e15677a75c 966 {
sakthipriya 3:07e15677a75c 967 printf("SW_OFF_ACS_TR_Z_ENABLE\r\n");
sakthipriya 3:07e15677a75c 968 //ACK_L234_TM
sakthipriya 3:07e15677a75c 969 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 970 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 971 tm[2]=1;
sakthipriya 5:bb592f3185cc 972 TRZ_SW = 0;
sakthipriya 3:07e15677a75c 973 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 974 {
sakthipriya 3:07e15677a75c 975 tm[i]=0x00;
sakthipriya 3:07e15677a75c 976 }
sakthipriya 3:07e15677a75c 977 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 978 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 979 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 980 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 981 {
sakthipriya 3:07e15677a75c 982 tm[i]=0x00;
sakthipriya 3:07e15677a75c 983 }
sakthipriya 3:07e15677a75c 984 return tm;
sakthipriya 3:07e15677a75c 985 }
sakthipriya 3:07e15677a75c 986 case 0x25:
sakthipriya 3:07e15677a75c 987 {
sakthipriya 3:07e15677a75c 988 printf("SW_OFF_BCN_TX_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 989 //ACK_L234_TM
sakthipriya 3:07e15677a75c 990 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 991 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 992 tm[2]=1;
sakthipriya 5:bb592f3185cc 993 BCN_SW = 1;
sakthipriya 3:07e15677a75c 994 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 995 {
sakthipriya 3:07e15677a75c 996 tm[i]=0x00;
sakthipriya 3:07e15677a75c 997 }
sakthipriya 3:07e15677a75c 998 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 999 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 1000 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1001 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1002 {
sakthipriya 3:07e15677a75c 1003 tm[i]=0x00;
sakthipriya 3:07e15677a75c 1004 }
sakthipriya 3:07e15677a75c 1005 return tm;
sakthipriya 3:07e15677a75c 1006 }
sakthipriya 3:07e15677a75c 1007 case 0x31:
sakthipriya 3:07e15677a75c 1008 {
sakthipriya 5:bb592f3185cc 1009 printf("ACS_ATS1_SW_RESET\r\n");
sakthipriya 3:07e15677a75c 1010 //ACK_L234_TM
sakthipriya 3:07e15677a75c 1011 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 1012 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 1013 tm[2]=1;
sakthipriya 9:194afacf7449 1014 ATS1_SW_ENABLE = 1;
sakthipriya 5:bb592f3185cc 1015 wait_us(1);
sakthipriya 9:194afacf7449 1016 ATS1_SW_ENABLE = 0;
sakthipriya 3:07e15677a75c 1017 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1018 {
sakthipriya 3:07e15677a75c 1019 tm[i]=0x00;
sakthipriya 3:07e15677a75c 1020 }
sakthipriya 3:07e15677a75c 1021 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 1022 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 1023 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1024 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1025 {
sakthipriya 3:07e15677a75c 1026 tm[i]=0x00;
sakthipriya 3:07e15677a75c 1027 }
sakthipriya 3:07e15677a75c 1028 return tm;
sakthipriya 3:07e15677a75c 1029 }
sakthipriya 3:07e15677a75c 1030 case 0x32:
sakthipriya 3:07e15677a75c 1031 {
sakthipriya 3:07e15677a75c 1032 printf("BCN_SW_RESET\r\n");
sakthipriya 3:07e15677a75c 1033 //ACK_L234_TM
sakthipriya 3:07e15677a75c 1034 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 1035 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 1036 tm[2]=1;
sakthipriya 5:bb592f3185cc 1037 BCN_SW = 1;
sakthipriya 5:bb592f3185cc 1038 wait_us(1);
sakthipriya 5:bb592f3185cc 1039 BCN_SW = 0;
sakthipriya 3:07e15677a75c 1040 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1041 {
sakthipriya 3:07e15677a75c 1042 tm[i]=0x00;
sakthipriya 3:07e15677a75c 1043 }
sakthipriya 3:07e15677a75c 1044 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 1045 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 1046 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1047 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1048 {
sakthipriya 3:07e15677a75c 1049 tm[i]=0x00;
sakthipriya 3:07e15677a75c 1050 }
sakthipriya 3:07e15677a75c 1051 return tm;
sakthipriya 3:07e15677a75c 1052 }
sakthipriya 3:07e15677a75c 1053 case 0x33:
sakthipriya 3:07e15677a75c 1054 {
sakthipriya 5:bb592f3185cc 1055 printf("ACS_ATS2_SW_RESET\r\n");
sakthipriya 3:07e15677a75c 1056 //ACK_L234_TM
sakthipriya 3:07e15677a75c 1057 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 1058 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 1059 tm[2]=1;
sakthipriya 9:194afacf7449 1060 ATS1_SW_ENABLE = 1;
sakthipriya 5:bb592f3185cc 1061 wait_us(1);
sakthipriya 9:194afacf7449 1062 ATS1_SW_ENABLE = 0;
sakthipriya 3:07e15677a75c 1063 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1064 {
sakthipriya 3:07e15677a75c 1065 tm[i]=0x00;
sakthipriya 3:07e15677a75c 1066 }
sakthipriya 3:07e15677a75c 1067 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 1068 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 1069 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1070 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1071 {
sakthipriya 3:07e15677a75c 1072 tm[i]=0x00;
sakthipriya 3:07e15677a75c 1073 }
sakthipriya 3:07e15677a75c 1074 return tm;
sakthipriya 3:07e15677a75c 1075 }
sakthipriya 3:07e15677a75c 1076 case 0x34:
sakthipriya 3:07e15677a75c 1077 {
sakthipriya 3:07e15677a75c 1078 printf("CDMS_SW_RESET\r\n");
sakthipriya 3:07e15677a75c 1079 //ACK_L234_TM
sakthipriya 3:07e15677a75c 1080 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 1081 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 1082 tm[2]=1;
sakthipriya 5:bb592f3185cc 1083 CDMS_RESET = 0;
sakthipriya 5:bb592f3185cc 1084 wait_us(1);
sakthipriya 5:bb592f3185cc 1085 CDMS_RESET = 1;
sakthipriya 3:07e15677a75c 1086 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1087 {
sakthipriya 3:07e15677a75c 1088 tm[i]=0x00;
sakthipriya 3:07e15677a75c 1089 }
sakthipriya 3:07e15677a75c 1090 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 1091 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 1092 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1093 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1094 {
sakthipriya 3:07e15677a75c 1095 tm[i]=0x00;
sakthipriya 3:07e15677a75c 1096 }
sakthipriya 3:07e15677a75c 1097 return tm;
sakthipriya 3:07e15677a75c 1098 }
sakthipriya 5:bb592f3185cc 1099
sakthipriya 5:bb592f3185cc 1100
sakthipriya 3:07e15677a75c 1101 default:
sakthipriya 3:07e15677a75c 1102 {
sakthipriya 3:07e15677a75c 1103 printf("Invalid TC\r\n");
sakthipriya 3:07e15677a75c 1104 //ACK_L234_TM
sakthipriya 3:07e15677a75c 1105 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 1106 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 1107 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 1108 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1109 {
sakthipriya 3:07e15677a75c 1110 tm[i]=0x00;
sakthipriya 3:07e15677a75c 1111 }
sakthipriya 3:07e15677a75c 1112 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 1113 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 1114 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1115 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1116 {
sakthipriya 3:07e15677a75c 1117 tm[i]=0x00;
sakthipriya 3:07e15677a75c 1118 }
sakthipriya 3:07e15677a75c 1119 return tm;
sakthipriya 3:07e15677a75c 1120 }
sakthipriya 3:07e15677a75c 1121 }
sakthipriya 3:07e15677a75c 1122
sakthipriya 3:07e15677a75c 1123 default:
sakthipriya 3:07e15677a75c 1124 {
sakthipriya 3:07e15677a75c 1125 printf("Invalid TC\r\n");
sakthipriya 3:07e15677a75c 1126 //ACK_L234_TM
sakthipriya 3:07e15677a75c 1127 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 1128 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 1129 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 1130 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 1131 {
sakthipriya 3:07e15677a75c 1132 tm[i]=0x00;
sakthipriya 3:07e15677a75c 1133 }
sakthipriya 3:07e15677a75c 1134 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 1135 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 1136 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 1137 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 1138 {
sakthipriya 3:07e15677a75c 1139 tm[i]=0x00;
sakthipriya 3:07e15677a75c 1140 }
sakthipriya 3:07e15677a75c 1141 return tm;
sakthipriya 3:07e15677a75c 1142 }
sakthipriya 3:07e15677a75c 1143 }
sakthipriya 3:07e15677a75c 1144 }
sakthipriya 3:07e15677a75c 1145 }
sakthipriya 3:07e15677a75c 1146 }
sakthipriya 4:39a4ae8c7ecd 1147 }
sakthipriya 4:39a4ae8c7ecd 1148
sakthipriya 4:39a4ae8c7ecd 1149
sakthipriya 4:39a4ae8c7ecd 1150
sakthipriya 4:39a4ae8c7ecd 1151
sakthipriya 4:39a4ae8c7ecd 1152 int strt_add = flash_size() - (2*SECTOR_SIZE);
sakthipriya 4:39a4ae8c7ecd 1153 uint32_t flasharray[8]; //256+(3*1024)
sakthipriya 4:39a4ae8c7ecd 1154 char *nativeflash = (char*)strt_add;
sakthipriya 4:39a4ae8c7ecd 1155
sakthipriya 4:39a4ae8c7ecd 1156 /*Writing to the Flash*/
sakthipriya 4:39a4ae8c7ecd 1157 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 1158 {
sakthipriya 4:39a4ae8c7ecd 1159 for(int i=0;i<8;i++)
sakthipriya 4:39a4ae8c7ecd 1160 {
sakthipriya 4:39a4ae8c7ecd 1161 flasharray[i]=nativeflash[i];
sakthipriya 4:39a4ae8c7ecd 1162 }
sakthipriya 4:39a4ae8c7ecd 1163 flasharray[j]=fdata;
sakthipriya 4:39a4ae8c7ecd 1164 erase_sector(strt_add);
sakthipriya 4:39a4ae8c7ecd 1165 program_flash(strt_add, (char*)&flasharray,4*8);
sakthipriya 4:39a4ae8c7ecd 1166 }
sakthipriya 4:39a4ae8c7ecd 1167 /*End*/
sakthipriya 4:39a4ae8c7ecd 1168
sakthipriya 4:39a4ae8c7ecd 1169 /*Reading from Flash*/
sakthipriya 4:39a4ae8c7ecd 1170 uint32_t FCTN_CDMS_RD_FLASH(uint16_t j)
sakthipriya 4:39a4ae8c7ecd 1171 {
sakthipriya 4:39a4ae8c7ecd 1172 for(int i=0;i<8;i++)
sakthipriya 4:39a4ae8c7ecd 1173 {
sakthipriya 4:39a4ae8c7ecd 1174 flasharray[i]=nativeflash[i];
sakthipriya 4:39a4ae8c7ecd 1175 }
sakthipriya 4:39a4ae8c7ecd 1176 return flasharray[j];
sakthipriya 4:39a4ae8c7ecd 1177 }
sakthipriya 5:bb592f3185cc 1178 /*End*/
sakthipriya 5:bb592f3185cc 1179
sakthipriya 5:bb592f3185cc 1180 // Convert float to 4 uint8_t
sakthipriya 5:bb592f3185cc 1181
sakthipriya 6:036d08b62785 1182 void FCTN_CONVERT_FLOAT(float input, uint8_t output[4])
sakthipriya 5:bb592f3185cc 1183 {
sakthipriya 6:036d08b62785 1184 assert(sizeof(float) == sizeof(uint32_t));
sakthipriya 6:036d08b62785 1185 uint32_t* temp = reinterpret_cast<uint32_t*>(&input);
sakthipriya 6:036d08b62785 1186
sakthipriya 6:036d08b62785 1187 //float* output1 = reinterpret_cast<float*>(temp);
sakthipriya 6:036d08b62785 1188
sakthipriya 6:036d08b62785 1189 printf("\n\r %f ", input);
sakthipriya 6:036d08b62785 1190 std::cout << "\n\r uint32"<<*temp << std::endl;
sakthipriya 6:036d08b62785 1191
sakthipriya 6:036d08b62785 1192 output[0] =(uint8_t )(((*temp)>>24)&0xFF);
sakthipriya 6:036d08b62785 1193 output[2] =(uint8_t ) (((*temp)>>16)&0xFF);
sakthipriya 6:036d08b62785 1194 output[1] =(uint8_t ) (((*temp)>>8)&0xFF);
sakthipriya 6:036d08b62785 1195 output[3] =(uint8_t ) ((*temp) & 0xFF); // verify the logic
sakthipriya 6:036d08b62785 1196 //printf("\n\r inside %d %d %d %d", output[3],output[2],output[1],output[0]);
sakthipriya 6:036d08b62785 1197 //std:: cout << "\n\r uint8 inside " << output[3] << '\t' << output[2] << '\t' << output[1] << '\t' << output[0] <<std::endl;
lakshya 11:1fdb94ae6563 1198 }