Skip to content

Commit

Permalink
[sensorfw] make hybris adaptor work better with suspend and resume modes
Browse files Browse the repository at this point in the history
as used with mce.

bump version to 0.7.3.23
  • Loading branch information
Lorn Potter committed Oct 10, 2013
1 parent b117650 commit f248480
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 26 deletions.
58 changes: 40 additions & 18 deletions core/hybrisadaptor.cpp
Expand Up @@ -130,7 +130,6 @@ void HybrisManager::init()
for (int i = 0 ; i < sensorsCount ; i++) {
sensorMap.insert(sensorList[i].type, i);
}
qDebug() << Q_FUNC_INFO;
}

int HybrisManager::handleForType(int sensorType)
Expand Down Expand Up @@ -163,10 +162,9 @@ int HybrisManager::resolution(int sensorType)

bool HybrisManager::setDelay(int sensorHandle, int interval)
{
qDebug() << Q_FUNC_INFO;
int result = device->setDelay(device, sensorHandle, interval);
if (result < 0) {
qDebug() << "setDelay() failed" << strerror(-result);
sensordLogW() << "setDelay() failed" << strerror(-result);
return false;
}
return true;
Expand All @@ -178,7 +176,7 @@ void HybrisManager::startReader(HybrisAdaptor *adaptor)
if (registeredAdaptors.values().contains(adaptor)) {
int error = device->activate(device, adaptor->sensorHandle, 1);
if (error != 0) {
qDebug() <<Q_FUNC_INFO<< "failed for"<< strerror(-error);
sensordLogW() <<Q_FUNC_INFO<< "failed for"<< strerror(-error);
}
if (!adaptorReader.isRunning())
adaptorReader.startReader();
Expand All @@ -199,8 +197,36 @@ void HybrisManager::stopReader(HybrisAdaptor *adaptor)
adaptorReader.stopReader();
int error = device->activate(device, adaptor->sensorHandle, 0);
if (error != 0) {
qDebug() <<Q_FUNC_INFO<< "failed for"<< strerror(-error);
sensordLogW() <<Q_FUNC_INFO<< "failed for"<< strerror(-error);
}
}
}

bool HybrisManager::resumeReader(HybrisAdaptor *adaptor)
{
sensordLogD() << Q_FUNC_INFO << adaptor->id() << adaptor->deviceStandbyOverride();
if (!adaptor->deviceStandbyOverride()) {
setDelay(adaptor->sensorHandle, adaptor->interval() * 1000000);
} else {
int error = device->activate(device, adaptor->sensorHandle, 1);
if (error != 0) {
sensordLogW() <<Q_FUNC_INFO<< "failed for"<< strerror(-error);
}
}
return true;
}

void HybrisManager::standbyReader(HybrisAdaptor *adaptor)
{
sensordLogD() << Q_FUNC_INFO << adaptor->id() << adaptor->deviceStandbyOverride();
if (!adaptor->deviceStandbyOverride()) {
setDelay(adaptor->sensorHandle, 1 * 1000000);
} else {
int error = device->activate(device, adaptor->sensorHandle, 0);
if (error != 0) {
sensordLogW() <<Q_FUNC_INFO<< "failed for"<< strerror(-error);
}

}
}

Expand Down Expand Up @@ -251,10 +277,10 @@ void HybrisManager::registerAdaptor(HybrisAdaptor *adaptor)
//////////////////////////////////
HybrisAdaptor::HybrisAdaptor(const QString& id, int type)
: DeviceAdaptor(id),
inStandbyMode_(0),
running_(0),
sensorType(type),
cachedInterval(50)
cachedInterval(50),
inStandbyMode_(0),
running_(0)
{
if (!HybrisAdaptor_sensorTypes().values().contains(sensorType)) {
qDebug() << Q_FUNC_INFO <<"no such sensor" << id;
Expand Down Expand Up @@ -376,21 +402,17 @@ bool HybrisAdaptor::standby()
sensordLogD() << "Adaptor '" << id() << "' not going to standby: already in standby";
return false;
}
if (deviceStandbyOverride()) {
sensordLogD() << "Adaptor '" << id() << "' not going to standby: overriden";
return false;
}
inStandbyMode_ = true;

if (!isRunning()) {
sensordLogD() << "Adaptor '" << id() << "' not going to standby: not running";
return false;
}

inStandbyMode_ = true;
sensordLogD() << "Adaptor '" << id() << "' going to standby";
stopReaderThread();
hybrisManager()->standbyReader(this);

running_ = false;
running_ = !deviceStandbyOverride();
return true;
}

