TELECOMMAND MANAGER V1

Dependencies:   mbed SLCD mbed-rtos

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?

UserRevisionLine numberNew 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 }