rx serial inturrupt seems to hault code execution,,,

#include "mbed.h"
#include "MbedJSONValue.h"
#include "ConfigFile.h"

Serial pc(USBTX, USBRX);
Serial sensor(p28, p27);  // tx, rx

DigitalOut pc_activity(LED1);
DigitalOut uart_activity(LED2);

LocalFileSystem local("local");
ConfigFile cfg;

MbedJSONValue SensorData;
std::string s;

Ticker pingTick;
 
volatile bool pingTicked;
volatile bool pcResponse;

char pcResponseValue[BUFSIZ];
 
void pingTickFunction( void ) {
  pingTicked = true;
}

void pcRecvInterrupt( void ) {
    pcResponse = true;
}

bool linkedWithBaseStation = "FALSE";

char *sbNameKey = "SensorBoardName";
char sbNameValue[BUFSIZ];

char *sbFirstStartKey = "FirstStart";
char sbFirstStartValue[BUFSIZ];

char *sbUseBaseStationKey = "UseBaseStation";
char sbUseBaseStationValue[BUFSIZ];

void serializeJSON() {
    s = SensorData.serialize();
}

void pingBaseStation() {
    printf("{\"sbPing\": \"%s\"}\r\n", sbNameValue);
}

int main()
{
    pc.baud(38400);
    sensor.baud(38400);
    
    pingTicked = false;
    
    pc.attach(&pcRecvInterrupt);
    
    /*
     * Read a configuration file from a mbed.
     */
    if (!cfg.read("/local/settings.cfg")) {
        printf("Failure to read a configuration file.\n");
    }
    
     /*
      * Get a configuration value.
      * Then attach the sbNameValue to SensorData json
      */
     if (cfg.getValue(sbNameKey, &sbNameValue[0], sizeof(sbNameValue))) {
        //printf("'%s'='%s'\n", sbNameKey, sbNameValue);
        SensorData["name"] = sbNameValue;
     }

    /*
     * Get a configuration value.
     * Then attach the sbNameValue to SensorData json
     */
    if (cfg.getValue(sbFirstStartKey, &sbFirstStartValue[0], sizeof(sbFirstStartValue))) {
        if (strcmp(&sbFirstStartValue[0], "TRUE") == 0) {
            pingTick.attach(&pingTickFunction, 10);
            pingBaseStation();
                 
            while(!pc.readable()) {
                if (pingTicked) {
                  pingBaseStation();
                  pingTicked = false;
                }
            }
            
            if(pc.readable()) {
                pingTick.detach();
            }
            
            cfg.setValue("FirstStart", "FALSE");
            cfg.write("/local/settings.cfg");
        }
    }
    
    while(1) {
        wait(0.5);
        pc.printf("UHH");
    }
}


Please log in to post comments.