Dummy program to demonstrate problems: working code
Dependencies: SLCD mbed-rtos mbed
Fork of MNG_TC by
main.cpp@8:cb93c1d3209a, 2015-07-13 (annotated)
- Committer:
- shreeshas95
- Date:
- Mon Jul 13 10:21:45 2015 +0000
- Revision:
- 8:cb93c1d3209a
- Parent:
- 7:e71ecfe3a340
- Child:
- 9:934fdce72b3d
- Child:
- 10:024c2ef51cb1
everything except snd_tm working : update snd tm
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shreeshas95 | 3:eec1097c0dd6 | 1 | #include "mbed.h" |
shreeshas95 | 6:6e9ae3b44e60 | 2 | #define ENDL "\r" << endl |
shreeshas95 | 2:994e741028c7 | 3 | |
shreeshas95 | 5:a5a5300d7d49 | 4 | #include "SLCD.h" |
shreeshas95 | 5:a5a5300d7d49 | 5 | SLCD lcd; |
shreeshas95 | 5:a5a5300d7d49 | 6 | |
shreeshas95 | 8:cb93c1d3209a | 7 | #define RX_TIMEOUT_LIMIT 2 |
shreeshas95 | 8:cb93c1d3209a | 8 | #define PASS_TIME_LIMIT 1200 |
shreeshas95 | 3:eec1097c0dd6 | 9 | |
shreeshas95 | 3:eec1097c0dd6 | 10 | Serial PC(USBTX, USBRX); |
shreeshas95 | 4:f95195748a0c | 11 | Serial rx1m(PTE0, PTE1); |
shreeshas95 | 2:994e741028c7 | 12 | |
shreeshas95 | 2:994e741028c7 | 13 | DigitalOut ledr(LED_RED); |
shreeshas95 | 2:994e741028c7 | 14 | DigitalOut ledg(LED_GREEN); |
shreeshas95 | 2:994e741028c7 | 15 | |
shreeshas95 | 3:eec1097c0dd6 | 16 | #include "Structures.h" |
shreeshas95 | 2:994e741028c7 | 17 | |
shreeshas95 | 4:f95195748a0c | 18 | struct data_list{ |
shreeshas95 | 8:cb93c1d3209a | 19 | unsigned char val; |
shreeshas95 | 4:f95195748a0c | 20 | struct data_list* next; |
shreeshas95 | 4:f95195748a0c | 21 | }; |
shreeshas95 | 4:f95195748a0c | 22 | |
shreeshas95 | 3:eec1097c0dd6 | 23 | namespace VAR_SPACE{ |
shreeshas95 | 3:eec1097c0dd6 | 24 | |
shreeshas95 | 8:cb93c1d3209a | 25 | TC_list *Head_node = NULL; |
shreeshas95 | 8:cb93c1d3209a | 26 | TC_list *last_node = NULL; |
shreeshas95 | 3:eec1097c0dd6 | 27 | |
shreeshas95 | 8:cb93c1d3209a | 28 | int rx_state = 0; |
shreeshas95 | 3:eec1097c0dd6 | 29 | /* |
shreeshas95 | 8:cb93c1d3209a | 30 | 0 : idle |
shreeshas95 | 8:cb93c1d3209a | 31 | 1 : executing normal |
shreeshas95 | 8:cb93c1d3209a | 32 | 2 : executing obosc |
shreeshas95 | 8:cb93c1d3209a | 33 | 3 : idle 2 : obosc received incorrectly |
shreeshas95 | 8:cb93c1d3209a | 34 | */ |
shreeshas95 | 8:cb93c1d3209a | 35 | |
shreeshas95 | 4:f95195748a0c | 36 | struct data_list *head_data; |
shreeshas95 | 8:cb93c1d3209a | 37 | data_list *data_node; |
shreeshas95 | 7:e71ecfe3a340 | 38 | struct data_list *rx_new_node; |
shreeshas95 | 8:cb93c1d3209a | 39 | |
shreeshas95 | 8:cb93c1d3209a | 40 | bool new_tc_received = false; |
shreeshas95 | 8:cb93c1d3209a | 41 | bool execute_obosc = false; |
shreeshas95 | 8:cb93c1d3209a | 42 | |
shreeshas95 | 2:994e741028c7 | 43 | } |
shreeshas95 | 2:994e741028c7 | 44 | |
shreeshas95 | 8:cb93c1d3209a | 45 | Timeout rx_timeout; |
shreeshas95 | 8:cb93c1d3209a | 46 | bool pass_over = false; |
shreeshas95 | 8:cb93c1d3209a | 47 | bool first_time = true; |
shreeshas95 | 8:cb93c1d3209a | 48 | Timeout pass_time; |
shreeshas95 | 4:f95195748a0c | 49 | |
shreeshas95 | 3:eec1097c0dd6 | 50 | #include "crc.h" |
shreeshas95 | 8:cb93c1d3209a | 51 | #include "SND_TM.h" |
shreeshas95 | 7:e71ecfe3a340 | 52 | #include "COM_RCV_TC.h" |
shreeshas95 | 3:eec1097c0dd6 | 53 | #include "MNG_TC.h" |
shreeshas95 | 3:eec1097c0dd6 | 54 | |
shreeshas95 | 8:cb93c1d3209a | 55 | void after_pass(){ |
shreeshas95 | 8:cb93c1d3209a | 56 | pass_time.detach(); |
shreeshas95 | 8:cb93c1d3209a | 57 | pass_over = true; |
shreeshas95 | 8:cb93c1d3209a | 58 | } |
shreeshas95 | 8:cb93c1d3209a | 59 | |
shreeshas95 | 8:cb93c1d3209a | 60 | void after_receive(void){ |
shreeshas95 | 8:cb93c1d3209a | 61 | rx_timeout.detach(); |
shreeshas95 | 8:cb93c1d3209a | 62 | VAR_SPACE::rx_new_node->val = 0x00; |
shreeshas95 | 8:cb93c1d3209a | 63 | |
shreeshas95 | 8:cb93c1d3209a | 64 | VAR_SPACE::new_tc_received = true; |
shreeshas95 | 8:cb93c1d3209a | 65 | |
shreeshas95 | 8:cb93c1d3209a | 66 | if(first_time){ |
shreeshas95 | 8:cb93c1d3209a | 67 | first_time = false; |
shreeshas95 | 8:cb93c1d3209a | 68 | pass_time.attach(&after_pass, PASS_TIME_LIMIT); |
shreeshas95 | 8:cb93c1d3209a | 69 | } |
shreeshas95 | 8:cb93c1d3209a | 70 | } |
shreeshas95 | 8:cb93c1d3209a | 71 | |
shreeshas95 | 8:cb93c1d3209a | 72 | void rx_read() { |
shreeshas95 | 4:f95195748a0c | 73 | //~ store value |
shreeshas95 | 7:e71ecfe3a340 | 74 | VAR_SPACE::rx_new_node->val = rx1m.getc(); |
shreeshas95 | 4:f95195748a0c | 75 | |
shreeshas95 | 4:f95195748a0c | 76 | //~ allocate new node |
shreeshas95 | 8:cb93c1d3209a | 77 | VAR_SPACE::rx_new_node->next = new data_list; |
shreeshas95 | 7:e71ecfe3a340 | 78 | VAR_SPACE::rx_new_node = VAR_SPACE::rx_new_node->next; |
shreeshas95 | 7:e71ecfe3a340 | 79 | VAR_SPACE::rx_new_node->next = NULL; |
shreeshas95 | 4:f95195748a0c | 80 | |
shreeshas95 | 8:cb93c1d3209a | 81 | rx_timeout.attach(&after_receive, RX_TIMEOUT_LIMIT); |
shreeshas95 | 8:cb93c1d3209a | 82 | } |
shreeshas95 | 8:cb93c1d3209a | 83 | |
shreeshas95 | 8:cb93c1d3209a | 84 | void reset_all(){ |
shreeshas95 | 8:cb93c1d3209a | 85 | printf("resetting all\r\n"); |
shreeshas95 | 8:cb93c1d3209a | 86 | // reset MNG_TC |
shreeshas95 | 8:cb93c1d3209a | 87 | MNG_TC::init(); |
shreeshas95 | 8:cb93c1d3209a | 88 | TC_list *tcp = VAR_SPACE::Head_node; |
shreeshas95 | 8:cb93c1d3209a | 89 | while(tcp != NULL){ |
shreeshas95 | 8:cb93c1d3209a | 90 | TC_list *temp = tcp->next_TC; |
shreeshas95 | 8:cb93c1d3209a | 91 | delete tcp; |
shreeshas95 | 8:cb93c1d3209a | 92 | tcp = temp; |
shreeshas95 | 8:cb93c1d3209a | 93 | } |
shreeshas95 | 8:cb93c1d3209a | 94 | |
shreeshas95 | 8:cb93c1d3209a | 95 | // reset COM_RCV_TC |
shreeshas95 | 8:cb93c1d3209a | 96 | // handle reset |
shreeshas95 | 8:cb93c1d3209a | 97 | |
shreeshas95 | 8:cb93c1d3209a | 98 | // reset data linked list |
shreeshas95 | 8:cb93c1d3209a | 99 | data_list *dataptr = VAR_SPACE::head_data; |
shreeshas95 | 8:cb93c1d3209a | 100 | while( dataptr != NULL ){ |
shreeshas95 | 8:cb93c1d3209a | 101 | data_list *temp = dataptr->next; |
shreeshas95 | 8:cb93c1d3209a | 102 | delete dataptr; |
shreeshas95 | 8:cb93c1d3209a | 103 | dataptr = temp; |
shreeshas95 | 8:cb93c1d3209a | 104 | } |
shreeshas95 | 8:cb93c1d3209a | 105 | VAR_SPACE::head_data = new data_list; |
shreeshas95 | 8:cb93c1d3209a | 106 | VAR_SPACE::rx_new_node = VAR_SPACE::head_data; |
shreeshas95 | 4:f95195748a0c | 107 | } |
shreeshas95 | 2:994e741028c7 | 108 | |
shreeshas95 | 2:994e741028c7 | 109 | int main(){ |
shreeshas95 | 8:cb93c1d3209a | 110 | |
shreeshas95 | 6:6e9ae3b44e60 | 111 | printf("welcome to mng_tm_tc\r\n"); |
shreeshas95 | 4:f95195748a0c | 112 | ledr = 1; |
shreeshas95 | 2:994e741028c7 | 113 | |
shreeshas95 | 2:994e741028c7 | 114 | PC.baud(9600); |
shreeshas95 | 3:eec1097c0dd6 | 115 | |
shreeshas95 | 4:f95195748a0c | 116 | rx1m.baud(1200); |
shreeshas95 | 7:e71ecfe3a340 | 117 | rx1m.attach(&rx_read); |
shreeshas95 | 4:f95195748a0c | 118 | VAR_SPACE::head_data = new data_list; |
shreeshas95 | 8:cb93c1d3209a | 119 | VAR_SPACE::head_data->next = NULL; |
shreeshas95 | 7:e71ecfe3a340 | 120 | VAR_SPACE::rx_new_node = VAR_SPACE::head_data; |
shreeshas95 | 8:cb93c1d3209a | 121 | |
shreeshas95 | 8:cb93c1d3209a | 122 | MNG_TC::init(); |
shreeshas95 | 8:cb93c1d3209a | 123 | |
shreeshas95 | 8:cb93c1d3209a | 124 | lcd.printf("0"); |
shreeshas95 | 8:cb93c1d3209a | 125 | |
shreeshas95 | 8:cb93c1d3209a | 126 | struct data_list *hehe = VAR_SPACE::head_data; |
shreeshas95 | 8:cb93c1d3209a | 127 | while( hehe != NULL ){ |
shreeshas95 | 8:cb93c1d3209a | 128 | printf("%x ", hehe->val); |
shreeshas95 | 8:cb93c1d3209a | 129 | hehe = hehe->next; |
shreeshas95 | 8:cb93c1d3209a | 130 | } |
shreeshas95 | 8:cb93c1d3209a | 131 | printf("\r\n"); |
shreeshas95 | 5:a5a5300d7d49 | 132 | |
shreeshas95 | 2:994e741028c7 | 133 | while(true){ |
shreeshas95 | 8:cb93c1d3209a | 134 | ledg = !ledg; |
shreeshas95 | 8:cb93c1d3209a | 135 | if( VAR_SPACE::new_tc_received ){ |
shreeshas95 | 8:cb93c1d3209a | 136 | VAR_SPACE::new_tc_received = false; |
shreeshas95 | 8:cb93c1d3209a | 137 | struct data_list *haha = VAR_SPACE::head_data; |
shreeshas95 | 8:cb93c1d3209a | 138 | unsigned int count = 0; |
shreeshas95 | 8:cb93c1d3209a | 139 | while( haha != NULL ){ |
shreeshas95 | 8:cb93c1d3209a | 140 | ++count; |
shreeshas95 | 8:cb93c1d3209a | 141 | // printf("%x ", haha->val); |
shreeshas95 | 8:cb93c1d3209a | 142 | haha = haha->next; |
shreeshas95 | 8:cb93c1d3209a | 143 | } |
shreeshas95 | 8:cb93c1d3209a | 144 | printf("\t count = %u \r\n", count); |
shreeshas95 | 8:cb93c1d3209a | 145 | printf("new tc received : state = %u\r\n", VAR_SPACE::rx_state); |
shreeshas95 | 8:cb93c1d3209a | 146 | if( VAR_SPACE::rx_state == 0 ){ |
shreeshas95 | 8:cb93c1d3209a | 147 | VAR_SPACE::data_node = VAR_SPACE::head_data; |
shreeshas95 | 8:cb93c1d3209a | 148 | COM_RCV_TC::rx_rcv_tc(); |
shreeshas95 | 8:cb93c1d3209a | 149 | MNG_TC::start_with(); |
shreeshas95 | 8:cb93c1d3209a | 150 | if( MNG_TC::check_for_missing_TC() ){ |
shreeshas95 | 8:cb93c1d3209a | 151 | printf("everything pass\r\n"); |
shreeshas95 | 8:cb93c1d3209a | 152 | VAR_SPACE::rx_state = 1; |
shreeshas95 | 8:cb93c1d3209a | 153 | MNG_TC::execute_TC(); |
shreeshas95 | 8:cb93c1d3209a | 154 | } |
shreeshas95 | 8:cb93c1d3209a | 155 | } |
shreeshas95 | 8:cb93c1d3209a | 156 | else if( VAR_SPACE::rx_state == 3 ){ |
shreeshas95 | 8:cb93c1d3209a | 157 | VAR_SPACE::data_node = VAR_SPACE::head_data; |
shreeshas95 | 8:cb93c1d3209a | 158 | COM_RCV_TC::rx_rcv_tc(); |
shreeshas95 | 8:cb93c1d3209a | 159 | MNG_TC::start_with(); |
shreeshas95 | 8:cb93c1d3209a | 160 | if( MNG_TC::check_for_missing_TC() ){ |
shreeshas95 | 8:cb93c1d3209a | 161 | VAR_SPACE::execute_obosc = true; |
shreeshas95 | 8:cb93c1d3209a | 162 | VAR_SPACE::rx_state = 2; |
shreeshas95 | 8:cb93c1d3209a | 163 | MNG_TC::execute_TC(); |
shreeshas95 | 8:cb93c1d3209a | 164 | } |
shreeshas95 | 7:e71ecfe3a340 | 165 | } |
shreeshas95 | 7:e71ecfe3a340 | 166 | else{ |
shreeshas95 | 8:cb93c1d3209a | 167 | // invalid state in main found reset |
shreeshas95 | 8:cb93c1d3209a | 168 | reset_all(); |
shreeshas95 | 4:f95195748a0c | 169 | } |
shreeshas95 | 4:f95195748a0c | 170 | } |
shreeshas95 | 8:cb93c1d3209a | 171 | if(pass_over){ |
shreeshas95 | 8:cb93c1d3209a | 172 | pass_over = false; |
shreeshas95 | 8:cb93c1d3209a | 173 | first_time = true; |
shreeshas95 | 8:cb93c1d3209a | 174 | // pass got over reset all |
shreeshas95 | 8:cb93c1d3209a | 175 | reset_all(); |
shreeshas95 | 8:cb93c1d3209a | 176 | //also consider frame_no |
shreeshas95 | 8:cb93c1d3209a | 177 | } |
shreeshas95 | 0:b5b370873460 | 178 | } |
shreeshas95 | 8:cb93c1d3209a | 179 | } |