Expand All @@ -414,7 +436,7 @@ bool HybrisAdaptor::resume()

sensordLogD() << "Adaptor '" << id() << "' resuming from standby";

if (!startReaderThread()) {
if (!hybrisManager()->resumeReader(this)) {
sensordLogW() << "Adaptor '" << id() << "' failed to resume from standby!";
return false;
}
Expand All @@ -428,7 +450,7 @@ unsigned int HybrisAdaptor::interval() const
return cachedInterval;
}

bool HybrisAdaptor::setInterval(const unsigned int value, const int sessionId)
bool HybrisAdaptor::setInterval(const unsigned int value, const int /*sessionId*/)
{ // 1000000
cachedInterval = value;
bool ok;
Expand Down Expand Up @@ -507,7 +529,7 @@ void HybrisAdaptorReader::startReader()

void HybrisAdaptorReader::run()
{
int err;
int err = 0;
static const size_t numEvents = 16;
sensors_event_t buffer[numEvents];

Expand Down
3 changes: 3 additions & 0 deletions core/hybrisadaptor.h
Expand Up @@ -72,6 +72,9 @@ class HybrisManager : public QObject
void startReader(HybrisAdaptor *adaptor);
void stopReader(HybrisAdaptor *adaptor);

bool resumeReader(HybrisAdaptor *adaptor);
void standbyReader(HybrisAdaptor *adaptor);

bool openSensors();
bool closeSensors();

Expand Down
2 changes: 1 addition & 1 deletion rpm/sensorfw-qt5-hybris.spec
@@ -1,6 +1,6 @@
Name: hybris-libsensorfw-qt5
Summary: Sensor Framework Qt5
Version: 0.7.3.22
Version: 0.7.3.23
Release: 0
Group: System/Sensor Framework
License: LGPLv2+
Expand Down
5 changes: 3 additions & 2 deletions rpm/sensorfw-qt5.spec
Expand Up @@ -9,7 +9,7 @@ Name: sensorfw-qt5
# << macros

Summary: Sensor Framework Qt5
Version: 0.7.3.22
Version: 0.7.3.23
Release: 0
Group: System/Sensor Framework
License: LGPLv2+
Expand Down Expand Up @@ -97,7 +97,8 @@ export LD_RUN_PATH=/usr/lib/sensord/
export QT_SELECT=5
# << build pre

%qmake5
%qmake5 \
CONFIG+=mce

make %{?_smp_mflags}

Expand Down
6 changes: 3 additions & 3 deletions rpm/sensorfw-qt5.yaml
@@ -1,6 +1,6 @@
Name: sensorfw-qt5
Summary: Sensor Framework Qt5
Version: 0.7.3.22
Version: 0.7.3.23
Release: 0
Group: "System/Sensor Framework"
License: LGPLv2+
Expand Down Expand Up @@ -35,8 +35,8 @@ Configure: none
Builder: qmake5
UseAsNeeded: no

#QMakeOptions:
# - "CONFIG+=mce"
QMakeOptions:
- "CONFIG+=mce"

SubPackages:
- Name: devel
Expand Down
2 changes: 1 addition & 1 deletion rpm/sensorfw.spec
Expand Up @@ -9,7 +9,7 @@ Name: sensorfw
# << macros

Summary: Sensor Framework
Version: 0.7.3.22
Version: 0.7.3.23
Release: 0
Group: System/Sensor Framework
License: LGPLv2+
Expand Down
2 changes: 1 addition & 1 deletion rpm/sensorfw.yaml
@@ -1,6 +1,6 @@
Name: sensorfw
Summary: Sensor Framework
Version: 0.7.3.22
Version: 0.7.3.23
Release: 0
Group: "System/Sensor Framework"
License: LGPLv2+
Expand Down

0 comments on commit f248480

Please sign in to comment.