TELECOMMAND MANAGER V1

Dependencies:   mbed SLCD mbed-rtos

Committer:
shreeshas95
Date:
Fri Jul 17 07:31:49 2015 +0000
Revision:
11:109f16cc35d7
Parent:
10:024c2ef51cb1
thread with snd_tm unchecked

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 10:024c2ef51cb1 1 //how to handle interrupt while running other thread ?
shreeshas95 10:024c2ef51cb1 2
shreeshas95 3:eec1097c0dd6 3 #include "mbed.h"
shreeshas95 10:024c2ef51cb1 4 #include "rtos.h"
shreeshas95 6:6e9ae3b44e60 5 #define ENDL "\r" << endl
shreeshas95 2:994e741028c7 6
shreeshas95 5:a5a5300d7d49 7 #include "SLCD.h"
shreeshas95 5:a5a5300d7d49 8 SLCD lcd;
shreeshas95 5:a5a5300d7d49 9
shreeshas95 8:cb93c1d3209a 10 #define RX_TIMEOUT_LIMIT 2
shreeshas95 8:cb93c1d3209a 11 #define PASS_TIME_LIMIT 1200
shreeshas95 3:eec1097c0dd6 12
shreeshas95 3:eec1097c0dd6 13 Serial PC(USBTX, USBRX);
shreeshas95 10:024c2ef51cb1 14 RawSerial rx1m(PTE0, PTE1);
shreeshas95 2:994e741028c7 15
shreeshas95 2:994e741028c7 16 DigitalOut ledr(LED_RED);
shreeshas95 2:994e741028c7 17 DigitalOut ledg(LED_GREEN);
shreeshas95 2:994e741028c7 18
shreeshas95 3:eec1097c0dd6 19 #include "Structures.h"
shreeshas95 2:994e741028c7 20
shreeshas95 4:f95195748a0c 21 struct data_list{
shreeshas95 8:cb93c1d3209a 22 unsigned char val;
shreeshas95 4:f95195748a0c 23 struct data_list* next;
shreeshas95 4:f95195748a0c 24 };
shreeshas95 4:f95195748a0c 25
shreeshas95 3:eec1097c0dd6 26 namespace VAR_SPACE{
shreeshas95 3:eec1097c0dd6 27
shreeshas95 8:cb93c1d3209a 28 TC_list *Head_node = NULL;
shreeshas95 8:cb93c1d3209a 29 TC_list *last_node = NULL;
shreeshas95 3:eec1097c0dd6 30
shreeshas95 8:cb93c1d3209a 31 int rx_state = 0;
shreeshas95 3:eec1097c0dd6 32 /*
shreeshas95 8:cb93c1d3209a 33 0 : idle
shreeshas95 8:cb93c1d3209a 34 1 : executing normal
shreeshas95 8:cb93c1d3209a 35 2 : executing obosc
shreeshas95 8:cb93c1d3209a 36 3 : idle 2 : obosc received incorrectly
shreeshas95 8:cb93c1d3209a 37 */
shreeshas95 8:cb93c1d3209a 38
shreeshas95 4:f95195748a0c 39 struct data_list *head_data;
shreeshas95 8:cb93c1d3209a 40 data_list *data_node;
shreeshas95 7:e71ecfe3a340 41 struct data_list *rx_new_node;
shreeshas95 8:cb93c1d3209a 42
shreeshas95 8:cb93c1d3209a 43 bool new_tc_received = false;
shreeshas95 8:cb93c1d3209a 44 bool execute_obosc = false;
shreeshas95 10:024c2ef51cb1 45
shreeshas95 10:024c2ef51cb1 46 Thread *mng_tmtc_thread = NULL;
shreeshas95 11:109f16cc35d7 47 Thread *COM_RCV_TC_thread = NULL;
shreeshas95 2:994e741028c7 48 }
shreeshas95 2:994e741028c7 49
shreeshas95 8:cb93c1d3209a 50 Timeout rx_timeout;
shreeshas95 8:cb93c1d3209a 51 bool pass_over = false;
shreeshas95 8:cb93c1d3209a 52 bool first_time = true;
shreeshas95 8:cb93c1d3209a 53 Timeout pass_time;
shreeshas95 4:f95195748a0c 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 11:109f16cc35d7 60 #include "crc.h"
shreeshas95 11:109f16cc35d7 61 #include "Convolution.h"
shreeshas95 11:109f16cc35d7 62 #include "SND_TM.h"
shreeshas95 11:109f16cc35d7 63 #include "COM_RCV_TC.h"
shreeshas95 11:109f16cc35d7 64 #include "MNG_TC.h"
shreeshas95 11:109f16cc35d7 65 #include "ThreadFunctions.h"
shreeshas95 10:024c2ef51cb1 66
shreeshas95 10:024c2ef51cb1 67 void rx_read() {
shreeshas95 10:024c2ef51cb1 68 // store value
shreeshas95 10:024c2ef51cb1 69 // rx_char = UART1->D;
shreeshas95 11:109f16cc35d7 70 VAR_SPACE::rx_new_node->val = rx1m.getc();
shreeshas95 8:cb93c1d3209a 71
shreeshas95 11:109f16cc35d7 72 VAR_SPACE::COM_RCV_TC_thread->signal_set(0x01);
shreeshas95 4:f95195748a0c 73 }
shreeshas95 2:994e741028c7 74
shreeshas95 2:994e741028c7 75 int main(){
shreeshas95 8:cb93c1d3209a 76
shreeshas95 6:6e9ae3b44e60 77 printf("welcome to mng_tm_tc\r\n");
shreeshas95 2:994e741028c7 78
shreeshas95 2:994e741028c7 79 PC.baud(9600);
shreeshas95 3:eec1097c0dd6 80
shreeshas95 4:f95195748a0c 81 rx1m.baud(1200);
shreeshas95 10:024c2ef51cb1 82 rx1m.attach(&rx_read, Serial::RxIrq);
shreeshas95 4:f95195748a0c 83 VAR_SPACE::head_data = new data_list;
shreeshas95 8:cb93c1d3209a 84 VAR_SPACE::head_data->next = NULL;
shreeshas95 7:e71ecfe3a340 85 VAR_SPACE::rx_new_node = VAR_SPACE::head_data;
shreeshas95 8:cb93c1d3209a 86
shreeshas95 10:024c2ef51cb1 87 VAR_SPACE::mng_tmtc_thread = new Thread(com_mng_fun);
shreeshas95 8:cb93c1d3209a 88 MNG_TC::init();
shreeshas95 11:109f16cc35d7 89 VAR_SPACE::COM_RCV_TC_thread = new Thread(com_rcv_tc_fun);
shreeshas95 8:cb93c1d3209a 90
shreeshas95 8:cb93c1d3209a 91 lcd.printf("0");
shreeshas95 8:cb93c1d3209a 92
shreeshas95 8:cb93c1d3209a 93 struct data_list *hehe = VAR_SPACE::head_data;
shreeshas95 8:cb93c1d3209a 94 while( hehe != NULL ){
shreeshas95 8:cb93c1d3209a 95 printf("%x ", hehe->val);
shreeshas95 8:cb93c1d3209a 96 hehe = hehe->next;
shreeshas95 8:cb93c1d3209a 97 }
shreeshas95 8:cb93c1d3209a 98 printf("\r\n");
shreeshas95 5:a5a5300d7d49 99
shreeshas95 2:994e741028c7 100 while(true){
shreeshas95 10:024c2ef51cb1 101 // ledg = !ledg;
shreeshas95 8:cb93c1d3209a 102 if(pass_over){
shreeshas95 8:cb93c1d3209a 103 pass_over = false;
shreeshas95 8:cb93c1d3209a 104 first_time = true;
shreeshas95 8:cb93c1d3209a 105 // pass got over reset all
shreeshas95 8:cb93c1d3209a 106 reset_all();
shreeshas95 8:cb93c1d3209a 107 //also consider frame_no
shreeshas95 8:cb93c1d3209a 108 }
shreeshas95 0:b5b370873460 109 }
shreeshas95 8:cb93c1d3209a 110 }