Exemple #1
0
void printMultiYesNo(char *result, char *s){
	int cc, ccMax, idxMax;
	cc = 0;ccMax = 0;idxMax = -1;


    cc = matchChars(result, "YES");
    if(ccMax < cc){ccMax = cc;idxMax = 0;}
    cc = matchChars(result, "NO");
    if(ccMax < cc){ccMax = cc;idxMax = 1;}
    if(idxMax == 0)
    	  sprintf(s, "%s \"ismultiplier\": true\n",s);
    else
    	  sprintf(s, "%s \"ismultiplier\": false\n",s);
}
Exemple #2
0
void GPRS::testMatchChars()
{ 
  
  Serial.println("Type OK or + in 10000ms");
  if (!matchChars(&Serial, "OK", 10000, "+")) {
    Serial.println("Not found");
  }
  
}
void getMonth(char *m, char *mOut){
	int cc, ccMax, idxMax, cc2;
	int i;
	cc = 0;ccMax = 0;idxMax = -1;
	cc2 = 0;
	for(i=0;i<12;i++) {
	   cc = matchChars(m, Month_Names[i]);
	   if(ccMax == cc) cc2++;
	   else {
	      if(ccMax < cc){ccMax = cc;idxMax = i;cc2 = 0;}
	   }
	}
//printf("-------m=  %s, ccMax= %d, cc2= %d idxMax= %d\n", m, ccMax, cc2, idxMax);
//if(idxMax >= 0)
//	printf("-------Month_Names[idxMax]=  %s\n", Month_Names[idxMax]);

	if(cc2 == 0 && ccMax > 0) strcpy(mOut, Month_Names[idxMax]);
	else strcpy(mOut, m);
}
Exemple #4
0
int testMonth(char *tmpStr){
	int cc, ccMax, idxMax, cc2;
	int i;
	cc = 0;ccMax = 0;idxMax = -1;
	cc2 = 0;
	for(i=0;i<12;i++) {
	   cc = matchChars(tmpStr, M_Names[i]);
	   if(ccMax == cc) cc2++;
	   else {
	      if(ccMax < cc){ccMax = cc;idxMax = i;cc2 = 0;}
	   }
	}
	idxMax++;
	tmpStr[0] = 0;
	if(cc2 == 0 && ccMax > 1) {
		if(idxMax<9) {strcpy(tmpStr,"0");tmpStr[1] = idxMax+'0';}
		else sprintf(tmpStr,"%d",idxMax);
		tmpStr[2]=0;
		return 1;
	}
	else return 0;
}
Exemple #5
0
bool GPRS::readTcpPrompt(Stream* stream)
{
  bool result = matchChars(stream, "> ", -1);
  consume(stream);
  return result;
}
Exemple #6
0
bool GPRS::readPrompt(Stream* stream)
{
  bool result = matchChars(stream, "> ", -1, "OK\n\n> ");
  consume(stream);
  return result;
}
Exemple #7
0
bool GPRS::readOK(Stream* stream)
{
  bool result = matchChars(stream, "OK");
  consume(stream);
  return result;
}
Exemple #8
0
// Taken from http://www.sparkfun.com/datasheets/CellularShield/SM5100B%20TCPIP%20App%20Note.pdf
bool GPRS::sendTCP(Stream* stream, char* host, int port, char* data)
{
  int buflen = 100;
  char buffer[buflen]; 


  #ifdef GPRS_DEBUG
    Serial.println("AT+CGATT?");
  #endif
  stream->println("AT+CGATT?");
  
  if (!matchChars(stream, "+CGATT: 1"))
  {
    #ifdef GPRS_DEBUG
      Serial.println("Could not find CGATT : 1");
    #endif
    return false;
  }
  if (!readOK(stream)) {
    #ifdef GPRS_DEBUG
      Serial.println("Not ok");
    #endif
    return false;
  }
  
  /*#ifdef GPRS_DEBUG
    Serial.println("AT+CGDCONT=?");
  #endif
  // It appears that this should only happen once, however there is no real way to test it easily
  stream->println("AT+CGDCONT?");
  if (readOK(stream))
  {
    #ifdef GPRS_DEBUG
      Serial.print("AT+CGDCONT=1,\"IP\",\"");
      Serial.print(pdp);
      Serial.println("\"");
    #endif
    stream->print("AT+CGDCONT=1,\"IP\",\"");
    stream->print(pdp);
    stream->println("\"");
    if (!readOK(stream)) {
      #ifdef GPRS_DEBUG
        Serial.println("Not ok");
      #endif
      return false;
    }
  } 
  else 
  {
    #ifdef GPRS_DEBUG
      Serial.println("Have context already");
    #endif
    consume(stream);
  }
  */
  #ifdef GPRS_DEBUG
    Serial.print("AT+CGDCONT=1,\"IP\",\"");
    Serial.print(pdp);
    Serial.println("\"");
  #endif
  stream->print("AT+CGDCONT=1,\"IP\",\"");
  stream->print(pdp);
  stream->println("\"");
  if (!matchChars(stream, "OK", -1, "+CME ERROR: 4")) {
    #ifdef GPRS_DEBUG
      Serial.println("Not ok or error 4");
    #endif
    return false;
  }
  if (strlen(username) > 0) {
    #ifdef GPRS_DEBUG
      Serial.println("Username/Password");
    #endif
    stream->print("AT+CGPCO=0,\"");
    stream->print(username);
    stream->print("\",\"");
    stream->print(password);
    stream->println("\", 1 ");
    if (!readOK(stream)) {
      #ifdef GPRS_DEBUG
        Serial.println("Not ok");
      #endif
      return false;
    }
  }
  
  #ifdef GPRS_DEBUG
    Serial.println("AT+CGACT=1,1");
  #endif
  stream->println("AT+CGACT=1,1");
  if (!readOK(stream)) {
    #ifdef GPRS_DEBUG
      Serial.println("Not ok");
    #endif
    return false;
  }
  
  #ifdef GPRS_DEBUG
    Serial.print("AT+SDATACONF=1,\"TCP\",\"");
    Serial.print(host);
    Serial.print("\",");
    Serial.println(port);
  #endif
  stream->print("AT+SDATACONF=1,\"TCP\",\"");
  stream->print(host);
  stream->print("\",");
  stream->println(port);
  if (!readOK(stream)) {
    #ifdef GPRS_DEBUG
      Serial.println("Not ok");
    #endif
    return false;
  }
  
  #ifdef GPRS_DEBUG
    Serial.println("AT+SDATASTART=1,1");
  #endif
  stream->println("AT+SDATASTART=1,1");
  if (!readOK(stream)) {
    #ifdef GPRS_DEBUG
      Serial.println("Not ok");
    #endif
    return false;
  }
  bool connected = false;
    #ifdef GPRS_DEBUG
    Serial.println("AT+SDATASTATUS=1");
  #endif
  while (!connected) {
    stream->println("AT+SDATASTATUS=1");
    readUntil(stream, buffer, buflen, '+');
    readUntil(stream, buffer, buflen, '\n');
    // Expecting
    //+SOCKSTATUS:  1,0,0104,0,0,0

    #ifdef GPRS_DEBUG
      Serial.print("B: ");
      Serial.println(buffer);
    #endif

    if (strcmp(buffer, "SOCKSTATUS:  1,1,0102,0,0,0\r") == 0) {
      connected = true;
    }
  }
  #ifdef GPRS_DEBUG
    Serial.print("AT+SDATATSEND=1,");
    Serial.println(strlen(data));
  #endif
  stream->print("AT+SDATATSEND=1,");
  stream->println(strlen(data));
  if (!readOK(stream)) {
    #ifdef GPRS_DEBUG
      Serial.println("Not ok");
    #endif
    return false;
  }
  if(!readTcpPrompt(stream)) {
    #ifdef GPRS_DEBUG
      Serial.println("No prompt");
    #endif
    return false;
  }
  #ifdef GPRS_DEBUG
    Serial.print(data);
  #endif
  stream->print(data);
  stream->print(26, BYTE);
  if (!readOK(stream)) {
    #ifdef GPRS_DEBUG
      Serial.println("Not ok");
    #endif
    return false;
  }
  
  #ifdef GPRS_DEBUG
    Serial.println("AT+SDATASTART=1,0");
  #endif
  stream->println("AT+SDATASTART=1,0");
  if (!readOK(stream)) {
    #ifdef GPRS_DEBUG
      Serial.println("Not ok");
    #endif
    return false;
  }
  return true;
}
Exemple #9
0
bool GPRS::sendSMS(Stream* stream, char* number, char* msg)
{

  /*
  AT+CMGF=1   
  AT+CMGS="15921272576" 
  > HELLO9527<ctrl-z > 
  +CMGS: 36 
  OK
  */
  
  if (!configureSMS(stream)) {
    #ifdef GPRS_DEBUG
      Serial.println("\nCould not configure");
    #endif
    return false;
  }
  
  #ifdef GPRS_DEBUG
    Serial.println("\nSend phone number");
  #endif
  stream->print("AT+CMGS=\"");
  stream->print(number);
  stream->println("\"");
  #ifdef GPRS_DEBUG
    Serial.println("\nWait for prompt");
  #endif
  if (!readPrompt(stream))
  {
    #ifdef GPRS_DEBUG
      Serial.println("No Prompt");
    #endif
    return false;
  }
  
  stream->print(msg);
  stream->print(26, BYTE);
  int buflen = 100;
  char buffer[buflen];
  
  #ifdef GPRS_DEBUG
    Serial.println("\nWait for response");
  #endif
  if (!matchChars(stream, "+CMGS:")) {
    #ifdef GPRS_DEBUG
      Serial.println("No +CMGS:");
    #endif
    return false;
  }
  if (!readUntil(stream, buffer, buflen, '\n'))
  {
    #ifdef GPRS_DEBUG
      Serial.println("No new line");
    #endif
    return false;
  }
  
  #ifdef GPRS_DEBUG
    Serial.println("\nWait for OK");
  #endif
  if (!readOK(stream))
  {
    #ifdef GPRS_DEBUG
      Serial.println("No OK 2");
    #endif
    return false;
  }
  
  return true;
}