int sendTextMessage(struct ModemInterface* interf, char* number, char* buffer) { #if defined(LINUX) || defined(ARDUINO) mmSendCommand(interf, F("AT+CMGS=\"")); mmSendCommand(interf, number); mmSendCommand(interf, F("\"\r")); if (mmFind(interf->modem, F(">"))) { mmSendCommand(interf, buffer); mmWriteByte(interf->modem, 26); mmSendCommand(interf, F("\r")); return 1; } return 0; #endif #ifdef _WIN32 char c; mmSendCommand(interf, "AT+CMGS=\""); mmSendCommand(interf, number); mmSendCommand(interf, "\"\r"); Sleep(1); if (mmFind(interf->modem, ">")) { mmSendCommand(interf, buffer); mmWriteByte(interf->modem, (char)26); mmSendCommand(interf, "\r"); return 1; } return 0; #endif }
int mmRetrieveTextMessage(struct ModemInterface* interface, char* buffer, int length, int id) { mmSendCommand(interface, F("AT+CMGR=")); mmPrinti(interface->modem, id); //mmSendCommand(interface, id); mmWriteByte(interface->modem, '\r'); mmFind(interface->modem, F("AT+CMGR=")); int c = mmFindChars(interface->modem, 'E', ':'); int len; if (c == ':') { //mmFindChar(interface->modem, ':')) { mmFindChar(interface->modem, ':'); for(int i = 0; i < 7; i++) mmFindChar(interface->modem, ','); len = mmParseInt(interface->modem); mmFindChar(interface->modem, '\n'); if(length > len) length = len; len = length; int count; do{ count = mmReadBytes(interface->modem,buffer,length); buffer+=count; length-=count; }while(length > 0); buffer[0] = 0; return len; } else { return 0; } }
bool mmSendTextMessage(struct ModemInterface* interface, char* number, char* buffer) { mmSendCommand(interface, F("AT+CMGS=\"")); mmSendCommand(interface, number); mmSendCommand(interface, F("\"\r")); mmFind(interface->modem, F("AT+CMGS=\"")); int c = mmFindChars(interface->modem, 'E', '>'); //sleep_millis(milliTimeoutSMS); if (c == '>') { mmSendCommand(interface, buffer); mmWriteByte(interface->modem,26); mmSendCommand(interface, F("\r")); return true; } return false; }
bool mmRetrievePhoneNumber(struct ModemInterface* interface, char* buffer, int length, int id) { mmSendCommand(interface, F("AT+CMGR=")); mmPrinti(interface->modem, id); //mmSendCommand(interface, id); mmWriteByte(interface->modem, '\r'); mmFind(interface->modem, F("AT+CMGR=")); int c = mmFindChars(interface->modem, 'E', ':'); if (c == ':') { mmFindChar(interface->modem, '+'); int index = 0; length--; //save room for null terminator while(index < length){ c = mmRead(interface->modem); if( c < 0) continue; if(c == '\"') break; buffer[index++] = c; } buffer[index] = 0; return index; } else { return 0; } }