I2C working only once, sensor working well, commissioning updated to be tested, Wohoooo!!! :-D

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of Japan_BAE1 by Team Fox

Committer:
sakthipriya
Date:
Fri Apr 01 21:13:16 2016 +0000
Revision:
9:194afacf7449
Parent:
8:82250e41da81
Child:
10:f93407b97750
updating telecommands.

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"
sakthipriya 0:7b4c00e3912f 11
sakthipriya 9:194afacf7449 12 extern DigitalOut ATS1_SW_ENABLE; // enable of att sens2 switch
sakthipriya 9:194afacf7449 13 extern DigitalOut ATS2_SW_ENABLE; // enable of att sens switch
sakthipriya 5:bb592f3185cc 14
sakthipriya 5:bb592f3185cc 15 extern DigitalOut TRXY_SW; //TR XY Switch
sakthipriya 5:bb592f3185cc 16 extern DigitalOut TRZ_SW; //TR Z Switch
sakthipriya 5:bb592f3185cc 17 extern DigitalOut CDMS_RESET; // CDMS RESET
sakthipriya 5:bb592f3185cc 18 extern DigitalOut BCN_SW; //Beacon switch
sakthipriya 4:39a4ae8c7ecd 19
sakthipriya 4:39a4ae8c7ecd 20 extern BAE_HK_actual actual_data;
sakthipriya 4:39a4ae8c7ecd 21 extern BAE_HK_min_max bae_HK_minmax;
sakthipriya 4:39a4ae8c7ecd 22 extern uint32_t BAE_STATUS;
sakthipriya 5:bb592f3185cc 23 extern float data[6];
sakthipriya 5:bb592f3185cc 24 extern float moment[3];
sakthipriya 5:bb592f3185cc 25
sakthipriya 5:bb592f3185cc 26 extern void FCTN_ATS_DATA_ACQ();
sakthipriya 5:bb592f3185cc 27 extern void FCTN_ACS_CNTRLALGO(float*,float*);
sakthipriya 0:7b4c00e3912f 28
sakthipriya 3:07e15677a75c 29 uint8_t* FCTN_BAE_TM_TC (uint8_t* tc)
sakthipriya 0:7b4c00e3912f 30
sakthipriya 3:07e15677a75c 31 {
sakthipriya 3:07e15677a75c 32 uint8_t service_type=(tc[2]&0xF0);
sakthipriya 3:07e15677a75c 33 uint8_t* tm;
sakthipriya 3:07e15677a75c 34 uint16_t crc16;
sakthipriya 8:82250e41da81 35
sakthipriya 3:07e15677a75c 36
sakthipriya 3:07e15677a75c 37 switch(service_type)
sakthipriya 3:07e15677a75c 38 {
sakthipriya 3:07e15677a75c 39 case 0x60:
sakthipriya 3:07e15677a75c 40 {
sakthipriya 3:07e15677a75c 41 printf("Memory Management Service\r\n");
sakthipriya 3:07e15677a75c 42 uint8_t service_subtype=(tc[2]&0x0F);
sakthipriya 3:07e15677a75c 43
sakthipriya 3:07e15677a75c 44 switch(service_subtype)
sakthipriya 3:07e15677a75c 45 {
sakthipriya 3:07e15677a75c 46 case 0x01:
sakthipriya 3:07e15677a75c 47 {
sakthipriya 3:07e15677a75c 48 printf("Read from Flash\r\n");
sakthipriya 3:07e15677a75c 49 }
sakthipriya 3:07e15677a75c 50 case 0x02:
sakthipriya 3:07e15677a75c 51 {
sakthipriya 4:39a4ae8c7ecd 52 printf("Read from RAM\r\n");
sakthipriya 8:82250e41da81 53
sakthipriya 8:82250e41da81 54 uint16_t MID = ((uint16_t)tc[3] << 8) | tc[4];
sakthipriya 8:82250e41da81 55 switch(MID )
sakthipriya 4:39a4ae8c7ecd 56 {
sakthipriya 8:82250e41da81 57 case 0x0010:
sakthipriya 8:82250e41da81 58 {
sakthipriya 8:82250e41da81 59 printf("Read MUX DATA\r\n");
sakthipriya 8:82250e41da81 60 tm[0] = 0x60;
sakthipriya 8:82250e41da81 61 tm[1] = tc[0];
sakthipriya 8:82250e41da81 62 tm[2] = ACK_CODE;
sakthipriya 8:82250e41da81 63 for(int i=0; i<3; i++)
sakthipriya 8:82250e41da81 64 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[i],&tm[4+ (i*4)]); //tm[4] - tm[7]
sakthipriya 8:82250e41da81 65 for(int i=0; i<3; i++)
sakthipriya 8:82250e41da81 66 FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[i],&tm[35+(i*4)]); //
sakthipriya 8:82250e41da81 67
sakthipriya 8:82250e41da81 68 for(int i=0; i<16; i++) //16*4 = 64 bytes //tm[4] to tm[67] filled
sakthipriya 8:82250e41da81 69 FCTN_CONVERT_FLOAT(actual_data.voltage_actual[i], &tm[4+(i*4)]);
sakthipriya 8:82250e41da81 70 for(int i=0; i<12; i++) //12*4 = 48 //tm[68] to tm[115] filled
sakthipriya 8:82250e41da81 71 FCTN_CONVERT_FLOAT(actual_data.current_actual[i],&tm[68 + (i*4)]);
sakthipriya 8:82250e41da81 72 for (int i=116; i<132;i++)
sakthipriya 8:82250e41da81 73 {
sakthipriya 8:82250e41da81 74 tm[i] = 0x00;
sakthipriya 8:82250e41da81 75 }
sakthipriya 8:82250e41da81 76 crc16 = CRC::crc16_gen(tm,132);
sakthipriya 8:82250e41da81 77 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 8:82250e41da81 78 tm[133] = (uint8_t)(crc16&0x00FF);
sakthipriya 8:82250e41da81 79 return tm;
sakthipriya 8:82250e41da81 80 }
sakthipriya 8:82250e41da81 81 //.........................
sakthipriya 9:194afacf7449 82 /* case 0x0010:
sakthipriya 5:bb592f3185cc 83 {
sakthipriya 5:bb592f3185cc 84 printf("Read MUX DATA\r\n");
sakthipriya 5:bb592f3185cc 85 tm[0] = 0x60;
sakthipriya 5:bb592f3185cc 86 tm[1] = tc[0];
sakthipriya 5:bb592f3185cc 87 tm[2] = ACK_CODE;
sakthipriya 5:bb592f3185cc 88 for(int i=0; i<16; i++) //16*4 = 64 bytes //tm[4] to tm[67] filled
sakthipriya 5:bb592f3185cc 89 FCTN_CONVERT_FLOAT(actual_data.voltage_actual[i], &tm[4+(i*4)]);
sakthipriya 5:bb592f3185cc 90 for(int i=0; i<12; i++) //12*4 = 48 //tm[68] to tm[115] filled
sakthipriya 5:bb592f3185cc 91 FCTN_CONVERT_FLOAT(actual_data.current_actual[i],&tm[68 + (i*4)]);
sakthipriya 5:bb592f3185cc 92 for (int i=116; i<132;i++)
sakthipriya 5:bb592f3185cc 93 {
sakthipriya 5:bb592f3185cc 94 tm[i] = 0x00;
sakthipriya 5:bb592f3185cc 95 }
sakthipriya 5:bb592f3185cc 96 crc16 = CRC::crc16_gen(tm,132);
sakthipriya 5:bb592f3185cc 97 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 5:bb592f3185cc 98 tm[133] = (uint8_t)(crc16&0x00FF);
sakthipriya 5:bb592f3185cc 99 return tm;
sakthipriya 9:194afacf7449 100 }*/
sakthipriya 8:82250e41da81 101 //..........................................
sakthipriya 8:82250e41da81 102 case 0x2:
sakthipriya 4:39a4ae8c7ecd 103 {
sakthipriya 4:39a4ae8c7ecd 104 printf("Read HK\r\n");
sakthipriya 4:39a4ae8c7ecd 105 tm[0] = 0x60;
sakthipriya 4:39a4ae8c7ecd 106 tm[1] = tc[0];
sakthipriya 4:39a4ae8c7ecd 107 tm[2] = ACK_CODE;
sakthipriya 8:82250e41da81 108 for(int i=0; i<3; i++)
sakthipriya 8:82250e41da81 109 FCTN_CONVERT_FLOAT(actual_data.Bvalue_actual[i],&tm[4+ (i*4)]); //tm[4] - tm[7]
sakthipriya 8:82250e41da81 110 for(int i=0; i<3; i++)
sakthipriya 8:82250e41da81 111 FCTN_CONVERT_FLOAT(actual_data.AngularSpeed_actual[i],&tm[35+(i*4)]); //
sakthipriya 8:82250e41da81 112
sakthipriya 5:bb592f3185cc 113 FCTN_CONVERT_FLOAT(actual_data.Batt_temp_actual[0],&tm[4]); //tm[4]-tm[7]
sakthipriya 5:bb592f3185cc 114 FCTN_CONVERT_FLOAT(actual_data.Batt_temp_actual[1],&tm[8]); //tm[8]- tm[11]
sakthipriya 5:bb592f3185cc 115 for(int i=0; i<4; i++)
sakthipriya 5:bb592f3185cc 116 FCTN_CONVERT_FLOAT(actual_data.Batt_gauge_actual[i],&tm[12+(i*4)]); //tm[12] - tm[27]
sakthipriya 5:bb592f3185cc 117 FCTN_CONVERT_FLOAT(actual_data.BAE_temp_actual,&tm[28]); //tm[28] - tm[31]
sakthipriya 5:bb592f3185cc 118 tm[32] = (uint8_t)actual_data.power_mode;
sakthipriya 5:bb592f3185cc 119 tm[33] = actual_data.faultPoll_status;
sakthipriya 5:bb592f3185cc 120 tm[34] = actual_data.faultIr_status;
sakthipriya 5:bb592f3185cc 121 FCTN_CONVERT_FLOAT(actual_data.Batt_voltage_actual,&tm[59]); //59 - 62
sakthipriya 5:bb592f3185cc 122 for (int i=63; i<132;i++)
sakthipriya 4:39a4ae8c7ecd 123 {
sakthipriya 5:bb592f3185cc 124 tm[i] = 0x00;
sakthipriya 4:39a4ae8c7ecd 125 }
sakthipriya 4:39a4ae8c7ecd 126 crc16 = CRC::crc16_gen(tm,132);
sakthipriya 4:39a4ae8c7ecd 127 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 4:39a4ae8c7ecd 128 tm[133] = (uint8_t)(crc16&0x00FF);
sakthipriya 5:bb592f3185cc 129 return tm;
sakthipriya 4:39a4ae8c7ecd 130
sakthipriya 5:bb592f3185cc 131 }
sakthipriya 8:82250e41da81 132 case 0x3:
sakthipriya 4:39a4ae8c7ecd 133 {
sakthipriya 4:39a4ae8c7ecd 134 printf("Read min max data");
sakthipriya 5:bb592f3185cc 135 tm[0] = 0x60;
sakthipriya 5:bb592f3185cc 136 tm[1] = tc[0];
sakthipriya 5:bb592f3185cc 137 tm[2] = ACK_CODE;
sakthipriya 5:bb592f3185cc 138 for(int i=4; i<20; i++)
sakthipriya 5:bb592f3185cc 139 tm[i] = (uint8_t)bae_HK_minmax.voltage_max[i-4];
sakthipriya 5:bb592f3185cc 140 for(int i=20; i<32; i++)
sakthipriya 5:bb592f3185cc 141 tm[i] = (uint8_t)bae_HK_minmax.current_max[i-20];
sakthipriya 5:bb592f3185cc 142 tm[32] = (uint8_t)bae_HK_minmax.Batt_temp_max[0];
sakthipriya 5:bb592f3185cc 143 tm[33] = (uint8_t)bae_HK_minmax.Batt_temp_max[1];
sakthipriya 5:bb592f3185cc 144 tm[34] = (uint8_t)bae_HK_minmax.Batt_gauge_max[0];
sakthipriya 5:bb592f3185cc 145 tm[35] = (uint8_t)bae_HK_minmax.Batt_gauge_max[1];
sakthipriya 5:bb592f3185cc 146 tm[36] = (uint8_t)bae_HK_minmax.Batt_gauge_max[2];
sakthipriya 5:bb592f3185cc 147 tm[37] = (uint8_t)bae_HK_minmax.BAE_temp_max;
sakthipriya 5:bb592f3185cc 148 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_max[0],&tm[38]); //tm[38] - tm[41]
sakthipriya 5:bb592f3185cc 149 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_max[1],&tm[42]); //tm[42] - tm[45]
sakthipriya 5:bb592f3185cc 150 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_max[2],&tm[46]); //tm[46] - tm[49]
sakthipriya 5:bb592f3185cc 151 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_max[0],&tm[50]); //tm[50] - tm[53]
sakthipriya 5:bb592f3185cc 152 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_max[1],&tm[54]); //tm[54] - tm[57]
sakthipriya 5:bb592f3185cc 153 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_max[2],&tm[58]); //tm[58] - tm[61]
sakthipriya 5:bb592f3185cc 154 tm[62] = (uint8_t)bae_HK_minmax.Bvalue_max[0];
sakthipriya 5:bb592f3185cc 155 tm[63] = (uint8_t)bae_HK_minmax.Bvalue_max[1];
sakthipriya 5:bb592f3185cc 156 tm[64] = (uint8_t)bae_HK_minmax.Bvalue_max[2];
sakthipriya 5:bb592f3185cc 157 tm[65] = (uint8_t)bae_HK_minmax.Batt_voltage_max;
sakthipriya 5:bb592f3185cc 158 for(int i=66; i<82; i++)
sakthipriya 5:bb592f3185cc 159 tm[i] = (uint8_t)bae_HK_minmax.voltage_min[i-66];
sakthipriya 5:bb592f3185cc 160 for(int i=82; i<94; i++)
sakthipriya 5:bb592f3185cc 161 tm[i] = (uint8_t)bae_HK_minmax.current_min[i-82];
sakthipriya 5:bb592f3185cc 162 tm[94] = (uint8_t)bae_HK_minmax.Batt_temp_min[0];
sakthipriya 5:bb592f3185cc 163 tm[95] = (uint8_t)bae_HK_minmax.Batt_temp_min[1];
sakthipriya 5:bb592f3185cc 164 tm[96] = (uint8_t)bae_HK_minmax.Batt_gauge_min[0];
sakthipriya 5:bb592f3185cc 165 tm[97] = (uint8_t)bae_HK_minmax.Batt_gauge_min[1];
sakthipriya 5:bb592f3185cc 166 tm[98] = (uint8_t)bae_HK_minmax.Batt_gauge_min[2];
sakthipriya 5:bb592f3185cc 167 tm[99] = (uint8_t)bae_HK_minmax.BAE_temp_min;
sakthipriya 5:bb592f3185cc 168 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_min[0],&tm[100]); //tm[100] - tm[103]
sakthipriya 5:bb592f3185cc 169 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_min[1],&tm[104]); //tm[104] - tm[107]
sakthipriya 5:bb592f3185cc 170 FCTN_CONVERT_FLOAT(bae_HK_minmax.AngularSpeed_min[2],&tm[108]); //tm[108] - tm[111]
sakthipriya 5:bb592f3185cc 171 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_min[0],&tm[112]); //tm[112] - tm[115]
sakthipriya 5:bb592f3185cc 172 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_min[1],&tm[116]); //tm[116] - tm[119]
sakthipriya 5:bb592f3185cc 173 FCTN_CONVERT_FLOAT(bae_HK_minmax.Bvalue_min[2],&tm[120]); //tm[120] - tm[123]
sakthipriya 5:bb592f3185cc 174 tm[124] = (uint8_t)bae_HK_minmax.Batt_voltage_min;
sakthipriya 5:bb592f3185cc 175 for (int i=125; i<132;i++)
sakthipriya 5:bb592f3185cc 176 {
sakthipriya 5:bb592f3185cc 177 tm[i] = 0x00;
sakthipriya 5:bb592f3185cc 178 }
sakthipriya 5:bb592f3185cc 179 crc16 = CRC::crc16_gen(tm,132);
sakthipriya 5:bb592f3185cc 180 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 5:bb592f3185cc 181 tm[133] = (uint8_t)(crc16&0x00FF);
sakthipriya 5:bb592f3185cc 182 return tm;
sakthipriya 4:39a4ae8c7ecd 183 }
sakthipriya 8:82250e41da81 184 case 0x4:
sakthipriya 4:39a4ae8c7ecd 185 {
sakthipriya 4:39a4ae8c7ecd 186 printf("Read status");
sakthipriya 5:bb592f3185cc 187 tm[0] = 0x60;
sakthipriya 5:bb592f3185cc 188 tm[1] = tc[0];
sakthipriya 5:bb592f3185cc 189 tm[2] = ACK_CODE;
sakthipriya 5:bb592f3185cc 190 tm[4] = (BAE_STATUS>>24) & 0xFF;
sakthipriya 5:bb592f3185cc 191 tm[5] = (BAE_STATUS>>16) & 0xFF;
sakthipriya 5:bb592f3185cc 192 tm[6] = (BAE_STATUS>>8) & 0xFF;
sakthipriya 5:bb592f3185cc 193 tm[7] = BAE_STATUS & 0xFF;
sakthipriya 5:bb592f3185cc 194 for (int i=8; i<132;i++)
sakthipriya 5:bb592f3185cc 195 {
sakthipriya 5:bb592f3185cc 196 tm[i] = 0x00;
sakthipriya 5:bb592f3185cc 197 }
sakthipriya 5:bb592f3185cc 198 crc16 = CRC::crc16_gen(tm,132);
sakthipriya 5:bb592f3185cc 199 tm[132] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 5:bb592f3185cc 200 tm[133] = (uint8_t)(crc16&0x00FF);
sakthipriya 5:bb592f3185cc 201 return tm;
sakthipriya 4:39a4ae8c7ecd 202
sakthipriya 4:39a4ae8c7ecd 203 }
sakthipriya 4:39a4ae8c7ecd 204 }
sakthipriya 3:07e15677a75c 205 }
sakthipriya 3:07e15677a75c 206 case 0x05:
sakthipriya 3:07e15677a75c 207 {
sakthipriya 3:07e15677a75c 208 printf("Write on Flash\r\n");
sakthipriya 3:07e15677a75c 209 }
sakthipriya 3:07e15677a75c 210 default:
sakthipriya 3:07e15677a75c 211 {
sakthipriya 3:07e15677a75c 212 printf("Invalid TC");
sakthipriya 3:07e15677a75c 213 //ACK_L234_TM
sakthipriya 3:07e15677a75c 214 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 215 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 216 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 217 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 218 {
sakthipriya 3:07e15677a75c 219 tm[i]=0x00;
sakthipriya 0:7b4c00e3912f 220 }
sakthipriya 3:07e15677a75c 221 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 222 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 223 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 224 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 225 {
sakthipriya 3:07e15677a75c 226 tm[i]=0x00;
sakthipriya 0:7b4c00e3912f 227 }
sakthipriya 3:07e15677a75c 228 return tm;
sakthipriya 3:07e15677a75c 229 }
sakthipriya 3:07e15677a75c 230 }
sakthipriya 0:7b4c00e3912f 231 }
sakthipriya 0:7b4c00e3912f 232
sakthipriya 3:07e15677a75c 233 case 0x80:
sakthipriya 3:07e15677a75c 234 {
sakthipriya 3:07e15677a75c 235 printf("Function Management Service\r\n");
sakthipriya 3:07e15677a75c 236 uint8_t service_subtype=(tc[2]&0x0F);
sakthipriya 3:07e15677a75c 237
sakthipriya 3:07e15677a75c 238 switch(service_subtype)
sakthipriya 3:07e15677a75c 239 {
sakthipriya 3:07e15677a75c 240 case 0x01:
sakthipriya 3:07e15677a75c 241 {
sakthipriya 3:07e15677a75c 242 printf("FMS Activated\r\n");
sakthipriya 3:07e15677a75c 243
sakthipriya 3:07e15677a75c 244 uint8_t pid=tc[3];
sakthipriya 3:07e15677a75c 245 switch(pid)
sakthipriya 3:07e15677a75c 246 {
sakthipriya 5:bb592f3185cc 247 case 0xE0:
sakthipriya 3:07e15677a75c 248 {
sakthipriya 5:bb592f3185cc 249 printf("ACS_COMSN\r\n");
sakthipriya 3:07e15677a75c 250 //ACK_L234_TM
sakthipriya 3:07e15677a75c 251 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 252 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 253 tm[2]=ACK_CODE;
sakthipriya 5:bb592f3185cc 254 FCTN_ATS_DATA_ACQ(); //get data
sakthipriya 5:bb592f3185cc 255 printf("gyro values\n\r");
sakthipriya 5:bb592f3185cc 256 for(int i=0; i<3; i++)
sakthipriya 5:bb592f3185cc 257 printf("%f\n\r",data[i]);
sakthipriya 5:bb592f3185cc 258 printf("mag values\n\r");
sakthipriya 5:bb592f3185cc 259 for(int i=3; i<6; i++)
sakthipriya 5:bb592f3185cc 260 printf("%f\n\r",data[i]);
sakthipriya 5:bb592f3185cc 261 FCTN_CONVERT_FLOAT(data[0],&tm[4]); //tm[4] - tm[7]
sakthipriya 5:bb592f3185cc 262 FCTN_CONVERT_FLOAT(data[1],&tm[8]); //tm[8] - tm[11]
sakthipriya 5:bb592f3185cc 263 FCTN_CONVERT_FLOAT(data[2],&tm[12]); //tm[12] - tm[15]
sakthipriya 5:bb592f3185cc 264 FCTN_CONVERT_FLOAT(data[0],&tm[16]); //tm[16] - tm[19]
sakthipriya 5:bb592f3185cc 265 FCTN_CONVERT_FLOAT(data[1],&tm[20]); //tm[20] - tm[23]
sakthipriya 5:bb592f3185cc 266 FCTN_CONVERT_FLOAT(data[2],&tm[24]); //tm[24] - tm[27]
sakthipriya 5:bb592f3185cc 267 if((data[0]<8) && (data[1]<8) && (data[2] <8))
sakthipriya 5:bb592f3185cc 268 tm[28] = 1; // gyro values in correct range
sakthipriya 5:bb592f3185cc 269 else
sakthipriya 5:bb592f3185cc 270 tm[28] = 0;
sakthipriya 5:bb592f3185cc 271 if ((data[3] > 20 ) && (data[4] >20) && (data[5]>20)&& (data[3] < 50 ) && (data[4] <50) && (data[5]<50))
sakthipriya 5:bb592f3185cc 272 tm[29] = 1; // mag values in correct range
sakthipriya 5:bb592f3185cc 273 else
sakthipriya 5:bb592f3185cc 274 tm[29] = 0;
sakthipriya 5:bb592f3185cc 275
sakthipriya 5:bb592f3185cc 276 float B[3],W[3];
sakthipriya 5:bb592f3185cc 277 B[0] = B0;
sakthipriya 5:bb592f3185cc 278 B[1] = B1;
sakthipriya 5:bb592f3185cc 279 B[2] = B2;
sakthipriya 5:bb592f3185cc 280 W[0] = W0;
sakthipriya 5:bb592f3185cc 281 W[1] = W1;
sakthipriya 5:bb592f3185cc 282 W[2] = W2;
sakthipriya 5:bb592f3185cc 283 // Control algo commissioning
sakthipriya 5:bb592f3185cc 284 FCTN_ACS_CNTRLALGO(B,W);
sakthipriya 5:bb592f3185cc 285 FCTN_CONVERT_FLOAT(moment[0],&tm[30]); //tm[30] - tm[33]
sakthipriya 5:bb592f3185cc 286 FCTN_CONVERT_FLOAT(moment[1],&tm[34]); //tm[34] - tm[37]
sakthipriya 5:bb592f3185cc 287 FCTN_CONVERT_FLOAT(moment[2],&tm[38]); //tm[38] - tm[41]
sakthipriya 5:bb592f3185cc 288 // to include commission TR as well
sakthipriya 5:bb592f3185cc 289 for(uint8_t i=42;i<132;i++)
sakthipriya 3:07e15677a75c 290 {
sakthipriya 3:07e15677a75c 291 tm[i]=0x00;
sakthipriya 3:07e15677a75c 292 }
sakthipriya 5:bb592f3185cc 293
sakthipriya 5:bb592f3185cc 294 crc16 = CRC::crc16_gen(tm,132);
sakthipriya 5:bb592f3185cc 295 tm[133] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 5:bb592f3185cc 296 tm[134] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 297 return tm;
sakthipriya 3:07e15677a75c 298
sakthipriya 3:07e15677a75c 299 }
sakthipriya 5:bb592f3185cc 300 /* case 0x02:
sakthipriya 3:07e15677a75c 301 {
sakthipriya 3:07e15677a75c 302 printf("Run P_EPS_MAIN\r\n");
sakthipriya 3:07e15677a75c 303 //ACK_L234_TM
sakthipriya 3:07e15677a75c 304 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 305 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 306 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 307 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 308 {
sakthipriya 3:07e15677a75c 309 tm[i]=0x00;
sakthipriya 3:07e15677a75c 310 }
sakthipriya 3:07e15677a75c 311 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 312 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 313 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 314 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 315 {
sakthipriya 3:07e15677a75c 316 tm[i]=0x00;
sakthipriya 3:07e15677a75c 317 }
sakthipriya 3:07e15677a75c 318 return tm;
sakthipriya 3:07e15677a75c 319 }
sakthipriya 3:07e15677a75c 320 case 0x03:
sakthipriya 3:07e15677a75c 321 {
sakthipriya 3:07e15677a75c 322 printf("Run P_ACS_INIT\r\n");
sakthipriya 3:07e15677a75c 323 //ACK_L234_TM
sakthipriya 3:07e15677a75c 324 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 325 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 326 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 327 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 328 {
sakthipriya 3:07e15677a75c 329 tm[i]=0x00;
sakthipriya 3:07e15677a75c 330 }
sakthipriya 3:07e15677a75c 331 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 332 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 333 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 334 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 335 {
sakthipriya 3:07e15677a75c 336 tm[i]=0x00;
sakthipriya 3:07e15677a75c 337 }
sakthipriya 3:07e15677a75c 338 return tm;
sakthipriya 3:07e15677a75c 339 }
sakthipriya 3:07e15677a75c 340 case 0x04:
sakthipriya 3:07e15677a75c 341 {
sakthipriya 3:07e15677a75c 342 printf("Run P_ACS_ACQ_DATA\r\n");
sakthipriya 3:07e15677a75c 343 //ACK_L234_TM
sakthipriya 3:07e15677a75c 344 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 345 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 346 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 347 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 348 {
sakthipriya 3:07e15677a75c 349 tm[i]=0x00;
sakthipriya 3:07e15677a75c 350 }
sakthipriya 3:07e15677a75c 351 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 352 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 353 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 354 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 355 {
sakthipriya 3:07e15677a75c 356 tm[i]=0x00;
sakthipriya 3:07e15677a75c 357 }
sakthipriya 3:07e15677a75c 358 return tm;
sakthipriya 3:07e15677a75c 359 }
sakthipriya 3:07e15677a75c 360 case 0x05:
sakthipriya 3:07e15677a75c 361 {
sakthipriya 3:07e15677a75c 362 printf("Run P_ACS_MAIN\r\n");
sakthipriya 3:07e15677a75c 363 //ACK_L234_TM
sakthipriya 3:07e15677a75c 364 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 365 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 366 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 367 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 368 {
sakthipriya 3:07e15677a75c 369 tm[i]=0x00;
sakthipriya 3:07e15677a75c 370 }
sakthipriya 3:07e15677a75c 371 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 372 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 373 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 374 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 375 {
sakthipriya 3:07e15677a75c 376 tm[i]=0x00;
sakthipriya 3:07e15677a75c 377 }
sakthipriya 3:07e15677a75c 378 return tm;
sakthipriya 3:07e15677a75c 379 }
sakthipriya 3:07e15677a75c 380 case 0x06:
sakthipriya 3:07e15677a75c 381 {
sakthipriya 3:07e15677a75c 382 printf("Run P_BCN_INIT\r\n");
sakthipriya 3:07e15677a75c 383 //ACK_L234_TM
sakthipriya 3:07e15677a75c 384 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 385 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 386 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 387 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 388 {
sakthipriya 3:07e15677a75c 389 tm[i]=0x00;
sakthipriya 3:07e15677a75c 390 }
sakthipriya 3:07e15677a75c 391 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 392 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 393 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 394 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 395 {
sakthipriya 3:07e15677a75c 396 tm[i]=0x00;
sakthipriya 3:07e15677a75c 397 }
sakthipriya 3:07e15677a75c 398 return tm;
sakthipriya 3:07e15677a75c 399 }
sakthipriya 3:07e15677a75c 400 case 0x07:
sakthipriya 3:07e15677a75c 401 {
sakthipriya 3:07e15677a75c 402 printf("Run P_BCN_TX_MAIN\r\n");
sakthipriya 3:07e15677a75c 403 //ACK_L234_TM
sakthipriya 3:07e15677a75c 404 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 405 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 406 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 407 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 408 {
sakthipriya 3:07e15677a75c 409 tm[i]=0x00;
sakthipriya 3:07e15677a75c 410 }
sakthipriya 3:07e15677a75c 411 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 412 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 413 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 414 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 415 {
sakthipriya 3:07e15677a75c 416 tm[i]=0x00;
sakthipriya 3:07e15677a75c 417 }
sakthipriya 3:07e15677a75c 418 return tm;
sakthipriya 5:bb592f3185cc 419 }*/
sakthipriya 3:07e15677a75c 420 case 0x11:
sakthipriya 3:07e15677a75c 421 {
sakthipriya 3:07e15677a75c 422 printf("SW_ON_ACS_ATS1_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 423 //ACK_L234_TM
sakthipriya 3:07e15677a75c 424 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 425 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 426 tm[2]=1;
sakthipriya 9:194afacf7449 427 ATS1_SW_ENABLE = 0;
sakthipriya 3:07e15677a75c 428 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 429 {
sakthipriya 3:07e15677a75c 430 tm[i]=0x00;
sakthipriya 3:07e15677a75c 431 }
sakthipriya 3:07e15677a75c 432 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 433 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 434 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 435 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 436 {
sakthipriya 3:07e15677a75c 437 tm[i]=0x00;
sakthipriya 3:07e15677a75c 438 }
sakthipriya 3:07e15677a75c 439 return tm;
sakthipriya 3:07e15677a75c 440 }
sakthipriya 3:07e15677a75c 441 case 0x12:
sakthipriya 3:07e15677a75c 442 {
sakthipriya 3:07e15677a75c 443 printf("SW_ON_ACS_ATS2_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 444 //ACK_L234_TM
sakthipriya 3:07e15677a75c 445 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 446 tm[1]=tc[0];
sakthipriya 9:194afacf7449 447 ATS2_SW_ENABLE = 0;
sakthipriya 5:bb592f3185cc 448 tm[2]=1;
sakthipriya 3:07e15677a75c 449 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 450 {
sakthipriya 3:07e15677a75c 451 tm[i]=0x00;
sakthipriya 3:07e15677a75c 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 3:07e15677a75c 459 }
sakthipriya 3:07e15677a75c 460 return tm;
sakthipriya 3:07e15677a75c 461 }
sakthipriya 3:07e15677a75c 462 case 0x13:
sakthipriya 3:07e15677a75c 463 {
sakthipriya 3:07e15677a75c 464 printf("SW_ON_ACS_TR_XY_ENABLE\r\n");
sakthipriya 3:07e15677a75c 465 //ACK_L234_TM
sakthipriya 3:07e15677a75c 466 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 467 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 468 TRXY_SW = 1;
sakthipriya 5:bb592f3185cc 469 tm[2]=1;
sakthipriya 3:07e15677a75c 470 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 471 {
sakthipriya 3:07e15677a75c 472 tm[i]=0x00;
sakthipriya 3:07e15677a75c 473 }
sakthipriya 3:07e15677a75c 474 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 475 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 476 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 477 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 478 {
sakthipriya 3:07e15677a75c 479 tm[i]=0x00;
sakthipriya 3:07e15677a75c 480 }
sakthipriya 3:07e15677a75c 481 return tm;
sakthipriya 3:07e15677a75c 482 }
sakthipriya 3:07e15677a75c 483 case 0x14:
sakthipriya 3:07e15677a75c 484 {
sakthipriya 3:07e15677a75c 485 printf("SW_ON_ACS_TR_Z_ENABLE\r\n");
sakthipriya 3:07e15677a75c 486 //ACK_L234_TM
sakthipriya 3:07e15677a75c 487 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 488 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 489 tm[2]=1;
sakthipriya 5:bb592f3185cc 490 TRZ_SW = 1;
sakthipriya 3:07e15677a75c 491 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 492 {
sakthipriya 3:07e15677a75c 493 tm[i]=0x00;
sakthipriya 3:07e15677a75c 494 }
sakthipriya 3:07e15677a75c 495 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 496 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 497 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 498 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 499 {
sakthipriya 3:07e15677a75c 500 tm[i]=0x00;
sakthipriya 3:07e15677a75c 501 }
sakthipriya 3:07e15677a75c 502 return tm;
sakthipriya 3:07e15677a75c 503 }
sakthipriya 3:07e15677a75c 504 case 0x15:
sakthipriya 3:07e15677a75c 505 {
sakthipriya 3:07e15677a75c 506 printf("SW_ON_BCN_TX_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 507 //ACK_L234_TM
sakthipriya 3:07e15677a75c 508 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 509 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 510 tm[2]=1;
sakthipriya 5:bb592f3185cc 511 BCN_SW = 0;
sakthipriya 3:07e15677a75c 512 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 513 {
sakthipriya 3:07e15677a75c 514 tm[i]=0x00;
sakthipriya 3:07e15677a75c 515 }
sakthipriya 3:07e15677a75c 516 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 517 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 518 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 519 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 520 {
sakthipriya 3:07e15677a75c 521 tm[i]=0x00;
sakthipriya 3:07e15677a75c 522 }
sakthipriya 3:07e15677a75c 523 return tm;
sakthipriya 3:07e15677a75c 524 }
sakthipriya 3:07e15677a75c 525 case 0x21:
sakthipriya 3:07e15677a75c 526 {
sakthipriya 3:07e15677a75c 527 printf("SW_OFF_ACS_ATS1_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 528 //ACK_L234_TM
sakthipriya 3:07e15677a75c 529 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 530 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 531 tm[2]=1;
sakthipriya 9:194afacf7449 532 ATS1_SW_ENABLE = 1;
sakthipriya 3:07e15677a75c 533 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 534 {
sakthipriya 3:07e15677a75c 535 tm[i]=0x00;
sakthipriya 3:07e15677a75c 536 }
sakthipriya 3:07e15677a75c 537 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 538 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 539 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 540 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 541 {
sakthipriya 3:07e15677a75c 542 tm[i]=0x00;
sakthipriya 3:07e15677a75c 543 }
sakthipriya 3:07e15677a75c 544 return tm;
sakthipriya 3:07e15677a75c 545 }
sakthipriya 3:07e15677a75c 546 case 0x22:
sakthipriya 3:07e15677a75c 547 {
sakthipriya 3:07e15677a75c 548 printf("SW_OFF_ACS_ATS2_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 549 //ACK_L234_TM
sakthipriya 3:07e15677a75c 550 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 551 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 552 tm[2]=1;
sakthipriya 9:194afacf7449 553 ATS2_SW_ENABLE = 1;
sakthipriya 3:07e15677a75c 554 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 555 {
sakthipriya 3:07e15677a75c 556 tm[i]=0x00;
sakthipriya 3:07e15677a75c 557 }
sakthipriya 3:07e15677a75c 558 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 559 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 560 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 561 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 562 {
sakthipriya 3:07e15677a75c 563 tm[i]=0x00;
sakthipriya 3:07e15677a75c 564 }
sakthipriya 3:07e15677a75c 565 return tm;
sakthipriya 3:07e15677a75c 566 }
sakthipriya 3:07e15677a75c 567 case 0x23:
sakthipriya 3:07e15677a75c 568 {
sakthipriya 3:07e15677a75c 569 printf("SW_OFF_ACS_TR_XY_ENABLE\r\n");
sakthipriya 3:07e15677a75c 570 //ACK_L234_TM
sakthipriya 3:07e15677a75c 571 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 572 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 573 tm[2]=1;
sakthipriya 5:bb592f3185cc 574 TRXY_SW = 0;
sakthipriya 3:07e15677a75c 575 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 576 {
sakthipriya 3:07e15677a75c 577 tm[i]=0x00;
sakthipriya 3:07e15677a75c 578 }
sakthipriya 3:07e15677a75c 579 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 580 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 581 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 582 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 583 {
sakthipriya 3:07e15677a75c 584 tm[i]=0x00;
sakthipriya 3:07e15677a75c 585 }
sakthipriya 3:07e15677a75c 586 return tm;
sakthipriya 3:07e15677a75c 587 }
sakthipriya 3:07e15677a75c 588 case 0x24:
sakthipriya 3:07e15677a75c 589 {
sakthipriya 3:07e15677a75c 590 printf("SW_OFF_ACS_TR_Z_ENABLE\r\n");
sakthipriya 3:07e15677a75c 591 //ACK_L234_TM
sakthipriya 3:07e15677a75c 592 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 593 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 594 tm[2]=1;
sakthipriya 5:bb592f3185cc 595 TRZ_SW = 0;
sakthipriya 3:07e15677a75c 596 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 597 {
sakthipriya 3:07e15677a75c 598 tm[i]=0x00;
sakthipriya 3:07e15677a75c 599 }
sakthipriya 3:07e15677a75c 600 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 601 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 602 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 603 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 604 {
sakthipriya 3:07e15677a75c 605 tm[i]=0x00;
sakthipriya 3:07e15677a75c 606 }
sakthipriya 3:07e15677a75c 607 return tm;
sakthipriya 3:07e15677a75c 608 }
sakthipriya 3:07e15677a75c 609 case 0x25:
sakthipriya 3:07e15677a75c 610 {
sakthipriya 3:07e15677a75c 611 printf("SW_OFF_BCN_TX_SW_ENABLE\r\n");
sakthipriya 3:07e15677a75c 612 //ACK_L234_TM
sakthipriya 3:07e15677a75c 613 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 614 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 615 tm[2]=1;
sakthipriya 5:bb592f3185cc 616 BCN_SW = 1;
sakthipriya 3:07e15677a75c 617 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 618 {
sakthipriya 3:07e15677a75c 619 tm[i]=0x00;
sakthipriya 3:07e15677a75c 620 }
sakthipriya 3:07e15677a75c 621 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 622 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 623 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 624 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 625 {
sakthipriya 3:07e15677a75c 626 tm[i]=0x00;
sakthipriya 3:07e15677a75c 627 }
sakthipriya 3:07e15677a75c 628 return tm;
sakthipriya 3:07e15677a75c 629 }
sakthipriya 3:07e15677a75c 630 case 0x31:
sakthipriya 3:07e15677a75c 631 {
sakthipriya 5:bb592f3185cc 632 printf("ACS_ATS1_SW_RESET\r\n");
sakthipriya 3:07e15677a75c 633 //ACK_L234_TM
sakthipriya 3:07e15677a75c 634 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 635 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 636 tm[2]=1;
sakthipriya 9:194afacf7449 637 ATS1_SW_ENABLE = 1;
sakthipriya 5:bb592f3185cc 638 wait_us(1);
sakthipriya 9:194afacf7449 639 ATS1_SW_ENABLE = 0;
sakthipriya 3:07e15677a75c 640 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 641 {
sakthipriya 3:07e15677a75c 642 tm[i]=0x00;
sakthipriya 3:07e15677a75c 643 }
sakthipriya 3:07e15677a75c 644 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 645 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 646 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 647 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 648 {
sakthipriya 3:07e15677a75c 649 tm[i]=0x00;
sakthipriya 3:07e15677a75c 650 }
sakthipriya 3:07e15677a75c 651 return tm;
sakthipriya 3:07e15677a75c 652 }
sakthipriya 3:07e15677a75c 653 case 0x32:
sakthipriya 3:07e15677a75c 654 {
sakthipriya 3:07e15677a75c 655 printf("BCN_SW_RESET\r\n");
sakthipriya 3:07e15677a75c 656 //ACK_L234_TM
sakthipriya 3:07e15677a75c 657 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 658 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 659 tm[2]=1;
sakthipriya 5:bb592f3185cc 660 BCN_SW = 1;
sakthipriya 5:bb592f3185cc 661 wait_us(1);
sakthipriya 5:bb592f3185cc 662 BCN_SW = 0;
sakthipriya 3:07e15677a75c 663 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 664 {
sakthipriya 3:07e15677a75c 665 tm[i]=0x00;
sakthipriya 3:07e15677a75c 666 }
sakthipriya 3:07e15677a75c 667 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 668 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 669 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 670 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 671 {
sakthipriya 3:07e15677a75c 672 tm[i]=0x00;
sakthipriya 3:07e15677a75c 673 }
sakthipriya 3:07e15677a75c 674 return tm;
sakthipriya 3:07e15677a75c 675 }
sakthipriya 3:07e15677a75c 676 case 0x33:
sakthipriya 3:07e15677a75c 677 {
sakthipriya 5:bb592f3185cc 678 printf("ACS_ATS2_SW_RESET\r\n");
sakthipriya 3:07e15677a75c 679 //ACK_L234_TM
sakthipriya 3:07e15677a75c 680 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 681 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 682 tm[2]=1;
sakthipriya 9:194afacf7449 683 ATS1_SW_ENABLE = 1;
sakthipriya 5:bb592f3185cc 684 wait_us(1);
sakthipriya 9:194afacf7449 685 ATS1_SW_ENABLE = 0;
sakthipriya 3:07e15677a75c 686 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 687 {
sakthipriya 3:07e15677a75c 688 tm[i]=0x00;
sakthipriya 3:07e15677a75c 689 }
sakthipriya 3:07e15677a75c 690 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 691 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 692 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 693 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 694 {
sakthipriya 3:07e15677a75c 695 tm[i]=0x00;
sakthipriya 3:07e15677a75c 696 }
sakthipriya 3:07e15677a75c 697 return tm;
sakthipriya 3:07e15677a75c 698 }
sakthipriya 3:07e15677a75c 699 case 0x34:
sakthipriya 3:07e15677a75c 700 {
sakthipriya 3:07e15677a75c 701 printf("CDMS_SW_RESET\r\n");
sakthipriya 3:07e15677a75c 702 //ACK_L234_TM
sakthipriya 3:07e15677a75c 703 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 704 tm[1]=tc[0];
sakthipriya 5:bb592f3185cc 705 tm[2]=1;
sakthipriya 5:bb592f3185cc 706 CDMS_RESET = 0;
sakthipriya 5:bb592f3185cc 707 wait_us(1);
sakthipriya 5:bb592f3185cc 708 CDMS_RESET = 1;
sakthipriya 3:07e15677a75c 709 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 710 {
sakthipriya 3:07e15677a75c 711 tm[i]=0x00;
sakthipriya 3:07e15677a75c 712 }
sakthipriya 3:07e15677a75c 713 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 714 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 715 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 716 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 717 {
sakthipriya 3:07e15677a75c 718 tm[i]=0x00;
sakthipriya 3:07e15677a75c 719 }
sakthipriya 3:07e15677a75c 720 return tm;
sakthipriya 3:07e15677a75c 721 }
sakthipriya 5:bb592f3185cc 722
sakthipriya 5:bb592f3185cc 723
sakthipriya 3:07e15677a75c 724 default:
sakthipriya 3:07e15677a75c 725 {
sakthipriya 3:07e15677a75c 726 printf("Invalid TC\r\n");
sakthipriya 3:07e15677a75c 727 //ACK_L234_TM
sakthipriya 3:07e15677a75c 728 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 729 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 730 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 731 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 732 {
sakthipriya 3:07e15677a75c 733 tm[i]=0x00;
sakthipriya 3:07e15677a75c 734 }
sakthipriya 3:07e15677a75c 735 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 736 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 737 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 738 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 739 {
sakthipriya 3:07e15677a75c 740 tm[i]=0x00;
sakthipriya 3:07e15677a75c 741 }
sakthipriya 3:07e15677a75c 742 return tm;
sakthipriya 3:07e15677a75c 743 }
sakthipriya 3:07e15677a75c 744 }
sakthipriya 3:07e15677a75c 745
sakthipriya 3:07e15677a75c 746 default:
sakthipriya 3:07e15677a75c 747 {
sakthipriya 3:07e15677a75c 748 printf("Invalid TC\r\n");
sakthipriya 3:07e15677a75c 749 //ACK_L234_TM
sakthipriya 3:07e15677a75c 750 tm[0]=0xB0;
sakthipriya 3:07e15677a75c 751 tm[1]=tc[0];
sakthipriya 3:07e15677a75c 752 tm[2]=ACK_CODE;
sakthipriya 3:07e15677a75c 753 for(uint8_t i=3;i<11;i++)
sakthipriya 3:07e15677a75c 754 {
sakthipriya 3:07e15677a75c 755 tm[i]=0x00;
sakthipriya 3:07e15677a75c 756 }
sakthipriya 3:07e15677a75c 757 crc16 = CRC::crc16_gen(tm,11);
sakthipriya 3:07e15677a75c 758 tm[11] = (uint8_t)((crc16&0xFF00)>>8);
sakthipriya 3:07e15677a75c 759 tm[12] = (uint8_t)(crc16&0x00FF);
sakthipriya 3:07e15677a75c 760 for(uint8_t i=13;i<134;i++)
sakthipriya 3:07e15677a75c 761 {
sakthipriya 3:07e15677a75c 762 tm[i]=0x00;
sakthipriya 3:07e15677a75c 763 }
sakthipriya 3:07e15677a75c 764 return tm;
sakthipriya 3:07e15677a75c 765 }
sakthipriya 3:07e15677a75c 766 }
sakthipriya 3:07e15677a75c 767 }
sakthipriya 3:07e15677a75c 768 }
sakthipriya 3:07e15677a75c 769 }
sakthipriya 4:39a4ae8c7ecd 770 }
sakthipriya 4:39a4ae8c7ecd 771
sakthipriya 4:39a4ae8c7ecd 772
sakthipriya 4:39a4ae8c7ecd 773
sakthipriya 4:39a4ae8c7ecd 774
sakthipriya 4:39a4ae8c7ecd 775 int strt_add = flash_size() - (2*SECTOR_SIZE);
sakthipriya 4:39a4ae8c7ecd 776 uint32_t flasharray[8]; //256+(3*1024)
sakthipriya 4:39a4ae8c7ecd 777 char *nativeflash = (char*)strt_add;
sakthipriya 4:39a4ae8c7ecd 778
sakthipriya 4:39a4ae8c7ecd 779 /*Writing to the Flash*/
sakthipriya 4:39a4ae8c7ecd 780 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 781 {
sakthipriya 4:39a4ae8c7ecd 782 for(int i=0;i<8;i++)
sakthipriya 4:39a4ae8c7ecd 783 {
sakthipriya 4:39a4ae8c7ecd 784 flasharray[i]=nativeflash[i];
sakthipriya 4:39a4ae8c7ecd 785 }
sakthipriya 4:39a4ae8c7ecd 786 flasharray[j]=fdata;
sakthipriya 4:39a4ae8c7ecd 787 erase_sector(strt_add);
sakthipriya 4:39a4ae8c7ecd 788 program_flash(strt_add, (char*)&flasharray,4*8);
sakthipriya 4:39a4ae8c7ecd 789 }
sakthipriya 4:39a4ae8c7ecd 790 /*End*/
sakthipriya 4:39a4ae8c7ecd 791
sakthipriya 4:39a4ae8c7ecd 792 /*Reading from Flash*/
sakthipriya 4:39a4ae8c7ecd 793 uint32_t FCTN_CDMS_RD_FLASH(uint16_t j)
sakthipriya 4:39a4ae8c7ecd 794 {
sakthipriya 4:39a4ae8c7ecd 795 for(int i=0;i<8;i++)
sakthipriya 4:39a4ae8c7ecd 796 {
sakthipriya 4:39a4ae8c7ecd 797 flasharray[i]=nativeflash[i];
sakthipriya 4:39a4ae8c7ecd 798 }
sakthipriya 4:39a4ae8c7ecd 799 return flasharray[j];
sakthipriya 4:39a4ae8c7ecd 800 }
sakthipriya 5:bb592f3185cc 801 /*End*/
sakthipriya 5:bb592f3185cc 802
sakthipriya 5:bb592f3185cc 803 // Convert float to 4 uint8_t
sakthipriya 5:bb592f3185cc 804
sakthipriya 6:036d08b62785 805 void FCTN_CONVERT_FLOAT(float input, uint8_t output[4])
sakthipriya 5:bb592f3185cc 806 {
sakthipriya 6:036d08b62785 807 assert(sizeof(float) == sizeof(uint32_t));
sakthipriya 6:036d08b62785 808 uint32_t* temp = reinterpret_cast<uint32_t*>(&input);
sakthipriya 6:036d08b62785 809
sakthipriya 6:036d08b62785 810 //float* output1 = reinterpret_cast<float*>(temp);
sakthipriya 6:036d08b62785 811
sakthipriya 6:036d08b62785 812 printf("\n\r %f ", input);
sakthipriya 6:036d08b62785 813 std::cout << "\n\r uint32"<<*temp << std::endl;
sakthipriya 6:036d08b62785 814
sakthipriya 6:036d08b62785 815 output[0] =(uint8_t )(((*temp)>>24)&0xFF);
sakthipriya 6:036d08b62785 816 output[2] =(uint8_t ) (((*temp)>>16)&0xFF);
sakthipriya 6:036d08b62785 817 output[1] =(uint8_t ) (((*temp)>>8)&0xFF);
sakthipriya 6:036d08b62785 818 output[3] =(uint8_t ) ((*temp) & 0xFF); // verify the logic
sakthipriya 6:036d08b62785 819 //printf("\n\r inside %d %d %d %d", output[3],output[2],output[1],output[0]);
sakthipriya 6:036d08b62785 820 //std:: cout << "\n\r uint8 inside " << output[3] << '\t' << output[2] << '\t' << output[1] << '\t' << output[0] <<std::endl;
sakthipriya 5:bb592f3185cc 821 }