Dummy program to demonstrate problems: working code
Dependencies: SLCD mbed-rtos mbed
Fork of MNG_TC by
main.cpp
- Committer:
- shreeshas95
- Date:
- 2015-06-25
- Revision:
- 5:a5a5300d7d49
- Parent:
- 4:f95195748a0c
- Child:
- 6:6e9ae3b44e60
File content as of revision 5:a5a5300d7d49:
#include "mbed.h" #include "SLCD.h" SLCD lcd; #define TIMEOUT_LIMIT 15 Serial PC(USBTX, USBRX); Serial rx1m(PTE0, PTE1); DigitalOut ledr(LED_RED); DigitalOut ledg(LED_GREEN); #include "Structures.h" struct data_list{ char val; struct data_list* next; }; namespace VAR_SPACE{ TC_list *Head_node = NULL; int rx_state = 0; /* * 0 : idle * 1 : Rx interrupt received, saving data * 2 : interrupt handled, RX_RCV_TX running * 3 : RX_RCV_TC handled, MNG_TM_TC handled */ struct data_list *head_data; data_list *data_node; // remove // unsigned char *data; } unsigned int rx_bytes = 0; Timer rx_timer; struct data_list *rx_new_node; #include "mbed.h" #include "crc.h" #include "SND_TM.h" #include "MNG_TC.h" #include "COM_RCV_TC.h" void callback() { //~ store value rx_new_node->val = rx1m.getc(); //~ allocate new node rx_new_node->next = new data_list; rx_new_node = rx_new_node->next; rx_new_node->next = NULL; rx_timer.stop(); rx_timer.start(); ++rx_bytes; VAR_SPACE::rx_state = 1; } //remove //void pc_isr(){ // PC.attach(NULL); // VAR_SPACE::rx_state = 1; // rx_timer.start(); //} //using namespace VAR_SPACE; int main(){ // printf("welcome to mng_tm_tc\r\n"); ledr = 1; PC.baud(9600); // PC.attach(&pc_isr); rx1m.baud(1200); rx1m.attach(&callback); VAR_SPACE::head_data = new data_list; rx_new_node = VAR_SPACE::head_data; // remove // VAR_SPACE::data = new unsigned char[100]; // data[0] = 0x7e; // data[1] = 0x01; // data[2] = 0xa1; // data[3] = 0x61; // data[4] = 0x01; // data[5] = 0x02; // data[6] = 0xef; // data[7] = 0x96; // data[8] = 0x80; // data[9] = 0x00; // data[10] = 0x4b; // data[11] = 0xee; // data[12] = 0x9f; // data[13] = 0x9f; // data[14] = 0x80; lcd.printf("0"); while(true){ ledg = !ledg; if(VAR_SPACE::rx_state == 1){ lcd.printf("01"); // remove // while( rx_timer.read() < 15 ){ // if( PC.readable() ){ // VAR_SPACE::data[bytes] = PC.getc(); // } // } // PC.attach(&pc_isr); // VAR_SPACE::rx_state = 2; // endremove if( rx_timer.read() > TIMEOUT_LIMIT ){ //~ TIMEOUT REACHED MOVE ON TO RX_RCV_TC VAR_SPACE::rx_state = 2; lcd.printf("012"); // printf("received %u bytes\r\n", rx_bytes); } } else if( VAR_SPACE::rx_state == 2 ){ // printf("Calling rcv_tc\r\n"); VAR_SPACE::data_node = VAR_SPACE::head_data; RCV_TC::RX_RCV_TC(); VAR_SPACE::rx_state = 3; } else if( VAR_SPACE::rx_state == 3 ){ // printf("calling mng tc\r\n"); lcd.printf("0123"); MNG_TC::init( VAR_SPACE::Head_node ); MNG_TC::start_with(); VAR_SPACE::rx_state = 0; //~ delete linked list rx_new_node = VAR_SPACE::head_data; while(rx_new_node != NULL){ data_list *temp = rx_new_node; rx_new_node = rx_new_node->next; delete temp; } // printf("successfully sent data\r\n"); } } }