// Main
char *Pop="*******";
char *Smtp="********";
char *EMail="********";
char *WaitTime = 30;
char *OnSubject = "On";
char *OffSubject = "Off";

//HttpClient
char *Server="*****.com";
char *Send_buf="GET /ipaddress.cgi HTTP/1.1\r\nHost: *****.com\r\n\r\n";

//POP
char *PopName="********";
char *PopPass="********";

//SMTPAUTH
char *MailFrom="********";
char *SmtpName="********";
char *SmtpPass="********";


char PopState,SmtpState,*recbuf,*MailTo, *Subject;

main(){
	char status=0;
	char soc,stat;
	char *ipaddress1;
	ipaddress1 = MemoryAlloc(16);
	PowerCtrl::PowerInit();
	int	cycle = 0;
	
 for(;;){
	cycle++;
	PrNum(cycle);
	
	switch(status){
		case 0:
//			PrStr("GetIP\r\n");
			HttpClient::GetIPaddress(ipaddress1);
//			PrStr(ipaddress1);
			status = 1;
		break;
		case 1:
  	  		MemoryFree(MailTo);
	  		MailTo=0;
      		soc=CreateSocket(1);
  			if(soc<0){
				PrStr("Soc?");
				status = 0;
				return;
  			}
  			if(Connect(soc,GetHostByName(Pop),110)<0){
				PrStr("Pop?");
				status = 0;
				return;
  			}
//  			PrStr("Connect POP server\r\n");
  			PopState=1;
  			GetNetLine(0,0,0,0);
  			recbuf=MemoryAlloc(256);
  
  			for(;;){
   				stat=POP::PopHandler(soc);
   				if(stat<0||stat==1){
					status = 0;
   					break;
   				}
   				SystemSleep();
  			}
  			GetNetLine(0,0,0,1);
  			MemoryFree(recbuf);
  			CloseSocket(soc);
  			if(!MailTo){
				status =0;
  				continue;
  			}

  			if(StrCmp(MailTo, EMail) == 0){
  				PrStr(" Mail address Match !!\r\n");
	 			if(StrCmp(Subject, OnSubject) == 0){
					PowerCtrl::PowerOnAC();
	  				PowerCtrl::PowerOnSW();
  					PrStr(" KuroBox is booting!\r\n");
  					PrStr(MailTo);
  					PrStr("\r\n");
  					PrStr(" Sending e-mail.\r\n");
//  					PrStr(" SMTP start\r\n");
  					soc=CreateSocket(1);
  					if(Connect(soc,GetHostByName(Smtp),25)<0){
						PrStr("Svr?");
						return;
  					}
  					PrStr("Connect SMTP server\r\n");
  					SmtpState=1;
  					for(;;){
   						stat=SMTPAUTH::SmtpHandler(soc, ipaddress1, 0);
   						if(stat<0||stat==1)
   						break;
   						SystemSleep();
  					}
  					CloseSocket(soc):
  				}
	 			else if(StrCmp(Subject, OffSubject) == 0){
	  				PowerCtrl::PowerOffSW();
					PowerCtrl::PowerOffAC();
  					PrStr(" KuroBox is down.\r\n");
  					PrStr(MailTo);
  					PrStr("\r\n");
  					PrStr(" Sending e-mail.\r\n");
//  					PrStr(" SMTP start\r\n");
  					soc=CreateSocket(1);
  					if(Connect(soc,GetHostByName(Smtp),25)<0){
						PrStr("Svr?");
						return;
  					}
  					PrStr("Connect SMTP server\r\n");
  					SmtpState=1;
  					for(;;){
   						stat=SMTPAUTH::SmtpHandler(soc, ipaddress1, 1);
   						if(stat<0||stat==1)
   						break;
   						SystemSleep();
  					}
  					CloseSocket(soc):
  				}
  			}
  			status = 0;
  		break;
 	}
// 	PrStr("Wait for ");
//	PrNum(WaitTime);
//	PrStr("sec..\r\n");
 	SystemSleep();
	Sleep(100 * WaitTime);
 }
 	MemoryFree(ipaddress1);
}


