TELECOMMAND MANAGER V1
Dependencies: mbed SLCD mbed-rtos
main.cpp@7:e71ecfe3a340, 2015-07-06 (annotated)
- Committer:
- shreeshas95
- Date:
- Mon Jul 06 05:00:29 2015 +0000
- Revision:
- 7:e71ecfe3a340
- Parent:
- 6:6e9ae3b44e60
- Child:
- 8:cb93c1d3209a
TRYING THREAD, TESTING, TO BE IMPROVED
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shreeshas95 | 3:eec1097c0dd6 | 1 | #include "mbed.h" |
shreeshas95 | 7:e71ecfe3a340 | 2 | #include "rtos.h" |
shreeshas95 | 6:6e9ae3b44e60 | 3 | #define ENDL "\r" << endl |
shreeshas95 | 2:994e741028c7 | 4 | |
shreeshas95 | 5:a5a5300d7d49 | 5 | #include "SLCD.h" |
shreeshas95 | 5:a5a5300d7d49 | 6 | SLCD lcd; |
shreeshas95 | 5:a5a5300d7d49 | 7 | |
shreeshas95 | 7:e71ecfe3a340 | 8 | #define TIMEOUT_LIMIT 1 |
shreeshas95 | 7:e71ecfe3a340 | 9 | #define MAX_NUM_LIST 4 |
shreeshas95 | 3:eec1097c0dd6 | 10 | |
shreeshas95 | 3:eec1097c0dd6 | 11 | Serial PC(USBTX, USBRX); |
shreeshas95 | 4:f95195748a0c | 12 | Serial rx1m(PTE0, PTE1); |
shreeshas95 | 2:994e741028c7 | 13 | |
shreeshas95 | 2:994e741028c7 | 14 | DigitalOut ledr(LED_RED); |
shreeshas95 | 2:994e741028c7 | 15 | DigitalOut ledg(LED_GREEN); |
shreeshas95 | 2:994e741028c7 | 16 | |
shreeshas95 | 3:eec1097c0dd6 | 17 | #include "Structures.h" |
shreeshas95 | 2:994e741028c7 | 18 | |
shreeshas95 | 4:f95195748a0c | 19 | struct data_list{ |
shreeshas95 | 4:f95195748a0c | 20 | char val; |
shreeshas95 | 4:f95195748a0c | 21 | struct data_list* next; |
shreeshas95 | 4:f95195748a0c | 22 | }; |
shreeshas95 | 4:f95195748a0c | 23 | |
shreeshas95 | 3:eec1097c0dd6 | 24 | namespace VAR_SPACE{ |
shreeshas95 | 3:eec1097c0dd6 | 25 | |
shreeshas95 | 7:e71ecfe3a340 | 26 | TC_list *Head_node1; |
shreeshas95 | 7:e71ecfe3a340 | 27 | TC_list *Head_node2; |
shreeshas95 | 3:eec1097c0dd6 | 28 | |
shreeshas95 | 7:e71ecfe3a340 | 29 | bool rx_emergency = false; |
shreeshas95 | 7:e71ecfe3a340 | 30 | |
shreeshas95 | 3:eec1097c0dd6 | 31 | /* |
shreeshas95 | 3:eec1097c0dd6 | 32 | * 0 : idle |
shreeshas95 | 7:e71ecfe3a340 | 33 | * 1 : RCV_TC running |
shreeshas95 | 7:e71ecfe3a340 | 34 | * 2 : RCV_TC handled, MNG_TM_TC running |
shreeshas95 | 3:eec1097c0dd6 | 35 | */ |
shreeshas95 | 4:f95195748a0c | 36 | |
shreeshas95 | 4:f95195748a0c | 37 | struct data_list *head_data; |
shreeshas95 | 7:e71ecfe3a340 | 38 | struct data_list *data_node; |
shreeshas95 | 7:e71ecfe3a340 | 39 | struct data_list *rx_new_node; |
shreeshas95 | 7:e71ecfe3a340 | 40 | |
shreeshas95 | 7:e71ecfe3a340 | 41 | Thread *Com_mng_tc_thread; |
shreeshas95 | 2:994e741028c7 | 42 | } |
shreeshas95 | 2:994e741028c7 | 43 | |
shreeshas95 | 4:f95195748a0c | 44 | Timer rx_timer; |
shreeshas95 | 7:e71ecfe3a340 | 45 | bool data_received = false; |
shreeshas95 | 4:f95195748a0c | 46 | |
shreeshas95 | 3:eec1097c0dd6 | 47 | #include "mbed.h" |
shreeshas95 | 3:eec1097c0dd6 | 48 | #include "crc.h" |
shreeshas95 | 7:e71ecfe3a340 | 49 | #include "COM_RCV_TC.h" |
shreeshas95 | 3:eec1097c0dd6 | 50 | #include "SND_TM.h" |
shreeshas95 | 3:eec1097c0dd6 | 51 | #include "MNG_TC.h" |
shreeshas95 | 3:eec1097c0dd6 | 52 | |
shreeshas95 | 7:e71ecfe3a340 | 53 | void rx_read(){ |
shreeshas95 | 4:f95195748a0c | 54 | //~ store value |
shreeshas95 | 7:e71ecfe3a340 | 55 | VAR_SPACE::rx_new_node->val = rx1m.getc(); |
shreeshas95 | 4:f95195748a0c | 56 | |
shreeshas95 | 4:f95195748a0c | 57 | //~ allocate new node |
shreeshas95 | 7:e71ecfe3a340 | 58 | VAR_SPACE::rx_new_node->next = new struct data_list; |
shreeshas95 | 7:e71ecfe3a340 | 59 | VAR_SPACE::rx_new_node = VAR_SPACE::rx_new_node->next; |
shreeshas95 | 7:e71ecfe3a340 | 60 | VAR_SPACE::rx_new_node->next = NULL; |
shreeshas95 | 4:f95195748a0c | 61 | |
shreeshas95 | 7:e71ecfe3a340 | 62 | rx_timer.reset(); |
shreeshas95 | 7:e71ecfe3a340 | 63 | data_received = true; |
shreeshas95 | 4:f95195748a0c | 64 | } |
shreeshas95 | 2:994e741028c7 | 65 | |
shreeshas95 | 2:994e741028c7 | 66 | int main(){ |
shreeshas95 | 6:6e9ae3b44e60 | 67 | printf("welcome to mng_tm_tc\r\n"); |
shreeshas95 | 4:f95195748a0c | 68 | ledr = 1; |
shreeshas95 | 2:994e741028c7 | 69 | |
shreeshas95 | 2:994e741028c7 | 70 | PC.baud(9600); |
shreeshas95 | 3:eec1097c0dd6 | 71 | |
shreeshas95 | 7:e71ecfe3a340 | 72 | // rx stuff |
shreeshas95 | 4:f95195748a0c | 73 | rx1m.baud(1200); |
shreeshas95 | 7:e71ecfe3a340 | 74 | rx1m.attach(&rx_read); |
shreeshas95 | 4:f95195748a0c | 75 | VAR_SPACE::head_data = new data_list; |
shreeshas95 | 7:e71ecfe3a340 | 76 | VAR_SPACE::rx_new_node = VAR_SPACE::head_data; |
shreeshas95 | 7:e71ecfe3a340 | 77 | VAR_SPACE::rx_new_node->next = NULL; |
shreeshas95 | 5:a5a5300d7d49 | 78 | |
shreeshas95 | 2:994e741028c7 | 79 | while(true){ |
shreeshas95 | 3:eec1097c0dd6 | 80 | |
shreeshas95 | 7:e71ecfe3a340 | 81 | if(data_received && ( rx_timer.read() >= TIMEOUT_LIMIT ) ){ |
shreeshas95 | 7:e71ecfe3a340 | 82 | if( (VAR_SPACE::Com_mng_tc_thread->get_state() == Thread::Inactive) || |
shreeshas95 | 7:e71ecfe3a340 | 83 | (VAR_SPACE::Com_mng_tc_thread->get_state() == Thread::WaitingDelay) ){ |
shreeshas95 | 7:e71ecfe3a340 | 84 | // inactive or osWaitForever |
shreeshas95 | 7:e71ecfe3a340 | 85 | delete VAR_SPACE::Com_mng_tc_thread; |
shreeshas95 | 7:e71ecfe3a340 | 86 | VAR_SPACE::Com_mng_tc_thread = new Thread( MNG_MAIN ); |
shreeshas95 | 7:e71ecfe3a340 | 87 | } |
shreeshas95 | 7:e71ecfe3a340 | 88 | else{ |
shreeshas95 | 7:e71ecfe3a340 | 89 | VAR_SPACE::rx_emergency = true; |
shreeshas95 | 6:6e9ae3b44e60 | 90 | |
shreeshas95 | 7:e71ecfe3a340 | 91 | RCV_TC RcvClass( VAR_SPACE::Head_node2 ); |
shreeshas95 | 7:e71ecfe3a340 | 92 | MNG_TC manager2( VAR_SPACE::Head_node2 ); |
shreeshas95 | 7:e71ecfe3a340 | 93 | |
shreeshas95 | 7:e71ecfe3a340 | 94 | manager2.update_valid_TC(); |
shreeshas95 | 7:e71ecfe3a340 | 95 | manager2.decode_TC(); |
shreeshas95 | 7:e71ecfe3a340 | 96 | manager2.execute_urgent(); |
shreeshas95 | 7:e71ecfe3a340 | 97 | |
shreeshas95 | 7:e71ecfe3a340 | 98 | VAR_SPACE::rx_emergency = false; |
shreeshas95 | 4:f95195748a0c | 99 | } |
shreeshas95 | 4:f95195748a0c | 100 | } |
shreeshas95 | 7:e71ecfe3a340 | 101 | |
shreeshas95 | 7:e71ecfe3a340 | 102 | ledg = !ledg; |
shreeshas95 | 7:e71ecfe3a340 | 103 | Thread::wait(1000); |
shreeshas95 | 0:b5b370873460 | 104 | } |
shreeshas95 | 7:e71ecfe3a340 | 105 | } |