else if(wp->flags & WEBS_PUT_REQUEST)
{
char *freePutXml = NULL;
char *freePutXml1 = NULL;
userLevel = getUserLevel(wp->userName); // 暂不做处理
putXml = memalign(0x10, wp->clen);
freePutXml = putXml;
if(socketRead(wp->sid, freePutXml, wp->clen) != wp->clen)
{
printf("Invalid XML Content - Incomplete Message");
goto PUTExit;
}
//writeHttpOperationLogEntry(wp->userName, MINOR_REMOTE_CFG_PARM, 0); // 无用
freePutXml = strstr(putXml, "<enabled>");
if(freePutXml && strstr(freePutXml, "</enabled>"))
{
if(!strncmp(freePutXml+strlen("<enabled>"), "true", strlen("true")))
{
enable = 1;
}
else if(!strncmp(freePutXml+strlen("<enabled>"), "false", strlen("false")))
{
enable = 0;
}
freePutXml1 = strstr(freePutXml, "</enabled>") + strlen("</enabled>");
}
else
{
printf("Invalid XML Content - enabled error");
goto PUTExit;
}
freePutXml = strstr(freePutXml1, "<samplingInterval>");
if(freePutXml && strstr(freePutXml, "</samplingInterval>"))
{
int siVal = atoi(freePutXml + strlen("<samplingInterval>"));
freePutXml1 = strstr(freePutXml, "</samplingInterval>") + strlen("</samplingInterval>");
}
else
{
printf("Invalid XML Content - samplingInterval error");
goto PUTExit;
}
freePutXml = strstr(freePutXml1, "<startTriggerTime>");
if(freePutXml && strstr(freePutXml, "</startTriggerTime>"))
{
int startT = atoi(freePutXml + strlen("<startTriggerTime>"));
freePutXml1 = strstr(freePutXml, "</startTriggerTime>") + strlen("</startTriggerTime>");
}
else
{
printf("Invalid XML Content - startTriggerTime error");
goto PUTExit;
}
freePutXml = strstr(freePutXml1, "<endTriggerTime>");
if(freePutXml && strstr(freePutXml, "</endTriggerTime>"))
{
int endT = atoi(freePutXml + strlen("<endTriggerTime>"));
freePutXml1 = strstr(freePutXml, "</endTriggerTime>") + strlen("</endTriggerTime>");
}
else
{
printf("Invalid XML Content - endTriggerTime error");
goto PUTExit;
}
freePutXml = strstr(freePutXml1, "<minObjectSize>");
if(freePutXml && strstr(freePutXml, "</minObjectSize>"))
{
int minS = atoi(freePutXml + strlen("<minObjectSize>"));
freePutXml1 = strstr(freePutXml, "</minObjectSize>") + strlen("</minObjectSize>");
}
else
{
printf("Invalid XML Content - minObjectSize error");
goto PUTExit;
}
freePutXml = strstr(freePutXml1, "<maxObjectSize>");
if(freePutXml && strstr(freePutXml, "</maxObjectSize>"))
{
int maxS = atoi(freePutXml + strlen("<maxObjectSize>"));
freePutXml1 = strstr(freePutXml, "</maxObjectSize>") + strlen("</maxObjectSize>");
}
else
{
printf("Invalid XML Content - maxObjectSize error");
goto PUTExit;
}
freePutXml = strstr(freePutXml1, "<ROI>");
if(freePutXml && strstr(freePutXml, "</ROI>"))
{
freePutXml = strstr(freePutXml1, "<minHorizontalResolution>");
if(freePutXml && strstr(freePutXml, "</minHorizontalResolution>"))
{
int minR = atoi(freePutXml + strlen("<minHorizontalResolution>"));
freePutXml1 = strstr(freePutXml, "</minHorizontalResolution>") + strlen("</minHorizontalResolution>");
}
else
{
printf("Invalid XML Content - minHorizontalResolution error");
goto PUTExit;
}
freePutXml = strstr(freePutXml1, "<maxHorizontalResolution>");
if(freePutXml && strstr(freePutXml, "</maxHorizontalResolution>"))
{
int minR = atoi(freePutXml + strlen("<maxHorizontalResolution>"));
freePutXml1 = strstr(freePutXml, "</maxHorizontalResolution>") + strlen("</maxHorizontalResolution>");
}
else
{
printf("Invalid XML Content - maxHorizontalResolution error");
goto PUTExit;
}
freePutXml1 = strstr(freePutXml, "</ROI>") + strlen("</ROI>");
}
else
{
printf("Invalid XML Content - ROI error");
goto PUTExit;
}
freePutXml = strstr(freePutXml1, "<enableHighlight>");
if(freePutXml && strstr(freePutXml, "</enableHighlight>"))
{
if(!strncmp(freePutXml + strlen("<enableHighlight>"), "true", strlen("true")))
{
}
else if(!strncmp(freePutXml + strlen("<enableHighlight>"), "false", strlen("false")))
{
}
freePutXml1 = strstr(freePutXml, "</enableHighlight>") + strlen("</enableHighlight>");
}
else
{
printf("Invalid XML Content - enableHighlight error");
goto PUTExit;
}
freePutXml = strstr(freePutXml1, "<MotionDetectionSwitch");
if(freePutXml && strstr(freePutXml, "</MotionDetectionSwitch>")) // 此段暂不解析
{
freePutXml1 = strstr(freePutXml, "</MotionDetectionSwitch>") + strlen("</MotionDetectionSwitch>");
}
else
{
printf("Invalid XML Content - MotionDetectionSwitch error");
goto PUTExit;
}
freePutXml = strstr(freePutXml1, "<activeMode>");
if(freePutXml && strstr(freePutXml, "</activeMode>"))
{
char aMode[10] = {0};
memcpy(aMode, freePutXml+strlen("<activeMode>"), strstr(freePutXml, "</activeMode>") - freePutXml -strlen("<activeMode>"));
freePutXml1 = strstr(freePutXml, "</activeMode>") + strlen("</activeMode>");
}
else
{
printf("Invalid XML Content - activeMode error");
goto PUTExit;
}
printf("111111111111111111111111 WEBS_PUT_REQUEST\n");
semTake(globalMSem, WAIT_FOREVER);
freePutXml = strstr(freePutXml1, "<MotionDetectionRegionList>");
if(freePutXml && strstr(freePutXml, "</MotionDetectionRegionList>"))
{
int id = 0;
int n_id = 0;
int sLevel = 0;
int daySLevel = 0;
int nightSLevel = 0;
int x = 0;
int y = 0;
while(1)
{
freePutXml = strstr(freePutXml1, "<MotionDetectionRegion");
if(freePutXml && strstr(freePutXml, "</MotionDetectionRegion>"))
{
freePutXml = strstr(freePutXml1, "<id>");
if(freePutXml && strstr(freePutXml, "</id>"))
{
id = atoi(freePutXml + strlen("<id>"));
freePutXml1 = strstr(freePutXml, "</id>") + strlen("</id>");
}
else
{
printf("Invalid XML Content - id error");
semGive(globalMSem);
goto PUTExit;
}
printf("22222222222222222222222222 WEBS_PUT_REQUEST\n");
freePutXml = strstr(freePutXml1, "<enabled>");
if(freePutXml && strstr(freePutXml, "</enabled>"))
{
if(strncmp(freePutXml + strlen("<enabled>"), "true", strlen("true")))
{
}
else if(strncmp(freePutXml + strlen("<enabled>"), "false", strlen("false")))
{
}
freePutXml1 = strstr(freePutXml, "</enabled>") + strlen("</enabled>");
}
else
{
printf("Invalid XML Content - enabled error");
semGive(globalMSem);
goto PUTExit;
}
printf("3333333333333333333333333333333 WEBS_PUT_REQUEST\n");
freePutXml = strstr(freePutXml1, "<sensitivityLevel>");
if(freePutXml && strstr(freePutXml, "</sensitivityLevel>"))
{
sLevel = atoi(freePutXml + strlen("<sensitivityLevel>"));
freePutXml1 = strstr(freePutXml, "</sensitivityLevel>") + strlen("</sensitivityLevel>");
if(id == 1)
{
pDevCfgParam->thmlvibeParam.bySensitivity = sLevel;
sc_vibe_set_config(sLevel);
}
}
else
{
printf("Invalid XML Content - sensitivityLevel error");
semGive(globalMSem);
goto PUTExit;
}
printf("4444444444444444444444444444 WEBS_PUT_REQUEST\n");
#if 1
freePutXml = strstr(freePutXml1, "<daySensitivityLevel>");
if(freePutXml && strstr(freePutXml, "</daySensitivityLevel>"))
{
daySLevel = atoi(freePutXml + strlen("<daySensitivityLevel>"));
freePutXml1 = strstr(freePutXml, "</daySensitivityLevel>") + strlen("</daySensitivityLevel>");
}
else
{
printf("Invalid XML Content - daySensitivityLevel error");
semGive(globalMSem);
goto PUTExit;
}
freePutXml = strstr(freePutXml1, "<nightSensitivityLevel>");
if(freePutXml && strstr(freePutXml, "</nightSensitivityLevel>"))
{
nightSLevel = atoi(freePutXml + strlen("<nightSensitivityLevel>"));
freePutXml1 = strstr(freePutXml, "</nightSensitivityLevel>") + strlen("</nightSensitivityLevel>");
}
else
{
printf("Invalid XML Content - nightSensitivityLevel error");
semGive(globalMSem);
goto PUTExit;
}
freePutXml = strstr(freePutXml1, "<RegionCoordinatesList>");
if(freePutXml && strstr(freePutXml, "</RegionCoordinatesList>"))
{
int num = 0;
while(1)
{
freePutXml = strstr(freePutXml1, "<RegionCoordinates>");
if(freePutXml && strstr(freePutXml, "</RegionCoordinates>"))
{
freePutXml = strstr(freePutXml1, "<positionX>");
if(freePutXml && strstr(freePutXml1, "</positionX>"))
{
x = atoi(freePutXml + strlen("<positionX>"));
}
else
{
printf("Invalid XML Content - positionX error");
semGive(globalMSem);
goto PUTExit;
}
freePutXml = strstr(freePutXml1, "<positionY>");
if(freePutXml && strstr(freePutXml1, "</positionY>"))
{
y = atoi(freePutXml + strlen("<positionY>"));
}
else
{
printf("Invalid XML Content - positionY error");
semGive(globalMSem);
goto PUTExit;
}
pDevCfgParam->thmlvibeParam.byviberules[n_id].astPoints[num].f32X = x*1.0f/1000;
pDevCfgParam->thmlvibeParam.byviberules[n_id].astPoints[num].f32Y = (1000 - y)*1.0f/1000;
num++;
freePutXml1 = strstr(freePutXml, "</RegionCoordinates>") + strlen("</RegionCoordinates>");
if(num == 4)
{
break;
}
}
else
{
break;
}
}
if(((int)(pDevCfgParam->thmlvibeParam.byviberules[n_id].astPoints[1].f32Y * 1000) - ((int)(pDevCfgParam->thmlvibeParam.byviberules[n_id].astPoints[3].f32Y * 1000)) > 10)
&& ((int)(pDevCfgParam->thmlvibeParam.byviberules[n_id].astPoints[1].f32X * 1000) - ((int)(pDevCfgParam->thmlvibeParam.byviberules[n_id].astPoints[3].f32X * 1000)) > 10))
{
pDevCfgParam->thmlvibeParam.byviberules[n_id].u8PointNum = num;
if(id <= 4)
{
pDevCfgParam->thmlvibeParam.byviberules[n_id].u8AlarmType = 0x03;
}
else
{
pDevCfgParam->thmlvibeParam.byviberules[n_id].u8AlarmType = 0x04;
}
}
pDevCfgParam->thmlvibeParam.byviberules[n_id].u8Time = id;
n_id++;
}
else
{
printf("Invalid XML Content - RegionCoordinatesList error");
semGive(globalMSem);
goto PUTExit;
}
#endif
}
else
{
break;
}
}
#if 0
if(n_id==0)
{
pDevCfgParam->thmlvibeParam.u8RuleNum = 1;
pDevCfgParam->thmlvibeParam.byviberules[0].u8AlarmType = 0x01;
}
else if(n_id>0)
{
pDevCfgParam->thmlvibeParam.u8RuleNum = n_id;
}
#endif
}
else
{
printf("Invalid XML Content - MotionDetectionRegionList error");
semGive(globalMSem);
goto PUTExit;
}
printf("111111111111111111111111 WEBS_PUT_REQUEST\n");
if(enable)
{
printf("99999999999999999 WEBS_PUT_REQUEST\n");
pDevCfgParam->thmlvibeParam.byEnable = 1;
}
else
{
printf("1111111111111111 999999999999999 WEBS_PUT_REQUEST\n");
memset(&pDevCfgParam->thmlvibeParam, 0, sizeof(THMLVIBE_INFO_S));
}
semGive(globalMSem);
writeDevParam(pDevCfgParam);
sprintf(returnInfo.reqURL, "/ISAPI/System/Video/inputs/channels/%d/motionDetectionExt",videoChanID);
isapisuccessResp(returnXml);
send(socket, returnXml, strlen(returnXml), 0);
}