Dummy program to demonstrate problems: working code
Dependencies: SLCD mbed-rtos mbed
Fork of MNG_TC by
main.cpp@17:2b04e53f3b1d, 2015-09-17 (annotated)
- 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?
User | Revision | Line number | New 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 | } |