TELECOMMAND MANAGER V1
Dependencies: mbed SLCD mbed-rtos
main.cpp@5:a5a5300d7d49, 2015-06-25 (annotated)
- Committer:
- shreeshas95
- Date:
- Thu Jun 25 10:10:23 2015 +0000
- Revision:
- 5:a5a5300d7d49
- Parent:
- 4:f95195748a0c
- Child:
- 6:6e9ae3b44e60
test_PC integrated
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 | 5:a5a5300d7d49 | 3 | #include "SLCD.h" |
shreeshas95 | 5:a5a5300d7d49 | 4 | SLCD lcd; |
shreeshas95 | 5:a5a5300d7d49 | 5 | |
shreeshas95 | 4:f95195748a0c | 6 | #define TIMEOUT_LIMIT 15 |
shreeshas95 | 3:eec1097c0dd6 | 7 | |
shreeshas95 | 3:eec1097c0dd6 | 8 | Serial PC(USBTX, USBRX); |
shreeshas95 | 4:f95195748a0c | 9 | Serial rx1m(PTE0, PTE1); |
shreeshas95 | 2:994e741028c7 | 10 | |
shreeshas95 | 2:994e741028c7 | 11 | DigitalOut ledr(LED_RED); |
shreeshas95 | 2:994e741028c7 | 12 | DigitalOut ledg(LED_GREEN); |
shreeshas95 | 2:994e741028c7 | 13 | |
shreeshas95 | 3:eec1097c0dd6 | 14 | #include "Structures.h" |
shreeshas95 | 2:994e741028c7 | 15 | |
shreeshas95 | 4:f95195748a0c | 16 | struct data_list{ |
shreeshas95 | 4:f95195748a0c | 17 | char val; |
shreeshas95 | 4:f95195748a0c | 18 | struct data_list* next; |
shreeshas95 | 4:f95195748a0c | 19 | }; |
shreeshas95 | 4:f95195748a0c | 20 | |
shreeshas95 | 3:eec1097c0dd6 | 21 | namespace VAR_SPACE{ |
shreeshas95 | 3:eec1097c0dd6 | 22 | |
shreeshas95 | 3:eec1097c0dd6 | 23 | TC_list *Head_node = NULL; |
shreeshas95 | 3:eec1097c0dd6 | 24 | |
shreeshas95 | 3:eec1097c0dd6 | 25 | int rx_state = 0; |
shreeshas95 | 3:eec1097c0dd6 | 26 | /* |
shreeshas95 | 3:eec1097c0dd6 | 27 | * 0 : idle |
shreeshas95 | 3:eec1097c0dd6 | 28 | * 1 : Rx interrupt received, saving data |
shreeshas95 | 3:eec1097c0dd6 | 29 | * 2 : interrupt handled, RX_RCV_TX running |
shreeshas95 | 3:eec1097c0dd6 | 30 | * 3 : RX_RCV_TC handled, MNG_TM_TC handled |
shreeshas95 | 3:eec1097c0dd6 | 31 | */ |
shreeshas95 | 4:f95195748a0c | 32 | |
shreeshas95 | 4:f95195748a0c | 33 | struct data_list *head_data; |
shreeshas95 | 4:f95195748a0c | 34 | data_list *data_node; |
shreeshas95 | 5:a5a5300d7d49 | 35 | |
shreeshas95 | 5:a5a5300d7d49 | 36 | // remove |
shreeshas95 | 5:a5a5300d7d49 | 37 | // unsigned char *data; |
shreeshas95 | 2:994e741028c7 | 38 | } |
shreeshas95 | 2:994e741028c7 | 39 | |
shreeshas95 | 4:f95195748a0c | 40 | unsigned int rx_bytes = 0; |
shreeshas95 | 4:f95195748a0c | 41 | Timer rx_timer; |
shreeshas95 | 4:f95195748a0c | 42 | struct data_list *rx_new_node; |
shreeshas95 | 4:f95195748a0c | 43 | |
shreeshas95 | 3:eec1097c0dd6 | 44 | #include "mbed.h" |
shreeshas95 | 2:994e741028c7 | 45 | |
shreeshas95 | 3:eec1097c0dd6 | 46 | #include "crc.h" |
shreeshas95 | 3:eec1097c0dd6 | 47 | #include "SND_TM.h" |
shreeshas95 | 3:eec1097c0dd6 | 48 | #include "MNG_TC.h" |
shreeshas95 | 3:eec1097c0dd6 | 49 | #include "COM_RCV_TC.h" |
shreeshas95 | 3:eec1097c0dd6 | 50 | |
shreeshas95 | 4:f95195748a0c | 51 | void callback() { |
shreeshas95 | 4:f95195748a0c | 52 | //~ store value |
shreeshas95 | 4:f95195748a0c | 53 | rx_new_node->val = rx1m.getc(); |
shreeshas95 | 4:f95195748a0c | 54 | |
shreeshas95 | 4:f95195748a0c | 55 | //~ allocate new node |
shreeshas95 | 4:f95195748a0c | 56 | rx_new_node->next = new data_list; |
shreeshas95 | 4:f95195748a0c | 57 | rx_new_node = rx_new_node->next; |
shreeshas95 | 4:f95195748a0c | 58 | rx_new_node->next = NULL; |
shreeshas95 | 4:f95195748a0c | 59 | |
shreeshas95 | 4:f95195748a0c | 60 | rx_timer.stop(); |
shreeshas95 | 4:f95195748a0c | 61 | rx_timer.start(); |
shreeshas95 | 4:f95195748a0c | 62 | |
shreeshas95 | 4:f95195748a0c | 63 | ++rx_bytes; |
shreeshas95 | 4:f95195748a0c | 64 | VAR_SPACE::rx_state = 1; |
shreeshas95 | 4:f95195748a0c | 65 | } |
shreeshas95 | 2:994e741028c7 | 66 | |
shreeshas95 | 5:a5a5300d7d49 | 67 | //remove |
shreeshas95 | 5:a5a5300d7d49 | 68 | //void pc_isr(){ |
shreeshas95 | 5:a5a5300d7d49 | 69 | // PC.attach(NULL); |
shreeshas95 | 5:a5a5300d7d49 | 70 | // VAR_SPACE::rx_state = 1; |
shreeshas95 | 5:a5a5300d7d49 | 71 | // rx_timer.start(); |
shreeshas95 | 5:a5a5300d7d49 | 72 | //} |
shreeshas95 | 5:a5a5300d7d49 | 73 | |
shreeshas95 | 5:a5a5300d7d49 | 74 | //using namespace VAR_SPACE; |
shreeshas95 | 5:a5a5300d7d49 | 75 | |
shreeshas95 | 2:994e741028c7 | 76 | int main(){ |
shreeshas95 | 5:a5a5300d7d49 | 77 | // printf("welcome to mng_tm_tc\r\n"); |
shreeshas95 | 4:f95195748a0c | 78 | ledr = 1; |
shreeshas95 | 2:994e741028c7 | 79 | |
shreeshas95 | 2:994e741028c7 | 80 | PC.baud(9600); |
shreeshas95 | 5:a5a5300d7d49 | 81 | // PC.attach(&pc_isr); |
shreeshas95 | 3:eec1097c0dd6 | 82 | |
shreeshas95 | 4:f95195748a0c | 83 | rx1m.baud(1200); |
shreeshas95 | 4:f95195748a0c | 84 | rx1m.attach(&callback); |
shreeshas95 | 4:f95195748a0c | 85 | VAR_SPACE::head_data = new data_list; |
shreeshas95 | 4:f95195748a0c | 86 | rx_new_node = VAR_SPACE::head_data; |
shreeshas95 | 2:994e741028c7 | 87 | |
shreeshas95 | 5:a5a5300d7d49 | 88 | |
shreeshas95 | 5:a5a5300d7d49 | 89 | // remove |
shreeshas95 | 5:a5a5300d7d49 | 90 | // VAR_SPACE::data = new unsigned char[100]; |
shreeshas95 | 5:a5a5300d7d49 | 91 | |
shreeshas95 | 5:a5a5300d7d49 | 92 | // data[0] = 0x7e; |
shreeshas95 | 5:a5a5300d7d49 | 93 | // data[1] = 0x01; |
shreeshas95 | 5:a5a5300d7d49 | 94 | // data[2] = 0xa1; |
shreeshas95 | 5:a5a5300d7d49 | 95 | // data[3] = 0x61; |
shreeshas95 | 5:a5a5300d7d49 | 96 | // data[4] = 0x01; |
shreeshas95 | 5:a5a5300d7d49 | 97 | // data[5] = 0x02; |
shreeshas95 | 5:a5a5300d7d49 | 98 | // data[6] = 0xef; |
shreeshas95 | 5:a5a5300d7d49 | 99 | // data[7] = 0x96; |
shreeshas95 | 5:a5a5300d7d49 | 100 | // data[8] = 0x80; |
shreeshas95 | 5:a5a5300d7d49 | 101 | // data[9] = 0x00; |
shreeshas95 | 5:a5a5300d7d49 | 102 | // data[10] = 0x4b; |
shreeshas95 | 5:a5a5300d7d49 | 103 | // data[11] = 0xee; |
shreeshas95 | 5:a5a5300d7d49 | 104 | // data[12] = 0x9f; |
shreeshas95 | 5:a5a5300d7d49 | 105 | // data[13] = 0x9f; |
shreeshas95 | 5:a5a5300d7d49 | 106 | // data[14] = 0x80; |
shreeshas95 | 5:a5a5300d7d49 | 107 | |
shreeshas95 | 5:a5a5300d7d49 | 108 | |
shreeshas95 | 5:a5a5300d7d49 | 109 | lcd.printf("0"); |
shreeshas95 | 5:a5a5300d7d49 | 110 | |
shreeshas95 | 2:994e741028c7 | 111 | while(true){ |
shreeshas95 | 2:994e741028c7 | 112 | ledg = !ledg; |
shreeshas95 | 3:eec1097c0dd6 | 113 | |
shreeshas95 | 4:f95195748a0c | 114 | if(VAR_SPACE::rx_state == 1){ |
shreeshas95 | 5:a5a5300d7d49 | 115 | lcd.printf("01"); |
shreeshas95 | 4:f95195748a0c | 116 | |
shreeshas95 | 5:a5a5300d7d49 | 117 | // remove |
shreeshas95 | 5:a5a5300d7d49 | 118 | // while( rx_timer.read() < 15 ){ |
shreeshas95 | 5:a5a5300d7d49 | 119 | // if( PC.readable() ){ |
shreeshas95 | 5:a5a5300d7d49 | 120 | // VAR_SPACE::data[bytes] = PC.getc(); |
shreeshas95 | 5:a5a5300d7d49 | 121 | // } |
shreeshas95 | 5:a5a5300d7d49 | 122 | // } |
shreeshas95 | 5:a5a5300d7d49 | 123 | // PC.attach(&pc_isr); |
shreeshas95 | 5:a5a5300d7d49 | 124 | // VAR_SPACE::rx_state = 2; |
shreeshas95 | 5:a5a5300d7d49 | 125 | // endremove |
shreeshas95 | 5:a5a5300d7d49 | 126 | |
shreeshas95 | 4:f95195748a0c | 127 | if( rx_timer.read() > TIMEOUT_LIMIT ){ |
shreeshas95 | 4:f95195748a0c | 128 | //~ TIMEOUT REACHED MOVE ON TO RX_RCV_TC |
shreeshas95 | 4:f95195748a0c | 129 | VAR_SPACE::rx_state = 2; |
shreeshas95 | 5:a5a5300d7d49 | 130 | lcd.printf("012"); |
shreeshas95 | 5:a5a5300d7d49 | 131 | // printf("received %u bytes\r\n", rx_bytes); |
shreeshas95 | 4:f95195748a0c | 132 | } |
shreeshas95 | 4:f95195748a0c | 133 | |
shreeshas95 | 4:f95195748a0c | 134 | } |
shreeshas95 | 4:f95195748a0c | 135 | else if( VAR_SPACE::rx_state == 2 ){ |
shreeshas95 | 4:f95195748a0c | 136 | // printf("Calling rcv_tc\r\n"); |
shreeshas95 | 4:f95195748a0c | 137 | VAR_SPACE::data_node = VAR_SPACE::head_data; |
shreeshas95 | 3:eec1097c0dd6 | 138 | RCV_TC::RX_RCV_TC(); |
shreeshas95 | 3:eec1097c0dd6 | 139 | VAR_SPACE::rx_state = 3; |
shreeshas95 | 3:eec1097c0dd6 | 140 | |
shreeshas95 | 2:994e741028c7 | 141 | } |
shreeshas95 | 3:eec1097c0dd6 | 142 | else if( VAR_SPACE::rx_state == 3 ){ |
shreeshas95 | 3:eec1097c0dd6 | 143 | |
shreeshas95 | 4:f95195748a0c | 144 | // printf("calling mng tc\r\n"); |
shreeshas95 | 5:a5a5300d7d49 | 145 | lcd.printf("0123"); |
shreeshas95 | 3:eec1097c0dd6 | 146 | MNG_TC::init( VAR_SPACE::Head_node ); |
shreeshas95 | 3:eec1097c0dd6 | 147 | MNG_TC::start_with(); |
shreeshas95 | 3:eec1097c0dd6 | 148 | |
shreeshas95 | 3:eec1097c0dd6 | 149 | VAR_SPACE::rx_state = 0; |
shreeshas95 | 3:eec1097c0dd6 | 150 | |
shreeshas95 | 4:f95195748a0c | 151 | //~ delete linked list |
shreeshas95 | 4:f95195748a0c | 152 | rx_new_node = VAR_SPACE::head_data; |
shreeshas95 | 4:f95195748a0c | 153 | while(rx_new_node != NULL){ |
shreeshas95 | 4:f95195748a0c | 154 | data_list *temp = rx_new_node; |
shreeshas95 | 4:f95195748a0c | 155 | rx_new_node = rx_new_node->next; |
shreeshas95 | 4:f95195748a0c | 156 | delete temp; |
shreeshas95 | 4:f95195748a0c | 157 | } |
shreeshas95 | 5:a5a5300d7d49 | 158 | // printf("successfully sent data\r\n"); |
shreeshas95 | 3:eec1097c0dd6 | 159 | } |
shreeshas95 | 0:b5b370873460 | 160 | } |
shreeshas95 | 3:eec1097c0dd6 | 161 | } |