reset prob solved n cdms reforms the structure from hk data

Dependencies:   mbed-rtos mbed

Committer:
sakthipriya
Date:
Thu Dec 18 12:20:47 2014 +0000
Revision:
0:93514bd41116
reset prob solved n cdms reforms the structure from hk data

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sakthipriya 0:93514bd41116 1 #include "mbed.h"
sakthipriya 0:93514bd41116 2 #include "rtos.h"
sakthipriya 0:93514bd41116 3 #include "HK.h"
sakthipriya 0:93514bd41116 4 #include "slave.h"
sakthipriya 0:93514bd41116 5 #include "beacon.h"
sakthipriya 0:93514bd41116 6 #include "ACS.h"
sakthipriya 0:93514bd41116 7 #include "fault.h"
sakthipriya 0:93514bd41116 8 #include "slave.h"
sakthipriya 0:93514bd41116 9
sakthipriya 0:93514bd41116 10 Serial pc(USBTX, USBRX);
sakthipriya 0:93514bd41116 11
sakthipriya 0:93514bd41116 12 InterruptIn interrupt(D9);
sakthipriya 0:93514bd41116 13 InterruptIn master_reset(D11);
sakthipriya 0:93514bd41116 14
sakthipriya 0:93514bd41116 15
sakthipriya 0:93514bd41116 16 Timer t; //To know the time of execution each thread
sakthipriya 0:93514bd41116 17 Timer t1;
sakthipriya 0:93514bd41116 18 //To know the time of entering of each thread
sakthipriya 0:93514bd41116 19
sakthipriya 0:93514bd41116 20 Thread *ptr_t_hk_acq;
sakthipriya 0:93514bd41116 21 Thread *ptr_t_acs;
sakthipriya 0:93514bd41116 22 //Thread *ptr_t_acs_write2flash;
sakthipriya 0:93514bd41116 23 Thread *ptr_t_bea;
sakthipriya 0:93514bd41116 24 //Thread *ptr_t_bea_telecommand;
sakthipriya 0:93514bd41116 25 //Thread *ptr_t_fault;
sakthipriya 0:93514bd41116 26 Thread *ptr_t_i2c;
sakthipriya 0:93514bd41116 27 Thread *ptr_t_wdt;
sakthipriya 0:93514bd41116 28
sakthipriya 0:93514bd41116 29
sakthipriya 0:93514bd41116 30
sakthipriya 0:93514bd41116 31 I2CSlave slave(D14,D15); //configuring pins p27, p28 as I2Cslave
sakthipriya 0:93514bd41116 32
sakthipriya 0:93514bd41116 33
sakthipriya 0:93514bd41116 34 DigitalOut data_ready(D10);
sakthipriya 0:93514bd41116 35 int i2c_status=0; //read/write mode for i2c 0 : write2slave, 1 : write2master
sakthipriya 0:93514bd41116 36 int reset=0;
sakthipriya 0:93514bd41116 37 int temp;
sakthipriya 0:93514bd41116 38
sakthipriya 0:93514bd41116 39 typedef struct
sakthipriya 0:93514bd41116 40 {
sakthipriya 0:93514bd41116 41 char data[25]; // To avoid dynamic memory allocation
sakthipriya 0:93514bd41116 42 int length;
sakthipriya 0:93514bd41116 43 }i2c_data;
sakthipriya 0:93514bd41116 44
sakthipriya 0:93514bd41116 45
sakthipriya 0:93514bd41116 46
sakthipriya 0:93514bd41116 47
sakthipriya 0:93514bd41116 48
sakthipriya 0:93514bd41116 49
sakthipriya 0:93514bd41116 50 //Mail<i2c_data,16> i2c_data_receive;
sakthipriya 0:93514bd41116 51 Mail<i2c_data,16> i2c_data_send;
sakthipriya 0:93514bd41116 52
sakthipriya 0:93514bd41116 53 //--------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 54 //TASK 2 : HK
sakthipriya 0:93514bd41116 55 //--------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 56
sakthipriya 0:93514bd41116 57 char hk_data[25];
sakthipriya 0:93514bd41116 58 extern SensorDataQuantised SensorQuantised;
sakthipriya 0:93514bd41116 59 void T_HK_ACQ(void const *args)
sakthipriya 0:93514bd41116 60 {
sakthipriya 0:93514bd41116 61
sakthipriya 0:93514bd41116 62 while(1)
sakthipriya 0:93514bd41116 63 {
sakthipriya 0:93514bd41116 64 Thread::signal_wait(0x2);
sakthipriya 0:93514bd41116 65 SensorQuantised.power_mode='0';
sakthipriya 0:93514bd41116 66 printf("\nTHIS IS HK %f\n",t1.read());
sakthipriya 0:93514bd41116 67 t.start();
sakthipriya 0:93514bd41116 68 FUNC_HK_FAULTS();
sakthipriya 0:93514bd41116 69 FUNC_HK_POWER(SensorQuantised.power_mode); //The power mode algorithm is yet to be obtained
sakthipriya 0:93514bd41116 70 FUNC_HK_MAIN(); //Collecting HK data
sakthipriya 0:93514bd41116 71 //thread_2.signal_set(0x4);
sakthipriya 0:93514bd41116 72 //FUNC_I2C_SLAVE_MAIN(25);
sakthipriya 0:93514bd41116 73 FUNC_I2C_IR2CDMS();
sakthipriya 0:93514bd41116 74 t.stop();
sakthipriya 0:93514bd41116 75 printf("The time to execute hk_acq is %f seconds\n",t.read());
sakthipriya 0:93514bd41116 76 t.reset();
sakthipriya 0:93514bd41116 77 }
sakthipriya 0:93514bd41116 78 }
sakthipriya 0:93514bd41116 79
sakthipriya 0:93514bd41116 80 //---------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 81 //TASK 1 : ACS
sakthipriya 0:93514bd41116 82 //---------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 83
sakthipriya 0:93514bd41116 84 int acs_pflag = 1;
sakthipriya 0:93514bd41116 85 void T_ACS(void const *args)
sakthipriya 0:93514bd41116 86 {
sakthipriya 0:93514bd41116 87 float *mag_field;
sakthipriya 0:93514bd41116 88 float *omega;
sakthipriya 0:93514bd41116 89 float *moment;
sakthipriya 0:93514bd41116 90 while(1)
sakthipriya 0:93514bd41116 91 {
sakthipriya 0:93514bd41116 92 Thread::signal_wait(0x1);
sakthipriya 0:93514bd41116 93 printf("\nTHIS IS ACS %f\n",t1.read());
sakthipriya 0:93514bd41116 94 t.start();
sakthipriya 0:93514bd41116 95 mag_field= FUNC_ACS_MAG_EXEC(); //actual execution
sakthipriya 0:93514bd41116 96 omega = FUNC_ACS_EXEC_GYR();
sakthipriya 0:93514bd41116 97
sakthipriya 0:93514bd41116 98
sakthipriya 0:93514bd41116 99
sakthipriya 0:93514bd41116 100 if(acs_pflag == 1)
sakthipriya 0:93514bd41116 101 {
sakthipriya 0:93514bd41116 102 moment = FUNC_ACS_CNTRLALGO(mag_field,omega);
sakthipriya 0:93514bd41116 103 FUNC_ACS_GENPWM(moment);
sakthipriya 0:93514bd41116 104 }
sakthipriya 0:93514bd41116 105
sakthipriya 0:93514bd41116 106 t.reset();
sakthipriya 0:93514bd41116 107 }
sakthipriya 0:93514bd41116 108 }
sakthipriya 0:93514bd41116 109 /*
sakthipriya 0:93514bd41116 110 void T_ACS_WRITE2FLASH(void const *args)
sakthipriya 0:93514bd41116 111 {
sakthipriya 0:93514bd41116 112 while(1)
sakthipriya 0:93514bd41116 113 {
sakthipriya 0:93514bd41116 114 //printf("Writing in the flash\n");
sakthipriya 0:93514bd41116 115 osEvent evt = q_acs.get();
sakthipriya 0:93514bd41116 116 if(evt.status == osEventMail)
sakthipriya 0:93514bd41116 117 {
sakthipriya 0:93514bd41116 118 sensor_data *ptr = (sensor_data*)evt.value.p;
sakthipriya 0:93514bd41116 119 FUNC_ACS_WRITE2FLASH(ptr);
sakthipriya 0:93514bd41116 120 q_acs.free(ptr);
sakthipriya 0:93514bd41116 121 }
sakthipriya 0:93514bd41116 122 printf("Writing acs data in the flash\n");
sakthipriya 0:93514bd41116 123 }
sakthipriya 0:93514bd41116 124 }
sakthipriya 0:93514bd41116 125
sakthipriya 0:93514bd41116 126 */
sakthipriya 0:93514bd41116 127 //---------------------------------------------------BEACON--------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 128
sakthipriya 0:93514bd41116 129 int beac_flag=0; //To receive telecommand from ground.
sakthipriya 0:93514bd41116 130
sakthipriya 0:93514bd41116 131
sakthipriya 0:93514bd41116 132 /*void T_BEA_TELECOMMAND(void const *args)
sakthipriya 0:93514bd41116 133 {
sakthipriya 0:93514bd41116 134 char c = pc.getc();
sakthipriya 0:93514bd41116 135 if(c=='a')
sakthipriya 0:93514bd41116 136 {
sakthipriya 0:93514bd41116 137 printf("Telecommand detected\n");
sakthipriya 0:93514bd41116 138 beac_flag=1;
sakthipriya 0:93514bd41116 139 }
sakthipriya 0:93514bd41116 140 }
sakthipriya 0:93514bd41116 141 */
sakthipriya 0:93514bd41116 142
sakthipriya 0:93514bd41116 143 void T_BEA(void const *args)
sakthipriya 0:93514bd41116 144 {
sakthipriya 0:93514bd41116 145
sakthipriya 0:93514bd41116 146 while(1)
sakthipriya 0:93514bd41116 147 {
sakthipriya 0:93514bd41116 148 Thread::signal_wait(0x3);
sakthipriya 0:93514bd41116 149 printf("\nTHIS IS BEACON %f\n",t1.read());
sakthipriya 0:93514bd41116 150 t.start();
sakthipriya 0:93514bd41116 151
sakthipriya 0:93514bd41116 152
sakthipriya 0:93514bd41116 153
sakthipriya 0:93514bd41116 154 FUNC_BEA();
sakthipriya 0:93514bd41116 155
sakthipriya 0:93514bd41116 156
sakthipriya 0:93514bd41116 157 if(beac_flag==1)
sakthipriya 0:93514bd41116 158 {
sakthipriya 0:93514bd41116 159 Thread::wait(600000);
sakthipriya 0:93514bd41116 160 beac_flag = 0;
sakthipriya 0:93514bd41116 161 }
sakthipriya 0:93514bd41116 162
sakthipriya 0:93514bd41116 163 printf("The time to execute beacon thread is %f seconds\n",t.read());
sakthipriya 0:93514bd41116 164 t.reset();
sakthipriya 0:93514bd41116 165 }
sakthipriya 0:93514bd41116 166 }
sakthipriya 0:93514bd41116 167
sakthipriya 0:93514bd41116 168 //---------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 169 //TASK 4 : FAULT MANAGEMENT
sakthipriya 0:93514bd41116 170 //---------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 171 //Dummy fault rectifier functions
sakthipriya 0:93514bd41116 172
sakthipriya 0:93514bd41116 173 /*Mail<int,16> faults;
sakthipriya 0:93514bd41116 174
sakthipriya 0:93514bd41116 175 void FUNC_FAULT_FUNCT1()
sakthipriya 0:93514bd41116 176 {
sakthipriya 0:93514bd41116 177 printf("\nFault 1 detected... \n");
sakthipriya 0:93514bd41116 178 }
sakthipriya 0:93514bd41116 179
sakthipriya 0:93514bd41116 180 void FUNC_FAULT_FUNCT2()
sakthipriya 0:93514bd41116 181 {
sakthipriya 0:93514bd41116 182 printf("\nFault 2 detected...\n");
sakthipriya 0:93514bd41116 183 }
sakthipriya 0:93514bd41116 184
sakthipriya 0:93514bd41116 185 void T_FAULT(void const *args)
sakthipriya 0:93514bd41116 186 {
sakthipriya 0:93514bd41116 187 while(1)
sakthipriya 0:93514bd41116 188 {
sakthipriya 0:93514bd41116 189 osEvent evt = faults.get();
sakthipriya 0:93514bd41116 190 if(evt.status==osEventMail)
sakthipriya 0:93514bd41116 191 {
sakthipriya 0:93514bd41116 192 int *fault_id= (int *)evt.value.p;
sakthipriya 0:93514bd41116 193 switch(*fault_id)
sakthipriya 0:93514bd41116 194 {
sakthipriya 0:93514bd41116 195 case 1: FUNC_FAULT_FUNCT1();
sakthipriya 0:93514bd41116 196 break;
sakthipriya 0:93514bd41116 197 case 2: FUNC_FAULT_FUNCT2();
sakthipriya 0:93514bd41116 198 break;
sakthipriya 0:93514bd41116 199 }
sakthipriya 0:93514bd41116 200 faults.free(fault_id);
sakthipriya 0:93514bd41116 201 }
sakthipriya 0:93514bd41116 202 }
sakthipriya 0:93514bd41116 203 }*/
sakthipriya 0:93514bd41116 204
sakthipriya 0:93514bd41116 205 extern SensorDataQuantised SensorQuantised;
sakthipriya 0:93514bd41116 206
sakthipriya 0:93514bd41116 207
sakthipriya 0:93514bd41116 208 /*void T_FAULT(void const *args)
sakthipriya 0:93514bd41116 209 {
sakthipriya 0:93514bd41116 210 Sensor.power_mode='0';
sakthipriya 0:93514bd41116 211 while(1)
sakthipriya 0:93514bd41116 212 {
sakthipriya 0:93514bd41116 213 Thread :: signal_wait(0x2);
sakthipriya 0:93514bd41116 214 FAULTS();
sakthipriya 0:93514bd41116 215 POWER(Sensor.power_mode);
sakthipriya 0:93514bd41116 216 //Sensor.power_mode++; //testing ... should be removed
sakthipriya 0:93514bd41116 217 }
sakthipriya 0:93514bd41116 218 }
sakthipriya 0:93514bd41116 219 */
sakthipriya 0:93514bd41116 220 /*-------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 221 -------------------------------------------------------WATCHDOG----------------------------------------------------------------------------*/
sakthipriya 0:93514bd41116 222 DigitalOut trigger(PIN63); // has to be changed
sakthipriya 0:93514bd41116 223 void T_WDT(void const * args)
sakthipriya 0:93514bd41116 224 {
sakthipriya 0:93514bd41116 225 trigger = 1;
sakthipriya 0:93514bd41116 226 while(true)
sakthipriya 0:93514bd41116 227 {
sakthipriya 0:93514bd41116 228 Thread::signal_wait(0x5); //signal set from scheduler or sthing. r RTOS timer nce the timing is finalized
sakthipriya 0:93514bd41116 229 printf("\nEntered WD\n");
sakthipriya 0:93514bd41116 230 trigger = !trigger;
sakthipriya 0:93514bd41116 231 }
sakthipriya 0:93514bd41116 232 }
sakthipriya 0:93514bd41116 233
sakthipriya 0:93514bd41116 234 //---------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 235 //TASK 5 : i2c data
sakthipriya 0:93514bd41116 236 //---------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 237
sakthipriya 0:93514bd41116 238
sakthipriya 0:93514bd41116 239
sakthipriya 0:93514bd41116 240
sakthipriya 0:93514bd41116 241
sakthipriya 0:93514bd41116 242
sakthipriya 0:93514bd41116 243 void FUNC_I2C_WRITE2CDMS(char *data, int length=1)
sakthipriya 0:93514bd41116 244 {
sakthipriya 0:93514bd41116 245 int slave_status = 1;
sakthipriya 0:93514bd41116 246
sakthipriya 0:93514bd41116 247 while(slave_status)
sakthipriya 0:93514bd41116 248 {
sakthipriya 0:93514bd41116 249 slave.address(0x20);
sakthipriya 0:93514bd41116 250 if(slave.receive()==1)
sakthipriya 0:93514bd41116 251 {
sakthipriya 0:93514bd41116 252 slave_status=slave.write(data,length);
sakthipriya 0:93514bd41116 253
sakthipriya 0:93514bd41116 254
sakthipriya 0:93514bd41116 255 }
sakthipriya 0:93514bd41116 256 else if(slave.receive()==3 || slave.receive()==2)
sakthipriya 0:93514bd41116 257 {
sakthipriya 0:93514bd41116 258 slave_status=slave.read(data,length);
sakthipriya 0:93514bd41116 259 }
sakthipriya 0:93514bd41116 260
sakthipriya 0:93514bd41116 261 }
sakthipriya 0:93514bd41116 262
sakthipriya 0:93514bd41116 263 printf("\ndone\n\r");
sakthipriya 0:93514bd41116 264
sakthipriya 0:93514bd41116 265 }
sakthipriya 0:93514bd41116 266 char data_send[25],data_receive;
sakthipriya 0:93514bd41116 267 void T_I2C_BAE(void const * args)
sakthipriya 0:93514bd41116 268 {
sakthipriya 0:93514bd41116 269 //char data_send,data_receive;
sakthipriya 0:93514bd41116 270 while(1)
sakthipriya 0:93514bd41116 271 {
sakthipriya 0:93514bd41116 272 Thread::signal_wait(0x4);
sakthipriya 0:93514bd41116 273 //T_I2C_BAE();
sakthipriya 0:93514bd41116 274 //i2c_status = temp;
sakthipriya 0:93514bd41116 275 //wait(0.5);
sakthipriya 0:93514bd41116 276 printf("\n entered thread %d\n\r",i2c_status);
sakthipriya 0:93514bd41116 277 if(i2c_status == 0 && reset !=1)
sakthipriya 0:93514bd41116 278 {
sakthipriya 0:93514bd41116 279
sakthipriya 0:93514bd41116 280 FUNC_I2C_WRITE2CDMS(&data_receive,1);
sakthipriya 0:93514bd41116 281 printf("\n received\n");
sakthipriya 0:93514bd41116 282 /*i2c_data * i2c_data_r = i2c_data_receive.alloc();
sakthipriya 0:93514bd41116 283 i2c_data_r->data = data_receive;
sakthipriya 0:93514bd41116 284 i2c_data_r->length = 1;
sakthipriya 0:93514bd41116 285 i2c_data_receive.put(i2c_data_r);*/
sakthipriya 0:93514bd41116 286 printf("\n Data received from CDMS is %c \n\r",data_receive);
sakthipriya 0:93514bd41116 287 FUNC_I2C_TC_EXECUTE(data_receive); // This has to be done from a differen thread
sakthipriya 0:93514bd41116 288
sakthipriya 0:93514bd41116 289 }
sakthipriya 0:93514bd41116 290 else if(i2c_status ==1 && reset !=1)
sakthipriya 0:93514bd41116 291 {
sakthipriya 0:93514bd41116 292 osEvent evt = i2c_data_send.get();
sakthipriya 0:93514bd41116 293 if (evt.status == osEventMail)
sakthipriya 0:93514bd41116 294 {
sakthipriya 0:93514bd41116 295 i2c_data *i2c_data_s = (i2c_data*)evt.value.p;
sakthipriya 0:93514bd41116 296 strcpy(data_send,i2c_data_s -> data);
sakthipriya 0:93514bd41116 297 FUNC_I2C_WRITE2CDMS(data_send,25);
sakthipriya 0:93514bd41116 298 printf("\nData sent to CDMS is %s\n\r",data_send);
sakthipriya 0:93514bd41116 299 i2c_data_send.free(i2c_data_s);
sakthipriya 0:93514bd41116 300 i2c_status = 0;
sakthipriya 0:93514bd41116 301 //temp = i2c_status;
sakthipriya 0:93514bd41116 302
sakthipriya 0:93514bd41116 303 }
sakthipriya 0:93514bd41116 304 }
sakthipriya 0:93514bd41116 305
sakthipriya 0:93514bd41116 306 }
sakthipriya 0:93514bd41116 307 }
sakthipriya 0:93514bd41116 308
sakthipriya 0:93514bd41116 309
sakthipriya 0:93514bd41116 310
sakthipriya 0:93514bd41116 311 void FUNC_I2C_INT()
sakthipriya 0:93514bd41116 312 {
sakthipriya 0:93514bd41116 313 reset = 0;
sakthipriya 0:93514bd41116 314 ptr_t_i2c->signal_set(0x4);
sakthipriya 0:93514bd41116 315
sakthipriya 0:93514bd41116 316
sakthipriya 0:93514bd41116 317 }
sakthipriya 0:93514bd41116 318
sakthipriya 0:93514bd41116 319 void FUNC_I2C_RESET()
sakthipriya 0:93514bd41116 320 {
sakthipriya 0:93514bd41116 321 reset = 1;
sakthipriya 0:93514bd41116 322 }
sakthipriya 0:93514bd41116 323
sakthipriya 0:93514bd41116 324
sakthipriya 0:93514bd41116 325
sakthipriya 0:93514bd41116 326 void FUNC_I2C_IR2CDMS()
sakthipriya 0:93514bd41116 327 {
sakthipriya 0:93514bd41116 328
sakthipriya 0:93514bd41116 329
sakthipriya 0:93514bd41116 330 strcpy(hk_data,SensorQuantised.Voltage);
sakthipriya 0:93514bd41116 331 strcat(hk_data,SensorQuantised.Current);
sakthipriya 0:93514bd41116 332 strcat(hk_data,SensorQuantised.Temperature);
sakthipriya 0:93514bd41116 333 strcat(hk_data,SensorQuantised.PanelTemperature);
sakthipriya 0:93514bd41116 334 strcat(hk_data,SensorQuantised.AngularSpeed);
sakthipriya 0:93514bd41116 335 strcat(hk_data,SensorQuantised.Bnewvalue);
sakthipriya 0:93514bd41116 336 char fdata[5] = {SensorQuantised.BatteryTemperature,SensorQuantised.faultpoll,SensorQuantised.faultir,SensorQuantised.power_mode};
sakthipriya 0:93514bd41116 337 strcat(hk_data,fdata);
sakthipriya 0:93514bd41116 338 //strcpy(hk_data,"voltage-crn-0371234awbt"); //to test if cdms forms the original structure from hk data sent
sakthipriya 0:93514bd41116 339 printf("\nhk data : %s\n",hk_data);
sakthipriya 0:93514bd41116 340 data_ready=0;
sakthipriya 0:93514bd41116 341 //data = pcslave.getc();
sakthipriya 0:93514bd41116 342 reset =0;
sakthipriya 0:93514bd41116 343 i2c_status=1;
sakthipriya 0:93514bd41116 344 i2c_data * i2c_data_s = i2c_data_send.alloc();
sakthipriya 0:93514bd41116 345 strcpy(i2c_data_s->data,hk_data);
sakthipriya 0:93514bd41116 346 i2c_data_s->length = 25;
sakthipriya 0:93514bd41116 347 i2c_data_send.put(i2c_data_s);
sakthipriya 0:93514bd41116 348 data_ready=1;
sakthipriya 0:93514bd41116 349 //temp = i2c_status;
sakthipriya 0:93514bd41116 350 }
sakthipriya 0:93514bd41116 351
sakthipriya 0:93514bd41116 352
sakthipriya 0:93514bd41116 353 //------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 354 //TELECOMMAND
sakthipriya 0:93514bd41116 355 //------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 356 void FUNC_I2C_TC_EXECUTE (char command)
sakthipriya 0:93514bd41116 357 { switch(command)
sakthipriya 0:93514bd41116 358 { case '0' : printf("command 0 executed");
sakthipriya 0:93514bd41116 359 break;
sakthipriya 0:93514bd41116 360 case '1' : printf("command 1 executed");
sakthipriya 0:93514bd41116 361 break;
sakthipriya 0:93514bd41116 362 case '2' : printf("command 2 executed");
sakthipriya 0:93514bd41116 363 break;
sakthipriya 0:93514bd41116 364 case '3' : printf("command 3 executed");
sakthipriya 0:93514bd41116 365 }
sakthipriya 0:93514bd41116 366 }
sakthipriya 0:93514bd41116 367
sakthipriya 0:93514bd41116 368
sakthipriya 0:93514bd41116 369 //------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 370 //SCHEDULER
sakthipriya 0:93514bd41116 371 //------------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 372 int beacon_sc = 3;
sakthipriya 0:93514bd41116 373 uint16_t schedcount=1;
sakthipriya 0:93514bd41116 374 void T_SC(void const *args)
sakthipriya 0:93514bd41116 375 {
sakthipriya 0:93514bd41116 376
sakthipriya 0:93514bd41116 377 printf("The value of i in scheduler is %d\n",schedcount);
sakthipriya 0:93514bd41116 378 if(schedcount == 65532) //to reset the counter
sakthipriya 0:93514bd41116 379 {
sakthipriya 0:93514bd41116 380 schedcount = 0;
sakthipriya 0:93514bd41116 381 }
sakthipriya 0:93514bd41116 382
sakthipriya 0:93514bd41116 383 if(schedcount%1==0)
sakthipriya 0:93514bd41116 384 {
sakthipriya 0:93514bd41116 385 ptr_t_acs -> signal_set(0x1);
sakthipriya 0:93514bd41116 386 ptr_t_wdt -> signal_set(0x5);
sakthipriya 0:93514bd41116 387 }
sakthipriya 0:93514bd41116 388 if(schedcount%2==0)
sakthipriya 0:93514bd41116 389 {
sakthipriya 0:93514bd41116 390 //ptr_t_fault -> signal_set(0x2);
sakthipriya 0:93514bd41116 391 ptr_t_hk_acq -> signal_set(0x2);
sakthipriya 0:93514bd41116 392
sakthipriya 0:93514bd41116 393 }
sakthipriya 0:93514bd41116 394 if(schedcount%beacon_sc==0)
sakthipriya 0:93514bd41116 395 {
sakthipriya 0:93514bd41116 396 if(beac_flag==0)
sakthipriya 0:93514bd41116 397 {
sakthipriya 0:93514bd41116 398
sakthipriya 0:93514bd41116 399 //ptr_t_bea -> signal_set(0x3);
sakthipriya 0:93514bd41116 400 }
sakthipriya 0:93514bd41116 401 }
sakthipriya 0:93514bd41116 402 schedcount++;
sakthipriya 0:93514bd41116 403 }
sakthipriya 0:93514bd41116 404
sakthipriya 0:93514bd41116 405 //---------------------------------------------------------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 406
sakthipriya 0:93514bd41116 407 int main()
sakthipriya 0:93514bd41116 408 {
sakthipriya 0:93514bd41116 409 t1.start();
sakthipriya 0:93514bd41116 410
sakthipriya 0:93514bd41116 411 ptr_t_hk_acq = new Thread(T_HK_ACQ);
sakthipriya 0:93514bd41116 412 ptr_t_acs = new Thread(T_ACS);
sakthipriya 0:93514bd41116 413 //ptr_t_acs_write2flash = new Thread(T_ACS_WRITE2FLASH);
sakthipriya 0:93514bd41116 414 ptr_t_bea = new Thread(T_BEA);
sakthipriya 0:93514bd41116 415 //ptr_t_bea_telecommand = new Thread(T_BEA_TELECOMMAND);
sakthipriya 0:93514bd41116 416 //ptr_t_fault = new Thread(T_FAULT);
sakthipriya 0:93514bd41116 417 ptr_t_i2c = new Thread(T_I2C_BAE);
sakthipriya 0:93514bd41116 418 //ptr_t_sc = new Thread(T_SC);
sakthipriya 0:93514bd41116 419 ptr_t_wdt = new Thread(T_WDT);
sakthipriya 0:93514bd41116 420
sakthipriya 0:93514bd41116 421 interrupt_fault();
sakthipriya 0:93514bd41116 422
sakthipriya 0:93514bd41116 423 //ptr_t_fault -> set_priority(osPriorityRealtime);
sakthipriya 0:93514bd41116 424 ptr_t_acs->set_priority(osPriorityAboveNormal);
sakthipriya 0:93514bd41116 425 ptr_t_i2c->set_priority(osPriorityHigh);
sakthipriya 0:93514bd41116 426 ptr_t_hk_acq->set_priority(osPriorityAboveNormal);
sakthipriya 0:93514bd41116 427 //ptr_t_acs_write2flash->set_priority(osPriorityBelowNormal);
sakthipriya 0:93514bd41116 428 ptr_t_bea->set_priority(osPriorityAboveNormal);
sakthipriya 0:93514bd41116 429 //ptr_t_bea_telecommand->set_priority(osPriorityIdle);
sakthipriya 0:93514bd41116 430 //ptr_t_sc->set_priority(osPriorityAboveNormal);
sakthipriya 0:93514bd41116 431 ptr_t_wdt -> set_priority(osPriorityIdle);
sakthipriya 0:93514bd41116 432
sakthipriya 0:93514bd41116 433
sakthipriya 0:93514bd41116 434 // ----------------------------------------------------------------------------------------------
sakthipriya 0:93514bd41116 435 //printf("\n T_FAULT priority is %d",ptr_t_fault->get_priority());
sakthipriya 0:93514bd41116 436 printf("\n T_ACS priority is %d",ptr_t_acs->get_priority());
sakthipriya 0:93514bd41116 437 printf("\n T_HK_ACQ priority is %d",ptr_t_hk_acq->get_priority());
sakthipriya 0:93514bd41116 438 //printf("\n T_ACS_WRITE2FLASH priority is %d",ptr_t_acs_write2flash->get_priority());
sakthipriya 0:93514bd41116 439 printf("\n T_BEA priority is %d",ptr_t_bea->get_priority());
sakthipriya 0:93514bd41116 440 RtosTimer t_sc_timer(T_SC,osTimerPeriodic);
sakthipriya 0:93514bd41116 441 t_sc_timer.start(10000);
sakthipriya 0:93514bd41116 442 printf("\n%f\n",t1.read());
sakthipriya 0:93514bd41116 443
sakthipriya 0:93514bd41116 444
sakthipriya 0:93514bd41116 445
sakthipriya 0:93514bd41116 446 master_reset.fall(&FUNC_I2C_RESET);
sakthipriya 0:93514bd41116 447 interrupt.rise(&FUNC_I2C_INT);
sakthipriya 0:93514bd41116 448
sakthipriya 0:93514bd41116 449 while(1)
sakthipriya 0:93514bd41116 450 {
sakthipriya 0:93514bd41116 451 //Thread::wait(10000);
sakthipriya 0:93514bd41116 452 //ir2master();
sakthipriya 0:93514bd41116 453 Thread::wait(5000);
sakthipriya 0:93514bd41116 454 }
sakthipriya 0:93514bd41116 455
sakthipriya 0:93514bd41116 456 }