Exemple #1
0
// The task to process SMS events
static void sms_task(iptr_t timer) {
	//Silence "args not used" warning.
	(void)timer;
	int8_t smsIndex = 0;

	DB(LOG_INFO("\r\nChecking SMS...\r\n"));

	// Update signal level
	GSM(updateCSQ());

	// Flush SMS buffer
	GSM(gsmBufferCleanup(&msg));

	// Retrive the first SMS into memory
	GSM(smsIndex = gsmSMSByIndex(&msg, 1));
	if (smsIndex==1) {
		command_parse(&dbg_port.fd, msg.text);
		DELAY(500);
		GSM(gsmSMSDel(1));
	}

	// Process SMS commands
	smsSplitAndParse(msg.from, msg.text);

	// Restart GSM at each countdown
	if (--gsmRestartCountdown == 0) {
		LOG_INFO("\r\nRestarting GSM...");
		GSM(gsmPowerOff());
		gsmRestartCountdown = GSM_RESTART_COUNTDOWN;
	}

	// Reschedule this timer
	synctimer_add(&sms_tmr, &timers_lst);
}
Exemple #2
0
void NORETURN gsmTesting(Serial *port) {

	gsmInit(port);
	gsmPowerOn();
	gsmSMSConf(0);

	//gsmUpdateConf();
	//DELAY(1000);

	//DELAY(5000);
	//gsmSMSSend("+393473153808", "Test message from RFN");
	while (1) {
		gsmUpdateCSQ();
		DELAY(5000);
		//gsmSMSSend("+393473153808", "Test message from RFN");
		//gsmSMSSend("+393357963938", "Test message from RFN");
		//DELAY(10000);
	}

//  Prova invio messaggio molto lungo, che impiega tutti i 160 caratteri a
//	disposizione per un singolo SMS. Vediamo se i buffer disponibili sono
//	sufficienti.  Ciao


	for(uint8_t i=1; i<100; i++) {

		LOG_INFO("Iteration %d/100\n", i);

		gsmSMSList();
		DELAY(1000);

		//gsmSMSLast(&msg);
		for (uint8_t j=1; j<10; j++) {
			gsmSMSByIndex(&msg,j);
			DELAY(500);
		}

		gsmSMSDelRead();

		if (!(i%3))
			gsmSMSSend("+393357963938", "Test message from RFN");

		DELAY(10000);
	}

	DELAY(15000);
	gsmPowerOff();
}
Exemple #3
0
int gsmSendStatus( int flag ){
	char gsm[30];
	if (flag == 1 ) return 1;
	strcpy(gsm, "#M#Something wrong");
	if (flag == 3 ) strcpy(gsm, "#M#Device reloaded");
	if (flag == 2 ) strcpy(gsm, "#M#Device reconnected");
	if (flag == 4 ) strcpy(gsm, "#M#Hundreds points send to server. All ok");
	if (flag == 0 ) strcpy(gsm, "#M#Device started. Wait GPS.");
	if (flag == 5 ) strcpy(gsm, "#M#No GPS...Waiting that...");
	if (flag == 6 ) strcpy(gsm, "#M#Restart device");
	if (flag == 7 ) strcpy(gsm, "#M#Coords not found. Device underground. Sleep...");
	
	if ( wialonSend(gsm) == WN_DATAOK ){
			//Go to sleep
			if ( flag == 7 ){	gsmPowerOff();	return -1;}
		
			flag = 1;
			return flag;
	}
	return -1;
}
Exemple #4
0
/*
* Task running
*/
void gsmTask(void const *arg){
	
	int i;
	unsigned int reloadcnt = 0;
	int flag = 0;
	int cnt = 0;
	int gps_fail = 0;
	
	osDelay(3000);
	//osSignalWait (0x01, osWaitForever);
	
	while(1){
		if (reloadcnt > 3 ){
			reloadcnt = 0;
			osDelay(1000);
			gsmPowerOff();
			flag = 6;
			//osSignalWait (0x01, osWaitForever);
		}
		
			//gsmPowerOff();

	gsmPowerOn();
		reloadcnt++;
	
	if ( gsmInitModem() == AT_OK ){
		osDelay(1000);
		if ( gsmInitGPRS() == AT_STATE_IP_STATUS ){
			while(1){
			osDelay(100);
			if ( gsmConnect(GSM_SERVER_IP,GSM_SERVER_PORT) == AT_STATE_IP_CONNECT ){
				  osDelay(100);
				#ifdef WIALON_TRACKER	
					if ( wialonLogin (GSM_SERVER_IMEI, GSM_SERVER_PASSWORD ) == WN_LOGIN ){
				#endif
						
				
						flag = gsmSendStatus( flag );
						if ( flag < 0 ) break;
						
						flag = gsmWork( flag );
						if ( flag < 0 ) break;

#ifdef WIALON_TRACKER						
						 
						if ( flag == 8 ) gps_fail++;	else { gps_fail = 0; cnt++; }		//No GPS? add that
						if (cnt > 100 ) {flag = 4; cnt = 0;}	//Some message 100point
						if (cnt == 0 && flag == 1 ) flag = 5;	//No GPS	
						if (gps_fail > 50 ) flag = 7;						
						
#endif
								
			//		}		
#ifdef WIALON_TRACKER	
					flag = 2;
				}
#endif
			}
		}
		}
	}
	flag = 3;
	//gsm[254] = 0;
	}
	
	
}