|
@@ -342,54 +342,54 @@ void getSensorInfo(Webs *wp){
|
|
|
sprintf(minReading, "%.3f", pSensorBuff->min_reading);
|
|
|
|
|
|
cJSON_AddItemToArray(pJsonArry,pJsonsub=cJSON_CreateObject()); /* 给创建的数组增加对对象*/
|
|
|
- cJSON_AddNumberToObject(pJsonsub, "Num", pSensorBuff->sensor_num); //sensorNum -> Num
|
|
|
- cJSON_AddStringToObject(pJsonsub, "Nam", pSensorBuff->sensor_name); //sensorName -> Nam
|
|
|
- cJSON_AddStringToObject(pJsonsub, "rad", reading); //reading -> rad
|
|
|
- cJSON_AddStringToObject(pJsonsub, "lnr", lownr); //lownr -> lnr
|
|
|
- cJSON_AddStringToObject(pJsonsub, "lct", lowct); //lowct -> lct
|
|
|
- cJSON_AddStringToObject(pJsonsub, "lnc", lownc); //lownc -> lnc
|
|
|
- cJSON_AddStringToObject(pJsonsub, "hnc", highnc); //highnc -> hnc
|
|
|
- cJSON_AddStringToObject(pJsonsub, "hct", highct); //highct -> hct
|
|
|
- cJSON_AddStringToObject(pJsonsub, "hnr", highnr); //highnr -> hnr
|
|
|
- cJSON_AddStringToObject(pJsonsub, "max", maxReading); //maxReading -> max
|
|
|
- cJSON_AddStringToObject(pJsonsub, "min", minReading); //minReading -> min
|
|
|
-
|
|
|
- // cJSON_AddNumberToObject(pJsonsub, "sensorNum", pSensorBuff->sensor_num);
|
|
|
- // cJSON_AddStringToObject(pJsonsub, "sensorName", pSensorBuff->sensor_name);
|
|
|
- // cJSON_AddStringToObject(pJsonsub, "reading", reading); /* 给对象增加内容 */
|
|
|
- // cJSON_AddStringToObject(pJsonsub, "lownr", lownr);
|
|
|
- // cJSON_AddStringToObject(pJsonsub, "lowct", lowct);
|
|
|
- // cJSON_AddStringToObject(pJsonsub, "lownc", lownc);
|
|
|
- // cJSON_AddStringToObject(pJsonsub, "highnc", highnc);
|
|
|
- // cJSON_AddStringToObject(pJsonsub, "highct", highct);
|
|
|
- // cJSON_AddStringToObject(pJsonsub, "highnr", highnr);
|
|
|
- // cJSON_AddStringToObject(pJsonsub, "maxReading", maxReading);
|
|
|
- // cJSON_AddStringToObject(pJsonsub, "minReading", minReading);
|
|
|
+ // cJSON_AddNumberToObject(pJsonsub, "Num", pSensorBuff->sensor_num); //sensorNum -> Num
|
|
|
+ // cJSON_AddStringToObject(pJsonsub, "Nam", pSensorBuff->sensor_name); //sensorName -> Nam
|
|
|
+ // cJSON_AddStringToObject(pJsonsub, "rad", reading); //reading -> rad
|
|
|
+ // cJSON_AddStringToObject(pJsonsub, "lnr", lownr); //lownr -> lnr
|
|
|
+ // cJSON_AddStringToObject(pJsonsub, "lct", lowct); //lowct -> lct
|
|
|
+ // cJSON_AddStringToObject(pJsonsub, "lnc", lownc); //lownc -> lnc
|
|
|
+ // cJSON_AddStringToObject(pJsonsub, "hnc", highnc); //highnc -> hnc
|
|
|
+ // cJSON_AddStringToObject(pJsonsub, "hct", highct); //highct -> hct
|
|
|
+ // cJSON_AddStringToObject(pJsonsub, "hnr", highnr); //highnr -> hnr
|
|
|
+ // cJSON_AddStringToObject(pJsonsub, "max", maxReading); //maxReading -> max
|
|
|
+ // cJSON_AddStringToObject(pJsonsub, "min", minReading); //minReading -> min
|
|
|
+
|
|
|
+ cJSON_AddNumberToObject(pJsonsub, "sensorNum", pSensorBuff->sensor_num);
|
|
|
+ cJSON_AddStringToObject(pJsonsub, "sensorName", pSensorBuff->sensor_name);
|
|
|
+ cJSON_AddStringToObject(pJsonsub, "reading", reading); /* 给对象增加内容 */
|
|
|
+ cJSON_AddStringToObject(pJsonsub, "lownr", lownr);
|
|
|
+ cJSON_AddStringToObject(pJsonsub, "lowct", lowct);
|
|
|
+ cJSON_AddStringToObject(pJsonsub, "lownc", lownc);
|
|
|
+ cJSON_AddStringToObject(pJsonsub, "highnc", highnc);
|
|
|
+ cJSON_AddStringToObject(pJsonsub, "highct", highct);
|
|
|
+ cJSON_AddStringToObject(pJsonsub, "highnr", highnr);
|
|
|
+ cJSON_AddStringToObject(pJsonsub, "maxReading", maxReading);
|
|
|
+ cJSON_AddStringToObject(pJsonsub, "minReading", minReading);
|
|
|
|
|
|
switch(pSensorBuff->sensor_units[1]) //sensorUinits2 //uit
|
|
|
{
|
|
|
- case 0: cJSON_AddStringToObject(pJsonsub, "uit", "unspecified"); break; //uint -> uit
|
|
|
- case 1: cJSON_AddStringToObject(pJsonsub, "uit", "degree C"); break;
|
|
|
- case 2: cJSON_AddStringToObject(pJsonsub, "uit", "degree F"); break;
|
|
|
- case 3: cJSON_AddStringToObject(pJsonsub, "uit", "degree K"); break;
|
|
|
- case 4: cJSON_AddStringToObject(pJsonsub, "uit", "Volts"); break;
|
|
|
- case 5: cJSON_AddStringToObject(pJsonsub, "uit", "Amps"); break;
|
|
|
- case 6: cJSON_AddStringToObject(pJsonsub, "uit", "Watts"); break;
|
|
|
- case 18: cJSON_AddStringToObject(pJsonsub, "uit", "RPM"); break;
|
|
|
- default: cJSON_AddStringToObject(pJsonsub, "uit", "unknown"); break;
|
|
|
+ case 0: cJSON_AddStringToObject(pJsonsub, "unit", "unspecified"); break; //uint -> uit
|
|
|
+ case 1: cJSON_AddStringToObject(pJsonsub, "unit", "degree C"); break;
|
|
|
+ case 2: cJSON_AddStringToObject(pJsonsub, "unit", "degree F"); break;
|
|
|
+ case 3: cJSON_AddStringToObject(pJsonsub, "unit", "degree K"); break;
|
|
|
+ case 4: cJSON_AddStringToObject(pJsonsub, "unit", "Volts"); break;
|
|
|
+ case 5: cJSON_AddStringToObject(pJsonsub, "unit", "Amps"); break;
|
|
|
+ case 6: cJSON_AddStringToObject(pJsonsub, "unit", "Watts"); break;
|
|
|
+ case 18: cJSON_AddStringToObject(pJsonsub, "unit", "RPM"); break;
|
|
|
+ default: cJSON_AddStringToObject(pJsonsub, "unit", "unknown"); break;
|
|
|
}
|
|
|
|
|
|
switch(pSensorBuff->sensor_state) //sta
|
|
|
{ //state -> ste ; status -> stu
|
|
|
- case 0x1: cJSON_AddStringToObject(pJsonsub, "ste", "ok"); cJSON_AddStringToObject(pJsonsub, "stu", "1"); break;
|
|
|
- case 0x2: cJSON_AddStringToObject(pJsonsub, "ste", "Upper Non-Critical"); cJSON_AddStringToObject(pJsonsub, "stu", "2"); break;
|
|
|
- case 0x4: cJSON_AddStringToObject(pJsonsub, "ste", "Upper Critical Threshold");cJSON_AddStringToObject(pJsonsub, "stu", "3"); break;
|
|
|
- case 0x8: cJSON_AddStringToObject(pJsonsub, "ste", "Lower Non-Critical");cJSON_AddStringToObject(pJsonsub, "stu", "2"); break;
|
|
|
- case 0x10: cJSON_AddStringToObject(pJsonsub, "ste", "Lower Critical");cJSON_AddStringToObject(pJsonsub, "stu", "3"); break;
|
|
|
- case 0x20: cJSON_AddStringToObject(pJsonsub, "ste", "Access failed");cJSON_AddStringToObject(pJsonsub, "stu", "3"); break;
|
|
|
- case 0x40: cJSON_AddStringToObject(pJsonsub, "ste", "Upper Non-Recoverable");cJSON_AddStringToObject(pJsonsub, "stu", "3"); break;
|
|
|
- case 0x80: cJSON_AddStringToObject(pJsonsub, "ste", "Lower Non-Recoverable");cJSON_AddStringToObject(pJsonsub, "stu", "3"); break;
|
|
|
- default: cJSON_AddNumberToObject(pJsonsub, "ste", pSensorBuff->sensor_state);cJSON_AddStringToObject(pJsonsub, "stu", "3"); break;
|
|
|
+ case 0x1: cJSON_AddStringToObject(pJsonsub, "state", "ok"); cJSON_AddStringToObject(pJsonsub, "status", "1"); break;
|
|
|
+ case 0x2: cJSON_AddStringToObject(pJsonsub, "state", "Upper Non-Critical"); cJSON_AddStringToObject(pJsonsub, "status", "2"); break;
|
|
|
+ case 0x4: cJSON_AddStringToObject(pJsonsub, "state", "Upper Critical Threshold");cJSON_AddStringToObject(pJsonsub, "status", "3"); break;
|
|
|
+ case 0x8: cJSON_AddStringToObject(pJsonsub, "state", "Lower Non-Critical");cJSON_AddStringToObject(pJsonsub, "status", "2"); break;
|
|
|
+ case 0x10: cJSON_AddStringToObject(pJsonsub, "state", "Lower Critical");cJSON_AddStringToObject(pJsonsub, "status", "3"); break;
|
|
|
+ case 0x20: cJSON_AddStringToObject(pJsonsub, "state", "Access failed");cJSON_AddStringToObject(pJsonsub, "status", "3"); break;
|
|
|
+ case 0x40: cJSON_AddStringToObject(pJsonsub, "state", "Upper Non-Recoverable");cJSON_AddStringToObject(pJsonsub, "status", "3"); break;
|
|
|
+ case 0x80: cJSON_AddStringToObject(pJsonsub, "state", "Lower Non-Recoverable");cJSON_AddStringToObject(pJsonsub, "status", "3"); break;
|
|
|
+ default: cJSON_AddNumberToObject(pJsonsub, "state", pSensorBuff->sensor_state);cJSON_AddStringToObject(pJsonsub, "status", "3"); break;
|
|
|
}
|
|
|
|
|
|
pSensorBuff++;
|
|
@@ -487,25 +487,28 @@ void getAllBladeInfo(Webs *wp){
|
|
|
//Close session
|
|
|
LIBIPMI_CloseSession(&UDSSession );
|
|
|
|
|
|
- char *pStr;
|
|
|
- cJSON * root = cJSON_CreateObject();
|
|
|
- cJSON *pJsonArry,*pJsonsub;
|
|
|
- pJsonArry=cJSON_CreateArray(); /*创建数组*/
|
|
|
- cJSON_AddItemToObject(root, "data", pJsonArry);//根节点下添加
|
|
|
- cJSON_AddStringToObject(root, "msg", "");
|
|
|
- cJSON_AddNumberToObject(root, "code", 200);
|
|
|
+ websSetStatus(wp, 200);
|
|
|
+ websWriteHeaders(wp, -1, 0);
|
|
|
+ websWriteEndHeaders(wp);
|
|
|
+ websWrite(wp, "{\"data\":[");
|
|
|
|
|
|
int i;
|
|
|
for(i=0;i<BLADE_NUMBERS;i++)
|
|
|
{
|
|
|
- cJSON_AddItemToArray(pJsonArry,pJsonsub=cJSON_CreateObject()); /* 给创建的数组增加对对象*/
|
|
|
- cJSON_AddNumberToObject(pJsonsub, "present", pBladeStatus[i].present); //0:不在位,1:在位
|
|
|
- cJSON_AddNumberToObject(pJsonsub, "status", pBladeStatus[i].healthStatus); //0:灰色, 1: 绿色 2:红色
|
|
|
- cJSON_AddNumberToObject(pJsonsub, "slot", pBladeStatus[i].slotID);
|
|
|
- cJSON_AddNumberToObject(pJsonsub, "power", pBladeStatus[i].pwrStatus);
|
|
|
- cJSON_AddStringToObject(pJsonsub, "name", pBladeStatus[i].bladeName);
|
|
|
- cJSON_AddNumberToObject(pJsonsub, "isChMC", pBladeStatus[i].isChMC);
|
|
|
-
|
|
|
+
|
|
|
+ if(i < BLADE_NUMBERS-1)
|
|
|
+ {
|
|
|
+ websWrite(wp, "{\"present\":%d,\"status\":%d,\"slot\":%d,\"power\":%d,\"name\":\"%s\",\"isChMC\":%d},",
|
|
|
+ pBladeStatus[i].present, pBladeStatus[i].healthStatus, pBladeStatus[i].slotID,
|
|
|
+ pBladeStatus[i].pwrStatus, pBladeStatus[i].bladeName, pBladeStatus[i].isChMC);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ websWrite(wp, "{\"present\":%d,\"status\":%d,\"slot\":%d,\"power\":%d,\"name\":\"%s\",\"isChMC\":%d}",
|
|
|
+ pBladeStatus[i].present, pBladeStatus[i].healthStatus, pBladeStatus[i].slotID,
|
|
|
+ pBladeStatus[i].pwrStatus, pBladeStatus[i].bladeName, pBladeStatus[i].isChMC);
|
|
|
+ }
|
|
|
+
|
|
|
//将主模块的IPMB地址改成0x20
|
|
|
if(pBladeStatus[i].isChMC)
|
|
|
{
|
|
@@ -513,26 +516,81 @@ void getAllBladeInfo(Webs *wp){
|
|
|
printf("Modify %d blade ipmb address to 0x20\n", i);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- pStr = cJSON_PrintUnformatted(root);
|
|
|
|
|
|
- websSetStatus(wp, 200);
|
|
|
- websWriteHeaders(wp, -1, 0);
|
|
|
- websWriteEndHeaders(wp);
|
|
|
- websWrite(wp, "%s", pStr);
|
|
|
+ websWrite(wp, "],\"msg\":\"\",\"code\":200}");
|
|
|
websFlush(wp, 0);
|
|
|
websDone(wp);
|
|
|
- printf("cJSON:%s\n", pStr);
|
|
|
-
|
|
|
- if(pStr)
|
|
|
- wfree(pStr);
|
|
|
- if(root)
|
|
|
- cJSON_Delete(root);
|
|
|
+
|
|
|
if(pBladeStatus)
|
|
|
wfree(pBladeStatus);
|
|
|
|
|
|
}
|
|
|
|
|
|
+// void getAllBladeInfo(Webs *wp){
|
|
|
+// uint16_t wRet = LIBIPMI_E_SUCCESS;
|
|
|
+
|
|
|
+// IPMI20_UDS_SESSION_T UDSSession;
|
|
|
+// BladeStatus_T *pBladeStatus = walloc(BLADE_NUMBERS*sizeof(BladeStatus_T));
|
|
|
+// //Create session
|
|
|
+// LIBIPMI_CreateSession(&UDSSession, DEFAULT_TIMEOUT);
|
|
|
+
|
|
|
+// wRet = LIBIPMI_HL_GetAllBladeStatus(&UDSSession, gChassisManageEn, pBladeStatus, DEFAULT_TIMEOUT);
|
|
|
+// if(wRet != 0)
|
|
|
+// {
|
|
|
+// printf("Get Blade status error!\n");
|
|
|
+// websError(wp, 404, "Get Blade status error!");
|
|
|
+// wfree(pBladeStatus);
|
|
|
+// return;
|
|
|
+// }
|
|
|
+// //Close session
|
|
|
+// LIBIPMI_CloseSession(&UDSSession );
|
|
|
+
|
|
|
+// char *pStr;
|
|
|
+// cJSON * root = cJSON_CreateObject();
|
|
|
+// cJSON *pJsonArry,*pJsonsub;
|
|
|
+// pJsonArry=cJSON_CreateArray(); /*创建数组*/
|
|
|
+// cJSON_AddItemToObject(root, "data", pJsonArry);//根节点下添加
|
|
|
+// cJSON_AddStringToObject(root, "msg", "");
|
|
|
+// cJSON_AddNumberToObject(root, "code", 200);
|
|
|
+
|
|
|
+// int i;
|
|
|
+// for(i=0;i<BLADE_NUMBERS;i++)
|
|
|
+// {
|
|
|
+// cJSON_AddItemToArray(pJsonArry,pJsonsub=cJSON_CreateObject()); /* 给创建的数组增加对对象*/
|
|
|
+// cJSON_AddNumberToObject(pJsonsub, "present", pBladeStatus[i].present); //0:不在位,1:在位
|
|
|
+// cJSON_AddNumberToObject(pJsonsub, "status", pBladeStatus[i].healthStatus); //0:灰色, 1: 绿色 2:红色
|
|
|
+// cJSON_AddNumberToObject(pJsonsub, "slot", pBladeStatus[i].slotID);
|
|
|
+// cJSON_AddNumberToObject(pJsonsub, "power", pBladeStatus[i].pwrStatus);
|
|
|
+// cJSON_AddStringToObject(pJsonsub, "name", pBladeStatus[i].bladeName);
|
|
|
+// cJSON_AddNumberToObject(pJsonsub, "isChMC", pBladeStatus[i].isChMC);
|
|
|
+
|
|
|
+// //将主模块的IPMB地址改成0x20
|
|
|
+// if(pBladeStatus[i].isChMC)
|
|
|
+// {
|
|
|
+// gIPMBAddr[i] = 0x20;
|
|
|
+// printf("Modify %d blade ipmb address to 0x20\n", i);
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+// pStr = cJSON_PrintUnformatted(root);
|
|
|
+
|
|
|
+// websSetStatus(wp, 200);
|
|
|
+// websWriteHeaders(wp, -1, 0);
|
|
|
+// websWriteEndHeaders(wp);
|
|
|
+// websWrite(wp, "%s", pStr);
|
|
|
+// websFlush(wp, 0);
|
|
|
+// websDone(wp);
|
|
|
+// printf("cJSON:%s\n", pStr);
|
|
|
+
|
|
|
+// if(pStr)
|
|
|
+// wfree(pStr);
|
|
|
+// if(root)
|
|
|
+// cJSON_Delete(root);
|
|
|
+// if(pBladeStatus)
|
|
|
+// wfree(pBladeStatus);
|
|
|
+
|
|
|
+// }
|
|
|
+
|
|
|
//废弃
|
|
|
void setBladeManage(Webs *wp){
|
|
|
char *strEnable = websGetVar(wp, "enable", NULL);
|