Chaitanya Vanapalli
/
rtos_cdms_hk_i2c
hk thread working
Fork of rtos_cdms_testing_trash by
main.cpp@7:6b1a6941ac87, 2014-09-18 (annotated)
- Committer:
- viswa_chaitanya
- Date:
- Thu Sep 18 10:32:43 2014 +0000
- Revision:
- 7:6b1a6941ac87
- Parent:
- 3:c92e21f305d8
working code of cdms with i2c
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emilmont | 1:491820ee784d | 1 | #include "mbed.h" |
emilmont | 1:491820ee784d | 2 | #include "rtos.h" |
viswa_chaitanya | 7:6b1a6941ac87 | 3 | #include "master.h" |
viswa_chaitanya | 7:6b1a6941ac87 | 4 | |
viswa_chaitanya | 7:6b1a6941ac87 | 5 | //#include "tmtc.h" |
viswa_chaitanya | 7:6b1a6941ac87 | 6 | //#include "science.h" |
viswa_chaitanya | 7:6b1a6941ac87 | 7 | //#include "hk.h" |
emilmont | 1:491820ee784d | 8 | |
viswa_chaitanya | 7:6b1a6941ac87 | 9 | #define intmax 11999 |
viswa_chaitanya | 7:6b1a6941ac87 | 10 | |
viswa_chaitanya | 7:6b1a6941ac87 | 11 | Thread* t_tmtc; |
viswa_chaitanya | 7:6b1a6941ac87 | 12 | Thread* t_science_store_sd; |
viswa_chaitanya | 7:6b1a6941ac87 | 13 | Thread* t_hk_store_sd; |
viswa_chaitanya | 7:6b1a6941ac87 | 14 | |
viswa_chaitanya | 7:6b1a6941ac87 | 15 | void t_tmtc_main(void const *args); |
viswa_chaitanya | 7:6b1a6941ac87 | 16 | void t_science_main(void const *args); |
viswa_chaitanya | 7:6b1a6941ac87 | 17 | void t_hk_main(void const *args); |
viswa_chaitanya | 7:6b1a6941ac87 | 18 | void scheduler(void const * args); |
viswa_chaitanya | 7:6b1a6941ac87 | 19 | |
viswa_chaitanya | 7:6b1a6941ac87 | 20 | Timer timer_main; |
viswa_chaitanya | 7:6b1a6941ac87 | 21 | int schedcount = 1; |
viswa_chaitanya | 7:6b1a6941ac87 | 22 | Mutex critical; |
emilmont | 1:491820ee784d | 23 | |
viswa_chaitanya | 7:6b1a6941ac87 | 24 | int main() { |
viswa_chaitanya | 7:6b1a6941ac87 | 25 | Thread thread_tmtc(t_tmtc_main, NULL, osPriorityIdle); |
viswa_chaitanya | 7:6b1a6941ac87 | 26 | t_tmtc = &thread_tmtc; |
viswa_chaitanya | 7:6b1a6941ac87 | 27 | Thread thread_science(t_science_main, NULL, osPriorityLow); |
viswa_chaitanya | 7:6b1a6941ac87 | 28 | t_science_store_sd = &thread_science; |
viswa_chaitanya | 7:6b1a6941ac87 | 29 | Thread thread_hk(t_hk_main, NULL, osPriorityBelowNormal); |
viswa_chaitanya | 7:6b1a6941ac87 | 30 | t_hk_store_sd = &thread_hk; |
viswa_chaitanya | 7:6b1a6941ac87 | 31 | |
viswa_chaitanya | 7:6b1a6941ac87 | 32 | RtosTimer schedule(scheduler,osTimerPeriodic); |
viswa_chaitanya | 7:6b1a6941ac87 | 33 | timer_main.start(); |
viswa_chaitanya | 7:6b1a6941ac87 | 34 | schedule.start(5000); |
viswa_chaitanya | 7:6b1a6941ac87 | 35 | Thread::wait(osWaitForever); |
viswa_chaitanya | 7:6b1a6941ac87 | 36 | } |
viswa_chaitanya | 7:6b1a6941ac87 | 37 | |
viswa_chaitanya | 7:6b1a6941ac87 | 38 | void scheduler(void const * args) |
viswa_chaitanya | 7:6b1a6941ac87 | 39 | { |
viswa_chaitanya | 7:6b1a6941ac87 | 40 | 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. |
viswa_chaitanya | 7:6b1a6941ac87 | 41 | { |
viswa_chaitanya | 7:6b1a6941ac87 | 42 | schedcount =0; |
viswa_chaitanya | 7:6b1a6941ac87 | 43 | } |
viswa_chaitanya | 7:6b1a6941ac87 | 44 | |
viswa_chaitanya | 7:6b1a6941ac87 | 45 | if(schedcount%4==0) |
viswa_chaitanya | 7:6b1a6941ac87 | 46 | { |
viswa_chaitanya | 7:6b1a6941ac87 | 47 | printf("\nHK signal at %f\n",timer_main.read()); |
viswa_chaitanya | 7:6b1a6941ac87 | 48 | t_hk_store_sd->signal_set(0x01); |
viswa_chaitanya | 7:6b1a6941ac87 | 49 | } |
viswa_chaitanya | 7:6b1a6941ac87 | 50 | |
viswa_chaitanya | 7:6b1a6941ac87 | 51 | if(schedcount%3==0) |
viswa_chaitanya | 7:6b1a6941ac87 | 52 | { |
viswa_chaitanya | 7:6b1a6941ac87 | 53 | printf("\nScience signal at %f\n",timer_main.read()); |
viswa_chaitanya | 7:6b1a6941ac87 | 54 | t_science_store_sd->signal_set(0x01); |
viswa_chaitanya | 7:6b1a6941ac87 | 55 | } |
viswa_chaitanya | 7:6b1a6941ac87 | 56 | |
viswa_chaitanya | 7:6b1a6941ac87 | 57 | if(schedcount==5) |
viswa_chaitanya | 7:6b1a6941ac87 | 58 | { |
viswa_chaitanya | 7:6b1a6941ac87 | 59 | printf("\nTMTC signalled"); |
viswa_chaitanya | 7:6b1a6941ac87 | 60 | t_tmtc->signal_set(0x1); |
viswa_chaitanya | 7:6b1a6941ac87 | 61 | } |
viswa_chaitanya | 7:6b1a6941ac87 | 62 | |
viswa_chaitanya | 7:6b1a6941ac87 | 63 | schedcount++; |
viswa_chaitanya | 7:6b1a6941ac87 | 64 | } |
viswa_chaitanya | 7:6b1a6941ac87 | 65 | |
viswa_chaitanya | 7:6b1a6941ac87 | 66 | void t_science_main(void const *args) { |
emilmont | 1:491820ee784d | 67 | while (true) { |
viswa_chaitanya | 7:6b1a6941ac87 | 68 | Thread::signal_wait(0x1); |
viswa_chaitanya | 7:6b1a6941ac87 | 69 | critical.lock(); |
viswa_chaitanya | 7:6b1a6941ac87 | 70 | printf("science data aquisition started\n"); |
viswa_chaitanya | 7:6b1a6941ac87 | 71 | wait(3); |
viswa_chaitanya | 7:6b1a6941ac87 | 72 | printf("science data acquisition ended\n"); |
viswa_chaitanya | 7:6b1a6941ac87 | 73 | t_hk_store_sd->signal_set(0x10); |
viswa_chaitanya | 7:6b1a6941ac87 | 74 | critical.unlock(); |
viswa_chaitanya | 7:6b1a6941ac87 | 75 | wait(3); |
viswa_chaitanya | 7:6b1a6941ac87 | 76 | printf("Science data written to SD card\n"); |
emilmont | 1:491820ee784d | 77 | } |
emilmont | 1:491820ee784d | 78 | } |
viswa_chaitanya | 7:6b1a6941ac87 | 79 | |
viswa_chaitanya | 7:6b1a6941ac87 | 80 | void t_hk_main(void const *args) { |
emilmont | 1:491820ee784d | 81 | while (true) { |
viswa_chaitanya | 7:6b1a6941ac87 | 82 | Thread::signal_wait(0x1); |
viswa_chaitanya | 7:6b1a6941ac87 | 83 | critical.lock(); |
viswa_chaitanya | 7:6b1a6941ac87 | 84 | printf("HK acquisition started\n"); |
viswa_chaitanya | 7:6b1a6941ac87 | 85 | FUNC_I2C_MASTER_MAIN('1',0x20,24 ); |
viswa_chaitanya | 7:6b1a6941ac87 | 86 | wait(2); |
viswa_chaitanya | 7:6b1a6941ac87 | 87 | printf("HK acquisition ended\n"); |
viswa_chaitanya | 7:6b1a6941ac87 | 88 | critical.unlock(); |
viswa_chaitanya | 7:6b1a6941ac87 | 89 | wait(2); |
viswa_chaitanya | 7:6b1a6941ac87 | 90 | printf("HK data written to SD card"); |
emilmont | 1:491820ee784d | 91 | } |
emilmont | 1:491820ee784d | 92 | } |
viswa_chaitanya | 7:6b1a6941ac87 | 93 | |
viswa_chaitanya | 7:6b1a6941ac87 | 94 | void t_tmtc_main(void const *args) { |
viswa_chaitanya | 7:6b1a6941ac87 | 95 | Thread::signal_wait(0x1); |
viswa_chaitanya | 7:6b1a6941ac87 | 96 | critical.lock(); |
viswa_chaitanya | 7:6b1a6941ac87 | 97 | printf("tmtc started\n"); |
viswa_chaitanya | 7:6b1a6941ac87 | 98 | wait(5); |
viswa_chaitanya | 7:6b1a6941ac87 | 99 | printf("tmtc ended\n"); |
viswa_chaitanya | 7:6b1a6941ac87 | 100 | critical.unlock(); |
viswa_chaitanya | 7:6b1a6941ac87 | 101 | wait(5); |
viswa_chaitanya | 7:6b1a6941ac87 | 102 | printf("tmtc executed\n"); |
viswa_chaitanya | 7:6b1a6941ac87 | 103 | } |