Esempio n. 1
0
int retrieveTextMessage(struct ModemInterface* interf, char* buffer, int length, int id) {
#if defined(LINUX) || defined(ARDUINO)
	mmSendCommand(interf, F("AT+CMGR="))
	mmSendCommand(interf, id);
	mmSendCommand(interf, F("\r"))
	if (mmFind(interf->modem, F("+CMGR: "))) {
		mmFind(interf->modem, F(","));
		mmFind(interf->modem, F(","));
		return mmReadBytesUntil(interf->modem, ',', buffer, length);
	}
	else {
		return 0;
	}
#endif
#ifdef _WIN32
	int total = 0;
	sprintf(buffer, "AT+CMGR=%i", id);
	mmSendCommand(interf, buffer);
	mmSendCommand(interf, "\r");
	if (mmFind(interf->modem, "+CMGR: ")) 
	{
		mmFind(interf->modem, "\n");
		total = mmReadBytesUntil(interf->modem, (char)10, buffer, length);
	}
	PurgeComm(interf->modem->hSerial, PURGE_RXCLEAR | PURGE_TXCLEAR);
	return total;
#endif
}
Esempio n. 2
0
int retrieveTimestamp(struct ModemInterface* interf, char* buffer, int length, int id) {
#if defined(LINUX) || defined(ARDUINO)
	mmSendCommand(interf, F("AT+CMGR="));
	mmSendCommand(interf, id);
	mmSendCommand(interf, F("\r"));
	if (mmFind(interf->modem, F("+CMGR: "))) {
		mmFind(interf->modem, F(","));
		mmFind(interf->modem, F(","));
		mmFind(interf->modem, F(","));
		return mmReadBytesUntil(interf->modem,',',buffer,length);
	}
	else {
		return 0;
	}
#endif
#ifdef _WIN32
	mmSendCommand(interf, "AT+CMGR=");
	mmSendCommand(interf, id);
	mmSendCommand(interf, "\r");
	if (mmFind(interf->modem, "+CMGR: ")) {
		mmFind(interf->modem, ",");
		mmFind(interf->modem, ",");
		mmFind(interf->modem, ",");
		return mmReadBytesUntil(interf->modem, ',', buffer, length);
	}
	else {
		return 0;
	}
#endif
}
Esempio n. 3
0
int getTextLists(struct ModemInterface* interf, int* ids, int length) {
	int i = 0;
	int temp, j;
#if defined(LINUX) || defined(ARDUINO)
	mmSendCommand(interf, F("AT+CMGL\r"));
	while (mmFind(interf->modem, F("AT+CMGL")) && i < length) {
		ids[i] = mmParseInt(interf->modem);
		i++;
	}
#endif
#ifdef _WIN32
	char * buffer[32];
	char * ptr;
	mmSendCommand(interf, "AT+CMGL\r");
	if (!mmFind(interf->modem, "+CMGL: "))
		return -1;
	else
	{
		if (mmReadBytesUntil(interf->modem, ',', buffer, 32))
		{
			ids[i] = (int)strtol((const char *)buffer, &ptr, 10);
			i++;
		}
	}

	while (mmFind(interf->modem, "+CMGL: ") && i < length) {
		if (mmReadBytesUntil(interf->modem, ',', buffer, 32))
		{
			temp = (int)strtol((const char *)buffer, &ptr, 10);
			for (j = 0; j < i && ids[j] != temp; j++);
			if (j == i)
			{
				ids[i] = temp;
				i++;
			}
		}
	}

	PurgeComm(interf->modem->hSerial, PURGE_RXCLEAR | PURGE_TXCLEAR);
#endif
	return i;
}
Esempio n. 4
0
bool mmRetrieveTimestamp(struct ModemInterface* interface, char* buffer, int length, int id) {
	mmSendCommand(interface, F("AT+CMGR="));
	mmPrinti(interface->modem, id);
	//mmSendCommand(interface, id);
	mmSendCommand(interface, F("\r"));
	mmFind(interface->modem, F("AT+CMGR="));
	int c = mmFindChars(interface->modem, 'E', ':');
	if (c == ':') {
		mmFindChar(interface->modem, ',');
		mmFindChar(interface->modem, ',');
		mmFindChar(interface->modem, ',');
		mmFindChar(interface->modem, ',');
		mmFindChar(interface->modem, '"');
		return mmReadBytesUntil(interface->modem,'"',buffer,length);
	}
	else {
		return 0;
	}
}