for checking i2c with integrated bae

Dependencies:   SDFileSystem mbed-rtos mbed

Revision:
0:cb112a717428
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Sep 15 14:01:49 2014 +0000
@@ -0,0 +1,103 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "master.h"
+
+//#include "tmtc.h"
+//#include "science.h"
+//#include "hk.h"
+ 
+#define intmax 11999
+
+Thread* t_tmtc;
+Thread* t_science_store_sd;
+Thread* t_hk_store_sd;
+
+void t_tmtc_main(void const *args);
+void t_science_main(void const *args);
+void t_hk_main(void const *args);
+void scheduler(void const * args);
+
+Timer timer_main;
+int schedcount = 1;
+Mutex critical;
+ 
+int main() {
+    Thread thread_tmtc(t_tmtc_main, NULL, osPriorityIdle);
+    t_tmtc = &thread_tmtc;
+    Thread thread_science(t_science_main, NULL, osPriorityLow);
+    t_science_store_sd = &thread_science;
+    Thread thread_hk(t_hk_main, NULL, osPriorityBelowNormal);
+    t_hk_store_sd = &thread_hk;
+        
+    RtosTimer schedule(scheduler,osTimerPeriodic);
+    timer_main.start();
+    schedule.start(5000);
+    Thread::wait(osWaitForever);
+}
+
+void scheduler(void const * args)
+{
+    if(schedcount == intmax+1)                              //the value is reset at this value so as to ensure smooth flow, 65532 and 0 are divisible by 3 and 2.
+    {
+        schedcount =0;
+    }
+         
+    if(schedcount%4==0)
+    {
+        printf("\nHK signal at %f\n",timer_main.read());
+        t_hk_store_sd->signal_set(0x01);
+    }
+    
+    if(schedcount%3==0)
+    {
+        printf("\nScience signal at %f\n",timer_main.read());
+        t_science_store_sd->signal_set(0x01);
+    }
+    
+    if(schedcount==5)
+    {
+        printf("\nTMTC signalled");
+        t_tmtc->signal_set(0x1);
+    }
+    
+    schedcount++;
+}
+
+void t_science_main(void const *args) {
+    while (true) {
+        Thread::signal_wait(0x1);       
+        critical.lock();
+        printf("science data aquisition started\n");
+        wait(3);
+        printf("science data acquisition ended\n");
+        t_hk_store_sd->signal_set(0x10);
+        critical.unlock();
+        wait(3);
+        printf("Science data written to SD card\n");
+    }
+}
+
+void t_hk_main(void const *args) {
+    while (true) {
+        Thread::signal_wait(0x1);
+        critical.lock();
+        printf("HK acquisition started\n");
+        //FUNC_I2C_MASTER_MAIN(1,0x20,24 );
+        wait(2);
+        printf("HK acquisition ended\n");
+        critical.unlock();
+        wait(2);
+        printf("HK data written to SD card");
+    }
+}
+
+void t_tmtc_main(void const *args) {
+    Thread::signal_wait(0x1);
+    critical.lock();
+    printf("tmtc started\n");
+    wait(5);
+    printf("tmtc ended\n");
+    critical.unlock();
+    wait(5);
+    printf("tmtc executed\n");
+}
\ No newline at end of file