TELECOMMAND MANAGER V1

Dependencies:   mbed SLCD mbed-rtos

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?

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