Dummy program to demonstrate problems: working code

Dependencies:   SLCD mbed-rtos mbed

Fork of MNG_TC by Shreesha S

Committer:
shreeshas95
Date:
Thu Sep 17 14:15:00 2015 +0000
Revision:
17:2b04e53f3b1d
Parent:
14:a4c259ca0325
DUMMP program to demonstrate the problems : working

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