|
@@ -14,6 +14,7 @@
|
|
|
#include "libipmi_sdr.h"
|
|
|
#include "libipmi_sensor.h"
|
|
|
#include "libipmi_storlead_OEM.h"
|
|
|
+#include "com_IPMI_Storlead.h"
|
|
|
|
|
|
|
|
|
OemWebFlags_T g_OemWebFlags;
|
|
@@ -27,152 +28,152 @@ OemWebFlags_T g_OemWebFlags;
|
|
|
**/
|
|
|
uint16_t IPMICMD_GetIPMCSensorInfo(IPMI20_SESSION_T *pSession, AMIGetSensorInfoRes_T *pGetIPMCSensorInfoRes,int timeout)
|
|
|
{
|
|
|
- uint16_t wRet = 0;
|
|
|
+ uint16_t wRet = 0;
|
|
|
|
|
|
- uint16_t reservation_id;
|
|
|
- uint16_t record_id = 0;
|
|
|
- uint32_t dwRecordLen;
|
|
|
- SenInfo_T SensorInfo;
|
|
|
+// uint16_t reservation_id;
|
|
|
+// uint16_t record_id = 0;
|
|
|
+// uint32_t dwRecordLen;
|
|
|
+// SenInfo_T SensorInfo;
|
|
|
|
|
|
- uint8_t SDRData[100] = {0};
|
|
|
- uint8_t NextRecIDLS = 0;
|
|
|
- uint8_t NextRecIDMS = 0;
|
|
|
- uint8_t cnt = 0;
|
|
|
- uint8_t timeoutTick = 0;
|
|
|
- wRet = IPMICMD_ReserveSDRRepository(pSession, (ReserveSDRRepositoryRes_T*)SDRData, timeout);
|
|
|
- if(wRet != 0)
|
|
|
- {
|
|
|
- printf("Error Reserve SDR Repository\n");
|
|
|
- return wRet;
|
|
|
- }
|
|
|
+// uint8_t SDRData[100] = {0};
|
|
|
+// uint8_t NextRecIDLS = 0;
|
|
|
+// uint8_t NextRecIDMS = 0;
|
|
|
+// uint8_t cnt = 0;
|
|
|
+// uint8_t timeoutTick = 0;
|
|
|
+// wRet = IPMICMD_ReserveSDRRepository(pSession, (ReserveSDRRepositoryRes_T*)SDRData, timeout);
|
|
|
+// if(wRet != 0)
|
|
|
+// {
|
|
|
+// printf("Error Reserve SDR Repository\n");
|
|
|
+// return wRet;
|
|
|
+// }
|
|
|
|
|
|
- reservation_id = SDRData[2]<<8 | SDRData[1];
|
|
|
+// reservation_id = SDRData[2]<<8 | SDRData[1];
|
|
|
|
|
|
- do
|
|
|
- {
|
|
|
- //Get SDR
|
|
|
- if(0 != LIBIPMI_HL_GetSDR(pSession, reservation_id, record_id, (GetSDRRes_T*)SDRData, &dwRecordLen, timeout ))
|
|
|
- {
|
|
|
- printf("---> Get SDR error! record_id = %#x\n", record_id);
|
|
|
- return -1;
|
|
|
- }
|
|
|
+// do
|
|
|
+// {
|
|
|
+// //Get SDR
|
|
|
+// if(0 != LIBIPMI_HL_GetSDR(pSession, reservation_id, record_id, (GetSDRRes_T*)SDRData, &dwRecordLen, timeout ))
|
|
|
+// {
|
|
|
+// printf("---> Get SDR error! record_id = %#x\n", record_id);
|
|
|
+// return -1;
|
|
|
+// }
|
|
|
|
|
|
- NextRecIDLS = SDRData[1];
|
|
|
- NextRecIDMS = SDRData[2];
|
|
|
- memcpy(&SensorInfo.hdr, &SDRData[3],5/*Sizeof(SDRRecHdr_T)*/);
|
|
|
- if(SensorInfo.hdr.Type == 0x01) //full sensor sdr
|
|
|
- {
|
|
|
- SensorInfo.Accuracy_MSB_Exp = SDRData[3+29-1];
|
|
|
- //SensorInfo.AssertionEventByte1 = SDRData[3+15-1];
|
|
|
- //SensorInfo.AssertionEventByte2 = SDRData[3+16-1];
|
|
|
- SensorInfo.B_LSB = SDRData[3+27-1];
|
|
|
- SensorInfo.B_MSB_Accuracy = SDRData[3+28-1];
|
|
|
- SensorInfo.DeassertionEventByte1 = SDRData[3+17-1];
|
|
|
- SensorInfo.DeassertionEventByte2 = SDRData[3+18-1];
|
|
|
- SensorInfo.EventTypeCode = SDRData[3+14-1];
|
|
|
- SensorInfo.Linearization = SDRData[3+24-1];
|
|
|
- SensorInfo.LowerCritical = SDRData[3+41-1];
|
|
|
- SensorInfo.LowerNonCritical = SDRData[3+42-1];
|
|
|
- SensorInfo.LowerNonRecoverable = SDRData[3+40-1];
|
|
|
- SensorInfo.M_LSB = SDRData[3+25-1];
|
|
|
- SensorInfo.M_MSB_Tolerance = SDRData[3+26-1];
|
|
|
- SensorInfo.MaxReading = SDRData[3+35-1];
|
|
|
- SensorInfo.MinReading = SDRData[3+36-1];
|
|
|
- SensorInfo.OwnerID = SDRData[3+6-1];
|
|
|
- SensorInfo.OwnerLUN = SDRData[3+7-1];
|
|
|
- SensorInfo.RExp_BExp = SDRData[3+30-1];
|
|
|
- SensorInfo.SensorNumber = SDRData[3+8-1];
|
|
|
- SensorInfo.SensorTypeCode = SDRData[3+13-1];
|
|
|
- SensorInfo.Settable_Readable_ThreshMask = SDRData[3+20-1]<<8 | SDRData[3+19-1];
|
|
|
- SensorInfo.Units1 = SDRData[3+21-1];
|
|
|
- SensorInfo.Units2 = SDRData[3+22-1];
|
|
|
- SensorInfo.Units3 = SDRData[3+23-1];
|
|
|
- SensorInfo.UpperCritical = SDRData[3+38-1];
|
|
|
- SensorInfo.UpperNonCritical = SDRData[3+39-1];
|
|
|
- SensorInfo.UpperNonRecoverable = SDRData[3+37-1];
|
|
|
+// NextRecIDLS = SDRData[1];
|
|
|
+// NextRecIDMS = SDRData[2];
|
|
|
+// memcpy(&SensorInfo.hdr, &SDRData[3],5/*Sizeof(SDRRecHdr_T)*/);
|
|
|
+// if(SensorInfo.hdr.Type == 0x01) //full sensor sdr
|
|
|
+// {
|
|
|
+// SensorInfo.Accuracy_MSB_Exp = SDRData[3+29-1];
|
|
|
+// //SensorInfo.AssertionEventByte1 = SDRData[3+15-1];
|
|
|
+// //SensorInfo.AssertionEventByte2 = SDRData[3+16-1];
|
|
|
+// SensorInfo.B_LSB = SDRData[3+27-1];
|
|
|
+// SensorInfo.B_MSB_Accuracy = SDRData[3+28-1];
|
|
|
+// SensorInfo.DeassertionEventByte1 = SDRData[3+17-1];
|
|
|
+// SensorInfo.DeassertionEventByte2 = SDRData[3+18-1];
|
|
|
+// SensorInfo.EventTypeCode = SDRData[3+14-1];
|
|
|
+// SensorInfo.Linearization = SDRData[3+24-1];
|
|
|
+// SensorInfo.LowerCritical = SDRData[3+41-1];
|
|
|
+// SensorInfo.LowerNonCritical = SDRData[3+42-1];
|
|
|
+// SensorInfo.LowerNonRecoverable = SDRData[3+40-1];
|
|
|
+// SensorInfo.M_LSB = SDRData[3+25-1];
|
|
|
+// SensorInfo.M_MSB_Tolerance = SDRData[3+26-1];
|
|
|
+// SensorInfo.MaxReading = SDRData[3+35-1];
|
|
|
+// SensorInfo.MinReading = SDRData[3+36-1];
|
|
|
+// SensorInfo.OwnerID = SDRData[3+6-1];
|
|
|
+// SensorInfo.OwnerLUN = SDRData[3+7-1];
|
|
|
+// SensorInfo.RExp_BExp = SDRData[3+30-1];
|
|
|
+// SensorInfo.SensorNumber = SDRData[3+8-1];
|
|
|
+// SensorInfo.SensorTypeCode = SDRData[3+13-1];
|
|
|
+// SensorInfo.Settable_Readable_ThreshMask = SDRData[3+20-1]<<8 | SDRData[3+19-1];
|
|
|
+// SensorInfo.Units1 = SDRData[3+21-1];
|
|
|
+// SensorInfo.Units2 = SDRData[3+22-1];
|
|
|
+// SensorInfo.Units3 = SDRData[3+23-1];
|
|
|
+// SensorInfo.UpperCritical = SDRData[3+38-1];
|
|
|
+// SensorInfo.UpperNonCritical = SDRData[3+39-1];
|
|
|
+// SensorInfo.UpperNonRecoverable = SDRData[3+37-1];
|
|
|
|
|
|
- memset(SensorInfo.SensorName, 0, 16);
|
|
|
- memcpy(SensorInfo.SensorName, &SDRData[3+49-1], SDRData[3+48-1]&0x3f);
|
|
|
+// memset(SensorInfo.SensorName, 0, 16);
|
|
|
+// memcpy(SensorInfo.SensorName, &SDRData[3+49-1], SDRData[3+48-1]&0x3f);
|
|
|
|
|
|
- //get sensor reading
|
|
|
- if(0 != IPMICMD_GetSensorReading(pSession, (GetSensorReadingReq_T *)&SensorInfo.SensorNumber,
|
|
|
- (GetSensorReadingRes_T *)SDRData, timeout))
|
|
|
- {
|
|
|
- printf("---> Get sensorReading error! sensorNum = %#x\n", SensorInfo.SensorNumber);
|
|
|
- return -1;
|
|
|
- }
|
|
|
- SensorInfo.SensorReading = SDRData[1];
|
|
|
- SensorInfo.OptionalStatus = SDRData[4];
|
|
|
- SensorInfo.Flags = SDRData[2];
|
|
|
+// //get sensor reading
|
|
|
+// if(0 != IPMICMD_GetSensorReading(pSession, (GetSensorReadingReq_T *)&SensorInfo.SensorNumber,
|
|
|
+// (GetSensorReadingRes_T *)SDRData, timeout))
|
|
|
+// {
|
|
|
+// printf("---> Get sensorReading error! sensorNum = %#x\n", SensorInfo.SensorNumber);
|
|
|
+// return -1;
|
|
|
+// }
|
|
|
+// SensorInfo.SensorReading = SDRData[1];
|
|
|
+// SensorInfo.OptionalStatus = SDRData[4];
|
|
|
+// SensorInfo.Flags = SDRData[2];
|
|
|
|
|
|
- SensorInfo.ComparisonStatus = SDRData[3];
|
|
|
- if(SensorInfo.EventTypeCode == 0x01) //threshold
|
|
|
- {
|
|
|
- //TODO: jimbo
|
|
|
- SensorInfo.AssertionEventByte1 = 0x0;
|
|
|
- SensorInfo.AssertionEventByte2 = 0x0;
|
|
|
- if((SensorInfo.Units1 & 0xc0) == 0x00) //unsigned
|
|
|
- {
|
|
|
- if((uint8_t)SensorInfo.SensorReading > (uint8_t)SensorInfo.UpperCritical)
|
|
|
- SensorInfo.AssertionEventByte2 |= 0x02;
|
|
|
- if((uint8_t)SensorInfo.SensorReading > (uint8_t)SensorInfo.UpperNonCritical)
|
|
|
- SensorInfo.AssertionEventByte1 |= 0x80;
|
|
|
- if((uint8_t)SensorInfo.SensorReading > (uint8_t)SensorInfo.UpperNonRecoverable)
|
|
|
- SensorInfo.AssertionEventByte2 |= 0x08;
|
|
|
- if((uint8_t)SensorInfo.SensorReading < (uint8_t)SensorInfo.LowerCritical)
|
|
|
- SensorInfo.AssertionEventByte1 |= 0x04;
|
|
|
- if((uint8_t)SensorInfo.SensorReading < (uint8_t)SensorInfo.LowerNonCritical)
|
|
|
- SensorInfo.AssertionEventByte1 |= 0x01;
|
|
|
- if((uint8_t)SensorInfo.SensorReading < (uint8_t)SensorInfo.LowerNonRecoverable)
|
|
|
- SensorInfo.AssertionEventByte1 |= 0x10;
|
|
|
- }
|
|
|
- else if((SensorInfo.Units1 & 0xc0) == 0x80) //2's complement
|
|
|
- {
|
|
|
- if((char)SensorInfo.SensorReading > (char)SensorInfo.UpperCritical)
|
|
|
- SensorInfo.AssertionEventByte2 |= 0x02;
|
|
|
- if((char)SensorInfo.SensorReading > (char)SensorInfo.UpperNonCritical)
|
|
|
- SensorInfo.AssertionEventByte1 |= 0x80;
|
|
|
- if((char)SensorInfo.SensorReading > (char)SensorInfo.UpperNonRecoverable)
|
|
|
- SensorInfo.AssertionEventByte2 |= 0x08;
|
|
|
- if((char)SensorInfo.SensorReading < (char)SensorInfo.LowerCritical)
|
|
|
- SensorInfo.AssertionEventByte1 |= 0x04;
|
|
|
- if((char)SensorInfo.SensorReading < (char)SensorInfo.LowerNonCritical)
|
|
|
- SensorInfo.AssertionEventByte1 |= 0x01;
|
|
|
- if((char)SensorInfo.SensorReading < (char)SensorInfo.LowerNonRecoverable)
|
|
|
- SensorInfo.AssertionEventByte1 |= 0x10;
|
|
|
- }
|
|
|
+// SensorInfo.ComparisonStatus = SDRData[3];
|
|
|
+// if(SensorInfo.EventTypeCode == 0x01) //threshold
|
|
|
+// {
|
|
|
+// //TODO: jimbo
|
|
|
+// SensorInfo.AssertionEventByte1 = 0x0;
|
|
|
+// SensorInfo.AssertionEventByte2 = 0x0;
|
|
|
+// if((SensorInfo.Units1 & 0xc0) == 0x00) //unsigned
|
|
|
+// {
|
|
|
+// if((uint8_t)SensorInfo.SensorReading > (uint8_t)SensorInfo.UpperCritical)
|
|
|
+// SensorInfo.AssertionEventByte2 |= 0x02;
|
|
|
+// if((uint8_t)SensorInfo.SensorReading > (uint8_t)SensorInfo.UpperNonCritical)
|
|
|
+// SensorInfo.AssertionEventByte1 |= 0x80;
|
|
|
+// if((uint8_t)SensorInfo.SensorReading > (uint8_t)SensorInfo.UpperNonRecoverable)
|
|
|
+// SensorInfo.AssertionEventByte2 |= 0x08;
|
|
|
+// if((uint8_t)SensorInfo.SensorReading < (uint8_t)SensorInfo.LowerCritical)
|
|
|
+// SensorInfo.AssertionEventByte1 |= 0x04;
|
|
|
+// if((uint8_t)SensorInfo.SensorReading < (uint8_t)SensorInfo.LowerNonCritical)
|
|
|
+// SensorInfo.AssertionEventByte1 |= 0x01;
|
|
|
+// if((uint8_t)SensorInfo.SensorReading < (uint8_t)SensorInfo.LowerNonRecoverable)
|
|
|
+// SensorInfo.AssertionEventByte1 |= 0x10;
|
|
|
+// }
|
|
|
+// else if((SensorInfo.Units1 & 0xc0) == 0x80) //2's complement
|
|
|
+// {
|
|
|
+// if((char)SensorInfo.SensorReading > (char)SensorInfo.UpperCritical)
|
|
|
+// SensorInfo.AssertionEventByte2 |= 0x02;
|
|
|
+// if((char)SensorInfo.SensorReading > (char)SensorInfo.UpperNonCritical)
|
|
|
+// SensorInfo.AssertionEventByte1 |= 0x80;
|
|
|
+// if((char)SensorInfo.SensorReading > (char)SensorInfo.UpperNonRecoverable)
|
|
|
+// SensorInfo.AssertionEventByte2 |= 0x08;
|
|
|
+// if((char)SensorInfo.SensorReading < (char)SensorInfo.LowerCritical)
|
|
|
+// SensorInfo.AssertionEventByte1 |= 0x04;
|
|
|
+// if((char)SensorInfo.SensorReading < (char)SensorInfo.LowerNonCritical)
|
|
|
+// SensorInfo.AssertionEventByte1 |= 0x01;
|
|
|
+// if((char)SensorInfo.SensorReading < (char)SensorInfo.LowerNonRecoverable)
|
|
|
+// SensorInfo.AssertionEventByte1 |= 0x10;
|
|
|
+// }
|
|
|
|
|
|
- }
|
|
|
+// }
|
|
|
|
|
|
|
|
|
- memcpy(((uint8_t*)pGetIPMCSensorInfoRes)+3+sizeof(SenInfo_T)*cnt, &SensorInfo, sizeof(SenInfo_T));
|
|
|
- cnt++;
|
|
|
+// memcpy(((uint8_t*)pGetIPMCSensorInfoRes)+3+sizeof(SenInfo_T)*cnt, &SensorInfo, sizeof(SenInfo_T));
|
|
|
+// cnt++;
|
|
|
|
|
|
-// printf("cnt: %d, sensorNum: %#x, sensorReading: %#x, OptionStatus = %#x, ComparisonStatus = %#x\n",
|
|
|
-// cnt, SensorInfo.SensorNumber, SensorInfo.SensorReading, SensorInfo.OptionalStatus, SensorInfo.ComparisonStatus);
|
|
|
- }
|
|
|
+// // printf("cnt: %d, sensorNum: %#x, sensorReading: %#x, OptionStatus = %#x, ComparisonStatus = %#x\n",
|
|
|
+// // cnt, SensorInfo.SensorNumber, SensorInfo.SensorReading, SensorInfo.OptionalStatus, SensorInfo.ComparisonStatus);
|
|
|
+// }
|
|
|
|
|
|
|
|
|
- record_id = NextRecIDMS<<8 | NextRecIDLS;
|
|
|
- timeoutTick++;
|
|
|
- if(timeoutTick > 64)
|
|
|
- {
|
|
|
- wRet = -1;
|
|
|
- break;
|
|
|
- }
|
|
|
- }while(record_id != 0xffff);
|
|
|
+// record_id = NextRecIDMS<<8 | NextRecIDLS;
|
|
|
+// timeoutTick++;
|
|
|
+// if(timeoutTick > 64)
|
|
|
+// {
|
|
|
+// wRet = -1;
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }while(record_id != 0xffff);
|
|
|
|
|
|
- if(wRet == 0)
|
|
|
- pGetIPMCSensorInfoRes->CompletionCode = 0;
|
|
|
- else
|
|
|
- pGetIPMCSensorInfoRes->CompletionCode = 255;
|
|
|
+// if(wRet == 0)
|
|
|
+// pGetIPMCSensorInfoRes->CompletionCode = 0;
|
|
|
+// else
|
|
|
+// pGetIPMCSensorInfoRes->CompletionCode = 255;
|
|
|
|
|
|
- pGetIPMCSensorInfoRes->Noofentries = cnt;
|
|
|
+// pGetIPMCSensorInfoRes->Noofentries = cnt;
|
|
|
|
|
|
-// printf("return pGetIPMCSensorInfoRes: ");
|
|
|
-// for(i=0;i<3+sizeof(SenInfo_T)*cnt;i++)
|
|
|
-// printf("%#2x ",((uint8_t*)pGetIPMCSensorInfoRes)[i]);
|
|
|
-// printf("\n");
|
|
|
+// // printf("return pGetIPMCSensorInfoRes: ");
|
|
|
+// // for(i=0;i<3+sizeof(SenInfo_T)*cnt;i++)
|
|
|
+// // printf("%#2x ",((uint8_t*)pGetIPMCSensorInfoRes)[i]);
|
|
|
+// // printf("\n");
|
|
|
|
|
|
return (wRet);
|
|
|
}
|
|
@@ -277,7 +278,7 @@ uint16_t LIBIPMI_HL_GetSysInfo( IPMI20_SESSION_T *pSession, SysInfo_T *pSysInfo,
|
|
|
Req[3] = (MAX_TITLE_LEN>>8)&0xff; //max title len
|
|
|
Req[4] = MAX_TITLE_LEN&0xff;
|
|
|
wRet = LIBIPMI_Send_RAW_IPMI2_0_Command(pSession,
|
|
|
- NETFNLUN_IPMI_OEM, 0x80,
|
|
|
+ NETFNLUN_IPMI_STORLEAD, CMD_GET_SYS_INFO,
|
|
|
(uint8_t*)Req, 5,
|
|
|
(uint8_t *)Res, &dwResLen,
|
|
|
timeout);
|
|
@@ -297,7 +298,7 @@ uint16_t LIBIPMI_HL_GetSysInfo( IPMI20_SESSION_T *pSession, SysInfo_T *pSysInfo,
|
|
|
Req[3] = (MAX_TEXT_LEN>>8)&0xff; //max text len
|
|
|
Req[4] = MAX_TEXT_LEN&0xff;
|
|
|
wRet = LIBIPMI_Send_RAW_IPMI2_0_Command(pSession,
|
|
|
- NETFNLUN_IPMI_OEM, 0x80,
|
|
|
+ NETFNLUN_IPMI_STORLEAD, CMD_GET_SYS_INFO,
|
|
|
(uint8_t*)Req, 5,
|
|
|
(uint8_t *)Res, &dwResLen,
|
|
|
timeout);
|
|
@@ -608,3 +609,53 @@ int LIBIPMI_HL_SetSensorHistoryEn(IPMI20_SESSION_T *pSession, uint8_t sensorNum,
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
+
|
|
|
+uint16_t IPMICMD_AMIGetSensorInfo(IPMI20_SESSION_T *pSession, AMIGetSensorInfoRes_T *pAMIGetSensorInfoRes,int timeout)
|
|
|
+{
|
|
|
+ uint16_t wRet;
|
|
|
+ uint32_t dwResLen;
|
|
|
+ uint8_t Req[20];
|
|
|
+ dwResLen = sizeof(AMIGetSensorInfoRes_T);
|
|
|
+
|
|
|
+ wRet = LIBIPMI_Send_RAW_IPMI2_0_Command(pSession, //notice!
|
|
|
+ (NETFN_STORLEAD << 2), CMD_GET_SENSOR_INFO,
|
|
|
+ Req, 0,
|
|
|
+ (uint8_t*)pAMIGetSensorInfoRes, &dwResLen,
|
|
|
+ timeout);
|
|
|
+
|
|
|
+ return (wRet);
|
|
|
+}
|
|
|
+
|
|
|
+uint16_t LIBIPMI_HL_AMIGetSensorInfo(IPMI20_SESSION_T *pSession,SenInfo_T *pSensorInfo,uint32_t *nNumSensor,int timeout)
|
|
|
+{
|
|
|
+ uint16_t wRet = 0;
|
|
|
+ AMIGetSensorInfoRes_T *pAMIGetSensorInfoRes;
|
|
|
+ uint8_t *SensorEntries;
|
|
|
+ int i;
|
|
|
+
|
|
|
+ SensorEntries = (uint8_t *)malloc(MAX_SENSOR_INFO_SIZE);
|
|
|
+ if(SensorEntries == NULL)
|
|
|
+ {
|
|
|
+ printf("Memory allocation error in LIBIPMI_HL_AMIGetSELEntires \n");
|
|
|
+ wRet = 0xFF;
|
|
|
+ return wRet;
|
|
|
+ }
|
|
|
+
|
|
|
+ memset(SensorEntries,0,MAX_SENSOR_INFO_SIZE);
|
|
|
+ pAMIGetSensorInfoRes = (AMIGetSensorInfoRes_T *)SensorEntries;
|
|
|
+ wRet = IPMICMD_AMIGetSensorInfo(pSession,(AMIGetSensorInfoRes_T *)SensorEntries,timeout);
|
|
|
+ if(wRet == LIBIPMI_E_SUCCESS)
|
|
|
+ {
|
|
|
+ *nNumSensor = pAMIGetSensorInfoRes->Noofentries;
|
|
|
+ for(i = 0; i < pAMIGetSensorInfoRes->Noofentries; i++)
|
|
|
+ {
|
|
|
+ memcpy((uint8_t *)&pSensorInfo[i],&SensorEntries[sizeof(AMIGetSensorInfoRes_T) + (i * sizeof(SenInfo_T))],sizeof(SenInfo_T) );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ printf("error getting sensor info %d\n",wRet);
|
|
|
+ }
|
|
|
+ free(SensorEntries);
|
|
|
+ return (wRet);
|
|
|
+}
|