bool readAndSend(TMailboxIDs incomingMailbox, TMailboxIDs outGoingMailbox)
{
  TFileIOResult nBTCmdErrorStatus;
  int nSizeOfMessage;

    // Check to see if a message is available

//  waitBtIdle();
    nSizeOfMessage = cCmdMessageGetSize(incomingMailbox);
    while (nSizeOfMessage == 0)
    {
      nSizeOfMessage = cCmdMessageGetSize(incomingMailbox);
      wait1Msec(50);
    }

//      PlaySound(soundLowBuzz);
      if (nSizeOfMessage > dataSize)
        nSizeOfMessage = dataSize;
      waitBtIdle();
      nBTCmdErrorStatus = cCmdMessageRead(dataReceived, nSizeOfMessage, incomingMailbox);
	    waitBtIdle();

      if(dataReceived[0]==1) {
//	  TFileIOResult res = cCmdBTCheckStatus(0);
	        prepareDataToSend();
	        waitBtIdle();
          nBTCmdErrorStatus = cCmdMessageWriteToBluetooth(0, dataToSend, dataSize, outGoingMailbox);
    	    waitBtIdle();
          count++;
        }
  return false;
}
/* This will send complete html page with http headers and everything. */
void RemoteHomeWifi::sendPageWithMenuAndHeaderResponse() {
    int ln = outputString.length()+menuString.length()+pageHeadString.length()+version.length()+strlen(HTML_START)+strlen(HTML_START2)+strlen(HTML_VERSION)+strlen(HTML_END)+strlen(HTML_P_END);
    prepareDataToSend(ln);
    printString(HTML_START);
    printStr(pageHeadString);
    printString(HTML_START2);    
    printStr(menuString);
    printString(HTML_P_END);
    printStr(outputString);
    printString(HTML_VERSION);
    printStr(version);
    printString(HTML_END);
    _ser.find(ANSWER_DATA_OK);   
    closeConnection();
}
/* This will establish the connection to the http server. For the programming, the transparent data mode needs to be used. If the parameter is true, then the programming mode is used. */
boolean RemoteHomeWifi::establishConnectionToServer(boolean progPort, const int ip, const int port) {
    cleanSerialBuffer();
    _ser.setTimeout(10000);
    if (progPort) {
        sendATCommand(AT_SET_SERVER_DISABLE, "\n");
        sendATCommand(AT_CMD_RST, ANSWER_READY);
        waitToConnectToNetwork(20);        
        sendATCommand(AT_SET_SINGLE_CONNECTION, ANSWER_OK);
        sendATCommand(AT_SET_DATA_MODE, ANSWER_OK);
        printString(AT_CREATE_SINGLE_TCP_CONNECTION);
    } else {
        communicationChannelId = 1;
        printString(AT_CREATE_TCP_CONNECTION);
    }
    _ser.print(EEPROM.read(ip), DEC);
    for (int i=1;i<4;i++) {
        _ser.print('.');
        _ser.print(EEPROM.read(ip+i), DEC);
    }
    printString(AT_QUOTATION_MARK);
    printString(AT_COMMA);
    char* portValue;
    portValue = readIntFromEEPROM(port);
    _ser.print(portValue);   
    printCrLf();
    if (_ser.find(ANSWER_OK)) {       
        if (!progPort) {
            prepareDataToSend(outputString.length());
            printStr(outputString);
            _ser.find(ANSWER_DATA_OK);
            setDefaultSerialTimeout();
            closeConnection();
            cleanSerialBuffer();
        } else {
            sendATCommand(AT_SEND_DATA_SINGLECH, AT_STARTDATA);
        }
        setDefaultSerialTimeout();
        return true;
    } else {
        setDefaultSerialTimeout();
        return false;
    }
}
/* This will send 404 error - not found. */
void RemoteHomeWifi::sendDataNotFound() {
    prepareDataToSend(strlen(HTTP_RESPONSE_NOT_FOUND));
    printString(HTTP_RESPONSE_NOT_FOUND);
    _ser.find(ANSWER_DATA_OK);
}