www.pudn.com > Net_apps.rar > IoEnv.c
//*************************************************************
// Copyright 2003 Service & Quality Technology CO., LTD.
// ALL RIGHTS RESERVED.
// This software is provided under license and contains proprietary
// and confidential material which is the property of SQ tech.
//
// FileName : IoEnv.c
// Description : IO eeprom
// Reversion : 0.1 ,Date : 2004/03/24 ,Author : gofly
// Comment : first implementation
//
//*************************************************************
#include "opt.h"
#include "..\include\L0\video\detection.h"
#include "..\include\L3\net_apps\sntp\sntp.h"
#include "..\include\L3\net_apps\httpd\HttpServer.h"
#include "..\include\L3\net_apps\httpd\api\HttpApi.h"
#include "..\include\L3\net_apps\IoEnv.h"
#include "..\include\L3\net_apps\ddns\ddns.h"
#include "..\include\L3\net_apps\httpd\api\HttpFileSystem.h"
#include "..\include\L0\video\ae.h"
#include "..\include\L2\system\timer.h" //add by jgy 07/28/05
INT8U SmtpAuthflag;
INT8U *pSavePcTrigger;
INT8U Audioflag = 0 ;
INT8U Char00 = 0x00;
INT8U Char1[] = "1\0x00";
INT8U Char0[] = "0\0x00";
INT8U CharPwd[] = {"*******\0x00"};
INT8U Check[]={"checked\x00"};
INT8U Select[]={"selected\x00"};
INT16U Httpportid = 0 ;
#define StrAdjust(index) while(*(index) == '%') (index) += 3 //add by jgy 07/29/05
//***********************************************
// IoInit()
// Description : init io
// Parameters :
// Returns :
//
//***********************************************
void IoInit()
{
//IoIpAddress(NULL, (INT8U *)netif, IOINIT, ROOT);// call in main
IoFtp (NULL, NULL, IOINIT, ROOT);
IoAudio (NULL, NULL, IOINIT, ROOT);
IoCookie (NULL, NULL, IOINIT, ROOT);
IoDHCP_ENABLE (NULL, NULL, IOINIT, ROOT);
IoDns (NULL, NULL, IOINIT, ROOT);
IoHttpPort (NULL, NULL, IOINIT, ROOT);
IoName (NULL, NULL, IOINIT, ROOT);
IoPass (NULL, NULL, IOINIT, ROOT);
IoWebCamName (NULL, NULL, IOINIT, ROOT);
IoWid (NULL, NULL, IOINIT, ROOT);
IoVideo (NULL, NULL, IOINIT, ROOT);
IoSmtp (NULL, NULL, IOINIT, ROOT);
IoW (NULL, NULL, IOINIT, ROOT);
IoH (NULL, NULL, IOINIT, ROOT);
IoImgSet (NULL, NULL, IOINIT, ROOT);
IoMAC_ADDR (NULL, NULL, IOINIT, ROOT);
IoPPPOE (NULL, NULL, IOINIT, ROOT);
IoDDNS (NULL, NULL, IOINIT, ROOT);
IoIpMode (NULL, NULL, IOINIT, ROOT);
IoWlan (NULL, NULL, IOINIT, ROOT);
IoSntp (NULL, NULL, IOINIT, ROOT);
IoStorage (NULL, 0, IOINIT, ROOT);
IoVideoCh (NULL, NULL, IOINIT, ROOT);
IoEventTrigger (NULL, NULL, IOINIT, ROOT);
IoMDTrigger (NULL, NULL, IOINIT, ROOT);
IoViewUser (NULL, NULL, IOINIT, ROOT);
IoImgReversal (NULL, NULL, IOINIT, ROOT); //add by jgy
}
//***********************************************
// IoSntp()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoSntp(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
//-------------------------------------------------
// SNTP_SERVER
// SNTP_SELECT -12
// SNTP_SELECT +12
// ps -03.5 => - 13
//-------------------------------------------------
static INT8U ntp_server[32]; //ntp server Name,init \x0+210.59.157.10 or "\x1"+"time.stdtime.gov.tw" is Public NTP Servers
static INT8S ntp_gmt;
INT8S *p;
INT8U Size = 0;
if(! extra_strncmp(Key ,"SNTP_SERVER"))
{
p = ntp_server; Size = sizeof(ntp_server);
}
else if(! strncmp(Key ,"SNTP_SELECT",11))
{
p = &ntp_gmt;
if(op == IOR)
{
*data = ntp_gmt; //for sntp offset time
}
}
else if(! extra_strncmp(Key ,"SNTP_STATUS"))
{
return &Char00;// will change return nowtime
}
else
return &Char00;
switch(op)
{
case IOINIT:
ntp_gmt = eprom_ptos.eprom_opt_ntp.ntp_gmt;
memcpy(ntp_server,eprom_ptos.eprom_opt_ntp.ntp_server ,sizeof(ntp_server));
break;
case IOR:
if(p == &ntp_gmt)
{
if(atoi(Key + 11) == ntp_gmt)
return Select;
else
return &Char00;
}
else return p;
break;
case IOW:
Size = min((unsigned int)Size,strlen(data));
if(p == &ntp_gmt )
{
if(*data == '%')
{
if(ntp_gmt != atoi(data+3))
{
ntp_gmt = atoi(data+3);
}
else
{
sntp_start();
return &Char00;
}
}
else
{
if(ntp_gmt != atoi(data))
{
ntp_gmt = atoi(data);
}
else
{
sntp_start();
return &Char00;
}
}
}
else if(strlen(data) > Size || *data == 0x00)
{
return &Char00;
}
else if( extra_strncmp(p ,data))
{
strcpy(p,data);
}
else
{
sntp_start();
return &Char00;
}
eprom_ptos.eprom_opt_ntp.ntp_gmt = ntp_gmt;
memcpy(eprom_ptos.eprom_opt_ntp.ntp_server ,ntp_server,sizeof(ntp_server));
eprom_24c08_write(&eprom_ptos.eprom_opt_ntp, eprom_ptos.eprom_opt_ntp.offset, sizeof(OPT_NTP));
return p;
break;
}
return &Char00;
}
//***********************************************
// IoWlan()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoWlan(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
//-----------------------------------------------------
// WLAN_EN WLAN_EN00 WLAN_EN01
// WLAN_AUTH WLAN_AUTH00 WLAN_AUTH01
// WLAN_SSID
// WLAN_KEY_ID01-04
// WLAN_KEY_1-4
//-----------------------------------------------------
static INT8U WlanEnable; // 1 (enable)|| 1(disable)
static INT8U WlanAuth; // 0 (OpenSystem)|| 1(ShareKey)
static INT8U WlanSsid[34];
static INT8U WlanKeyId; // 1-4
static INT8U WlanKey[4][16];
INT8U* p = NULL;
INT8U size = 0;
if(! extra_strncmp(Key ,"WLAN_EN"))
{
p = &WlanEnable;
}
else if(! strncmp(Key ,"WLAN_EN0",8))
{
if(WlanEnable == atoi(Key+7))return Check;
return &Char00;
}
else if(! extra_strncmp(Key ,"WLAN_AUTH"))
{
p = &WlanAuth;
}
else if(! strncmp(Key ,"WLAN_AUTH0",10))
{
if(WlanAuth == atoi(Key+9))return Check;
return &Char00;
}
else if(! extra_strncmp(Key ,"WLAN_SSID"))
{
p = WlanSsid; size = sizeof(WlanSsid);
}
else if(! extra_strncmp(Key ,"WLAN_KEY_ID"))
{
p = &WlanKeyId;
}
else if(! strncmp(Key ,"WLAN_KEY_ID0",12))
{
if(WlanKeyId == atoi(Key+11))return Check;
return &Char00;
}
else if(! strncmp(Key ,"WLAN_KEY_",9))
{
p = WlanKey[atoi(Key+9)-1]; size = 16;
}
else
{
return &Char00;
}
switch(op)
{
case IOINIT:
WlanEnable = eprom_ptos.eprom_opt_wlan.wep_en;
WlanAuth = eprom_ptos.eprom_opt_wlan.auth;
WlanKeyId = eprom_ptos.eprom_opt_wlan.wep_key_id;
memcpy(WlanSsid,eprom_ptos.eprom_opt_wlan.des_ssid,sizeof(WlanSsid));
memcpy(WlanKey,eprom_ptos.eprom_opt_wlan.wep_key,sizeof(WlanKey));
break;
case IOR :
return p;
break;
case IOW :
size = min((unsigned int)size,strlen(data));
if(p == &WlanEnable && *data - 0x30 != WlanEnable) WlanEnable = *data - 0x30;
else if(p == &WlanAuth && *data - 0x30 != WlanAuth) WlanAuth = *data - 0x30;
else if(p == &WlanKeyId && *data - 0x30 != WlanKeyId) WlanKeyId = *data - 0x30;
// change by gofly SSID == 0x00 AUTO
//else if(strlen(data) > size || *data == 0x00) return &Char00;
else if(strlen(data) > size ) return &Char00;
else if( extra_strncmp(p ,data))
{
strcpy(p,data);
}
else return &Char00;
eprom_ptos.eprom_opt_wlan.wep_en = WlanEnable;
eprom_ptos.eprom_opt_wlan.auth = WlanAuth;
eprom_ptos.eprom_opt_wlan.wep_key_id = WlanKeyId;
memcpy(eprom_ptos.eprom_opt_wlan.des_ssid,WlanSsid,sizeof(WlanSsid));
memcpy(eprom_ptos.eprom_opt_wlan.wep_key,WlanKey,sizeof(WlanKey));
if(strlen(WlanKey[WlanKeyId - 1]) == 13 )
eprom_ptos.eprom_opt_wlan.wep_type = 128;
else
eprom_ptos.eprom_opt_wlan.wep_type = 64;
eprom_24c08_write(&eprom_ptos.eprom_opt_wlan, eprom_ptos.eprom_opt_wlan.offset, sizeof(OPT_WLAN));
break;
}
return &Char00;
}
//***********************************************
// IoMDRang()
// Description :
// Parameters :
// Returns :
//
//***********************************************
INT8U *IoMDRang(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
INT16U md_xy_rang_0[4] ;
INT16U md_xy_rang_1[4] ;
static INT8U Msg[64];
Msg[0] = 0x00;
if(atoi(Key + 7) == 1)
{
if(FALSE == motion_det_get(0, md_xy_rang_0))
return Msg;
#if 0
sprintf(Msg,"(%04d,%04d) ~ (%04d,%04d)",
md_xy_rang_0[0],md_xy_rang_0[1]
,md_xy_rang_0[2],md_xy_rang_0[3]);
eprom_ptos.eprom_opt_trigger.md1_x1 = md_xy_rang_0[0];
eprom_ptos.eprom_opt_trigger.md1_y1 = md_xy_rang_0[1];
eprom_ptos.eprom_opt_trigger.md1_x2 = md_xy_rang_0[2];
eprom_ptos.eprom_opt_trigger.md1_y2 = md_xy_rang_0[3];
#endif
}
else if(atoi(Key + 7) == 2)
{
if(FALSE == motion_det_get(1, md_xy_rang_1))
return Msg;
#if 0
sprintf(Msg,"(%04d,%04d) ~ (%04d,%04d)",
md_xy_rang_1[0],md_xy_rang_1[1]
,md_xy_rang_1[2],md_xy_rang_1[3]);
eprom_ptos.eprom_opt_trigger.md2_x1 = md_xy_rang_1[0];
eprom_ptos.eprom_opt_trigger.md2_y1 = md_xy_rang_1[1];
eprom_ptos.eprom_opt_trigger.md2_x2 = md_xy_rang_1[2];
eprom_ptos.eprom_opt_trigger.md2_y2 = md_xy_rang_1[3];
#endif
}
return Msg;
/*
return 0x00;
if(FALSE == motion_det_get(0, md_xy_rang_0) || FALSE == motion_det_get(0, md_xy_rang_1))
{
Msg[0] = 0x00;
return Msg;
}
if(atoi(Key + 7) == 1)
{
sprintf(Msg,"(%04d,%04d) ~ (%40d,%04d)",
md_xy_rang_0[0],md_xy_rang_0[1]
,md_xy_rang_0[2],md_xy_rang_0[3]);
eprom_ptos.eprom_opt_trigger.md1_x1 = md_xy_rang_0[0];
eprom_ptos.eprom_opt_trigger.md1_y1 = md_xy_rang_0[1];
eprom_ptos.eprom_opt_trigger.md1_x2 = md_xy_rang_0[2];
eprom_ptos.eprom_opt_trigger.md1_y2 = md_xy_rang_0[3];
}
if(atoi(Key + 7) == 2)
{
sprintf(Msg,"(%40d,%04d) ~ (%04d,%04d)",
md_xy_rang_1[0],md_xy_rang_1[1]
,md_xy_rang_1[2],md_xy_rang_1[3]);
eprom_ptos.eprom_opt_trigger.md2_x1 = md_xy_rang_1[0];
eprom_ptos.eprom_opt_trigger.md2_y1 = md_xy_rang_1[1];
eprom_ptos.eprom_opt_trigger.md2_x2 = md_xy_rang_1[2];
eprom_ptos.eprom_opt_trigger.md2_y2 = md_xy_rang_1[3];
}
return Msg;
*/
}
//***********************************************
// IOGpioTrigger()
// Description :
// Parameters :
// Returns :
//
//***********************************************
INT8U *IoEventTrigger(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
//------------------------------------------------------------------------------//
// GPIO_DI_TRIGGER SAVE_TRIGGER
// GPIO_DO_TRIGGER WARN_TRIGGER
//
//------------------------------------------------------------------------------//
static INT8U GpioDi1Trigger;
static INT8U GpioDi2Trigger;
static INT8U WarnMessageTrigger;
static INT8U SavePcTrigger;
static INT8U ShuttleTimeTrigger;
static INT8U GpioDo1TimerTrigger;
static INT8U GpioDo2TimerTrigger;
static INT8U MotionDet1Sensitive;
static INT8U MotionDet2Sensitive;
static INT8U tmp[2];
INT8U i;
INT8U *p = NULL,*q;
q = &GpioDi1Trigger;
if(! strncmp(Key ,"EventT_GPIO_TRIGGER_GI1",23))
{
p = &GpioDi1Trigger;
}
else if(! strncmp(Key ,"EventT_GPIO_TRIGGER_GI2",23))
{
p = &GpioDi2Trigger;
}
else if(! strncmp(Key ,"EventT_WARNING_MESSAGE",22))
{
p = &WarnMessageTrigger;
}
else if(! strncmp(Key ,"EventT_GPIO_TRIGGER_PC",22))
{
p = &SavePcTrigger;
pSavePcTrigger = &SavePcTrigger;
}
else if(! strncmp(Key ,"EventT_SHUTTER_TIMER",20))
{
p = &ShuttleTimeTrigger;
}
else if(! strncmp(Key ,"EventT_GPIO_O1_TIMER",20))
{
p = &GpioDo1TimerTrigger;
}
else if(! strncmp(Key ,"EventT_GPIO_O2_TIMER",20))
{
p = &GpioDo2TimerTrigger;
}
else if(! strncmp(Key ,"EventT_Det1_Sensitivity",23))
{
//MotionDet1Sensitive = detection_ctrl.md_level[0];
p = &MotionDet1Sensitive;
//p = &detection_ctrl.md_level[0];
//return p;
}
else if(! strncmp(Key ,"EventT_Det2_Sensitivity",23))
{
//MotionDet2Sensitive = detection_ctrl.md_level[1];
p = &MotionDet2Sensitive;
//p = &detection_ctrl.md_level[1];
//return p;
}
else if(! strncmp(Key ,"EventT_WARNING_MESSAGE_TEXT",27))
{
//p = &WarnMessageTrigger;
//return &Char00;
}
else if(! strncmp(Key ,"EventT_Det_MDPC",15))
{
INT8U MotionDetMDPC,MotionDet1TriggerEnable,MotionDet2TriggerEnable;
MotionDet1TriggerEnable = eprom_ptos.eprom_opt_trigger.motin_det1; //0;
MotionDet2TriggerEnable = eprom_ptos.eprom_opt_trigger.motin_det2;
MotionDetMDPC = (MotionDet1TriggerEnable | MotionDet2TriggerEnable)& SavePcTrigger;
sprintf(tmp,"%s",MotionDetMDPC?"y":"n");
return &tmp;
}
switch(op )
{
case IOINIT:
//------ will change from eeprom
GpioDi1Trigger = eprom_ptos.eprom_opt_trigger.gpio_in1; //0;
GpioDi2Trigger = eprom_ptos.eprom_opt_trigger.gpio_in2; //0;
WarnMessageTrigger = eprom_ptos.eprom_opt_trigger.warning_message; //0;
SavePcTrigger = eprom_ptos.eprom_opt_trigger.save_in_pc;
ShuttleTimeTrigger = eprom_ptos.eprom_opt_trigger.shutter_timer;
GpioDo1TimerTrigger = eprom_ptos.eprom_opt_trigger.gpio_out1_timer;
GpioDo2TimerTrigger = eprom_ptos.eprom_opt_trigger.gpio_out2_timer;
MotionDet1Sensitive = eprom_ptos.eprom_opt_trigger.md_sentivity[0];
MotionDet2Sensitive = eprom_ptos.eprom_opt_trigger.md_sentivity[1];
break;
case IOR:
if (p == &MotionDet1Sensitive || p == &MotionDet2Sensitive || p == &ShuttleTimeTrigger || p == &GpioDo1TimerTrigger || p == &GpioDo2TimerTrigger)
{
INT8U tmp[10];
sprintf(tmp,"%d",*p);
return tmp;
}
if(*p)
{
return Check;
}
return &Char00;
break;
case IOW:
*p = atoi(data);
for(i=0;i<8;i++)
{
if(p == (q + i))
{
m[i+8]=1;
}
}
eprom_ptos.eprom_opt_trigger.gpio_in1 = GpioDi1Trigger = m[8]; //0;
eprom_ptos.eprom_opt_trigger.gpio_in2 = GpioDi2Trigger = m[9]; //0;
eprom_ptos.eprom_opt_trigger.warning_message = WarnMessageTrigger = m[10]; //0;
eprom_ptos.eprom_opt_trigger.save_in_pc = SavePcTrigger = m[11];
eprom_ptos.eprom_opt_trigger.shutter_timer = ShuttleTimeTrigger ;// = m[12];
eprom_ptos.eprom_opt_trigger.gpio_out1_timer = GpioDo1TimerTrigger ;//= m[13];
eprom_ptos.eprom_opt_trigger.gpio_out2_timer = GpioDo2TimerTrigger ;//= m[14];
eprom_ptos.eprom_opt_trigger.md_sentivity[0] = detection_ctrl.md_level[0];
eprom_ptos.eprom_opt_trigger.md_sentivity[1] = detection_ctrl.md_level[1];
eprom_24c08_write(&eprom_ptos.eprom_opt_trigger , eprom_ptos.eprom_opt_trigger.offset,
sizeof(OPT_TRIGGER)); //write to eprom
// printf("%s %d %d\n",Key,strlen(Key),atoi(data));
//--- will write eeprom
break;
}
return &Char00;
}
//***********************************************
// IOMDTrigger()
// Description :
// Parameters :
// Returns :
//
//***********************************************
INT8U *IoMDTrigger(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
//------------------------------------------------------------------------------//
// Motion_Det_TRIGGER_ENABLE Motion_Det_TRIGGER_GO1 Motion_Det_TRIGGER_GO2
// Motion_Det_TRIGGER_AUDIO Motion_Det_TRIGGER_MAIL Motion_Det_TRIGGER_FTP
//
//------------------------------------------------------------------------------//
static INT8U MotionDet1TriggerEnable;
static INT8U MotionDet2TriggerEnable;
static INT8U MotionDetTriggerGo1;
static INT8U MotionDetTriggerGo2;
static INT8U MotionDetTriggerSdCard;
static INT8U MotionDetTriggerAudio;
static INT8U MotionDetTriggerMail;
static INT8U MotionDetTriggerFtp;
INT8U i;
//static INT8U m[]={0,0,0,0,0,0,0,0};
INT8U *p = NULL,*q;
q = &MotionDet1TriggerEnable;
//p = &MotionDet1TriggerEnable;
if(! strncmp(Key ,"Motion_Det1_TRIGGER_ENABLE",26))
{
p = &MotionDet1TriggerEnable;
}
else if(! strncmp(Key ,"Motion_Det2_TRIGGER_ENABLE",26))
{
p = &MotionDet2TriggerEnable;
//p=p+1;
}
else if(! strncmp(Key ,"Motion_Det_TRIGGER_GO1",22))
{
p = &MotionDetTriggerGo1;
//p=p+2;
}
else if(! strncmp(Key ,"Motion_Det_TRIGGER_GO2",22))
{
p = &MotionDetTriggerGo2;
//p=p+3;
}
else if(! strncmp(Key ,"Motion_Det_TRIGGER_SD_CARD",26))
{
p = &MotionDetTriggerSdCard;
//p=p+4
}
else if(! strncmp(Key ,"Motion_Det_TRIGGER_AUDIO",24))
{
p = &MotionDetTriggerAudio;
}
else if(! strncmp(Key ,"Motion_Det_TRIGGER_MAIL",23))
{
p = &MotionDetTriggerMail;
}
else if(! strncmp(Key ,"Motion_Det_TRIGGER_FTP",22))
{
p = &MotionDetTriggerFtp;
}
switch(op )
{
case IOINIT:
//------ will change from eeprom
MotionDet1TriggerEnable = eprom_ptos.eprom_opt_trigger.motin_det1; //0;
MotionDet2TriggerEnable = eprom_ptos.eprom_opt_trigger.motin_det2;
MotionDetTriggerGo1 = eprom_ptos.eprom_opt_trigger.gpio_out1; //0;
MotionDetTriggerGo2 = eprom_ptos.eprom_opt_trigger.gpio_out2; //0;
MotionDetTriggerSdCard = eprom_ptos.eprom_opt_trigger.save_in_card;//0;
MotionDetTriggerAudio = eprom_ptos.eprom_opt_trigger.warning_audio ;//0;
MotionDetTriggerMail = eprom_ptos.eprom_opt_trigger.mail_image; //0;
MotionDetTriggerFtp = eprom_ptos.eprom_opt_trigger.ftp_image;//0;
//Motion_Det1_Sensitivity =
break;
case IOR:
if(*p)
{
return Check;
}
return &Char00;
break;
case IOW:
*p = atoi(data);
for(i=0;i<8;i++)
{
if(p == (q + i))
{
m[i]=1;
}
}
// if( p == &MotionDetTriggerWMDR) MotionDetTriggerWMDR = atoi(data);
eprom_ptos.eprom_opt_trigger.motin_det1 = MotionDet1TriggerEnable = m[0]; //0;
eprom_ptos.eprom_opt_trigger.motin_det2 = MotionDet2TriggerEnable = m[1]; //0;
eprom_ptos.eprom_opt_trigger.gpio_out1 = MotionDetTriggerGo1 = m[2]; //0;
eprom_ptos.eprom_opt_trigger.gpio_out2 = MotionDetTriggerGo2 = m[3]; //0;
eprom_ptos.eprom_opt_trigger.save_in_card = MotionDetTriggerSdCard = m[4];//0;
eprom_ptos.eprom_opt_trigger.warning_audio = MotionDetTriggerAudio = m[5];//0;
eprom_ptos.eprom_opt_trigger.mail_image = MotionDetTriggerMail = m[6]; //0;
eprom_ptos.eprom_opt_trigger.ftp_image = MotionDetTriggerFtp = m[7];//0;
eprom_24c08_write(&eprom_ptos.eprom_opt_trigger , eprom_ptos.eprom_opt_trigger.offset,
sizeof(OPT_TRIGGER));
//printf("%s %d %d\n",Key,strlen(Key),atoi(data));
//--- will write eeprom
break;
}
return &Char00;
}
//***********************************************
// IoIpMode()
// Description : switch pppoe dhcp static
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoIpMode(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
/////////////////////////////////////////////////////
// IP_MODE00 PPPOE
// IP_MODE01 DHCP
// IP_MODE02 STATIC
/////////////////////////////////////////////////////
INT8U *p;
switch(op)
{
case IOINIT: break;
case IOR :
if(atoi(Key+7) == 0) return IoPPPOE("PPPOE_ENABLE1",NULL,IOR,ROOT);
if(atoi(Key+7) == 1) return IoDHCP_ENABLE("DHCP_ENABLE1",NULL,IOR,ROOT);
//-- static---//
if(*IoPPPOE("PPPOE_ENABLE1",NULL,IOR,ROOT)== 0x00 && *IoDHCP_ENABLE("DHCP_ENABLE1",NULL,IOR,ROOT)== 0x00)
return Check;
else
return &Char00;
break;
case IOW :
IoPPPOE("PPPOE_ENABLE","0",IOW,ROOT);
IoDHCP_ENABLE("DHCP_ENABLE","0",IOW,ROOT);
if( *data == 0x30)
{
p = IoPPPOE("PPPOE_ENABLE","1",IOW,ROOT);
//reset(SYSTEM);
return p;
}
if( *data == 0x31)
{
p = IoDHCP_ENABLE("DHCP_ENABLE","1",IOW,ROOT);
//reset(SYSTEM);
return p;
}
//-- static---//
if(*data == 0x32) return Check;
break;
}
return &Char00;
}
//***********************************************
// IoPPPOE()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoDDNS(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U host_name[32]; //init "\x0"
static INT8U user[16];
static INT8U pass[16];
static INT8U stat[32];
static INT8U flag = 0;
INT8U *p = NULL;
INT8U size;
if(op == IOINIT)
{
//DdnsApi(GBody,NULL,0);
memcpy(host_name, eprom_ptos.eprom_opt_ddns.host_name , sizeof(host_name));
memcpy(user,eprom_ptos.eprom_opt_ddns.user , sizeof(user));
memcpy(pass, eprom_ptos.eprom_opt_ddns.pass , sizeof(pass));
/* //--- will change from eeprom
memcpy(host_name, "gofly.dyndns.org" , sizeof(host_name));
memcpy(user, "gofly" , sizeof(user));
memcpy(pass, "goflytku" , sizeof(pass));
*/
memset(stat,0x00,sizeof(stat));
return p;
}
if(! extra_strncmp(Key ,"DDNS_HOST"))
{
p = host_name; size = sizeof(host_name);
}
else if(! extra_strncmp(Key ,"DDNS_USER"))
{
p = user; size = sizeof(user);
}
else if(! extra_strncmp(Key ,"DDNS_PASS"))
{
if (! strncmp(data ,"*******" ,7))
{
return &Char00;
}
p = pass; size = sizeof(pass);
}
else if(! extra_strncmp(Key ,"DDNS_STAT"))
{
p = stat; size = sizeof(stat);
}
else if(! extra_strncmp(Key ,"DDNS_GET_PASS"))
return pass;
else return &Char00;
if(op == IOW)
{
if(data[0] != 0x00 && extra_strncmp(p ,data))
{
memset(p, 0x00, size);
memcpy(p, data, strlen(data));
flag++;
}
#if EEPROM_CHANGE_EVERY
if(flag)
#else
if(p == pass && flag)
#endif
{
flag = 0;
//--- will change eeprom
memcpy(eprom_ptos.eprom_opt_ddns.host_name ,host_name, sizeof(host_name));
memcpy(eprom_ptos.eprom_opt_ddns.user ,user, sizeof(user));
memcpy( eprom_ptos.eprom_opt_ddns.pass ,pass, sizeof(pass));
eprom_24c08_write(&eprom_ptos.eprom_opt_ddns, eprom_ptos.eprom_opt_ddns.offset, sizeof(OPT_DDNS));
}
if(! extra_strncmp(Key ,"DDNS_HOST"))
{
DdnsStart();
}
}/* if(op == IOW)*/
if(p == pass ) return &Char00;
return p;
}
//***********************************************
// IoAppVer()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoAppVer(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
return APP_VER;
}
//***********************************************
// IoPPPOE()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoPPPOE(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U server_name[32]; //init "\x0"
static INT8U ppp_user[32];
static INT8U ppp_pass[16];
static INT8U flag = 0;
static INT8U ppp_session_id[6];
static INT8U tmp[32];
INT8U *p = NULL;
INT8U size;
if(op == IOINIT)
{
memcpy(server_name, eprom_ptos.eprom_opt_pppoe.server_name , sizeof(server_name));
memcpy(ppp_user, eprom_ptos.eprom_opt_pppoe.ppp_user , sizeof(ppp_user));
memcpy(ppp_pass, eprom_ptos.eprom_opt_pppoe.ppp_pass , sizeof(ppp_pass));
//ppp_session_id = eprom_ptos.eprom_opt_pppoe.ppp_session_id;
return p;
}
if(! extra_strncmp(Key ,"PPPOE_NAME"))
{
p = ppp_user; size = sizeof(ppp_user);
}
else if(! extra_strncmp(Key ,"PPPOE_PASS"))
{
p = ppp_pass; size = sizeof(ppp_pass);
}
else if(! extra_strncmp(Key ,"PPPOE_SESSIONID")) ///< for pppoe session id
{
memcpy(ppp_session_id,eprom_ptos.eprom_opt_pppoe.ppp_session_id,sizeof(ppp_session_id));
p = ppp_session_id;
size=sizeof(ppp_session_id);
}
else if(! strncmp(Key ,"PPPOE_ENABLE",10))
{
p = server_name; size = sizeof(server_name);
}
else if(! extra_strncmp(Key ,"PPPOE_GET_PASS"))
return ppp_pass;
else return &Char00;
if(op == IOW)
{
if(p == server_name) //PPPOE_ENABLE1
{
if(atoi(server_name) != atoi(data))
{
sprintf(server_name, "%d\x00", atoi(data));
flag++;
}
}
if( p == ppp_session_id || (data[0] != 0x00 && extra_strncmp(p ,data)))
{
memset(p, 0x00, size);
memcpy(p, data, strlen(data));
flag++;
}
#if EEPROM_CHANGE_EVERY
if(flag)
#else
if((p == ppp_pass || p == ppp_session_id )&& flag)
#endif
{
//INT16U *test0;
//INT16U test;
//test0 = (INT16U *)data;
//test = *test0;
flag = 0;
memcpy(eprom_ptos.eprom_opt_pppoe.server_name, server_name, sizeof(server_name));
memcpy(eprom_ptos.eprom_opt_pppoe.ppp_user ,ppp_user, sizeof(ppp_user));
memcpy(eprom_ptos.eprom_opt_pppoe.ppp_pass ,ppp_pass, sizeof(ppp_pass));
memcpy(eprom_ptos.eprom_opt_pppoe.ppp_session_id ,ppp_session_id,sizeof(ppp_session_id));//*((INT16U *)data);
eprom_24c08_write(&eprom_ptos.eprom_opt_pppoe, eprom_ptos.eprom_opt_pppoe.offset, sizeof(OPT_PPPOE));
}
}/* if(op == IOW)*/
if(p == ppp_pass ) return &CharPwd;
if(p == server_name)
{
if(atoi(server_name) == atoi(Key+12)) return Check;
else return &Char00;
}
return p;
}
//***********************************************
// IoFtp()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoFtp(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U FtpServer[32];
static INT8U FtpUser[16];
static INT8U FtpPass[16];
static INT8U FtpPort[6];
static INT8U FtpMode[2];
static INT8U FtpTrigger[2];
INT8U *p;
INT8U size;
if(op == IOINIT)
{ //---- change by gofly
if( strlen(eprom_ptos.eprom_opt_ftp.ftp_server) > sizeof(FtpServer))
FtpServer[0] = 0x00;
else
strcpy(FtpServer, eprom_ptos.eprom_opt_ftp.ftp_server);
if(strlen(eprom_ptos.eprom_opt_ftp.ftp_user) > sizeof(FtpUser))
FtpUser[0] = 0x00;
else
strcpy(FtpUser, eprom_ptos.eprom_opt_ftp.ftp_user);
if(strlen(eprom_ptos.eprom_opt_ftp.ftp_pass) > sizeof(FtpPass))
FtpPass[0] = 0x00;
else
strcpy(FtpPass, eprom_ptos.eprom_opt_ftp.ftp_pass);
sprintf(FtpPort, "%d\x00", eprom_ptos.eprom_opt_ftp.ftp_port);
sprintf(FtpMode, "%d\x00", eprom_ptos.eprom_opt_ftp.ftp_mod);
FtpTrigger[0] = 0x30; // will change from eepron SQ_2_90_1
/*
//---- will change from eeprom
strcpy(FtpServer, "192.168.1.108");
strcpy(FtpUser, "gofly");
strcpy(FtpPass, "goflytku");
strcpy(FtpPort, "21");
strcpy(FtpMode, "0\x00"); //o port 1 pasv
*/
return &Char00;
}
if(! extra_strncmp(Key ,"FTP_SERVER"))
{
p = FtpServer; size = sizeof(FtpServer);
}
else if(! extra_strncmp(Key ,"FTP_USER"))
{
p = FtpUser; size = sizeof(FtpUser);
}
else if(! extra_strncmp(Key ,"FTP_PASS"))
{
if (! strncmp(data ,"*******" ,7))
{
return &Char00;
}
p = FtpPass; size = sizeof(FtpPass);
}
else if(! extra_strncmp(Key ,"FTP_PORT"))
{
p = FtpPort; size = sizeof(FtpPort);
}
else if(! strncmp(Key ,"FTP_MODE" ,8))
{
p = FtpMode; size = sizeof(FtpMode);
}
else if(! strncmp(Key ,"FTP_TRIGGER" ,11))
{
p = FtpTrigger; size = sizeof(FtpTrigger);
}
else if(! strncmp(Key ,"GET_FTP_PASS" ,12))
{
p = FtpPass; size = sizeof(FtpPass);
return p;
}
else if(! strncmp(Key ,"GET_FTP_MODE" ,12))
{
p = FtpMode; size = sizeof(FtpMode);
return p;
}
else
{
return &Char00;
}
if(op == IOR)
{
if(p == FtpMode && FtpMode[0] == Key[8]) //FTP_MODE1 FTP_MODE0
return Check;
if(p == FtpTrigger && FtpTrigger[0] == Key[12])
return Check;
if(p == FtpMode || p == FtpTrigger)
return &Char00;
return (p == FtpPass ) ? &Char00: p; //can't get FTP_PASS
}
if(op == IOW)
{
static INT8U flag = 0;
if(strlen(data) > size) return p;
// change by gofly allow name ftp pass ""
if( extra_strncmp(p ,data))
//if(data[0] != 0x00 && extra_strncmp(p ,data))
{
memset(p, 0x00, size);
memcpy(p, data, strlen(data));
//--- if ftp trigger call function ---//
flag++;
}
//--- gofly add to write 24c08 when the last env IOW && evn change(flag)
#if EEPROM_CHANGE_EVERY
if(flag)
#else
if(p == FtpMode && flag)
#endif
{ // service ftp last env
flag = 0;
strcpy(eprom_ptos.eprom_opt_ftp.ftp_server, FtpServer);
strcpy(eprom_ptos.eprom_opt_ftp.ftp_user, FtpUser);
strcpy(eprom_ptos.eprom_opt_ftp.ftp_pass, FtpPass);
eprom_ptos.eprom_opt_ftp.ftp_port = atoi(FtpPort);
eprom_ptos.eprom_opt_ftp.ftp_mod = atoi(FtpMode);
eprom_24c08_write(&eprom_ptos.eprom_opt_ftp, eprom_ptos.eprom_opt_ftp.offset, sizeof(OPT_FTP));
}
}
return p;
}
//***********************************************
// IoSmtp()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoSmtp(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U SmtpServer [32];
static INT8U SmtpMailFrom [32];
static INT8U SmtpRcptTo [32];
static INT8U SmtpUser [32];
static INT8U SmtpPass [32];
//// static INT8U SmtpAuthflag = 1 ;
//static INT8U SmtpTrigger[2];
INT8U *p;
INT8U size;
if(op == IOINIT)
{
//---- gofly change
SmtpServer [0] = 0x00;
SmtpMailFrom[0] = 0x00;
SmtpRcptTo [0] = 0x00;
SmtpUser [0] = 0x00;
SmtpPass [0] = 0x00;
SmtpAuthflag = *eprom_ptos.eprom_opt_smtp.smtp_authorization;
if( strlen(eprom_ptos.eprom_opt_smtp.smtp_server) < sizeof(SmtpServer))
strcpy(SmtpServer, eprom_ptos.eprom_opt_smtp.smtp_server);
if( strlen(eprom_ptos.eprom_opt_smtp.smtp_server) < sizeof(SmtpMailFrom))
strcpy(SmtpMailFrom, eprom_ptos.eprom_opt_smtp.smtp_senduser);
if( strlen(eprom_ptos.eprom_opt_smtp.smtp_server) < sizeof(SmtpRcptTo))
strcpy(SmtpRcptTo, eprom_ptos.eprom_opt_smtp.smtp_recvuser);
if( strlen(eprom_ptos.eprom_opt_smtp.smtp_user) < sizeof(SmtpUser))
strcpy(SmtpUser, eprom_ptos.eprom_opt_smtp.smtp_user);
if( strlen(eprom_ptos.eprom_opt_smtp.smtp_pass) < sizeof(SmtpPass))
strcpy(SmtpPass, eprom_ptos.eprom_opt_smtp.smtp_pass);
//SmtpTrigger[0] = 0x30; // will change from eepron SQ_2_90_1 init smtp trigger
/*
//---- will change from eeprom
strcpy(SmtpServer, "mail.sq.com.tw");
strcpy(SmtpMailFrom,"god@mail.sq.com.tw");
strcpy(SmtpRcptTo, "gofly@sq.com.tw");
*/
return &Char00;
}
if(! extra_strncmp(Key ,"SMTP_SERVER"))
{
p = SmtpServer; size = sizeof(SmtpServer);
}
else if(! extra_strncmp(Key ,"SMTP_MAIL_FROM"))
{
p = SmtpMailFrom; size = sizeof(SmtpMailFrom);
}
else if(! extra_strncmp(Key ,"SMTP_RCPT_TO"))
{
p = SmtpRcptTo; size = sizeof(SmtpRcptTo);
}
else if(! extra_strncmp(Key ,"SMTP_USER"))
{
p = SmtpUser; size = sizeof(SmtpUser);
}
else if(! extra_strncmp(Key ,"SMTP_PASS"))
{
if (! strncmp(data ,"*******" ,7))
{
return &Char00;
}
p = SmtpPass; size = sizeof(SmtpPass);
//if(op == IOR ) return &Char00;
}
else if(! extra_strncmp(Key ,"SMTP_AUTH"))
{
*Char0 = 0x30;
*Char1 = 0x31;
p = SmtpAuthflag?Char1:Char0; size = 3;
}
else if(! extra_strncmp(Key ,"SMTP_AUTHON"))
{
if(SmtpAuthflag)
{
p=&Check;
}
else
{
p=&Char00;
}
}
else if(! extra_strncmp(Key ,"SMTP_AUTHOF"))
{
if (!SmtpAuthflag)
{
p=&Check;
}
else
{
p=&Char00;
}
}
else if(! extra_strncmp(Key ,"GET_SMTP_PASS"))
{
p = SmtpPass; size = sizeof(SmtpPass);
}
/*
else if(! strncmp(Key ,"SMTP_TRIGGER",12))
{
p = SmtpTrigger; size = sizeof(SmtpTrigger);
}
*/
else
{
return &Char00;
}
/*
if(op == IOR)
{
if(p == SmtpTrigger&&SmtpTrigger[0] == Key[13])
return Check;
if(p == SmtpTrigger)
return &Char00;
}
*/
if(op == IOW)
{ static INT8U flag = 0;
//// add by daniel
if(!strncmp(Key ,"SMTP_AUTH",9))
{
SmtpAuthflag = atoi(data)?1:0;
*data =0x01;
}
////
if(strlen(data) > size) return p;
if(data != NULL && data[0] != 0x00 && extra_strncmp(p ,data))
{
flag++;
memset(p, 0x00, size);
memcpy(p, data, strlen(data));
//--- if smtp trigger call function ---//
}
#if EEPROM_CHANGE_EVERY
if(flag)
#else
if(p == SmtpRcptTo && flag)
#endif
{
flag = 0;
strcpy(eprom_ptos.eprom_opt_smtp.smtp_server, SmtpServer);
strcpy(eprom_ptos.eprom_opt_smtp.smtp_senduser, SmtpMailFrom);
strcpy(eprom_ptos.eprom_opt_smtp.smtp_recvuser, SmtpRcptTo);
strcpy(eprom_ptos.eprom_opt_smtp.smtp_user, SmtpUser);
strcpy(eprom_ptos.eprom_opt_smtp.smtp_pass, SmtpPass);
*eprom_ptos.eprom_opt_smtp.smtp_authorization = SmtpAuthflag;
eprom_24c08_write(&eprom_ptos.eprom_opt_smtp, eprom_ptos.eprom_opt_smtp.offset, sizeof(OPT_SMTP));
}
//SmtpAuthflag = atoi(data)? 1:0;
}
return p;
}
//***********************************************
// IoVideoCh()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoVideoCh(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U ch;
switch(op)
{
case IOINIT:
ch = 1; // default ch 1
//add change ch function
break;
case IOR:
if(atoi(Key + 8) == ch)
{
return Check;
}
else
return &Char00;
break;
case IOW:
ch = atoi(data);
//add change ch function
break;
default:
return &ch;
}
}
//***********************************************
// IoImgSet()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
extern OS_EVENT *imgSyncMbox; //add by jgy 09/30/05
INT8U *IoImgSet(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U ImgMode[10];
static INT8U ImgComp[4];
static INT8U ImgOutDoor[4];
static INT8U VideoCh[4];
//static INT8U ImgModeP[10];
INT8U err;
INT8U temp[10];
INT8U *p;
INT8U size;
INT8U videosize = eprom_ptos.eprom_opt_img.img_size;
INT8U height[6],width[6];
if(op == IOINIT)
{
//---- will change from eeprom
//---- image size & ImgComp & ImgOutDoor 不写入 eeprom
sprintf(ImgComp,"%03d",eprom_ptos.eprom_opt_img.img_qual);
sprintf(ImgOutDoor,"%03d",api_ae.AcPowerType = eprom_ptos.eprom_opt_img.img_lf);
sprintf(VideoCh,"%03d",eprom_ptos.eprom_opt_img.videoch);
sprintf(ImgMode ,"%04d%04d\x00",
640>>videosize, 480>>videosize);// add by jjl for prev img resolution
return &Char00;
}
/*
if(! strncmp(Key , "IMG_S_M_P", 9)) // add by jjl for prev img resolution
{
//sprintf(ImgMode ,"%04d%04d\x00",
// atoi(IoW(NULL, NULL, IOR, ROOT)), atoi(IoH(NULL, NULL, IOR, ROOT)));
p = ImgModeP;
size = sizeof(ImgModeP);
return p;
}
else if(! strncmp(Key , "IMG_S_M_N", 9)) // add by jjl for prev img resolution
{
//sprintf(ImgMode ,"%04d%04d\x00",
// atoi(IoW(NULL, NULL, IOR, ROOT)), atoi(IoH(NULL, NULL, IOR, ROOT)));
p = ImgMode;
size = sizeof(ImgMode);
return p;
}
*/
if(! strncmp(Key ,"IMG_V_C", 7)) //outdoor
{
p = VideoCh; size = sizeof(VideoCh);
}
else if(! strncmp(Key , "IMG_S_M", 7)) // image mode
{
p = ImgMode; size = sizeof(ImgMode);
}
else if(! strncmp(Key ,"IMG_S_C", 7)) //image Compression
{
p = ImgComp; size = sizeof(ImgComp);
}
else if(! strncmp(Key ,"IMG_S_O", 7)) //outdoor
{
p = ImgOutDoor; size = sizeof(ImgOutDoor);
}
else if(! strncmp(Key ,"IMG_S_GET_C", 11))
{
p = ImgComp; size = sizeof(ImgComp);
return p;
}
else
{
return &Char00;
}
if(op == IOR)
{
//IMG_S_C_070
if(atoi(Key + 8) == atoi(p))
return Check;
else
return &Char00;
}
if(op == IOW)
{
if(strlen(data) > size) return p;
OSMboxPend(imgSyncMbox, 0, &err);
if(p == ImgMode)
{
INT8U i;
memset(temp, 0x00, sizeof(temp));
memcpy(temp , data , 4);
memcpy(temp + 5, data + 4, 4);
//memcpy(ImgModeP,ImgMode,10);
IoW(NULL, temp, IOW, ROOT);
IoH(NULL, temp + 5, IOW, ROOT);
sprintf(ImgMode ,"%04d%04d\x00",
atoi(IoW(NULL, NULL, IOR, ROOT)), atoi(IoH(NULL, NULL, IOR, ROOT)));
for (i=0;i<3;i++)
{
if ((atoi(IoW(NULL, NULL, IOR, ROOT))< 0) video_server_ref--;
jpgsmp[i] = 0;
}
HttpCloseConnect((void *)&GtHCB,i);
}
//OSTimeDlyHMSM(0,0,5,0);
}
//return p;
}
if((data != NULL) && (data[0] != 0x00) && (extra_strncmp(p ,data)))
{
memset(p, 0x00, size);
memcpy(p, data, strlen(data));
//add by ue ^^
//video_init(jpeg_inf);
}
if(p == ImgOutDoor)
{
if(strncmp(p, "060", 3) == 0) //AcPowerType = 60
{
api_ae.AcPowerType = 60;
}
else if(strncmp(p, "050", 3) == 0) // AcPowerType = 50
{
api_ae.AcPowerType = 50;
}
else //AcPowerType = 100 is outdoor
{
api_ae.AcPowerType = 100;
}
//awaly re-init EV_Rank, and setting
api_ae.NewEvRank = 15;//EV_START_PTR;
//SetExpValTable();
switch(api_sen.View)
{
case VGA:
ae_awb_init(640);
break;
case CIF:
ae_awb_init(320);
break;
default://case QCIF:
ae_awb_init(160);
break;
}
eprom_ptos.eprom_opt_img.img_lf = api_ae.AcPowerType;
}
if(p == VideoCh)
{
eprom_ptos.eprom_opt_img.videoch = atoi(data);
}
if(p == ImgComp)
{
eprom_ptos.eprom_opt_img.img_qual = atoi(data);
}
OSMboxPost(imgSyncMbox, (void*)1);
eprom_24c08_write(&eprom_ptos.eprom_opt_img, eprom_ptos.eprom_opt_img.offset , sizeof(OPT_IMG));
}
return p;
}
//***********************************************
// IoUser() //user.html
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoUser(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
if(op == IOR)
{
if(! strncmp(Key ,"NEW_ADMIN_NAME", strlen(Key)))
{
return IoName(Key,data,IOR,ROOT);
}
if(! strncmp(Key ,"NEW_USER_NAME", strlen(Key)))
{
return IoName(Key,data,IOR,USER);
}
if(! strncmp(Key ,"OLD_ADMIN_PWD", strlen(Key)))
{
return IoPass(Key,data,IOR,ROOT);
}
if(! strncmp(Key ,"OLD_USER_PWD", strlen(Key)))
{
return IoPass(Key,data,IOR,USER);
}
return &Char00;
}
if(op == IOW)
{
if(! strncmp(Key ,"NEW_ADMIN_NAME", strlen(Key)))
{
return IoName(Key,data,IOW,ROOT);
}
if(! strncmp(Key ,"NEW_USER_NAME", strlen(Key)))
{
return IoName(Key,data,IOW,USER);
}
if(! strncmp(Key ,"NEW_ADMIN_PWD", strlen(Key)))
{
return IoPass(Key,data,IOW,ROOT);
}
if(! strncmp(Key ,"NEW_USER_PWD", strlen(Key)))
{
return IoPass(Key,data,IOW,USER);
}
}
}
//***********************************************
// IoDns()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoDns(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U dns1[16],dns2[16],dns[16];
INT8U *p;
struct ip_addr addr;
INT8U *addressStr;
if(op == IOINIT)
{
//--- change by gofly
dns1[0] = 0x00;
dns2[0] = 0x00;
p = CheckIP_INT32U_Str(*(INT32U*)eprom_ptos.eprom_opt_dns_dhcp.dns1_server);
if( p!=NULL)
strcpy(dns1, p);
p = CheckIP_INT32U_Str(*(INT32U*)eprom_ptos.eprom_opt_dns_dhcp.dns2_server);
if( p!=NULL)
strcpy(dns2, p);
}
if(! strncmp(Key ,"DNS_IP_Address_1",16))
{
p=&dns1;
}
if(! strncmp(Key ,"DNS_IP_Address_2",16))
{
p=&dns2;
}
if(op == IOW)
{
if (p==&dns1){p=&dns1;}
else if (p==&dns2){p=&dns2;}
if(strncmp(p , data, strlen(data)))
{
//------ check ip allow ? ------//
if(!inet_aton((const char*)data, &addr))
{
return p;
}
addressStr = inet_ntoa(addr.addr);
if(strncmp(data , addressStr, strlen(data)))
return p;
strcpy(p, addressStr);
if (p==&dns1)
{
memcpy(eprom_ptos.eprom_opt_dns_dhcp.dns1_server ,&addr.addr, 4);
}
else if (p==&dns2)
{
memcpy(eprom_ptos.eprom_opt_dns_dhcp.dns2_server ,&addr.addr, 4);
}
// strcpy(eprom_ptos.eprom_opt_dns_dhcp.dns1_server,dns1);
// strcpy(eprom_ptos.eprom_opt_dns_dhcp.dns2_server,dns2);
eprom_24c08_write(&eprom_ptos.eprom_opt_dns_dhcp, eprom_ptos.eprom_opt_dns_dhcp.offset , sizeof(OPT_DNS_DHCP));
}
}
return p;
}
//***********************************************
// IoIP()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoIpAddress(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U ip[32];
static INT8U gw[32];
static INT8U ma[32];
INT8U *p;
struct ip_addr addr;
INT8U *addressStr;
static struct netif *netif = NULL;
if(op == IOINIT)
{
ip[0] = 0x00;
gw[0] = 0x00;
ma[0] = 0x00;
netif = (struct netif*)data;
p = CheckIP_INT32U_Str(*(INT32U*)eprom_ptos.eprom_opt_ip.ip_addr);
if( p!=NULL) strcpy(ip, p);
p = CheckIP_INT32U_Str(*(INT32U*)eprom_ptos.eprom_opt_ip.def_gate);
if( p!=NULL) strcpy(gw, p);
p = CheckIP_INT32U_Str(*(INT32U*)eprom_ptos.eprom_opt_ip.sub_mask);
if( p!=NULL) strcpy(ma, p);
if(ip[0] == 0x00 || gw[0] == 0x00 || ma[0] == 0x00)
{//init fail
sprintf(ip,"%s\x00",DEFAULT_IP);
sprintf(gw,"%s\x00",DEFAULT_GW);
sprintf(ma,"%s\x00",DEFAULT_MA);
}
/*
sprintf(ip,"%s\x00",DEFAULT_IP);// will change
sprintf(gw,"%s\x00",DEFAULT_GW);// will change
sprintf(ma,"%s\x00",DEFAULT_MA);// will change
*/
return p;
}
ASSERT_EX1(HTTP_DEBUG, "IoIP netif init err", netif != NULL);
if(Key[0] == 'I') p = ip;
else if(Key[0] == 'G') p = gw;
else if(Key[0] == 'M') p = ma;
else return &Char00;
if(op == IOW)
{
static INT8U flag = 0;
if(strncmp(p , data, strlen(data)))
{
//------ check ip allow ? ------//
if(!inet_aton(data,&addr))
{
return p;
}
addressStr = inet_ntoa(addr.addr);
if(strncmp(data , addressStr, strlen(data)))
{
return p;
}
flag++;
strcpy(p, addressStr);
if(Key[0] == 'I')
{
netif_set_ipaddr(netif, &addr);
memcpy(eprom_ptos.eprom_opt_ip.ip_addr ,&addr.addr, 4);
}
else if(Key[0] == 'G')
{
netif_set_gw(netif, &addr);
memcpy(eprom_ptos.eprom_opt_ip.def_gate ,&addr.addr, 4);
}
else if(Key[0] == 'M')
{
netif_set_netmask(netif, &addr);
memcpy(eprom_ptos.eprom_opt_ip.sub_mask ,&addr.addr, 4);
}
}/* if(strncmp(p , data, strlen(data)))*/
#if EEPROM_CHANGE_EVERY
if(flag)
#else
if(flag && Key[0] == 'G')
#endif
{
flag = 0;
eprom_24c08_write(&eprom_ptos.eprom_opt_ip, eprom_ptos.eprom_opt_ip.offset , sizeof(OPT_IP));
}
}
return p;
}
//***********************************************
// IoH()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoDHCP_ENABLE(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U C;
if(op == IOINIT)
{
C = eprom_ptos.eprom_opt_dns_dhcp.dhcp_server;
}
if(op == IOW)
{
if(atoi(data) != C )
{
//--- add code change eepron
C = atoi(data);
eprom_ptos.eprom_opt_dns_dhcp.dhcp_server = C;
eprom_24c08_write(&eprom_ptos.eprom_opt_dns_dhcp,
eprom_ptos.eprom_opt_dns_dhcp.offset , sizeof(OPT_DNS_DHCP));
}
}
if(atoi(Key+11) == C)
{
return Check;
}
return &Char00;
}
//***********************************************
// IoCODEBASE()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoCODEBASE(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static const INT8U p[]={"/view.cab#Version="_CODEBASE};
return p;
}
//***********************************************
// IoH()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoH(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U p[6];
INT8U videosize = eprom_ptos.eprom_opt_img.img_size;
if(op == IOINIT)
{
sprintf(p,"%d\x00", 480>>videosize);
}
if(op == IOR)
{
return p;
}
if(op == IOW)
{
if(atoi(data) != atoi(p))
{
//--- add code change eepron
sprintf(p,"%d\x00",atoi(data));
}
}
return p;
}
//***********************************************
// IoH()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoW(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U p[6];
INT8U videosize = eprom_ptos.eprom_opt_img.img_size;
if(op == IOINIT)
{
sprintf(p,"%d\x00", 640>>videosize);
}
else if(op == IOW)
{
if(atoi(data) != atoi(p))
{
//--- add code change eepron
sprintf(p,"%d\x00",atoi(data));
}
}
return p;
}
//***********************************************
// IoWid()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoTrage(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
const static INT8U R[]={"MAIN\x00"};
const static INT8U U[]={"OTHER\x00"};
if(uid == ROOT) return R;
return U;
}
//***********************************************
// IoWid()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoWid(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U p[14];
INT8U *pMac;
if(op == IOINIT)
{
pMac = IoMAC_ADDR(NULL, NULL, IOR, ROOT);
memset(p, 0x00, sizeof(p));
memset(p, 0x20, 13);
sprintf(p, "=%02x%02x%02x%02x%02x%02x", *(pMac) ,*(pMac+1),*(pMac+2),*(pMac+3),*(pMac+4),*(pMac+5));
/* pMac = IoMAC_ADDR(NULL, NULL, IOR, ROOT) + 11;
for(i = 0; i < 12; i++)
{
p[i] = *(pMac - i) - '0';
} */
}
return p;
}
//***********************************************
// IoUid()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoUid(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U p[6];
sprintf(p,"%d\x00", uid);
return p;
}
//***********************************************
// IoViewUsr()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return str
//
//***********************************************
INT8U *IoViewUser(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U p[10];
void *q;
int i,j=0;
for(i=0;iMain\x00");
/*
sprintf(p,"LiveView\x00",
IoVideo(NULL, NULL, IOR, uid),
IoAudio(NULL, NULL, IOR, uid),
IoCookie(NULL, NULL, IOR, uid),
IoWid(NULL, NULL, IOR, uid),
uid,
//IoTrage(NULL, NULL, IOR, uid),
IoEventTrigger("EventT_Det_MDPC",NULL,IOR,uid)
);
*/ /*
sprintf(p,"LiveView\x00");
break;
case DDNS_HTML:
sprintf(p,"Ddns\x00");
break;
case SNTP_HTML:
sprintf(p,"Sntp\x00");
break;
case USER_HTML:
sprintf(p,"Administration\x00");
break;
case CAPTURE_HTML:
sprintf(p,"CaptureView\x00");
break;
case IMAGESET_HTML:
sprintf(p,"ImageSet\x00");
break;
// case WLAN_HTML:
// sprintf(p,"Wlan\x00");
// break;
case NETWORK_HTML:
sprintf(p,"Network\x00");
break;
case SERVER_HTML:
sprintf(p,"Server\x00");
break;
case TRIGGER_HTML:
sprintf(p,"EventTrigger\x00");
break;
case VERSION_HTML:
/* sprintf(p,"Version \x00"
,IoAppVer(NULL, NULL, IOR, uid),IoCookie(NULL, NULL, IOR, uid)
);*/ /*
sprintf(p,"Update\x00");
break;
case OTHER_HTML:
#if UI_OPEN_MODIFY_LOW_ENV
sprintf(p,"Other\x00");
#endif
break;
// case STORAGE_HTML:
// sprintf(p,"Storage\x00");
// break;
case TEST_HTML:
// sprintf(p,"test \x00");
break;
}
return p;
}
*/
//***********************************************
// IoHttpPort()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : httpport
//
//***********************************************
INT16U *IoHttpPort(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U port[6];
INT16U tmp16;
if(op == IOINIT)
{
//--- will change
sprintf(port, "%u\00",(INT32U)eprom_ptos.eprom_opt_www.www_port);
////add by daniel
Httpportid = atoi(port);
tmp16 = (Httpportid & 0xff00)>>8;
Httpportid= ((Httpportid << 8) | tmp16);
}
if(op == IOR)
{
return port;
}
if(op == IOW)
{
if(atoi(data) != atoi(port))
{
eprom_ptos.eprom_opt_www.www_port = atoi(data);
sprintf(port,"%u\x00", (INT32U)eprom_ptos.eprom_opt_www.www_port);
eprom_24c08_write(&eprom_ptos.eprom_opt_www,
eprom_ptos.eprom_opt_www.offset , sizeof(OPT_WWW));
}
}
return port;
}
//***********************************************
// IoCookie()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return Cookie
//
//***********************************************
INT8U *IoCookie(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U RootCookie[16] ;
static INT8U UserCookie[16];
static INT8U OtherCookie[16];
INT8U *p;
if(op == IOINIT)
{
// will change
// if(eprom_ptos.eprom_opt_rand.magicNumber != rand())
strcpy(RootCookie, "RootCookie00000");
strcpy(UserCookie, "UserCookie00000");
strcpy(OtherCookie,"OtherCookie0000");
}
switch(uid)
{
case ROOT:
p = RootCookie;
break;
case USER:
p = UserCookie;
break;
case OTHER:
p = OtherCookie;
break;
};
if(op == IOW)
{
if(data != NULL && extra_strncmp(p, data))
{
//--- add code change eepron
memcpy(p, data, sizeof(RootCookie) - 1 );
}
}
return p;
}
//***********************************************
// IoName()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return name
//
//***********************************************
INT8U *IoName(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U NameR[16] ;
static INT8U NameU[16] ;
static INT8U flag=0;
INT8U *p;
if(op == IOINIT)
{
NameR[0] = 0x00;
NameU[0] = 0x00;
if( strlen(eprom_ptos.eprom_opt_secure.admin_name) < sizeof(NameR))
strcpy(NameR, eprom_ptos.eprom_opt_secure.admin_name);
if( strlen(eprom_ptos.eprom_opt_secure.guest_name) < sizeof(NameU))
strcpy(NameU, eprom_ptos.eprom_opt_secure.guest_name);
if(NameR[0] == 0x00) strcpy(NameR, "root");
if(NameU[0] == 0x00) strcpy(NameU, "user");
/*
//--- will change
strcpy(NameR, "root");
strcpy(NameU, "user");
*/
}
switch(uid)
{
case ROOT:
p = NameR;
break;
case USER:
p = NameU;
break;
};
if(op == IOW)
{
if(data != NULL && data[0] != 0x00 &&
strlen(data) < sizeof(NameR) && extra_strncmp(p, data))
{
flag++;
//--- add code change eepron
memset(p, 0x00, sizeof(NameR));
memcpy(p, data, sizeof(NameR));
}
#if EEPROM_CHANGE_EVERY
if(flag)
{
flag = 0;
strcpy(eprom_ptos.eprom_opt_secure.admin_name ,NameR);
strcpy(eprom_ptos.eprom_opt_secure.guest_name ,NameU);
strcpy(eprom_ptos.eprom_opt_secure.admin_pass ,IoPass(NULL,NULL,IOR,ROOT));
strcpy(eprom_ptos.eprom_opt_secure.guest_pass ,IoPass(NULL,NULL,IOR,USER));
eprom_24c08_write(&eprom_ptos.eprom_opt_secure ,
eprom_ptos.eprom_opt_secure.offset , sizeof(OPT_SECURE));
}
#endif
}
return p;
}
//***********************************************
// IoPass()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : return Pass
//
//***********************************************
INT8U *IoPass(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U PassRoot[16] ;
static INT8U PassUser[16] ;
static INT8U flag = 0;
INT8U *p;
if(op == IOINIT)
{
PassRoot[0] = 0x00;
PassUser[0] = 0x00;
if( strlen(eprom_ptos.eprom_opt_secure.admin_pass) < sizeof(PassRoot))
strcpy(PassRoot, eprom_ptos.eprom_opt_secure.admin_pass);
if( strlen(eprom_ptos.eprom_opt_secure.guest_pass) < sizeof(PassUser))
strcpy(PassUser, eprom_ptos.eprom_opt_secure.guest_pass);
//--- will change
if(PassRoot[0] == 0x00)strcpy(PassRoot, "rootpass");
if(PassUser[0] == 0x00)strcpy(PassUser, "userpass");
}
switch(uid)
{
case ROOT:
p = PassRoot;
break;
case USER:
p = PassUser;
break;
};
if(op == IOW)
{
if(data != NULL && data[0] != 0x00 &&
strlen(data) < sizeof(PassRoot)&& extra_strncmp(p, data))
{
//--- add code change eepron
flag++;
memset(p, 0x00, sizeof(PassRoot));
memcpy(p, data, sizeof(PassRoot) );
}
#if EEPROM_CHANGE_EVERY
if(flag)
#else
if( p == PassUser)
#endif
{
flag = 0;
strcpy(eprom_ptos.eprom_opt_secure.admin_name ,IoName(NULL, NULL, IOR, ROOT));
strcpy(eprom_ptos.eprom_opt_secure.guest_name ,IoName(NULL, NULL, IOR, USER));
strcpy(eprom_ptos.eprom_opt_secure.admin_pass ,PassRoot);
strcpy(eprom_ptos.eprom_opt_secure.guest_pass ,PassUser);
eprom_24c08_write(&eprom_ptos.eprom_opt_secure ,
eprom_ptos.eprom_opt_secure.offset , sizeof(OPT_SECURE));
}
}
return p;
}
//***********************************************
// IoWebCamName()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : root Pass
//
//***********************************************
INT8U *IoWebCamName(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U name[16];
switch(op)
{
case IOINIT:
memset(name, 0x00, sizeof(name));
if( strlen(eprom_ptos.eprom_opt_system.cam_location) < sizeof(name))
strcpy(name, eprom_ptos.eprom_opt_system.cam_location);
else
{
strcpy(name,"UNKNOW");
}
break;
case IOR:
break;
case IOW:
if(data != NULL && data[0] != 0x00 && strcmp(name,data)!=0)///< extra_strncmp ---> strcmp タ﹃浪琩bug
{
//--- add code change eepron
INT8U i,*pname;
pname = name;
for (i=0;i 1 ? *PageIntTmp-1:1));
}
else if(!strncmp(Key, "PageNext" , 8))
{
sprintf(Pagetemp,"%06d",(*PageIntTmp < k ? *PageIntTmp+1:k));
}
else if(!strncmp(Key, "PageTotal" , 9))
{
sprintf(Pagetemp,"%d",k);
}
else if(!strncmp(Key, "PageNow" , 7))
{
sprintf(Pagetemp,"%d",*PageIntTmp);
}
else if(!strncmp(Key, "PageLast" , 8))
{
sprintf(Pagetemp,"%06d",k);
}
else
{
return &Char00;
}
return Pagetemp;
}
//STORAGE_0045
j = atoi(Key + 8);
if(!strncmp(Key+8, "PC",2))
{
if (!PC_value)
{
return Check;
}
return &Char00;
}
else if (!strncmp(Key+8, "FC",2))
{
if (PC_value)
{
return Check;
}
return &Char00;
}
else
{
if( j >= STORAGE_PAGE_MAX )
{
return &Char00;
}
}
i = *(PageInf + 15 * atoi(Key + 8));
if(i == 0x00) return &Char00;
memset(SearchFileName, 0x00, sizeof(SearchFileName));
// strcat(SearchFileName, "SImage");
//strcat(SearchFileName, "STHtml");
//memcpy(SearchFileName6, PageInf + 15 * j + 1,14);
// strcat(SearchFileName,".jpg");
//strcat(SearchFileName,".html");
memcpy(SearchFileName, PageInf + 15 * j + 1,14);
break;
}
return SearchFileName;
}
//***********************************************
// IoWL()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : httpport
//
//***********************************************
INT16U *IoWL(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{ //---- only read
static INT8U temp[50];
INT8U i,j;
i = atoi(Key + 3);
j = atoi(Key + 8);
if(j >= sizeof(temp)) return &Char00;
//WL_0001_0001
if(i == 0)
{
memset(temp, 0x20, sizeof(temp));
temp[j] = 0x00;
}
else
{
sprintf(temp,"$WL_%04d_%04d=\x00", i-1 , j );
}
return temp;
}
//***********************************************
// IoWL()
// Description :
// Parameters : data
// op //IOR IOW
// Returns : httpport
//
//***********************************************
INT16U *IoMAC_ADDR(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U MacAddr[6]={0x00,0x00,0x00,0x00,0x00,0x00};
static INT8U Flag = 0;
static INT8U temp[13];
INT8U i;
INT8U ch;
if(Flag == 0)
{
Flag = 1;
memcpy(MacAddr, eprom_ptos.eprom_opt_inf.mac_addr , 6);
if(MacAddr[0] == 0x00 && MacAddr[1] == 0x00 && MacAddr[2] == 0x00
&& MacAddr[3] == 0x00 && MacAddr[4] == 0x00 && MacAddr[5] == 0x00)
{
memcpy(MacAddr + 2, DEFAULT_MAC_ADDR, 4);
memcpy(eprom_ptos.eprom_opt_inf.mac_addr, MacAddr, 6);
eprom_24c08_write(&eprom_ptos.eprom_opt_inf ,
eprom_ptos.eprom_opt_inf.offset , sizeof(OPT_INF));
}
return MacAddr;
}
if(op == IOR)
{
if(Key != NULL)
{
temp[0] = 0x00;
for(i = 0; i < 6; i++)
{
sprintf(temp + strlen(temp), "%02x\x00", MacAddr[i]);
}
return temp;
}
return MacAddr;
}
if(op == IOW && uid == ROOT )
{
if(Key != NULL)
{
for(i = 0; i < 6; i++)
{
ch = 0x00;
if(data[i*2] >= 'a')
ch+= (data[i*2] - 0x61 ) +10;
else if (data[i*2] >= 'A')
ch+= (data[i*2] - 0x41 ) +10;
else
ch+= (data[i*2] - 0x30 ) ;
ch *= 16;
if(data[i*2+1] >= 'a')
ch+= (data[i*2+1] - 0x61 )+10 ;
else if (data[i*2+1] >= 'A')
ch+= (data[i*2+1] - 0x41 ) +10;
else
ch+= (data[i*2+1] - 0x30 ) ;
temp[i] = ch;
}
memcpy(data, temp, 6);
}
for(i = 0; i < 6; i++)
{
if(data[i] != MacAddr[i])break;
}
if( i != 6)
{
memcpy(eprom_ptos.eprom_opt_inf.mac_addr, data, 6);
memcpy(MacAddr, data, 6);
i= eprom_24c08_write(&eprom_ptos.eprom_opt_inf ,eprom_ptos.eprom_opt_inf.offset , sizeof(OPT_INF));
// eprom_24c08_read(&eprom_ptos.eprom_opt_inf, eprom_ptos.eprom_opt_inf.offset, sizeof(OPT_INF));
/*eprom_24c08_write(&eprom_ptos.eprom_opt_inf ,
eprom_ptos.eprom_opt_inf.offset , sizeof(OPT_INF)); */
}
}
/*
// static INT8U flag = 0;
//-- DEFAULT_MAC_ADDR define in opt.h
if(!flag)
{
flag = 1;
memcpy(MacAddr + 2, DEFAULT_MAC_ADDR, sizeof(MacAddr) - 2);
}
*/
return MacAddr;
}
//***********************************************
// CheckIP_INT32U_Str(INT32U )
// Description : check ip allow
// Parameters :
// Returns : success return point "x.x.x.x"
// fail NULL
//***********************************************
INT8U *CheckIP_INT32U_Str(INT32U Ip32U)
{
struct ip_addr addr;
static INT8U *addressStr;
addressStr = inet_ntoa(Ip32U);
inet_aton((const char*)addressStr, &addr);
if(addr.addr != Ip32U) return NULL;
return addressStr;
}
//***********************************************
// *IoReset()
// Description : software reset
// Parameters :
// Returns :
//***********************************************
IoReset()
{
reset(SYSTEM);
}
//***********************************************
//调整时钟
//***********************************************
u16_t sun_day(u16_t year,u16_t mon, u16_t day);
u16_t weekday(u16_t year,u16_t mon, u16_t day);
INT8U *IoTimer(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static char date[16]={0};
static char time[16]={0};
INT8U *p;
OS_TIME time_set_inf;
if(!strncmp(data, "keep", 4) && !strncmp(Key, "system_time", 11))
{
return &Char00; //keep current date and time
}
switch(op)
{
case IOINIT:
//
break;
case IOR:
//
break;
case IOW:
if(!strncmp(data, "auto", 4))
{
//在这里添加处置sntp服务器的代码
//sntp_start();
return &Char00;
}
if(!strncmp(Key, "system_date", 11))
{
memcpy(date, data, sizeof(date));
if(time[0] == '\x00')
{
return &Char00;
}
}
else if(!strncmp(Key, "system_time", 11))
{
memcpy(time, data, sizeof(time));
if(date[0] == '\x00')
{
return &Char00;
}
}
else
return &Char00;
p = date;
StrAdjust(p);
time_set_inf.tm_year = atoi(p);
p += 4;
StrAdjust(p);
time_set_inf.tm_mon = atoi(p);
p += 2;
StrAdjust(p);
time_set_inf.tm_mday = atoi(p);
p = time;
StrAdjust(p);
time_set_inf.tm_hour = atoi(p);
p += 2;
StrAdjust(p);
time_set_inf.tm_min = atoi(p);
p += 2;
StrAdjust(p);
time_set_inf.tm_sec = atoi(p);
time_set_inf.tm_yday = sun_day(time_set_inf.tm_year, time_set_inf.tm_mon, time_set_inf.tm_mday);
time_set_inf.tm_wday = weekday(time_set_inf.tm_year, time_set_inf.tm_mon, time_set_inf.tm_mday);
timer_settime(&time_set_inf);
date[0] = '\x00';
time[0] = '\x00';
break;
}
return &Char00;
}
//处理图像倒转
INT8U *IoImgReversal(INT8U *Key, INT8U *data, INT8U op, INT16U uid)
{
static INT8U Flip, Mirror;
INT16U read_mode;
INT8U flag1, flag2;
INT8U err;
if(op == IOINIT)
{
Flip = eprom_ptos.eprom_opt_img.flip;
Mirror = eprom_ptos.eprom_opt_img.mirror;
if(i2c_process_call(0x5d))
return &Char00;
read_mode = i2c_read_word(0x5d, 0x20);
if(Mirror != 0 && Flip != 0)
{
i2c_write_word(0x5d, 0x20, read_mode | 0xc0a0);
}
else if(Mirror != 0)
{
i2c_write_word(0x5d, 0x20, read_mode | 0x4020);
}
else if(Flip != 0)
{
i2c_write_word(0x5d, 0x20, read_mode | 0x8080); //flip
}
return &Char00;
}
if(op == IOR)
{//IMG_REV_
if(!strncmp(Key+8, "FLIP", 4) && Flip != 0)
return Check;
else if(!strncmp(Key+8, "MIRROR", 6) && Mirror != 0)
return Check;
else
return &Char00;
}
if(op == IOW)
{
flag1 = 0; flag2 = 0;
if(!strncmp(Key+8, "flip", 4))
{
switch(atoi(data))
{
case 0:
Flip = 0;
eprom_ptos.eprom_opt_img.flip = 0;
break;
case 1:
default:
Flip = 1;
eprom_ptos.eprom_opt_img.flip = 1;
break;
}
flag1 = 1;
}
if(!strncmp(Key+8, "mirror", 6))
{
switch(atoi(data))
{
case 0:
Mirror = 0;
eprom_ptos.eprom_opt_img.mirror = 0;
break;
case 1:
default:
Mirror = 1;
eprom_ptos.eprom_opt_img.mirror = 1;
break;
}
flag2 = 1;
}
eprom_24c08_write(&eprom_ptos.eprom_opt_img, eprom_ptos.eprom_opt_img.offset , sizeof(OPT_IMG));
if(i2c_process_call(0x5d))
return &Char00;
OSMboxPend(imgSyncMbox, 0, &err);
read_mode = i2c_read_word(0x5d, 0x20);
if(flag1)
{
if(Flip != 0)
i2c_write_word(0x5d, 0x20, read_mode | 0x8080); //flip
else
i2c_write_word(0x5d, 0x20, read_mode & 0x7f7f); //clear flip
}
if(flag2)
{
if(Mirror != 0)
i2c_write_word(0x5d, 0x20, read_mode | 0x4020); //mirror
else
i2c_write_word(0x5d, 0x20, read_mode & 0xbfcf); //clear mirror
}
OSMboxPost(imgSyncMbox, (void*)1);
}
return Key;
}