Dummy program to demonstrate problems: working code

Dependencies:   SLCD mbed-rtos mbed

Fork of MNG_TC by Shreesha S

Committer:
shreeshas95
Date:
Mon Jul 06 05:00:29 2015 +0000
Revision:
7:e71ecfe3a340
Parent:
6:6e9ae3b44e60
Child:
8:cb93c1d3209a
TRYING THREAD, TESTING, TO BE IMPROVED

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shreeshas95 3:eec1097c0dd6 1 #include "mbed.h"
shreeshas95 7:e71ecfe3a340 2 #include "rtos.h"
shreeshas95 6:6e9ae3b44e60 3 #define ENDL "\r" << endl
shreeshas95 2:994e741028c7 4
shreeshas95 5:a5a5300d7d49 5 #include "SLCD.h"
shreeshas95 5:a5a5300d7d49 6 SLCD lcd;
shreeshas95 5:a5a5300d7d49 7
shreeshas95 7:e71ecfe3a340 8 #define TIMEOUT_LIMIT 1
shreeshas95 7:e71ecfe3a340 9 #define MAX_NUM_LIST 4
shreeshas95 3:eec1097c0dd6 10
shreeshas95 3:eec1097c0dd6 11 Serial PC(USBTX, USBRX);
shreeshas95 4:f95195748a0c 12 Serial rx1m(PTE0, PTE1);
shreeshas95 2:994e741028c7 13
shreeshas95 2:994e741028c7 14 DigitalOut ledr(LED_RED);
shreeshas95 2:994e741028c7 15 DigitalOut ledg(LED_GREEN);
shreeshas95 2:994e741028c7 16
shreeshas95 3:eec1097c0dd6 17 #include "Structures.h"
shreeshas95 2:994e741028c7 18
shreeshas95 4:f95195748a0c 19 struct data_list{
shreeshas95 4:f95195748a0c 20 char val;
shreeshas95 4:f95195748a0c 21 struct data_list* next;
shreeshas95 4:f95195748a0c 22 };
shreeshas95 4:f95195748a0c 23
shreeshas95 3:eec1097c0dd6 24 namespace VAR_SPACE{
shreeshas95 3:eec1097c0dd6 25
shreeshas95 7:e71ecfe3a340 26 TC_list *Head_node1;
shreeshas95 7:e71ecfe3a340 27 TC_list *Head_node2;
shreeshas95 3:eec1097c0dd6 28
shreeshas95 7:e71ecfe3a340 29 bool rx_emergency = false;
shreeshas95 7:e71ecfe3a340 30
shreeshas95 3:eec1097c0dd6 31 /*
shreeshas95 3:eec1097c0dd6 32 * 0 : idle
shreeshas95 7:e71ecfe3a340 33 * 1 : RCV_TC running
shreeshas95 7:e71ecfe3a340 34 * 2 : RCV_TC handled, MNG_TM_TC running
shreeshas95 3:eec1097c0dd6 35 */
shreeshas95 4:f95195748a0c 36
shreeshas95 4:f95195748a0c 37 struct data_list *head_data;
shreeshas95 7:e71ecfe3a340 38 struct data_list *data_node;
shreeshas95 7:e71ecfe3a340 39 struct data_list *rx_new_node;
shreeshas95 7:e71ecfe3a340 40
shreeshas95 7:e71ecfe3a340 41 Thread *Com_mng_tc_thread;
shreeshas95 2:994e741028c7 42 }
shreeshas95 2:994e741028c7 43
shreeshas95 4:f95195748a0c 44 Timer rx_timer;
shreeshas95 7:e71ecfe3a340 45 bool data_received = false;
shreeshas95 4:f95195748a0c 46
shreeshas95 3:eec1097c0dd6 47 #include "mbed.h"
shreeshas95 3:eec1097c0dd6 48 #include "crc.h"
shreeshas95 7:e71ecfe3a340 49 #include "COM_RCV_TC.h"
shreeshas95 3:eec1097c0dd6 50 #include "SND_TM.h"
shreeshas95 3:eec1097c0dd6 51 #include "MNG_TC.h"
shreeshas95 3:eec1097c0dd6 52
shreeshas95 7:e71ecfe3a340 53 void rx_read(){
shreeshas95 4:f95195748a0c 54 //~ store value
shreeshas95 7:e71ecfe3a340 55 VAR_SPACE::rx_new_node->val = rx1m.getc();
shreeshas95 4:f95195748a0c 56
shreeshas95 4:f95195748a0c 57 //~ allocate new node
shreeshas95 7:e71ecfe3a340 58 VAR_SPACE::rx_new_node->next = new struct data_list;
shreeshas95 7:e71ecfe3a340 59 VAR_SPACE::rx_new_node = VAR_SPACE::rx_new_node->next;
shreeshas95 7:e71ecfe3a340 60 VAR_SPACE::rx_new_node->next = NULL;
shreeshas95 4:f95195748a0c 61
shreeshas95 7:e71ecfe3a340 62 rx_timer.reset();
shreeshas95 7:e71ecfe3a340 63 data_received = true;
shreeshas95 4:f95195748a0c 64 }
shreeshas95 2:994e741028c7 65
shreeshas95 2:994e741028c7 66 int main(){
shreeshas95 6:6e9ae3b44e60 67 printf("welcome to mng_tm_tc\r\n");
shreeshas95 4:f95195748a0c 68 ledr = 1;
shreeshas95 2:994e741028c7 69
shreeshas95 2:994e741028c7 70 PC.baud(9600);
shreeshas95 3:eec1097c0dd6 71
shreeshas95 7:e71ecfe3a340 72 // rx stuff
shreeshas95 4:f95195748a0c 73 rx1m.baud(1200);
shreeshas95 7:e71ecfe3a340 74 rx1m.attach(&rx_read);
shreeshas95 4:f95195748a0c 75 VAR_SPACE::head_data = new data_list;
shreeshas95 7:e71ecfe3a340 76 VAR_SPACE::rx_new_node = VAR_SPACE::head_data;
shreeshas95 7:e71ecfe3a340 77 VAR_SPACE::rx_new_node->next = NULL;
shreeshas95 5:a5a5300d7d49 78
shreeshas95 2:994e741028c7 79 while(true){
shreeshas95 3:eec1097c0dd6 80
shreeshas95 7:e71ecfe3a340 81 if(data_received && ( rx_timer.read() >= TIMEOUT_LIMIT ) ){
shreeshas95 7:e71ecfe3a340 82 if( (VAR_SPACE::Com_mng_tc_thread->get_state() == Thread::Inactive) ||
shreeshas95 7:e71ecfe3a340 83 (VAR_SPACE::Com_mng_tc_thread->get_state() == Thread::WaitingDelay) ){
shreeshas95 7:e71ecfe3a340 84 // inactive or osWaitForever
shreeshas95 7:e71ecfe3a340 85 delete VAR_SPACE::Com_mng_tc_thread;
shreeshas95 7:e71ecfe3a340 86 VAR_SPACE::Com_mng_tc_thread = new Thread( MNG_MAIN );
shreeshas95 7:e71ecfe3a340 87 }
shreeshas95 7:e71ecfe3a340 88 else{
shreeshas95 7:e71ecfe3a340 89 VAR_SPACE::rx_emergency = true;
shreeshas95 6:6e9ae3b44e60 90
shreeshas95 7:e71ecfe3a340 91 RCV_TC RcvClass( VAR_SPACE::Head_node2 );
shreeshas95 7:e71ecfe3a340 92 MNG_TC manager2( VAR_SPACE::Head_node2 );
shreeshas95 7:e71ecfe3a340 93
shreeshas95 7:e71ecfe3a340 94 manager2.update_valid_TC();
shreeshas95 7:e71ecfe3a340 95 manager2.decode_TC();
shreeshas95 7:e71ecfe3a340 96 manager2.execute_urgent();
shreeshas95 7:e71ecfe3a340 97
shreeshas95 7:e71ecfe3a340 98 VAR_SPACE::rx_emergency = false;
shreeshas95 4:f95195748a0c 99 }
shreeshas95 4:f95195748a0c 100 }
shreeshas95 7:e71ecfe3a340 101
shreeshas95 7:e71ecfe3a340 102 ledg = !ledg;
shreeshas95 7:e71ecfe3a340 103 Thread::wait(1000);
shreeshas95 0:b5b370873460 104 }
shreeshas95 7:e71ecfe3a340 105 }