TELECOMMAND MANAGER V1

Dependencies:   mbed SLCD mbed-rtos

Committer:
shreeshas95
Date:
Thu Sep 17 13:54:08 2015 +0000
Revision:
16:de2224dd9a0d
Parent:
13:7b27a8e9cbb4
DUMMY program to demostrate the problems

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 13:7b27a8e9cbb4 10 #define RX_TIMEOUT_LIMIT 1
shreeshas95 8:cb93c1d3209a 11 #define PASS_TIME_LIMIT 1200
shreeshas95 13:7b27a8e9cbb4 12 #define PAYLOAD_DMA_SIZE 2190
shreeshas95 3:eec1097c0dd6 13
shreeshas95 3:eec1097c0dd6 14 Serial PC(USBTX, USBRX);
shreeshas95 10:024c2ef51cb1 15 RawSerial rx1m(PTE0, PTE1);
shreeshas95 2:994e741028c7 16
shreeshas95 13:7b27a8e9cbb4 17 Mutex SPI_mutex;
shreeshas95 13:7b27a8e9cbb4 18
shreeshas95 2:994e741028c7 19 DigitalOut ledr(LED_RED);
shreeshas95 2:994e741028c7 20 DigitalOut ledg(LED_GREEN);
shreeshas95 2:994e741028c7 21
shreeshas95 3:eec1097c0dd6 22 #include "Structures.h"
shreeshas95 2:994e741028c7 23
shreeshas95 4:f95195748a0c 24 struct data_list{
shreeshas95 8:cb93c1d3209a 25 unsigned char val;
shreeshas95 4:f95195748a0c 26 struct data_list* next;
shreeshas95 4:f95195748a0c 27 };
shreeshas95 4:f95195748a0c 28
shreeshas95 3:eec1097c0dd6 29 namespace VAR_SPACE{
shreeshas95 3:eec1097c0dd6 30
shreeshas95 8:cb93c1d3209a 31 TC_list *Head_node = NULL;
shreeshas95 8:cb93c1d3209a 32 TC_list *last_node = NULL;
shreeshas95 3:eec1097c0dd6 33
shreeshas95 8:cb93c1d3209a 34 int rx_state = 0;
shreeshas95 3:eec1097c0dd6 35 /*
shreeshas95 8:cb93c1d3209a 36 0 : idle
shreeshas95 8:cb93c1d3209a 37 1 : executing normal
shreeshas95 8:cb93c1d3209a 38 2 : executing obosc
shreeshas95 8:cb93c1d3209a 39 3 : idle 2 : obosc received incorrectly
shreeshas95 8:cb93c1d3209a 40 */
shreeshas95 8:cb93c1d3209a 41
shreeshas95 4:f95195748a0c 42 struct data_list *head_data;
shreeshas95 8:cb93c1d3209a 43 data_list *data_node;
shreeshas95 7:e71ecfe3a340 44 struct data_list *rx_new_node;
shreeshas95 8:cb93c1d3209a 45
shreeshas95 8:cb93c1d3209a 46 bool new_tc_received = false;
shreeshas95 8:cb93c1d3209a 47 bool execute_obosc = false;
shreeshas95 10:024c2ef51cb1 48
shreeshas95 13:7b27a8e9cbb4 49 uint8_t payload_dma_buffer[PAYLOAD_DMA_SIZE];
shreeshas95 13:7b27a8e9cbb4 50
shreeshas95 10:024c2ef51cb1 51 Thread *mng_tmtc_thread = NULL;
shreeshas95 13:7b27a8e9cbb4 52 Thread *COM_RCV_TC_thread = NULL;
shreeshas95 13:7b27a8e9cbb4 53 // Thread *COM_payload_thread = NULL;
shreeshas95 2:994e741028c7 54 }
shreeshas95 2:994e741028c7 55
shreeshas95 8:cb93c1d3209a 56 Timeout rx_timeout;
shreeshas95 8:cb93c1d3209a 57 bool pass_over = false;
shreeshas95 8:cb93c1d3209a 58 bool first_time = true;
shreeshas95 8:cb93c1d3209a 59 Timeout pass_time;
shreeshas95 4:f95195748a0c 60
shreeshas95 8:cb93c1d3209a 61 void after_pass(){
shreeshas95 8:cb93c1d3209a 62 pass_time.detach();
shreeshas95 8:cb93c1d3209a 63 pass_over = true;
shreeshas95 8:cb93c1d3209a 64 }
shreeshas95 8:cb93c1d3209a 65
shreeshas95 13:7b27a8e9cbb4 66 #include "crc.h"
shreeshas95 13:7b27a8e9cbb4 67 #include "mbed_debug.h"
shreeshas95 13:7b27a8e9cbb4 68 #include "Convolution.h"
shreeshas95 13:7b27a8e9cbb4 69 #include "interleave.h"
shreeshas95 13:7b27a8e9cbb4 70 #include "snd_tm_class.h"
shreeshas95 13:7b27a8e9cbb4 71 #include "SD_read.h"
shreeshas95 13:7b27a8e9cbb4 72 #include "adf.h"
shreeshas95 13:7b27a8e9cbb4 73 #include "compression.h"
shreeshas95 13:7b27a8e9cbb4 74 #include "SDCard_initionalisation.h"
shreeshas95 13:7b27a8e9cbb4 75 #include "COM_RCV_TC.h"
shreeshas95 13:7b27a8e9cbb4 76 #include "MNG_TC.h"
shreeshas95 13:7b27a8e9cbb4 77 #include "ThreadFunctions.h"
shreeshas95 10:024c2ef51cb1 78
shreeshas95 10:024c2ef51cb1 79 void rx_read() {
shreeshas95 10:024c2ef51cb1 80 // store value
shreeshas95 10:024c2ef51cb1 81 // rx_char = UART1->D;
shreeshas95 13:7b27a8e9cbb4 82 ledg = !ledg;
shreeshas95 13:7b27a8e9cbb4 83 VAR_SPACE::rx_new_node->val = rx1m.getc();
shreeshas95 8:cb93c1d3209a 84
shreeshas95 13:7b27a8e9cbb4 85 VAR_SPACE::COM_RCV_TC_thread->signal_set(0x01);
shreeshas95 4:f95195748a0c 86 }
shreeshas95 2:994e741028c7 87
shreeshas95 2:994e741028c7 88 int main(){
shreeshas95 8:cb93c1d3209a 89
shreeshas95 6:6e9ae3b44e60 90 printf("welcome to mng_tm_tc\r\n");
shreeshas95 2:994e741028c7 91
shreeshas95 2:994e741028c7 92 PC.baud(9600);
shreeshas95 3:eec1097c0dd6 93
shreeshas95 4:f95195748a0c 94 rx1m.baud(1200);
shreeshas95 16:de2224dd9a0d 95 // rx1m.attach(&rx_read, Serial::RxIrq);
shreeshas95 4:f95195748a0c 96 VAR_SPACE::head_data = new data_list;
shreeshas95 8:cb93c1d3209a 97 VAR_SPACE::head_data->next = NULL;
shreeshas95 7:e71ecfe3a340 98 VAR_SPACE::rx_new_node = VAR_SPACE::head_data;
shreeshas95 8:cb93c1d3209a 99
shreeshas95 10:024c2ef51cb1 100 VAR_SPACE::mng_tmtc_thread = new Thread(com_mng_fun);
shreeshas95 8:cb93c1d3209a 101 MNG_TC::init();
shreeshas95 13:7b27a8e9cbb4 102 VAR_SPACE::COM_RCV_TC_thread = new Thread(com_rcv_tc_fun);
shreeshas95 13:7b27a8e9cbb4 103 // VAR_SPACE::COM_payload_thread = new Thread(com_pay_thread_fun);
shreeshas95 8:cb93c1d3209a 104
shreeshas95 8:cb93c1d3209a 105 lcd.printf("0");
shreeshas95 8:cb93c1d3209a 106
shreeshas95 16:de2224dd9a0d 107
shreeshas95 16:de2224dd9a0d 108 // DUMMY PROGRAM START
shreeshas95 16:de2224dd9a0d 109 unsigned char dummy_tc[] = {0x7e, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x7e};
shreeshas95 16:de2224dd9a0d 110 for(int i = 0 ; i < 13 ; ++i){
shreeshas95 16:de2224dd9a0d 111 VAR_SPACE::rx_new_node->val = dummy_tc[i];
shreeshas95 16:de2224dd9a0d 112 VAR_SPACE::COM_RCV_TC_thread->signal_set(0x01);
shreeshas95 16:de2224dd9a0d 113 Thread::wait(0.01);
shreeshas95 8:cb93c1d3209a 114 }
shreeshas95 16:de2224dd9a0d 115 // DUMMY PROGRAM END
shreeshas95 16:de2224dd9a0d 116
shreeshas95 5:a5a5300d7d49 117
shreeshas95 2:994e741028c7 118 while(true){
shreeshas95 10:024c2ef51cb1 119 // ledg = !ledg;
shreeshas95 8:cb93c1d3209a 120 if(pass_over){
shreeshas95 8:cb93c1d3209a 121 pass_over = false;
shreeshas95 8:cb93c1d3209a 122 first_time = true;
shreeshas95 8:cb93c1d3209a 123 // pass got over reset all
shreeshas95 8:cb93c1d3209a 124 reset_all();
shreeshas95 8:cb93c1d3209a 125 //also consider frame_no
shreeshas95 8:cb93c1d3209a 126 }
shreeshas95 0:b5b370873460 127 }
shreeshas95 8:cb93c1d3209a 128 }