TELECOMMAND MANAGER V1
Dependencies: mbed SLCD mbed-rtos
main.cpp@4:f95195748a0c, 2015-06-24 (annotated)
- Committer:
- shreeshas95
- Date:
- Wed Jun 24 12:04:43 2015 +0000
- Revision:
- 4:f95195748a0c
- Parent:
- 3:eec1097c0dd6
- Child:
- 5:a5a5300d7d49
Uplink tested
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shreeshas95 | 3:eec1097c0dd6 | 1 | #include "mbed.h" |
shreeshas95 | 2:994e741028c7 | 2 | |
shreeshas95 | 4:f95195748a0c | 3 | #define TIMEOUT_LIMIT 15 |
shreeshas95 | 3:eec1097c0dd6 | 4 | |
shreeshas95 | 3:eec1097c0dd6 | 5 | Serial PC(USBTX, USBRX); |
shreeshas95 | 4:f95195748a0c | 6 | Serial rx1m(PTE0, PTE1); |
shreeshas95 | 2:994e741028c7 | 7 | |
shreeshas95 | 2:994e741028c7 | 8 | DigitalOut ledr(LED_RED); |
shreeshas95 | 2:994e741028c7 | 9 | DigitalOut ledg(LED_GREEN); |
shreeshas95 | 2:994e741028c7 | 10 | |
shreeshas95 | 3:eec1097c0dd6 | 11 | #include "Structures.h" |
shreeshas95 | 2:994e741028c7 | 12 | |
shreeshas95 | 4:f95195748a0c | 13 | struct data_list{ |
shreeshas95 | 4:f95195748a0c | 14 | char val; |
shreeshas95 | 4:f95195748a0c | 15 | struct data_list* next; |
shreeshas95 | 4:f95195748a0c | 16 | }; |
shreeshas95 | 4:f95195748a0c | 17 | |
shreeshas95 | 3:eec1097c0dd6 | 18 | namespace VAR_SPACE{ |
shreeshas95 | 3:eec1097c0dd6 | 19 | |
shreeshas95 | 3:eec1097c0dd6 | 20 | TC_list *Head_node = NULL; |
shreeshas95 | 3:eec1097c0dd6 | 21 | |
shreeshas95 | 3:eec1097c0dd6 | 22 | int rx_state = 0; |
shreeshas95 | 3:eec1097c0dd6 | 23 | /* |
shreeshas95 | 3:eec1097c0dd6 | 24 | * 0 : idle |
shreeshas95 | 3:eec1097c0dd6 | 25 | * 1 : Rx interrupt received, saving data |
shreeshas95 | 3:eec1097c0dd6 | 26 | * 2 : interrupt handled, RX_RCV_TX running |
shreeshas95 | 3:eec1097c0dd6 | 27 | * 3 : RX_RCV_TC handled, MNG_TM_TC handled |
shreeshas95 | 3:eec1097c0dd6 | 28 | */ |
shreeshas95 | 4:f95195748a0c | 29 | |
shreeshas95 | 4:f95195748a0c | 30 | struct data_list *head_data; |
shreeshas95 | 4:f95195748a0c | 31 | data_list *data_node; |
shreeshas95 | 2:994e741028c7 | 32 | } |
shreeshas95 | 2:994e741028c7 | 33 | |
shreeshas95 | 4:f95195748a0c | 34 | unsigned int rx_bytes = 0; |
shreeshas95 | 4:f95195748a0c | 35 | Timer rx_timer; |
shreeshas95 | 4:f95195748a0c | 36 | struct data_list *rx_new_node; |
shreeshas95 | 4:f95195748a0c | 37 | |
shreeshas95 | 3:eec1097c0dd6 | 38 | #include "mbed.h" |
shreeshas95 | 2:994e741028c7 | 39 | |
shreeshas95 | 3:eec1097c0dd6 | 40 | #include "crc.h" |
shreeshas95 | 3:eec1097c0dd6 | 41 | #include "SND_TM.h" |
shreeshas95 | 3:eec1097c0dd6 | 42 | #include "MNG_TC.h" |
shreeshas95 | 3:eec1097c0dd6 | 43 | #include "COM_RCV_TC.h" |
shreeshas95 | 3:eec1097c0dd6 | 44 | |
shreeshas95 | 4:f95195748a0c | 45 | void callback() { |
shreeshas95 | 4:f95195748a0c | 46 | //~ store value |
shreeshas95 | 4:f95195748a0c | 47 | rx_new_node->val = rx1m.getc(); |
shreeshas95 | 4:f95195748a0c | 48 | |
shreeshas95 | 4:f95195748a0c | 49 | //~ allocate new node |
shreeshas95 | 4:f95195748a0c | 50 | rx_new_node->next = new data_list; |
shreeshas95 | 4:f95195748a0c | 51 | rx_new_node = rx_new_node->next; |
shreeshas95 | 4:f95195748a0c | 52 | rx_new_node->next = NULL; |
shreeshas95 | 4:f95195748a0c | 53 | |
shreeshas95 | 4:f95195748a0c | 54 | rx_timer.stop(); |
shreeshas95 | 4:f95195748a0c | 55 | rx_timer.start(); |
shreeshas95 | 4:f95195748a0c | 56 | |
shreeshas95 | 4:f95195748a0c | 57 | ++rx_bytes; |
shreeshas95 | 4:f95195748a0c | 58 | VAR_SPACE::rx_state = 1; |
shreeshas95 | 4:f95195748a0c | 59 | } |
shreeshas95 | 2:994e741028c7 | 60 | |
shreeshas95 | 2:994e741028c7 | 61 | int main(){ |
shreeshas95 | 4:f95195748a0c | 62 | ledr = 1; |
shreeshas95 | 2:994e741028c7 | 63 | |
shreeshas95 | 2:994e741028c7 | 64 | PC.baud(9600); |
shreeshas95 | 3:eec1097c0dd6 | 65 | |
shreeshas95 | 4:f95195748a0c | 66 | rx1m.baud(1200); |
shreeshas95 | 4:f95195748a0c | 67 | rx1m.attach(&callback); |
shreeshas95 | 4:f95195748a0c | 68 | VAR_SPACE::head_data = new data_list; |
shreeshas95 | 4:f95195748a0c | 69 | rx_new_node = VAR_SPACE::head_data; |
shreeshas95 | 2:994e741028c7 | 70 | |
shreeshas95 | 2:994e741028c7 | 71 | while(true){ |
shreeshas95 | 2:994e741028c7 | 72 | ledg = !ledg; |
shreeshas95 | 3:eec1097c0dd6 | 73 | |
shreeshas95 | 4:f95195748a0c | 74 | if(VAR_SPACE::rx_state == 1){ |
shreeshas95 | 4:f95195748a0c | 75 | |
shreeshas95 | 4:f95195748a0c | 76 | if( rx_timer.read() > TIMEOUT_LIMIT ){ |
shreeshas95 | 4:f95195748a0c | 77 | //~ TIMEOUT REACHED MOVE ON TO RX_RCV_TC |
shreeshas95 | 4:f95195748a0c | 78 | VAR_SPACE::rx_state = 2; |
shreeshas95 | 4:f95195748a0c | 79 | } |
shreeshas95 | 4:f95195748a0c | 80 | |
shreeshas95 | 4:f95195748a0c | 81 | } |
shreeshas95 | 4:f95195748a0c | 82 | else if( VAR_SPACE::rx_state == 2 ){ |
shreeshas95 | 4:f95195748a0c | 83 | // printf("Calling rcv_tc\r\n"); |
shreeshas95 | 4:f95195748a0c | 84 | VAR_SPACE::data_node = VAR_SPACE::head_data; |
shreeshas95 | 3:eec1097c0dd6 | 85 | RCV_TC::RX_RCV_TC(); |
shreeshas95 | 3:eec1097c0dd6 | 86 | VAR_SPACE::rx_state = 3; |
shreeshas95 | 3:eec1097c0dd6 | 87 | |
shreeshas95 | 2:994e741028c7 | 88 | } |
shreeshas95 | 3:eec1097c0dd6 | 89 | else if( VAR_SPACE::rx_state == 3 ){ |
shreeshas95 | 3:eec1097c0dd6 | 90 | |
shreeshas95 | 4:f95195748a0c | 91 | // printf("calling mng tc\r\n"); |
shreeshas95 | 3:eec1097c0dd6 | 92 | MNG_TC::init( VAR_SPACE::Head_node ); |
shreeshas95 | 3:eec1097c0dd6 | 93 | MNG_TC::start_with(); |
shreeshas95 | 3:eec1097c0dd6 | 94 | |
shreeshas95 | 3:eec1097c0dd6 | 95 | VAR_SPACE::rx_state = 0; |
shreeshas95 | 3:eec1097c0dd6 | 96 | |
shreeshas95 | 4:f95195748a0c | 97 | //~ delete linked list |
shreeshas95 | 4:f95195748a0c | 98 | rx_new_node = VAR_SPACE::head_data; |
shreeshas95 | 4:f95195748a0c | 99 | while(rx_new_node != NULL){ |
shreeshas95 | 4:f95195748a0c | 100 | data_list *temp = rx_new_node; |
shreeshas95 | 4:f95195748a0c | 101 | rx_new_node = rx_new_node->next; |
shreeshas95 | 4:f95195748a0c | 102 | delete temp; |
shreeshas95 | 4:f95195748a0c | 103 | } |
shreeshas95 | 3:eec1097c0dd6 | 104 | } |
shreeshas95 | 0:b5b370873460 | 105 | } |
shreeshas95 | 3:eec1097c0dd6 | 106 | } |