Skip to content

Commit 3349629

Browse files
committed
included patch for double disk mounts
included patch for razberry (thanks to Michael)
1 parent 433bd23 commit 3349629

File tree

3 files changed

+23
-11
lines changed

3 files changed

+23
-11
lines changed

hardware/HardwareMonitor.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,7 @@ void CHardwareMonitor::RunWMIQuery(const char* qTable,const char* qType)
689689

690690
//Disk Usage
691691
std::map<std::string, _tDUsageStruct> _disks;
692+
std::map<std::string, std::string> _dmounts_;
692693
std::vector<std::string> _rlines=ExecuteCommandAndReturn("df");
693694
std::vector<std::string>::const_iterator ittDF;
694695
for (ittDF=_rlines.begin(); ittDF!=_rlines.end(); ++ittDF)
@@ -700,6 +701,14 @@ void CHardwareMonitor::RunWMIQuery(const char* qTable,const char* qType)
700701
int ret=sscanf((*ittDF).c_str(), "%s\t%ld\t%ld\t%ld\t%s\t%s\n", dname, &numblock, &usedblocks, &availblocks, suse, smountpoint);
701702
if (ret==6)
702703
{
704+
std::map<std::string, std::string>::iterator it = _dmounts_.find(dname);
705+
if (it != _dmounts_.end())
706+
{
707+
if (it->second.length() < strlen(smountpoint))
708+
{
709+
continue;
710+
}
711+
}
703712
if (strstr(dname,"/dev")!=NULL)
704713
{
705714
_tDUsageStruct dusage;
@@ -708,6 +717,7 @@ void CHardwareMonitor::RunWMIQuery(const char* qTable,const char* qType)
708717
dusage.AvailBlocks=availblocks;
709718
dusage.MountPoint=smountpoint;
710719
_disks[dname]=dusage;
720+
_dmounts_[dname]=smountpoint;
711721
}
712722
}
713723
}

hardware/Razberry.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,8 @@ void CRazberry::parseDevices(const Json::Value &devroot)
222222
const std::string sID=ittInstance.key().asString();
223223
_device.instanceID=atoi(sID.c_str());
224224
_device.indexID=0;
225-
if ((_device.instanceID==0)&&(haveMultipleInstance))
226-
continue;// We skip instance 0 if there are more, since it should be mapped to other instances or their superposition
225+
// if ((_device.instanceID==0)&&(haveMultipleInstance))
226+
// continue;// We skip instance 0 if there are more, since it should be mapped to other instances or their superposition
227227

228228
const Json::Value instance=(*ittInstance);
229229

@@ -519,7 +519,7 @@ void CRazberry::UpdateDevice(const std::string &path, const Json::Value &obj)
519519
{
520520
int devID=atoi(results[1].c_str());
521521
int scaleID=atoi(results[7].c_str());
522-
pDevice=FindDeviceByScale(devID,scaleID);
522+
pDevice=FindDeviceByScale(devID,scaleID,cmdID);
523523
}
524524
}
525525
}
@@ -537,7 +537,7 @@ void CRazberry::UpdateDevice(const std::string &path, const Json::Value &obj)
537537
{
538538
int devID=atoi(results[1].c_str());
539539
int instanceID=atoi(results[7].c_str());
540-
pDevice=FindDeviceInstance(devID,instanceID);
540+
pDevice=FindDeviceInstance(devID,instanceID,cmdID);
541541
}
542542
}
543543
}
@@ -817,31 +817,33 @@ void CRazberry::UpdateDevice(const std::string &path, const Json::Value &obj)
817817
pDevice->sequence_number+=1;
818818
if (pDevice->sequence_number==0)
819819
pDevice->sequence_number=1;
820-
SendDevice2Domoticz(pDevice);
820+
SendDevice2Domoticz(pDevice);
821821
}
822822

823-
ZWaveBase::_tZWaveDevice* CRazberry::FindDeviceByScale(const int nodeID, const int scaleID)
823+
ZWaveBase::_tZWaveDevice* CRazberry::FindDeviceByScale(const int nodeID, const int scaleID, const int cmdID)
824824
{
825825
std::map<std::string,_tZWaveDevice>::iterator itt;
826826
for (itt=m_devices.begin(); itt!=m_devices.end(); ++itt)
827827
{
828828
if (
829829
(itt->second.nodeID==nodeID)&&
830-
(itt->second.scaleID==scaleID)
830+
(itt->second.scaleID==scaleID)&&
831+
(itt->second.commandClassID==cmdID)
831832
)
832833
return &itt->second;
833834
}
834835
return NULL;
835836
}
836837

837-
ZWaveBase::_tZWaveDevice* CRazberry::FindDeviceInstance(const int nodeID, const int instanceID)
838+
ZWaveBase::_tZWaveDevice* CRazberry::FindDeviceInstance(const int nodeID, const int instanceID, const int cmdID)
838839
{
839840
std::map<std::string,_tZWaveDevice>::iterator itt;
840841
for (itt=m_devices.begin(); itt!=m_devices.end(); ++itt)
841842
{
842843
if (
843844
(itt->second.nodeID==nodeID)&&
844-
(itt->second.instanceID==instanceID)
845+
(itt->second.instanceID==instanceID)&&
846+
(itt->second.commandClassID==cmdID)
845847
)
846848
return &itt->second;
847849
}

hardware/Razberry.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ class CRazberry : public ZWaveBase
2323
void parseDevices(const Json::Value &devroot);
2424
void UpdateDevice(const std::string &path, const Json::Value &obj);
2525

26-
_tZWaveDevice* FindDeviceByScale(const int nodeID, const int scaleID);
27-
_tZWaveDevice* FindDeviceInstance(const int nodeID, const int instanceID);
26+
_tZWaveDevice* FindDeviceByScale(const int nodeID, const int scaleID, const int cmdID);
27+
_tZWaveDevice* FindDeviceInstance(const int nodeID, const int instanceID, const int cmdID);
2828

2929
bool SwitchLight(const int nodeID, const int instanceID, const int commandClass, const int value);
3030
bool SwitchColor(const int nodeID, const int instanceID, const int commandClass, const std::string &ColorStr);

0 commit comments

Comments
 (0)