Team Fox / Mbed 2 deprecated BAE_QM_MAR9

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of workinQM_5thJan_azad by Team Fox

Committer:
lakshya
Date:
Sat Jun 04 11:29:13 2016 +0000
Revision:
19:79e69017c855
Parent:
18:3662058a7c10
Child:
20:949d13045431
before going home

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sakthipriya 0:7b4c00e3912f 1 #include "mbed.h"
sakthipriya 0:7b4c00e3912f 2 #include "rtos.h"
sakthipriya 0:7b4c00e3912f 3 #include "pin_config.h"
sakthipriya 0:7b4c00e3912f 4 #include "ACS.h"
sakthipriya 0:7b4c00e3912f 5 #include "EPS.h"
sakthipriya 0:7b4c00e3912f 6 #include "BCN.h"
sakthipriya 0:7b4c00e3912f 7 #include "TCTM.h"
Bragadeesh153 13:fb7facaf308b 8 #define tm_len 135
Bragadeesh153 13:fb7facaf308b 9 #define tc_len 11
sakthipriya 0:7b4c00e3912f 10 #define batt_heat_low 20
sakthipriya 9:194afacf7449 11
lakshya 19:79e69017c855 12 //**********************************************GLOBAL RTOS TIMER*********************************************************//
lakshya 19:79e69017c855 13 RtosTimer *BAE_STANDBY_STATUS_TIMER;
lakshya 19:79e69017c855 14
lakshya 19:79e69017c855 15 void BAE_STANDBY_STATUS_RESET(const void* arg)
lakshya 19:79e69017c855 16 {
lakshya 19:79e69017c855 17 printf("\n\rBAE standby reset to 0x00");
lakshya 19:79e69017c855 18 BAE_STANDBY=0x00;
lakshya 19:79e69017c855 19 }
lakshya 19:79e69017c855 20
lakshya 19:79e69017c855 21 /*no problem in first stopping and then starting even when for the first time*/
lakshya 19:79e69017c855 22 void BAE_STANDBY_TIMER_RESET()
lakshya 19:79e69017c855 23 {
lakshya 19:79e69017c855 24 BAE_STANDBY_STATUS_TIMER->stop();
lakshya 19:79e69017c855 25 BAE_STANDBY_STATUS_TIMER->start(30000);//20 min ie 20*60=1200 sec or 1200,000 milisec but for testing setting it to 30sec
lakshya 19:79e69017c855 26 }
lakshya 19:79e69017c855 27
sakthipriya 0:7b4c00e3912f 28 //***************************************************** flags *************************************************************//
sakthipriya 0:7b4c00e3912f 29 uint32_t BAE_STATUS = 0x00000000;
sakthipriya 0:7b4c00e3912f 30 uint32_t BAE_ENABLE = 0xFFFFFFFF;
sakthipriya 0:7b4c00e3912f 31
sakthipriya 5:bb592f3185cc 32 //i2c//
sakthipriya 5:bb592f3185cc 33 char data_send_flag = 'h';
sakthipriya 5:bb592f3185cc 34
lakshya 19:79e69017c855 35 //.........bae......................................//
lakshya 19:79e69017c855 36 uint8_t BAE_INIT_STATUS=0;
lakshya 19:79e69017c855 37 uint8_t BAE_I2CRX_STATUS=0;
sakthipriya 0:7b4c00e3912f 38
lakshya 19:79e69017c855 39 //.........acs......................................//
lakshya 19:79e69017c855 40 /* removed character initialized values */
sakthipriya 9:194afacf7449 41
sakthipriya 9:194afacf7449 42 uint8_t ACS_INIT_STATUS = 0;
sakthipriya 9:194afacf7449 43 uint8_t ACS_DATA_ACQ_STATUS = 0;
sakthipriya 9:194afacf7449 44 uint8_t ACS_ATS_STATUS = 0;
sakthipriya 9:194afacf7449 45 uint8_t ACS_MAIN_STATUS = 0;
sakthipriya 9:194afacf7449 46 uint8_t ACS_STATUS = 0;
sakthipriya 9:194afacf7449 47
sakthipriya 9:194afacf7449 48 uint8_t ACS_ATS_ENABLE = 1;
sakthipriya 9:194afacf7449 49 uint8_t ACS_DATA_ACQ_ENABLE = 1;
sakthipriya 9:194afacf7449 50 uint8_t ACS_STATE = 4;
lakshya 19:79e69017c855 51
lakshya 19:79e69017c855 52 //_______________________bcn__________________________//
lakshya 19:79e69017c855 53
lakshya 18:3662058a7c10 54 /*added for removing the stuck/hang problem*/
lakshya 18:3662058a7c10 55 /*does it work? now doing it in main*/
lakshya 19:79e69017c855 56 //it works great
lakshya 18:3662058a7c10 57 extern uint8_t BCN_FEN;
lakshya 18:3662058a7c10 58 extern void FCTN_BCN_FEN(void const *args);
lakshya 18:3662058a7c10 59 Timeout timeout_bcn;
lakshya 19:79e69017c855 60 /*long beacon data/sending*/
lakshya 19:79e69017c855 61 /*be sure it is created in bcn.cpp*/
lakshya 19:79e69017c855 62 extern void LONG_BCN_DATA(uint8_t* );
sakthipriya 0:7b4c00e3912f 63
sakthipriya 0:7b4c00e3912f 64 //.....................eps...................//
lakshya 19:79e69017c855 65 /* removed character initialization*/
sakthipriya 0:7b4c00e3912f 66 //eps init
sakthipriya 9:194afacf7449 67 uint8_t EPS_INIT_STATUS = 0;
sakthipriya 9:194afacf7449 68 uint8_t EPS_BATTERY_GAUGE_STATUS = 0;
sakthipriya 9:194afacf7449 69 //eps main
sakthipriya 9:194afacf7449 70 uint8_t EPS_MAIN_STATUS = 0;
sakthipriya 9:194afacf7449 71 uint8_t EPS_BATTERY_TEMP_STATUS = 0;
sakthipriya 9:194afacf7449 72 uint8_t EPS_STATUS = 7; //invalid status
sakthipriya 9:194afacf7449 73
sakthipriya 9:194afacf7449 74 uint8_t EPS_BATTERY_HEAT_ENABLE = 0;
sakthipriya 0:7b4c00e3912f 75
sakthipriya 0:7b4c00e3912f 76 //.......................global variables..................................................................// new hk structure- everything has to changed based on this
sakthipriya 6:036d08b62785 77 uint8_t BAE_data[74];
sakthipriya 6:036d08b62785 78 char BAE_chardata[74];
lakshya 19:79e69017c855 79 uint8_t BAE_RESET_COUNTER = 0; // INITIALIZATION or do you want to initialize evertime the main is reset? or is it same
lakshya 19:79e69017c855 80 uint32_t BAE_I2C_COUNTER = 0;
lakshya 19:79e69017c855 81 uint8_t BAE_STANDBY=0x00;// as Bcn Acs Eps last three bits BAE order , 1 refer to switch off.
sakthipriya 0:7b4c00e3912f 82
sakthipriya 0:7b4c00e3912f 83 //*************************************Global declarations************************************************//
sakthipriya 0:7b4c00e3912f 84 const int addr = 0x20; //slave address
sakthipriya 0:7b4c00e3912f 85
sakthipriya 0:7b4c00e3912f 86 Timer t_rfsilence;
sakthipriya 0:7b4c00e3912f 87 Timer t_start;
lakshya 19:79e69017c855 88 /*defined as of now to check execution time*/
lakshya 19:79e69017c855 89 /*remember to remove them*/
lakshya 19:79e69017c855 90 Timer t_acs;
lakshya 19:79e69017c855 91 Timer t_eps;
lakshya 19:79e69017c855 92
sakthipriya 7:a46a1dee4497 93 Timer t_tc;
sakthipriya 7:a46a1dee4497 94 Timer t_tm;
sakthipriya 0:7b4c00e3912f 95 Serial pc(USBTX, USBRX);
sakthipriya 0:7b4c00e3912f 96 int power_flag_dummy=2;
sakthipriya 0:7b4c00e3912f 97 float data[6];
sakthipriya 0:7b4c00e3912f 98
sakthipriya 0:7b4c00e3912f 99 extern float moment[3];
sakthipriya 0:7b4c00e3912f 100 extern uint8_t BCN_FEN;
sakthipriya 1:446a959e36ce 101 extern BAE_HK_actual actual_data;
sakthipriya 1:446a959e36ce 102 extern BAE_HK_quant quant_data;
sakthipriya 1:446a959e36ce 103 extern BAE_HK_min_max bae_HK_minmax;
sakthipriya 1:446a959e36ce 104 extern BAE_HK_arch arch_data;
sakthipriya 0:7b4c00e3912f 105
sakthipriya 5:bb592f3185cc 106 int write_ack = 1;
sakthipriya 5:bb592f3185cc 107 int read_ack = 1;
sakthipriya 0:7b4c00e3912f 108 char telecommand[tc_len];
Bragadeesh153 13:fb7facaf308b 109 extern uint8_t telemetry[135];
sakthipriya 5:bb592f3185cc 110
sakthipriya 5:bb592f3185cc 111 bool pf1check = 0;
sakthipriya 5:bb592f3185cc 112 bool pf2check = 0;
sakthipriya 5:bb592f3185cc 113 bool if1check = 0;
lakshya 14:a9588f443f1a 114 bool if2check = 0;
sakthipriya 0:7b4c00e3912f 115
sakthipriya 0:7b4c00e3912f 116 //*****************************************************Assigning pins******************************************************//
sakthipriya 9:194afacf7449 117 DigitalOut ATS1_SW_ENABLE(PTC0); // enable of att sens2 switch
sakthipriya 9:194afacf7449 118 DigitalOut ATS2_SW_ENABLE(PTC16); // enable of att sens switch
sakthipriya 0:7b4c00e3912f 119 InterruptIn irpt_4m_mstr(PIN38); //I2c interrupt from CDMS
sakthipriya 0:7b4c00e3912f 120 DigitalOut irpt_2_mstr(PIN4); //I2C interrupt to CDMS
lakshya 14:a9588f443f1a 121 I2CSlave slave (PIN1,PIN2);///pin1 pin2
sakthipriya 0:7b4c00e3912f 122 DigitalOut batt_heat(PIN96);
sakthipriya 0:7b4c00e3912f 123
sakthipriya 9:194afacf7449 124 //ATS1_SW_ENABLE = 0;
sakthipriya 0:7b4c00e3912f 125 PwmOut PWM1(PIN93); //x //Functions used to generate PWM signal
sakthipriya 0:7b4c00e3912f 126 PwmOut PWM2(PIN94); //y
sakthipriya 0:7b4c00e3912f 127 PwmOut PWM3(PIN95); //z //PWM output comes from pins p6
sakthipriya 0:7b4c00e3912f 128
sakthipriya 5:bb592f3185cc 129 //........faults
sakthipriya 5:bb592f3185cc 130 //Polled Faults
sakthipriya 5:bb592f3185cc 131 DigitalIn pf1(PIN5);//Attitude Sensor 1 OC bar fault signal
sakthipriya 5:bb592f3185cc 132 DigitalIn pf2(PIN97);//Attitude Sensor 2 OC bar fault signal
sakthipriya 5:bb592f3185cc 133 DigitalIn pf3(PIN83);//Fault Bar for TRXY driver
sakthipriya 5:bb592f3185cc 134
sakthipriya 5:bb592f3185cc 135 //Interrupt based faults
lakshya 14:a9588f443f1a 136 //InterruptIn ir1(PIN73);//Battery Gauge - Alert Bar Signal
sakthipriya 5:bb592f3185cc 137 InterruptIn ir2(PIN72);//TRXY Driver TR switch Fault
sakthipriya 5:bb592f3185cc 138 InterruptIn ir3(PIN89);//TRZ Driver Fault Bar
sakthipriya 5:bb592f3185cc 139 InterruptIn ir4(PIN91);//TRZ Driver TR switch Fault
sakthipriya 5:bb592f3185cc 140 InterruptIn ir5(PIN79);//CDMS - Switch Fault
sakthipriya 5:bb592f3185cc 141 InterruptIn ir6(PIN80);//Beacon- Switch OC bar
sakthipriya 5:bb592f3185cc 142 InterruptIn ir7(PIN42);//Charger IC - Fault Bar
sakthipriya 5:bb592f3185cc 143
lakshya 14:a9588f443f1a 144
Bragadeesh153 13:fb7facaf308b 145 DigitalOut TRXY_SW(PIN71); //TR XY Switch
Bragadeesh153 13:fb7facaf308b 146 DigitalOut DRV_Z_EN(PIN88); //Sleep pin of driver z
sakthipriya 5:bb592f3185cc 147 DigitalOut TRZ_SW(PIN40); //TR Z Switch
lakshya 19:79e69017c855 148 DigitalOut CDMS_RESET(PIN7,1); // CDMS RESET
sakthipriya 5:bb592f3185cc 149 DigitalOut BCN_SW(PIN14); //Beacon switch
Bragadeesh153 13:fb7facaf308b 150 DigitalOut DRV_XY_EN(PIN82);
sakthipriya 0:7b4c00e3912f 151
lakshya 19:79e69017c855 152
sakthipriya 0:7b4c00e3912f 153 /*****************************************************************Threads USed***********************************************************************************/
sakthipriya 0:7b4c00e3912f 154 Thread *ptr_t_i2c;
sakthipriya 0:7b4c00e3912f 155
lakshya 19:79e69017c855 156
sakthipriya 0:7b4c00e3912f 157 /*********************************************************FCTN HEADERS***********************************************************************************/
sakthipriya 0:7b4c00e3912f 158 void FCTN_ISR_I2C();
sakthipriya 0:7b4c00e3912f 159 void FCTN_TM();
sakthipriya 3:07e15677a75c 160 void F_ACS();
sakthipriya 3:07e15677a75c 161 void F_EPS();
sakthipriya 3:07e15677a75c 162 void F_BCN();
sakthipriya 0:7b4c00e3912f 163
sakthipriya 0:7b4c00e3912f 164 //*******************************************ACS THREAD**************************************************//
sakthipriya 5:bb592f3185cc 165 uint8_t iterP1;
sakthipriya 5:bb592f3185cc 166 uint8_t iterP2;
sakthipriya 5:bb592f3185cc 167 uint8_t iterI1;
sakthipriya 5:bb592f3185cc 168 uint8_t iterI2;
sakthipriya 0:7b4c00e3912f 169
sakthipriya 5:bb592f3185cc 170
sakthipriya 3:07e15677a75c 171 void F_ACS()
sakthipriya 0:7b4c00e3912f 172 {
lakshya 19:79e69017c855 173 t_acs.start();
sakthipriya 5:bb592f3185cc 174 if(pf1check == 1)
sakthipriya 5:bb592f3185cc 175 {
sakthipriya 5:bb592f3185cc 176 if(iterP1 >= 3)
sakthipriya 5:bb592f3185cc 177 {
sakthipriya 9:194afacf7449 178 ATS1_SW_ENABLE = 1; // turn off ats1 permanently
sakthipriya 5:bb592f3185cc 179 //FCTN_SWITCH_ATS(0); // switch on ATS2
sakthipriya 5:bb592f3185cc 180 }
sakthipriya 5:bb592f3185cc 181 else
sakthipriya 5:bb592f3185cc 182 {
sakthipriya 9:194afacf7449 183 ATS1_SW_ENABLE = 0;
sakthipriya 5:bb592f3185cc 184 iterP1++;
sakthipriya 5:bb592f3185cc 185 }
sakthipriya 9:194afacf7449 186 pf1check = 0;
sakthipriya 5:bb592f3185cc 187 }
sakthipriya 5:bb592f3185cc 188 if(pf2check == 1)
sakthipriya 5:bb592f3185cc 189 {
sakthipriya 5:bb592f3185cc 190 if(iterP1 >= 3)
sakthipriya 5:bb592f3185cc 191 {
sakthipriya 9:194afacf7449 192 ATS2_SW_ENABLE = 1; // turn off ats2 permanently
Bragadeesh153 13:fb7facaf308b 193 ACS_DATA_ACQ_ENABLE = 0;
Bragadeesh153 13:fb7facaf308b 194 ACS_STATE = 2 ; // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
sakthipriya 5:bb592f3185cc 195 }
sakthipriya 5:bb592f3185cc 196 else
sakthipriya 5:bb592f3185cc 197 {
lakshya 19:79e69017c855 198 ATS2_SW_ENABLE = 0;
lakshya 19:79e69017c855 199 iterP2++;
sakthipriya 5:bb592f3185cc 200 }
sakthipriya 9:194afacf7449 201 pf2check = 0;
sakthipriya 5:bb592f3185cc 202 }
lakshya 19:79e69017c855 203 if(if1check == 1)
sakthipriya 5:bb592f3185cc 204 {
sakthipriya 5:bb592f3185cc 205 if(iterI1 >= 3)
sakthipriya 5:bb592f3185cc 206 {
Bragadeesh153 13:fb7facaf308b 207 TRXY_SW = 0; // turn off TRXY permanently
sakthipriya 5:bb592f3185cc 208 }
sakthipriya 5:bb592f3185cc 209 else
sakthipriya 5:bb592f3185cc 210 {
lakshya 19:79e69017c855 211 TRXY_SW = 1; //switch on TRXY
lakshya 19:79e69017c855 212 iterI1++;
sakthipriya 5:bb592f3185cc 213 }
sakthipriya 5:bb592f3185cc 214 }
sakthipriya 5:bb592f3185cc 215 if(if2check == 1)
sakthipriya 5:bb592f3185cc 216 {
sakthipriya 5:bb592f3185cc 217 if(iterI2 >= 3)
sakthipriya 5:bb592f3185cc 218 {
sakthipriya 5:bb592f3185cc 219 TRZ_SW = 0; // turn off TRZ permanently
Bragadeesh153 13:fb7facaf308b 220 ACS_STATE = 2 ; // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
sakthipriya 5:bb592f3185cc 221 }
sakthipriya 5:bb592f3185cc 222 else
sakthipriya 5:bb592f3185cc 223 {
lakshya 19:79e69017c855 224 TRZ_SW = 1; //switch on Z
lakshya 19:79e69017c855 225 iterI2++;
sakthipriya 5:bb592f3185cc 226 }
sakthipriya 5:bb592f3185cc 227 }
sakthipriya 5:bb592f3185cc 228
sakthipriya 6:036d08b62785 229 //float b1[3]={-23.376,-37.56,14.739}, omega1[3]={-1.52,2.746,0.7629}, moment1[3]= {1.0498,-1.0535,1.3246};
sakthipriya 0:7b4c00e3912f 230 //b1[3] = {22, 22,10};
sakthipriya 0:7b4c00e3912f 231 //omega1[3] = {2.1,3.0,1.5};
sakthipriya 9:194afacf7449 232 // ATS1_SW_ENABLE = 0; // att sens2 switch is disabled
sakthipriya 9:194afacf7449 233 // ATS2_SW_ENABLE = 0; // att sens switch is disabled
sakthipriya 0:7b4c00e3912f 234
sakthipriya 3:07e15677a75c 235
sakthipriya 0:7b4c00e3912f 236
sakthipriya 3:07e15677a75c 237 //Thread::signal_wait(0x1);
sakthipriya 9:194afacf7449 238 ACS_MAIN_STATUS = 1; //set ACS_MAIN_STATUS flag
sakthipriya 0:7b4c00e3912f 239 PWM1 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 240 PWM2 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 241 PWM3 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 242 pc.printf("\n\rEntered ACS %f\n",t_start.read());
sakthipriya 0:7b4c00e3912f 243
sakthipriya 9:194afacf7449 244 if(ACS_DATA_ACQ_ENABLE == 1)// check if ACS_DATA_ACQ_ENABLE = 1?
sakthipriya 0:7b4c00e3912f 245 {
lakshya 19:79e69017c855 246 //FLAG();
lakshya 19:79e69017c855 247 FCTN_ATS_DATA_ACQ(); //the angular velocity is stored in the first 3 values and magnetic field values in next 3
lakshya 19:79e69017c855 248 pc.printf("gyro values\n\r"); //printing the angular velocity and magnetic field values
lakshya 19:79e69017c855 249 for(int i=0; i<3; i++)
lakshya 19:79e69017c855 250 {
lakshya 19:79e69017c855 251 printf("%f\n\r",actual_data.AngularSpeed_actual[i]);
lakshya 19:79e69017c855 252 }
lakshya 19:79e69017c855 253 pc.printf("mag values\n\r");
lakshya 19:79e69017c855 254 for(int i=0; i<3; i++)
lakshya 19:79e69017c855 255 {
lakshya 19:79e69017c855 256 pc.printf("%f\n\r",actual_data.Bvalue_actual[i]);
lakshya 19:79e69017c855 257 }
lakshya 19:79e69017c855 258 // for(int i=0;i<3;i++)
lakshya 19:79e69017c855 259 // {
lakshya 19:79e69017c855 260 // omega1[i]= data[i];
lakshya 19:79e69017c855 261 // b1[i] = data[i+3];
lakshya 19:79e69017c855 262 // }
sakthipriya 0:7b4c00e3912f 263 }//if ACS_DATA_ACQ_ENABLE = 1
lakshya 19:79e69017c855 264 else
sakthipriya 0:7b4c00e3912f 265 {
sakthipriya 0:7b4c00e3912f 266 // Z axis actuation is the only final solution,
sakthipriya 0:7b4c00e3912f 267 }
sakthipriya 9:194afacf7449 268 if(ACS_STATE == 0) // check ACS_STATE = ACS_CONTROL_OFF?
sakthipriya 0:7b4c00e3912f 269 {
sakthipriya 0:7b4c00e3912f 270 printf("\n\r acs control off\n");
sakthipriya 0:7b4c00e3912f 271 FLAG();
sakthipriya 9:194afacf7449 272 ACS_STATUS = 0; // set ACS_STATUS = ACS_CONTROL_OFF
sakthipriya 0:7b4c00e3912f 273 PWM1 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 274 PWM2 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 275 PWM3 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 276 }
sakthipriya 0:7b4c00e3912f 277 else
sakthipriya 0:7b4c00e3912f 278 {
sakthipriya 1:446a959e36ce 279 if(actual_data.power_mode>1)
sakthipriya 0:7b4c00e3912f 280
sakthipriya 0:7b4c00e3912f 281 {
sakthipriya 9:194afacf7449 282 if(ACS_STATE == 2) // check ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
sakthipriya 0:7b4c00e3912f 283 {
sakthipriya 0:7b4c00e3912f 284 FLAG();
sakthipriya 0:7b4c00e3912f 285 printf("\n\r z axis moment only\n");
sakthipriya 9:194afacf7449 286 ACS_STATUS = 2; // set ACS_STATUS = ACS_ZAXIS_MOMENT_ONLY
sakthipriya 0:7b4c00e3912f 287 // FCTN_ACS_CNTRLALGO(b1, omega1);
sakthipriya 0:7b4c00e3912f 288 moment[0] = 0;
sakthipriya 0:7b4c00e3912f 289 moment[1] = 0;
sakthipriya 0:7b4c00e3912f 290 moment[2] =1.3;// is a dummy value
lakshya 19:79e69017c855 291 FCTN_ACS_GENPWM_MAIN(moment) ; /*printf statements*/
lakshya 19:79e69017c855 292 }
lakshya 19:79e69017c855 293 else
sakthipriya 0:7b4c00e3912f 294 {
lakshya 19:79e69017c855 295 if(ACS_STATE == 3) // check ACS_STATE = ACS_DATA_ACQ_FAILURE
lakshya 19:79e69017c855 296 {
lakshya 19:79e69017c855 297 FLAG();
lakshya 19:79e69017c855 298 printf("\n\r acs data failure ");
lakshya 19:79e69017c855 299 ACS_STATUS = 3; // set ACS_STATUS = ACS_DATA_ACQ_FAILURE
sakthipriya 0:7b4c00e3912f 300 PWM1 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 301 PWM2 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 302 PWM3 = 0; //clear pwm pins
lakshya 19:79e69017c855 303 }
lakshya 19:79e69017c855 304 else
lakshya 19:79e69017c855 305 {
lakshya 19:79e69017c855 306 if(ACS_STATE == 4) // check ACS_STATE = ACS_NOMINAL_ONLY
sakthipriya 0:7b4c00e3912f 307 {
sakthipriya 0:7b4c00e3912f 308 FLAG();
sakthipriya 0:7b4c00e3912f 309 printf("\n\r nominal");
sakthipriya 9:194afacf7449 310 ACS_STATUS = 4; // set ACS_STATUS = ACS_NOMINAL_ONLY
sakthipriya 6:036d08b62785 311 FCTN_ACS_CNTRLALGO(actual_data.Bvalue_actual,actual_data.AngularSpeed_actual);
sakthipriya 0:7b4c00e3912f 312 printf("\n\r moment values returned by control algo \n");
sakthipriya 0:7b4c00e3912f 313 for(int i=0; i<3; i++)
sakthipriya 0:7b4c00e3912f 314 {
sakthipriya 0:7b4c00e3912f 315 printf("%f\t",moment[i]);
sakthipriya 0:7b4c00e3912f 316 }
sakthipriya 0:7b4c00e3912f 317 FCTN_ACS_GENPWM_MAIN(moment) ;
sakthipriya 0:7b4c00e3912f 318 }
sakthipriya 0:7b4c00e3912f 319 else
sakthipriya 0:7b4c00e3912f 320 {
sakthipriya 9:194afacf7449 321 if(ACS_STATE == 5) // check ACS_STATE = ACS_AUTO_CONTROL
sakthipriya 0:7b4c00e3912f 322 {
sakthipriya 0:7b4c00e3912f 323 FLAG();
sakthipriya 0:7b4c00e3912f 324 printf("\n\r auto control");
sakthipriya 9:194afacf7449 325 ACS_STATUS = 5; // set ACS_STATUS = ACS_AUTO_CONTROL
sakthipriya 0:7b4c00e3912f 326 //FCTN_ACS_AUTOCTRL_LOGIC // gotta include this code
sakthipriya 0:7b4c00e3912f 327 }
sakthipriya 0:7b4c00e3912f 328 else
sakthipriya 0:7b4c00e3912f 329 {
sakthipriya 9:194afacf7449 330 if(ACS_STATE == 6) // check ACS_STATE = ACS_DETUMBLING_ONLY
sakthipriya 0:7b4c00e3912f 331 {
sakthipriya 0:7b4c00e3912f 332 FLAG();
sakthipriya 0:7b4c00e3912f 333 printf("\n\r Entered detumbling \n");
sakthipriya 9:194afacf7449 334 ACS_STATUS = 6; // set ACS_STATUS = ACS_DETUMBLING_ONLY
sakthipriya 6:036d08b62785 335 FCTN_ACS_CNTRLALGO(actual_data.Bvalue_actual,actual_data.AngularSpeed_actual); // detumbling code has to be included
sakthipriya 0:7b4c00e3912f 336 FCTN_ACS_GENPWM_MAIN(moment) ;
sakthipriya 0:7b4c00e3912f 337 }
sakthipriya 0:7b4c00e3912f 338 else
sakthipriya 0:7b4c00e3912f 339 {
sakthipriya 0:7b4c00e3912f 340 FLAG();
sakthipriya 0:7b4c00e3912f 341 printf("\n\r invalid state");
sakthipriya 9:194afacf7449 342 ACS_STATUS = 7 ; // set ACS_STATUS = INVALID STATE
sakthipriya 0:7b4c00e3912f 343 PWM1 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 344 PWM2 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 345 PWM3 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 346 }//else of invalid
sakthipriya 0:7b4c00e3912f 347 }//else of autocontrol
sakthipriya 0:7b4c00e3912f 348 }//else of nominal
lakshya 19:79e69017c855 349 }//else of data acg failure
sakthipriya 0:7b4c00e3912f 350 }//else fo z axis moment only
sakthipriya 0:7b4c00e3912f 351 }//if power >2
sakthipriya 0:7b4c00e3912f 352 else
sakthipriya 0:7b4c00e3912f 353 {
sakthipriya 0:7b4c00e3912f 354 FLAG();
sakthipriya 0:7b4c00e3912f 355 printf("\n\r low power");
sakthipriya 9:194afacf7449 356 ACS_STATUS = 1; // set ACS_STATUS = ACS_LOW_POWER
sakthipriya 0:7b4c00e3912f 357 PWM1 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 358 PWM2 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 359 PWM3 = 0; //clear pwm pins
sakthipriya 0:7b4c00e3912f 360 }
sakthipriya 0:7b4c00e3912f 361 } //else for acs control off
lakshya 19:79e69017c855 362
lakshya 18:3662058a7c10 363 printf("\n\rlow power crossed and pwm no hang");
sakthipriya 9:194afacf7449 364 ACS_MAIN_STATUS = 0; //clear ACS_MAIN_STATUS flag
lakshya 19:79e69017c855 365
lakshya 19:79e69017c855 366 t_acs.stop();
lakshya 19:79e69017c855 367 printf("\n\r the time for acs is %f",(float)t_acs.read_ms());
lakshya 19:79e69017c855 368 t_acs.reset();
sakthipriya 3:07e15677a75c 369
sakthipriya 0:7b4c00e3912f 370 }
lakshya 19:79e69017c855 371
sakthipriya 0:7b4c00e3912f 372 //***************************************************EPS THREAD***********************************************//
sakthipriya 0:7b4c00e3912f 373
sakthipriya 3:07e15677a75c 374 void F_EPS()
lakshya 19:79e69017c855 375 {
lakshya 19:79e69017c855 376 t_eps.start();
sakthipriya 3:07e15677a75c 377
sakthipriya 0:7b4c00e3912f 378 pc.printf("\n\rEntered EPS %f\n",t_start.read());
sakthipriya 9:194afacf7449 379 EPS_MAIN_STATUS = 1; // Set EPS main status
sakthipriya 3:07e15677a75c 380 FCTN_BATT_TEMP_SENSOR_MAIN(actual_data.Batt_temp_actual);
lakshya 19:79e69017c855 381 pc.printf("\n\r Battery temperature %f %f" ,actual_data.Batt_temp_actual[0], actual_data.Batt_temp_actual[1]);
lakshya 19:79e69017c855 382 EPS_BATTERY_TEMP_STATUS = 1; //set EPS_BATTERY_TEMP_STATUS
lakshya 19:79e69017c855 383 if(EPS_BATTERY_HEAT_ENABLE == 1)
lakshya 19:79e69017c855 384 {
lakshya 19:79e69017c855 385 if((actual_data.Batt_temp_actual[0] < batt_heat_low) && (actual_data.Batt_temp_actual[1] < batt_heat_low)) // to confirm
lakshya 19:79e69017c855 386 {
lakshya 19:79e69017c855 387 batt_heat = 1; //turn on battery heater
lakshya 19:79e69017c855 388 }
lakshya 19:79e69017c855 389 else
lakshya 19:79e69017c855 390 {
lakshya 19:79e69017c855 391 batt_heat = 0; //turn off battery heater
lakshya 19:79e69017c855 392 }
sakthipriya 3:07e15677a75c 393
lakshya 19:79e69017c855 394 }
lakshya 19:79e69017c855 395 else if(EPS_BATTERY_HEAT_ENABLE == 0)
lakshya 19:79e69017c855 396 {
lakshya 19:79e69017c855 397 EPS_STATUS = 1;//EPS_STATUS = EPS_BATTERY_HEATER_DISABLED
lakshya 19:79e69017c855 398 }
sakthipriya 0:7b4c00e3912f 399 FCTN_BATTERYGAUGE_MAIN(actual_data.Batt_gauge_actual);
sakthipriya 1:446a959e36ce 400 if (actual_data.Batt_gauge_actual[1] == 200) //data not received
sakthipriya 0:7b4c00e3912f 401 {
lakshya 19:79e69017c855 402 actual_data.power_mode = 1;
lakshya 19:79e69017c855 403 EPS_BATTERY_GAUGE_STATUS = 0; //clear EPS_BATTERY_GAUGE_STATUS
sakthipriya 0:7b4c00e3912f 404
sakthipriya 0:7b4c00e3912f 405 }
sakthipriya 0:7b4c00e3912f 406 else
sakthipriya 0:7b4c00e3912f 407 {
lakshya 19:79e69017c855 408 FCTN_EPS_POWERMODE(actual_data.Batt_gauge_actual[1]); //updating power level
lakshya 19:79e69017c855 409 EPS_BATTERY_GAUGE_STATUS = 1; //set EPS_BATTERY_GAUGE_STATUS
sakthipriya 0:7b4c00e3912f 410 }
lakshya 19:79e69017c855 411 // if( Temperature data received)
sakthipriya 3:07e15677a75c 412 //{
lakshya 19:79e69017c855 413 //}
sakthipriya 3:07e15677a75c 414 // else
sakthipriya 3:07e15677a75c 415 // {
sakthipriya 3:07e15677a75c 416 // Set battery temp to XX
sakthipriya 9:194afacf7449 417 // EPS_BATTERY_TEMP_STATUS = 0; //clear EPS_BATTERY_TEMP_STATUS
sakthipriya 3:07e15677a75c 418 // EPS_STATUS = EPS_ERR_BATTERY_TEMP;
sakthipriya 3:07e15677a75c 419 // }
sakthipriya 3:07e15677a75c 420 FCTN_HK_MAIN();
sakthipriya 5:bb592f3185cc 421 FCTN_APPEND_HKDATA();
sakthipriya 5:bb592f3185cc 422 minMaxHkData();
lakshya 19:79e69017c855 423 EPS_MAIN_STATUS = 0; // clear EPS main status
lakshya 19:79e69017c855 424
lakshya 19:79e69017c855 425 t_eps.stop();
lakshya 19:79e69017c855 426 printf("\n\r the time for eps is %f",(float)t_eps.read_ms());
lakshya 19:79e69017c855 427 t_eps.reset();
sakthipriya 3:07e15677a75c 428
sakthipriya 0:7b4c00e3912f 429 }
sakthipriya 0:7b4c00e3912f 430
sakthipriya 0:7b4c00e3912f 431 //**************************************************BCN THREAD*******************************************************************//
sakthipriya 0:7b4c00e3912f 432
sakthipriya 3:07e15677a75c 433 void F_BCN()
sakthipriya 0:7b4c00e3912f 434 {
sakthipriya 0:7b4c00e3912f 435 pc.printf("\n\rEntered BCN %f\n",t_start.read());
sakthipriya 0:7b4c00e3912f 436
Bragadeesh153 12:af1d7e18b868 437 FCTN_BCN_TX_MAIN();
sakthipriya 0:7b4c00e3912f 438
sakthipriya 0:7b4c00e3912f 439 }
sakthipriya 0:7b4c00e3912f 440
sakthipriya 0:7b4c00e3912f 441 //**************************************************TCTM THREAD*******************************************************************//
sakthipriya 0:7b4c00e3912f 442
sakthipriya 0:7b4c00e3912f 443 void T_TC(void const * args)
lakshya 19:79e69017c855 444 {
sakthipriya 0:7b4c00e3912f 445 while(1)
lakshya 19:79e69017c855 446 {
lakshya 19:79e69017c855 447 Thread::signal_wait(0x4);
lakshya 19:79e69017c855 448 wait_us(200);// se if it can be changed
lakshya 19:79e69017c855 449
lakshya 19:79e69017c855 450 /*SHOULD IT BE PLACED INSIDE OR OUTSIDE?*/
lakshya 19:79e69017c855 451 BAE_I2CRX_STATUS=1;
lakshya 19:79e69017c855 452 FLAG();
lakshya 19:79e69017c855 453 BAE_I2C_COUNTER++;
lakshya 19:79e69017c855 454 //printf("\n\rreached\n"); // can be between 38 to 15700
lakshya 19:79e69017c855 455 if( slave.receive() == 0)
lakshya 19:79e69017c855 456 {
lakshya 19:79e69017c855 457 slave.stop();
lakshya 19:79e69017c855 458 //printf("\n\rnot send\n");
lakshya 15:e09aaaccf134 459 }
lakshya 19:79e69017c855 460 else if( slave.receive() == 1) // slave writes to master
sakthipriya 5:bb592f3185cc 461 {
lakshya 19:79e69017c855 462 if(data_send_flag == 'h')
lakshya 19:79e69017c855 463 {
lakshya 19:79e69017c855 464 irpt_2_mstr =1;// wait till cdms code is changed
lakshya 19:79e69017c855 465
lakshya 19:79e69017c855 466 FCTN_APPEND_HKDATA();
lakshya 19:79e69017c855 467 // pc.printf("\n\r here");
lakshya 19:79e69017c855 468 write_ack=slave.write(BAE_chardata,74);
lakshya 19:79e69017c855 469 if(write_ack==0)// wait till cdms code is changed
lakshya 19:79e69017c855 470
lakshya 19:79e69017c855 471 {
lakshya 19:79e69017c855 472 irpt_2_mstr = 0;
lakshya 19:79e69017c855 473 printf("\n\rgot interrupt\n");
lakshya 19:79e69017c855 474 }
lakshya 19:79e69017c855 475 }
lakshya 19:79e69017c855 476 else if(data_send_flag == 't')
lakshya 19:79e69017c855 477 {
lakshya 19:79e69017c855 478 write_ack=slave.write((char*)telemetry,tm_len);
lakshya 19:79e69017c855 479 data_send_flag = 'h';
lakshya 19:79e69017c855 480 if(write_ack==0)
lakshya 19:79e69017c855 481 irpt_2_mstr = 0;
lakshya 19:79e69017c855 482 }
lakshya 19:79e69017c855 483 }
lakshya 19:79e69017c855 484 else if( slave.receive()==3 || slave.receive()==2) // slave read
lakshya 19:79e69017c855 485 {
lakshya 19:79e69017c855 486 read_ack=slave.read(telecommand,tc_len);
lakshya 19:79e69017c855 487 t_tc.start();
lakshya 19:79e69017c855 488 //pc.printf("\n\rTELECOMMAND received from CDMS is %s \n",telecommand);
lakshya 19:79e69017c855 489 pc.printf("\n\r Executing Telecommand \n");
lakshya 19:79e69017c855 490 // FCTN_TC_DECODE((uint8_t*) telecommand);
sakthipriya 7:a46a1dee4497 491
lakshya 19:79e69017c855 492 FCTN_BAE_TM_TC((uint8_t*) telecommand);
lakshya 19:79e69017c855 493 //telemetry = (char*)temp;
sakthipriya 7:a46a1dee4497 494
lakshya 19:79e69017c855 495 FCTN_TM();
lakshya 19:79e69017c855 496 t_tc.stop();
lakshya 19:79e69017c855 497 printf("\n\r time taken %d",t_tc.read_us());
lakshya 19:79e69017c855 498 t_tc.reset();
lakshya 19:79e69017c855 499 // for(int i = 0; i<134; i++)
lakshya 19:79e69017c855 500 //pc.printf("%c", telemetry[i]);
lakshya 19:79e69017c855 501 }
sakthipriya 0:7b4c00e3912f 502
sakthipriya 6:036d08b62785 503
lakshya 19:79e69017c855 504 /*implemented when cdms send telecommand as t and long bcn data seperately
lakshya 19:79e69017c855 505 {
lakshya 19:79e69017c855 506 read_ack=slave.read(telecommand,tc_len);
lakshya 19:79e69017c855 507 t_tc.start();
lakshya 19:79e69017c855 508
lakshya 19:79e69017c855 509 //*code for differentiating wether the given data is tc or long beacon asssuming the first bit differentiate
lakshya 19:79e69017c855 510 if(telecommand[0]=='t') //*i.e telecommand is recieved
lakshya 19:79e69017c855 511 {
lakshya 19:79e69017c855 512 pc.printf("\n\r data is = %x ",telecommand[0]);
lakshya 19:79e69017c855 513 //pc.printf("\n\rTELECOMMAND received from CDMS is %s \n",telecommand);
lakshya 19:79e69017c855 514 pc.printf("\n\r Executing Telecommand ");
lakshya 19:79e69017c855 515 // FCTN_TC_DECODE((uint8_t*) telecommand);
lakshya 19:79e69017c855 516
lakshya 19:79e69017c855 517 FCTN_BAE_TM_TC((uint8_t*) telecommand);
lakshya 19:79e69017c855 518 //telemetry = (char*)temp;
lakshya 19:79e69017c855 519
lakshya 19:79e69017c855 520 FCTN_TM();
lakshya 19:79e69017c855 521 /// t_tc.stop();
lakshya 19:79e69017c855 522 /// printf("\n\r time taken %d",t_tc.read_us());
lakshya 19:79e69017c855 523 /// t_tc.reset();
lakshya 19:79e69017c855 524 // for(int i = 0; i<134; i++)
lakshya 19:79e69017c855 525 //pc.printf("%c", telemetry[i]);
lakshya 19:79e69017c855 526 }
lakshya 19:79e69017c855 527
lakshya 19:79e69017c855 528 else if(telecommand[0]=='l') //*i.e long beacon data is recieved* /
lakshya 19:79e69017c855 529 {
lakshya 19:79e69017c855 530 pc.printf("\n\r sending the long beacon data ");
lakshya 19:79e69017c855 531 /*if data is to send as in uint8 format if it is to be send as char
lakshya 19:79e69017c855 532 then just forward it without converting* /
lakshya 19:79e69017c855 533 //*creating a new function here to update the long beacon data everytime cdms sends it* /
lakshya 19:79e69017c855 534 LONG_BCN_DATA((uint8_t*)telecommand);
lakshya 19:79e69017c855 535 //here long beacon structure change
lakshya 19:79e69017c855 536 /// t_tc.stop();
lakshya 19:79e69017c855 537 /// printf("\n\r time taken %d",t_tc.read_us());
lakshya 19:79e69017c855 538 /// t_tc.reset();
lakshya 19:79e69017c855 539 }
lakshya 19:79e69017c855 540 else
lakshya 19:79e69017c855 541 {
lakshya 19:79e69017c855 542 pc.printf("\n\r none of case met a miss ");
lakshya 19:79e69017c855 543 /// t_tc.stop();
lakshya 19:79e69017c855 544 /// printf("\n\r time taken %d",t_tc.read_us());
lakshya 19:79e69017c855 545 /// t_tc.reset();
lakshya 19:79e69017c855 546 }
lakshya 19:79e69017c855 547
lakshya 19:79e69017c855 548 t_tc.stop();
lakshya 19:79e69017c855 549 printf("\n\r time taken %d",t_tc.read_us());
lakshya 19:79e69017c855 550 t_tc.reset();
lakshya 19:79e69017c855 551
lakshya 19:79e69017c855 552 }
lakshya 19:79e69017c855 553 */
lakshya 19:79e69017c855 554 BAE_I2CRX_STATUS=0;
lakshya 19:79e69017c855 555 FLAG();
lakshya 19:79e69017c855 556
lakshya 19:79e69017c855 557 }
sakthipriya 0:7b4c00e3912f 558 }
sakthipriya 0:7b4c00e3912f 559
sakthipriya 0:7b4c00e3912f 560 void FCTN_TM()
sakthipriya 0:7b4c00e3912f 561 {
sakthipriya 4:39a4ae8c7ecd 562 //irpt_2_mstr = 0;
sakthipriya 5:bb592f3185cc 563 data_send_flag = 't';
sakthipriya 0:7b4c00e3912f 564 pc.printf("\n\r Telemetry Generation \n");
sakthipriya 0:7b4c00e3912f 565 irpt_2_mstr = 1;
sakthipriya 0:7b4c00e3912f 566 }
sakthipriya 0:7b4c00e3912f 567
sakthipriya 0:7b4c00e3912f 568
sakthipriya 0:7b4c00e3912f 569 //******************************************************* I2C *******************************************************************//
sakthipriya 0:7b4c00e3912f 570
sakthipriya 0:7b4c00e3912f 571 void FCTN_I2C_ISR()
sakthipriya 0:7b4c00e3912f 572 {
sakthipriya 0:7b4c00e3912f 573 ptr_t_i2c->signal_set(0x4);
sakthipriya 0:7b4c00e3912f 574 }
sakthipriya 0:7b4c00e3912f 575
sakthipriya 0:7b4c00e3912f 576
sakthipriya 5:bb592f3185cc 577 //***********************************************************FAULTS***************************************************************//
sakthipriya 5:bb592f3185cc 578 /*void ir1clear()
sakthipriya 5:bb592f3185cc 579 {
sakthipriya 5:bb592f3185cc 580 actual_data.faultIr_status |= 0x01; // alert
sakthipriya 5:bb592f3185cc 581
sakthipriya 5:bb592f3185cc 582 }*/
sakthipriya 5:bb592f3185cc 583
sakthipriya 5:bb592f3185cc 584
sakthipriya 5:bb592f3185cc 585
sakthipriya 5:bb592f3185cc 586 void ir2clear()
sakthipriya 5:bb592f3185cc 587 {
sakthipriya 5:bb592f3185cc 588 actual_data.faultIr_status |= 0x02;
Bragadeesh153 13:fb7facaf308b 589 TRXY_SW = 0; // Switch off TR XY
sakthipriya 5:bb592f3185cc 590 if1check = 1;
sakthipriya 5:bb592f3185cc 591 }
sakthipriya 5:bb592f3185cc 592
sakthipriya 5:bb592f3185cc 593 void ir3clear()
sakthipriya 5:bb592f3185cc 594 {
sakthipriya 5:bb592f3185cc 595 actual_data.faultIr_status |= 0x04;
Bragadeesh153 13:fb7facaf308b 596 DRV_Z_EN = 0;
sakthipriya 5:bb592f3185cc 597 wait_us(1);
Bragadeesh153 13:fb7facaf308b 598 DRV_Z_EN = 1;
sakthipriya 5:bb592f3185cc 599
sakthipriya 5:bb592f3185cc 600 }
sakthipriya 5:bb592f3185cc 601
sakthipriya 5:bb592f3185cc 602 void ir4clear()
sakthipriya 5:bb592f3185cc 603 {
sakthipriya 5:bb592f3185cc 604 if2check = 1;
sakthipriya 5:bb592f3185cc 605 actual_data.faultIr_status |= 0x08;
sakthipriya 5:bb592f3185cc 606 TRZ_SW = 0;
sakthipriya 5:bb592f3185cc 607 }
sakthipriya 5:bb592f3185cc 608
sakthipriya 5:bb592f3185cc 609 void ir5clear()
sakthipriya 5:bb592f3185cc 610 {
sakthipriya 5:bb592f3185cc 611 actual_data.faultIr_status |= 0x10;
sakthipriya 5:bb592f3185cc 612 CDMS_RESET = 0;
sakthipriya 5:bb592f3185cc 613 wait_us(1);
sakthipriya 5:bb592f3185cc 614 CDMS_RESET = 1;
sakthipriya 5:bb592f3185cc 615 }
sakthipriya 5:bb592f3185cc 616
sakthipriya 5:bb592f3185cc 617 void ir6clear()
sakthipriya 5:bb592f3185cc 618 {
sakthipriya 5:bb592f3185cc 619 actual_data.faultIr_status |= 0x20;
sakthipriya 5:bb592f3185cc 620 BCN_SW = 0;
sakthipriya 5:bb592f3185cc 621 wait_us(1);
sakthipriya 5:bb592f3185cc 622 BCN_SW = 1;
sakthipriya 5:bb592f3185cc 623 }
sakthipriya 5:bb592f3185cc 624
sakthipriya 5:bb592f3185cc 625 void ir7clear()
sakthipriya 5:bb592f3185cc 626 {
sakthipriya 5:bb592f3185cc 627 actual_data.faultIr_status |= 0x40;
sakthipriya 5:bb592f3185cc 628 }
sakthipriya 5:bb592f3185cc 629 uint8_t iter2=0,iter4 = 0;
sakthipriya 5:bb592f3185cc 630
sakthipriya 5:bb592f3185cc 631
sakthipriya 5:bb592f3185cc 632
sakthipriya 5:bb592f3185cc 633 void pollfault()
sakthipriya 5:bb592f3185cc 634 {
sakthipriya 5:bb592f3185cc 635
sakthipriya 5:bb592f3185cc 636
sakthipriya 5:bb592f3185cc 637
sakthipriya 5:bb592f3185cc 638 if (pf1==0) // OC_ATS1
sakthipriya 5:bb592f3185cc 639 {
sakthipriya 5:bb592f3185cc 640 pf1check=1;
sakthipriya 5:bb592f3185cc 641 actual_data.faultPoll_status |=0x01 ;
sakthipriya 9:194afacf7449 642 ATS1_SW_ENABLE = 1; // turn off ats1 // to be turned on next cycle in ACS
sakthipriya 5:bb592f3185cc 643 }
sakthipriya 5:bb592f3185cc 644 else actual_data.faultPoll_status &= 0xFE;
sakthipriya 5:bb592f3185cc 645
sakthipriya 5:bb592f3185cc 646 if (pf2==0)
sakthipriya 5:bb592f3185cc 647 {
sakthipriya 5:bb592f3185cc 648 pf2check=1;
sakthipriya 5:bb592f3185cc 649 actual_data.faultPoll_status |=0x02 ;
sakthipriya 9:194afacf7449 650 ATS2_SW_ENABLE = 1; // turn off ats2 // turn on in ACS
sakthipriya 5:bb592f3185cc 651 }
sakthipriya 5:bb592f3185cc 652 else actual_data.faultPoll_status &= 0xFD;
sakthipriya 5:bb592f3185cc 653
sakthipriya 5:bb592f3185cc 654 if (pf3==0)
sakthipriya 5:bb592f3185cc 655 { actual_data.faultPoll_status |=0x04 ;
Bragadeesh153 13:fb7facaf308b 656 DRV_XY_EN = 0;
sakthipriya 5:bb592f3185cc 657 wait_us(1);
Bragadeesh153 13:fb7facaf308b 658 DRV_XY_EN = 1;
sakthipriya 5:bb592f3185cc 659 }
sakthipriya 5:bb592f3185cc 660 else actual_data.faultPoll_status &= 0xFB;
sakthipriya 5:bb592f3185cc 661
sakthipriya 5:bb592f3185cc 662
sakthipriya 5:bb592f3185cc 663
sakthipriya 5:bb592f3185cc 664
sakthipriya 5:bb592f3185cc 665 /*if (ir1==1)
sakthipriya 5:bb592f3185cc 666 {
sakthipriya 5:bb592f3185cc 667 actual_data.faultIr_status &=0xFE;
sakthipriya 5:bb592f3185cc 668 }*/
lakshya 14:a9588f443f1a 669
sakthipriya 5:bb592f3185cc 670 if (ir2==1)
sakthipriya 5:bb592f3185cc 671 {
sakthipriya 5:bb592f3185cc 672 actual_data.faultIr_status &=0xFD;
sakthipriya 5:bb592f3185cc 673 }
sakthipriya 5:bb592f3185cc 674 if (ir3==1)
sakthipriya 5:bb592f3185cc 675 {
sakthipriya 5:bb592f3185cc 676 actual_data.faultIr_status &=0xFB;
sakthipriya 5:bb592f3185cc 677 }
sakthipriya 5:bb592f3185cc 678 if (ir4==1)
sakthipriya 5:bb592f3185cc 679 {
sakthipriya 5:bb592f3185cc 680 actual_data.faultIr_status &=0xF7;
sakthipriya 5:bb592f3185cc 681 }
sakthipriya 5:bb592f3185cc 682 if (ir5==1)
sakthipriya 5:bb592f3185cc 683 {
sakthipriya 5:bb592f3185cc 684 actual_data.faultIr_status &=0xEF;
sakthipriya 5:bb592f3185cc 685 }
sakthipriya 5:bb592f3185cc 686 if (ir6==1)
sakthipriya 5:bb592f3185cc 687 {
sakthipriya 5:bb592f3185cc 688 actual_data.faultIr_status &=0xDF;
sakthipriya 5:bb592f3185cc 689 }if (ir7==1)
sakthipriya 5:bb592f3185cc 690 {
sakthipriya 5:bb592f3185cc 691 actual_data.faultIr_status &=0xBF;
sakthipriya 5:bb592f3185cc 692 }
lakshya 14:a9588f443f1a 693
sakthipriya 5:bb592f3185cc 694
sakthipriya 5:bb592f3185cc 695 }
sakthipriya 5:bb592f3185cc 696
sakthipriya 5:bb592f3185cc 697
sakthipriya 0:7b4c00e3912f 698 //------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:7b4c00e3912f 699 //SCHEDULER
sakthipriya 0:7b4c00e3912f 700 //------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:7b4c00e3912f 701 uint8_t schedcount=1;
sakthipriya 0:7b4c00e3912f 702 void T_SC(void const *args)
sakthipriya 0:7b4c00e3912f 703 {
lakshya 19:79e69017c855 704 /// printf("\n\r in scheduler");
lakshya 19:79e69017c855 705
lakshya 19:79e69017c855 706 /*if keeping thish many cases creates a problem then make 3 seperate flagvariable i.e bae_standby_acs so on that will make it easy.!!!*/
sakthipriya 0:7b4c00e3912f 707
sakthipriya 0:7b4c00e3912f 708 if(schedcount == 7) //to reset the counter
sakthipriya 0:7b4c00e3912f 709 {
sakthipriya 0:7b4c00e3912f 710 schedcount = 1;
sakthipriya 0:7b4c00e3912f 711 }
sakthipriya 0:7b4c00e3912f 712 if(schedcount%1==0)
lakshya 19:79e69017c855 713 {
lakshya 19:79e69017c855 714 if( BAE_STANDBY!=0x02 && BAE_STANDBY!=0x03 && BAE_STANDBY!=0x06 && BAE_STANDBY!=0x07)
lakshya 19:79e69017c855 715 {
lakshya 19:79e69017c855 716 pc.printf("\nSTATE IS !!!!!! = %x !!\n",ACS_STATE);
lakshya 19:79e69017c855 717 F_ACS();
lakshya 19:79e69017c855 718 }
sakthipriya 0:7b4c00e3912f 719 }
sakthipriya 0:7b4c00e3912f 720
sakthipriya 0:7b4c00e3912f 721 if(schedcount%2==0)
lakshya 19:79e69017c855 722 {
lakshya 19:79e69017c855 723 if( BAE_STANDBY!=0x01 && BAE_STANDBY!=0x03 && BAE_STANDBY!=0x05 && BAE_STANDBY!=0x07)
lakshya 19:79e69017c855 724 F_EPS();
sakthipriya 0:7b4c00e3912f 725 }
lakshya 16:f9e484dc505e 726 if(schedcount%3==0)
lakshya 19:79e69017c855 727 {
lakshya 19:79e69017c855 728 if(BAE_STANDBY!=0x04 && BAE_STANDBY!=0x05 && BAE_STANDBY!=0x06 && BAE_STANDBY!=0x07)
lakshya 19:79e69017c855 729 F_BCN();
sakthipriya 0:7b4c00e3912f 730 }
sakthipriya 0:7b4c00e3912f 731 schedcount++;
lakshya 19:79e69017c855 732 printf("\n\r exited scheduler h");
lakshya 18:3662058a7c10 733 printf("\n\r time taken %f",t_start.read());
sakthipriya 0:7b4c00e3912f 734 }
sakthipriya 0:7b4c00e3912f 735
sakthipriya 0:7b4c00e3912f 736 Timer t_flag;
lakshya 19:79e69017c855 737
sakthipriya 0:7b4c00e3912f 738 void FLAG()
sakthipriya 0:7b4c00e3912f 739 {
lakshya 19:79e69017c855 740
lakshya 19:79e69017c855 741 //.............bae..................//
lakshya 19:79e69017c855 742 if(BAE_INIT_STATUS == 1)
lakshya 19:79e69017c855 743 BAE_STATUS = BAE_STATUS | 0x00000001; //BAE_STATUS |= 0x00000001;
lakshya 19:79e69017c855 744 else if(BAE_INIT_STATUS == 0)
lakshya 19:79e69017c855 745 BAE_STATUS &= 0xFFFFFFFE;
lakshya 19:79e69017c855 746
lakshya 19:79e69017c855 747 if(BAE_I2CRX_STATUS == 1)
lakshya 19:79e69017c855 748 BAE_STATUS = BAE_STATUS | 0x00000002;
lakshya 19:79e69017c855 749 if(BAE_I2CRX_STATUS == 0)
lakshya 19:79e69017c855 750 BAE_STATUS &= 0xFFFFFFFD;
sakthipriya 0:7b4c00e3912f 751 //.............acs..................//
sakthipriya 9:194afacf7449 752 if(ACS_INIT_STATUS == 1)
sakthipriya 0:7b4c00e3912f 753 BAE_STATUS = BAE_STATUS | 0x00000080; //set ACS_INIT_STATUS flag
sakthipriya 9:194afacf7449 754 else if(ACS_INIT_STATUS == 0)
sakthipriya 0:7b4c00e3912f 755 BAE_STATUS &= 0xFFFFFF7F; //clear ACS_INIT_STATUS flag
sakthipriya 0:7b4c00e3912f 756
sakthipriya 9:194afacf7449 757 if(ACS_DATA_ACQ_STATUS == 1)
sakthipriya 0:7b4c00e3912f 758 BAE_STATUS =BAE_STATUS | 0x00000100; //set ACS_DATA_ACQ_STATUS flag
sakthipriya 9:194afacf7449 759 else if(ACS_DATA_ACQ_STATUS == 0)
sakthipriya 0:7b4c00e3912f 760 BAE_STATUS &= 0xFFFFFEFF; //clear ACS_DATA_ACQ_STATUS flag
sakthipriya 0:7b4c00e3912f 761
sakthipriya 9:194afacf7449 762 if(ACS_ATS_ENABLE == 1)
sakthipriya 0:7b4c00e3912f 763 BAE_ENABLE |= 0x00000004;
sakthipriya 9:194afacf7449 764 else if(ACS_ATS_ENABLE == 0)
sakthipriya 0:7b4c00e3912f 765 BAE_ENABLE = BAE_ENABLE &0xFFFFFFFB | 0x00000004;
sakthipriya 0:7b4c00e3912f 766
sakthipriya 0:7b4c00e3912f 767 if(ACS_DATA_ACQ_STATUS == 'f')
sakthipriya 0:7b4c00e3912f 768 BAE_STATUS |= 0x00000200;
sakthipriya 0:7b4c00e3912f 769
sakthipriya 9:194afacf7449 770 if(ACS_MAIN_STATUS == 1)
sakthipriya 0:7b4c00e3912f 771 BAE_STATUS = (BAE_STATUS | 0x00001000); //set ACS_MAIN_STATUS flag
sakthipriya 9:194afacf7449 772 else if(ACS_MAIN_STATUS == 0)
sakthipriya 0:7b4c00e3912f 773 BAE_STATUS &= 0xFFFFEFFF; //clear ACS_MAIN_STATUS flag
sakthipriya 0:7b4c00e3912f 774
sakthipriya 0:7b4c00e3912f 775 if(ACS_STATUS == '0')
sakthipriya 0:7b4c00e3912f 776 BAE_STATUS = (BAE_STATUS & 0xFFFF1FFF); // set ACS_STATUS = ACS_CONTROL_OFF
sakthipriya 0:7b4c00e3912f 777 else if(ACS_STATUS == '1')
sakthipriya 0:7b4c00e3912f 778 BAE_STATUS =(BAE_STATUS & 0xFFFF1FFF) | 0x00002000; // set ACS_STATUS = ACS_LOW_POWER
sakthipriya 0:7b4c00e3912f 779 else if(ACS_STATUS == '2')
sakthipriya 0:7b4c00e3912f 780 BAE_STATUS = (BAE_STATUS & 0xFFFF1FFF)| 0x00004000; // set ACS_STATUS = ACS_ZAXIS_MOMENT_ONLY
sakthipriya 0:7b4c00e3912f 781 else if(ACS_STATUS == '3')
sakthipriya 0:7b4c00e3912f 782 BAE_STATUS = (BAE_STATUS & 0xFFFF1FFF) | 0x00006000; // set ACS_STATUS = ACS_DATA_ACQ_FAILURE
sakthipriya 0:7b4c00e3912f 783 else if(ACS_STATUS == '4')
sakthipriya 0:7b4c00e3912f 784 BAE_STATUS = (BAE_STATUS & 0xFFFF1FFF) | 0x00008000; // set ACS_STATUS = ACS_NOMINAL_ONLY
sakthipriya 0:7b4c00e3912f 785 else if(ACS_STATUS == '5')
sakthipriya 0:7b4c00e3912f 786 BAE_STATUS =(BAE_STATUS & 0xFFFF1FFF) | 0x0000A000; // set ACS_STATUS = ACS_AUTO_CONTROL
sakthipriya 0:7b4c00e3912f 787 else if(ACS_STATUS == '6')
sakthipriya 0:7b4c00e3912f 788 BAE_STATUS =(BAE_STATUS & 0xFFFF1FFF) | 0x0000C000; // set ACS_STATUS = ACS_DETUMBLING_ONLY
sakthipriya 0:7b4c00e3912f 789 else
sakthipriya 0:7b4c00e3912f 790 BAE_STATUS =(BAE_STATUS & 0xFFFF1FFF) | 0x0000E000; // set ACS_STATUS = INVALID STATE
sakthipriya 0:7b4c00e3912f 791
sakthipriya 0:7b4c00e3912f 792 if(ACS_STATE == '0')
sakthipriya 0:7b4c00e3912f 793 BAE_ENABLE = (BAE_ENABLE & 0xFFFFFF8F); //ACS_STATE = ACS_CONTROL_OFF
sakthipriya 0:7b4c00e3912f 794 else if(ACS_STATE == '2')
sakthipriya 0:7b4c00e3912f 795 BAE_ENABLE = ((BAE_ENABLE & 0xFFFFFF8F)| 0x00000020); // ACS_STATE = ACS_ZAXIS_MOMENT_ONLY
sakthipriya 0:7b4c00e3912f 796 else if(ACS_STATE == '3')
sakthipriya 0:7b4c00e3912f 797 BAE_ENABLE = ((BAE_ENABLE & 0xFFFFFF8F)| 0x00000030); // set ACS_STATUS = ACS_DATA_ACQ_FAILURE
sakthipriya 0:7b4c00e3912f 798 else if(ACS_STATE == '4')
sakthipriya 0:7b4c00e3912f 799 BAE_ENABLE = ((BAE_ENABLE & 0xFFFFFF8F)| 0x00000040); // ACS_STATE = ACS_NOMINAL_ONLY
sakthipriya 0:7b4c00e3912f 800 else if(ACS_STATE == '5')
sakthipriya 0:7b4c00e3912f 801 BAE_ENABLE = ((BAE_ENABLE & 0xFFFFFF8F)| 0x00000050); // ACS_STATE = ACS_AUTO_CONTROL
sakthipriya 0:7b4c00e3912f 802 else if(ACS_STATE == '6')
sakthipriya 0:7b4c00e3912f 803 BAE_ENABLE = ((BAE_ENABLE & 0xFFFFFF8F)| 0x00000060); //ACS_STATE = ACS_DETUMBLING_CONTROL
sakthipriya 0:7b4c00e3912f 804
sakthipriya 0:7b4c00e3912f 805 //...............eps......................//
sakthipriya 5:bb592f3185cc 806
sakthipriya 5:bb592f3185cc 807
sakthipriya 9:194afacf7449 808 if (EPS_INIT_STATUS==1) // Set EPS_INIT_STATUS
sakthipriya 5:bb592f3185cc 809 BAE_STATUS |= 0x00010000;
sakthipriya 9:194afacf7449 810 else if(EPS_INIT_STATUS==0) // Clear
sakthipriya 5:bb592f3185cc 811 BAE_STATUS &= 0xFFFEFFFF;
sakthipriya 5:bb592f3185cc 812
sakthipriya 5:bb592f3185cc 813
sakthipriya 9:194afacf7449 814 if (EPS_MAIN_STATUS==1) // Set EPS_MAIIN_STATUS
sakthipriya 5:bb592f3185cc 815 BAE_STATUS |= 0x00040000;
sakthipriya 9:194afacf7449 816 else if(EPS_MAIN_STATUS==0) // Clear
sakthipriya 5:bb592f3185cc 817 BAE_STATUS &= 0xFFFBFFFF;
sakthipriya 5:bb592f3185cc 818
sakthipriya 5:bb592f3185cc 819
sakthipriya 9:194afacf7449 820 if (EPS_BATTERY_GAUGE_STATUS==1) // Set EPS_BATTERY_GAUGE_STATUS
sakthipriya 5:bb592f3185cc 821 BAE_STATUS |= 0x00020000;
sakthipriya 9:194afacf7449 822 else if(EPS_BATTERY_GAUGE_STATUS==0) // Clear
sakthipriya 5:bb592f3185cc 823 BAE_STATUS &= 0xFFFDFFFF;
sakthipriya 5:bb592f3185cc 824
sakthipriya 5:bb592f3185cc 825
sakthipriya 9:194afacf7449 826 if (EPS_BATTERY_TEMP_STATUS==1) // Set EPS_BATTERY_TEMP_STATUS
sakthipriya 5:bb592f3185cc 827 BAE_STATUS |= 0x00080000;
sakthipriya 9:194afacf7449 828 else if(EPS_BATTERY_TEMP_STATUS==0) // Clear
sakthipriya 5:bb592f3185cc 829 BAE_STATUS &= 0xFFF7FFFF;
sakthipriya 5:bb592f3185cc 830
sakthipriya 5:bb592f3185cc 831 if (EPS_STATUS==0)
sakthipriya 5:bb592f3185cc 832 BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF); // Set EPS_ERR_BATTERY_TEMP
sakthipriya 5:bb592f3185cc 833 else if (EPS_STATUS==1)
sakthipriya 5:bb592f3185cc 834 BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00010000; // Set EPS_BATTERY_HEATER_DISABLED
sakthipriya 5:bb592f3185cc 835 else if (EPS_STATUS==2)
sakthipriya 5:bb592f3185cc 836 BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00020000; // Set EPS_ERR_HEATER_SWITCH_OFF
sakthipriya 5:bb592f3185cc 837 else if (EPS_STATUS==3)
sakthipriya 5:bb592f3185cc 838 BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00030000; // Set EPS_ERR_HEATER_SWITCH_ON
sakthipriya 5:bb592f3185cc 839 else if (EPS_STATUS==4)
sakthipriya 5:bb592f3185cc 840 BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00040000; // Set EPS_BATTERY_HEATER_OFF
sakthipriya 5:bb592f3185cc 841 else if (EPS_STATUS==5)
sakthipriya 5:bb592f3185cc 842 BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00050000; // Set EPS_BATTERY_HEATER_ON
sakthipriya 5:bb592f3185cc 843
sakthipriya 5:bb592f3185cc 844
sakthipriya 9:194afacf7449 845 if(EPS_BATTERY_HEAT_ENABLE == 1)
sakthipriya 5:bb592f3185cc 846 BAE_ENABLE |= 0x00000080;
sakthipriya 9:194afacf7449 847 else if(EPS_BATTERY_HEAT_ENABLE == 0)
sakthipriya 5:bb592f3185cc 848 BAE_ENABLE = BAE_ENABLE &0xFFFFFF7;
sakthipriya 3:07e15677a75c 849
sakthipriya 0:7b4c00e3912f 850
sakthipriya 0:7b4c00e3912f 851
sakthipriya 0:7b4c00e3912f 852 pc.printf("\n\r BAE status %x BAE ENABLE %x ",BAE_STATUS,BAE_ENABLE);
sakthipriya 0:7b4c00e3912f 853 }
sakthipriya 0:7b4c00e3912f 854
sakthipriya 0:7b4c00e3912f 855 void FCTN_BAE_INIT()
sakthipriya 0:7b4c00e3912f 856 {
lakshya 16:f9e484dc505e 857 printf("\n\r Initialising BAE _________________________________________________________________________________");
lakshya 19:79e69017c855 858 BAE_INIT_STATUS=1;
lakshya 19:79e69017c855 859 FLAG();
lakshya 19:79e69017c855 860
sakthipriya 3:07e15677a75c 861 //..........intial status....//
Bragadeesh153 13:fb7facaf308b 862 ACS_STATE = 4;
sakthipriya 9:194afacf7449 863 ACS_ATS_ENABLE = 1;
sakthipriya 9:194afacf7449 864 ACS_DATA_ACQ_ENABLE = 1;
sakthipriya 9:194afacf7449 865 EPS_BATTERY_HEAT_ENABLE = 1;
Bragadeesh153 13:fb7facaf308b 866 actual_data.power_mode=3;
lakshya 19:79e69017c855 867
sakthipriya 9:194afacf7449 868 //............intializing pins................//
sakthipriya 9:194afacf7449 869 ATS1_SW_ENABLE = 0;
sakthipriya 9:194afacf7449 870 ATS2_SW_ENABLE = 1;
Bragadeesh153 13:fb7facaf308b 871
Bragadeesh153 13:fb7facaf308b 872 DRV_XY_EN = 1;
Bragadeesh153 13:fb7facaf308b 873 DRV_Z_EN = 1;
Bragadeesh153 13:fb7facaf308b 874 TRZ_SW = 1;
Bragadeesh153 13:fb7facaf308b 875 TRXY_SW = 1;
sakthipriya 9:194afacf7449 876
lakshya 19:79e69017c855 877 //...........order mentioned in flow chart.................//
sakthipriya 3:07e15677a75c 878 FCTN_ACS_INIT();
lakshya 17:fc782f7548c6 879 FCTN_EPS_INIT();
lakshya 18:3662058a7c10 880 FCTN_BCN_INIT();
lakshya 19:79e69017c855 881
lakshya 19:79e69017c855 882 uint32_t data_flash=FCTN_BAE_RD_FLASH_ENTITY(0);/*sending the 0 entity as in mms tc/tm bae_reset_counter is present in first 32 bits */
lakshya 19:79e69017c855 883 uint32_t data_modify=data_flash & 0x000000FF;
lakshya 19:79e69017c855 884 data_modify +=1;
lakshya 19:79e69017c855 885 data_modify |=data_flash;
lakshya 19:79e69017c855 886 FCTN_BAE_WR_FLASH(0,data_modify)
lakshya 19:79e69017c855 887 printf("\n\rthe number of reset %d",data_modify);
sakthipriya 3:07e15677a75c 888
lakshya 19:79e69017c855 889 BAE_INIT_STATUS=0;
sakthipriya 0:7b4c00e3912f 890 FLAG();
sakthipriya 0:7b4c00e3912f 891 }
sakthipriya 0:7b4c00e3912f 892
sakthipriya 0:7b4c00e3912f 893 int main()
sakthipriya 0:7b4c00e3912f 894 {
lakshya 19:79e69017c855 895 pc.printf("\n\r BAE Activated. Testing Version 1.2 \n");
Bragadeesh153 13:fb7facaf308b 896 CDMS_RESET = 1;
lakshya 19:79e69017c855 897
lakshya 19:79e69017c855 898 /*BCN_FEN == 0 //dummy implementation removed */
Bragadeesh153 13:fb7facaf308b 899 //FLAG();
sakthipriya 0:7b4c00e3912f 900 FCTN_BAE_INIT();
sakthipriya 3:07e15677a75c 901
sakthipriya 0:7b4c00e3912f 902 slave.address(addr);
sakthipriya 0:7b4c00e3912f 903 irpt_2_mstr = 0;
sakthipriya 0:7b4c00e3912f 904
sakthipriya 0:7b4c00e3912f 905 ptr_t_i2c = new Thread(T_TC);
sakthipriya 0:7b4c00e3912f 906 ptr_t_i2c->set_priority(osPriorityHigh);
sakthipriya 5:bb592f3185cc 907
sakthipriya 0:7b4c00e3912f 908 irpt_4m_mstr.enable_irq();
sakthipriya 0:7b4c00e3912f 909 irpt_4m_mstr.rise(&FCTN_I2C_ISR);
lakshya 19:79e69017c855 910
sakthipriya 0:7b4c00e3912f 911 RtosTimer t_sc_timer(T_SC,osTimerPeriodic); // Initiating the scheduler thread
sakthipriya 0:7b4c00e3912f 912 t_sc_timer.start(10000);
sakthipriya 0:7b4c00e3912f 913 t_start.start();
sakthipriya 0:7b4c00e3912f 914 pc.printf("\n\rStarted scheduler %f\n\r",t_start.read());
sakthipriya 0:7b4c00e3912f 915
lakshya 19:79e69017c855 916 /*if one defines it dynamically then one has to take care that the destuct function is calle everytime BAE resets otheriwse it will lead to memory leakage*/
lakshya 19:79e69017c855 917 //BAE_STANDBY_STATUS_TIMER = new RtosTimer(BAE_STANDBY_STATUS_RESET,osTimerOnce);
lakshya 19:79e69017c855 918
lakshya 19:79e69017c855 919 /*static allocation*/
lakshya 19:79e69017c855 920 RtosTimer STANDBY_TIMER(BAE_STANDBY_STATUS_RESET,osTimerOnce);
lakshya 19:79e69017c855 921 BAE_STANDBY_STATUS_TIMER=&STANDBY_TIMER;
lakshya 18:3662058a7c10 922
lakshya 18:3662058a7c10 923 RtosTimer bcn_start_timer(FCTN_BCN_FEN,osTimerOnce);
lakshya 18:3662058a7c10 924 /*later change it to 30 min 1800 seconds*/
lakshya 19:79e69017c855 925 bcn_start_timer.start(20000);
lakshya 18:3662058a7c10 926
sakthipriya 0:7b4c00e3912f 927 while(1); //required to prevent main from terminating
sakthipriya 3:07e15677a75c 928 }
sakthipriya 3:07e15677a75c 929