Skip to content

Commit

Permalink
Merge pull request #70 from lpotter/errors
Browse files Browse the repository at this point in the history
[sensorfw] Contributes to MER#1001. send errors to clients.
  • Loading branch information
lpotter committed Jul 3, 2015
2 parents 4ad3b40 + c3b310c commit b11a5f2
Show file tree
Hide file tree
Showing 14 changed files with 157 additions and 98 deletions.
12 changes: 8 additions & 4 deletions adaptors/hybrisproximityadaptor/hybrisproximityadaptor.cpp
Expand Up @@ -33,15 +33,19 @@ HybrisProximityAdaptor::HybrisProximityAdaptor(const QString& id) :
HybrisAdaptor(id,SENSOR_TYPE_PROXIMITY),
lastNearValue(true)
{
buffer = new DeviceAdaptorRingBuffer<ProximityData>(1);
setAdaptedSensor("proximity", "Internal proximity coordinates", buffer);
if (isValid()) {
buffer = new DeviceAdaptorRingBuffer<ProximityData>(1);
setAdaptedSensor("proximity", "Internal proximity coordinates", buffer);

setDescription("Hybris proximity");
setDescription("Hybris proximity");
}
}

HybrisProximityAdaptor::~HybrisProximityAdaptor()
{
delete buffer;
if (isValid()) {
delete buffer;
}
}

bool HybrisProximityAdaptor::startSensor()
Expand Down
15 changes: 8 additions & 7 deletions core/hybrisadaptor.cpp
Expand Up @@ -188,10 +188,11 @@ bool HybrisManager::setDelay(int sensorHandle, int interval)
void HybrisManager::startReader(HybrisAdaptor *adaptor)
{
if (registeredAdaptors.values().contains(adaptor)) {
sensordLogD() << "activating " << adaptor->name();
sensordLogD() << "activating " << adaptor->name() << adaptor->sensorHandle;
int error = device->activate(device, adaptor->sensorHandle, 1);
if (error != 0) {
sensordLogW() <<Q_FUNC_INFO<< "failed for"<< strerror(-error);
adaptor->setValid(false);
}
if (!adaptorReader.isRunning())
adaptorReader.startReader();
Expand Down Expand Up @@ -315,7 +316,7 @@ void HybrisManager::processSample(const sensors_event_t& data)

void HybrisManager::registerAdaptor(HybrisAdaptor *adaptor)
{
if (!registeredAdaptors.values().contains(adaptor)) {
if (!registeredAdaptors.values().contains(adaptor) && adaptor->isValid()) {
registeredAdaptors.insertMulti(adaptor->sensorType, adaptor);
}
}
Expand All @@ -328,8 +329,10 @@ HybrisAdaptor::HybrisAdaptor(const QString& id, int type)
inStandbyMode_(false),
running_(false)
{
if (!HybrisAdaptor_sensorTypes().values().contains(sensorType)) {
sensorHandle = hybrisManager()->handleForType(sensorType);
if (sensorHandle == -1) {
qDebug() << Q_FUNC_INFO <<"no such sensor" << id;
setValid(false);
return;
}

Expand All @@ -345,10 +348,6 @@ HybrisAdaptor::~HybrisAdaptor()

void HybrisAdaptor::init()
{
sensorHandle = hybrisManager()->handleForType(sensorType);
if (sensorHandle == -1) {
setValid(false);
}
maxRange = hybrisManager()->maxRange(sensorType);
minDelay = hybrisManager()->minDelay(sensorType);
if (minDelay > 1000)
Expand All @@ -364,6 +363,8 @@ bool HybrisAdaptor::addSensorType(int type)

bool HybrisAdaptor::startAdaptor()
{
if (!isValid())
return false;
return hybrisManager()->openSensors();
}

Expand Down
12 changes: 9 additions & 3 deletions core/sensormanager.cpp
Expand Up @@ -268,6 +268,8 @@ AbstractSensorChannel* SensorManager::addSensor(const QString& id)
{
sensordLogC() << QString("%1 instantiation failed").arg(cleanId);
delete sensorChannel;
removeSensor(getCleanId(id));
sensorFactoryMap_.remove(id);
return NULL;
}

Expand All @@ -291,6 +293,7 @@ void SensorManager::removeSensor(const QString& id)
bus().unregisterObject(OBJECT_PATH + "/" + id);
delete entryIt.value().sensor_;
entryIt.value().sensor_ = 0;
sensorInstanceMap_.remove(id);
}

bool SensorManager::loadPlugin(const QString& name)
Expand Down Expand Up @@ -498,11 +501,14 @@ DeviceAdaptor* SensorManager::requestDeviceAdaptor(const QString& id)
{
da = deviceAdaptorFactoryMap_[type](id);
Q_ASSERT( da );
da->init();
bool ok = da->isValid();
if (ok) {
da->init();

ParameterParser::applyPropertyMap(da, entryIt.value().propertyMap_);
ParameterParser::applyPropertyMap(da, entryIt.value().propertyMap_);

bool ok = da->startAdaptor();
ok = da->startAdaptor();
}
if (ok)
{
entryIt.value().adaptor_ = da;
Expand Down
2 changes: 1 addition & 1 deletion core/sensormanager_a.cpp
Expand Up @@ -36,7 +36,7 @@
SensorManagerAdaptor::SensorManagerAdaptor(QObject *parent)
: QDBusAbstractAdaptor(parent)
{
setAutoRelaySignals(false); //disabling signals since no public client API supports the use of these
setAutoRelaySignals(true);//be sure to send error signals on
}

int SensorManagerAdaptor::errorCodeInt() const
Expand Down
2 changes: 1 addition & 1 deletion qt-api/sensormanager_i.h
Expand Up @@ -43,7 +43,7 @@ class LocalSensorManagerInterface : public QDBusAbstractInterface
Q_DISABLE_COPY(LocalSensorManagerInterface)
Q_PROPERTY(SensorManagerError errorCode READ errorCode)
Q_PROPERTY(QString errorString READ errorString)
Q_PROPERTY(int errorCodeInt READ errorCodeInt)
Q_PROPERTY(int errorCodeInt READ errorCodeInt NOTIFY errorSignal)

/**
* Get error code integer.
Expand Down
21 changes: 13 additions & 8 deletions sensors/accelerometersensor/accelerometersensor.cpp
Expand Up @@ -39,7 +39,10 @@ AccelerometerSensorChannel::AccelerometerSensorChannel(const QString& id) :
SensorManager& sm = SensorManager::instance();

accelerometerChain_ = sm.requestChain("accelerometerchain");
Q_ASSERT( accelerometerChain_ );
if (!accelerometerChain_) {
setValid(false);
return;
}
setValid(accelerometerChain_->isValid());

accelerometerReader_ = new BufferReader<AccelerationData>(1);
Expand Down Expand Up @@ -71,16 +74,18 @@ AccelerometerSensorChannel::AccelerometerSensorChannel(const QString& id) :

AccelerometerSensorChannel::~AccelerometerSensorChannel()
{
SensorManager& sm = SensorManager::instance();
if (isValid()) {
SensorManager& sm = SensorManager::instance();

disconnectFromSource(accelerometerChain_, "accelerometer", accelerometerReader_);
disconnectFromSource(accelerometerChain_, "accelerometer", accelerometerReader_);

sm.releaseChain("accelerometerchain");
sm.releaseChain("accelerometerchain");

delete accelerometerReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
delete accelerometerReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
}
}

bool AccelerometerSensorChannel::start()
Expand Down
21 changes: 13 additions & 8 deletions sensors/alssensor/alssensor.cpp
Expand Up @@ -47,7 +47,10 @@ ALSSensorChannel::ALSSensorChannel(const QString& id) :
SensorManager& sm = SensorManager::instance();

alsAdaptor_ = sm.requestDeviceAdaptor("alsadaptor");
Q_ASSERT( alsAdaptor_ );
if (!alsAdaptor_) {
setValid(false);
return;
}

alsReader_ = new BufferReader<TimedUnsigned>(1);

Expand Down Expand Up @@ -93,16 +96,18 @@ ALSSensorChannel::ALSSensorChannel(const QString& id) :

ALSSensorChannel::~ALSSensorChannel()
{
SensorManager& sm = SensorManager::instance();
if (isValid()) {
SensorManager& sm = SensorManager::instance();

disconnectFromSource(alsAdaptor_, "als", alsReader_);
disconnectFromSource(alsAdaptor_, "als", alsReader_);

sm.releaseDeviceAdaptor("alsadaptor");
sm.releaseDeviceAdaptor("alsadaptor");

delete alsReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
delete alsReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
}
}

bool ALSSensorChannel::start()
Expand Down
21 changes: 13 additions & 8 deletions sensors/compasssensor/compasssensor.cpp
Expand Up @@ -38,7 +38,10 @@ CompassSensorChannel::CompassSensorChannel(const QString& id) :
SensorManager& sm = SensorManager::instance();

compassChain_ = sm.requestChain("compasschain");
Q_ASSERT( compassChain_ );
if (!compassChain_) {
setValid(false);
return;
}
setValid(compassChain_->isValid());

inputReader_ = new BufferReader<CompassData>(1);
Expand Down Expand Up @@ -69,15 +72,17 @@ CompassSensorChannel::CompassSensorChannel(const QString& id) :

CompassSensorChannel::~CompassSensorChannel()
{
SensorManager& sm = SensorManager::instance();
if (isValid()) {
SensorManager& sm = SensorManager::instance();

disconnectFromSource(compassChain_, "truenorth", inputReader_);
sm.releaseChain("compasschain");
disconnectFromSource(compassChain_, "truenorth", inputReader_);
sm.releaseChain("compasschain");

delete inputReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
delete inputReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
}
}

quint16 CompassSensorChannel::declinationValue() const
Expand Down
21 changes: 13 additions & 8 deletions sensors/gyroscopesensor/gyroscopesensor.cpp
Expand Up @@ -38,7 +38,10 @@ GyroscopeSensorChannel::GyroscopeSensorChannel(const QString& id) :
SensorManager& sm = SensorManager::instance();

gyroscopeAdaptor_ = sm.requestDeviceAdaptor("gyroscopeadaptor");
Q_ASSERT( gyroscopeAdaptor_ );
if (!gyroscopeAdaptor_) {
setValid(false);
return;
}

gyroscopeReader_ = new BufferReader<TimedXyzData>(1);

Expand Down Expand Up @@ -70,16 +73,18 @@ GyroscopeSensorChannel::GyroscopeSensorChannel(const QString& id) :

GyroscopeSensorChannel::~GyroscopeSensorChannel()
{
SensorManager& sm = SensorManager::instance();
if (isValid()) {
SensorManager& sm = SensorManager::instance();

disconnectFromSource(gyroscopeAdaptor_, "gyroscope", gyroscopeReader_);
disconnectFromSource(gyroscopeAdaptor_, "gyroscope", gyroscopeReader_);

sm.releaseDeviceAdaptor("gyroscopeadaptor");
sm.releaseDeviceAdaptor("gyroscopeadaptor");

delete gyroscopeReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
delete gyroscopeReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
}
}

bool GyroscopeSensorChannel::start()
Expand Down
23 changes: 14 additions & 9 deletions sensors/magnetometersensor/magnetometersensor.cpp
Expand Up @@ -41,7 +41,10 @@ MagnetometerSensorChannel::MagnetometerSensorChannel(const QString& id) :
SensorManager& sm = SensorManager::instance();

magChain_ = sm.requestChain("magcalibrationchain");
Q_ASSERT( magChain_ );
if (!magChain_) {
setValid(false);
return;
}
setValid(magChain_->isValid());

magnetometerReader_ = new BufferReader<CalibratedMagneticFieldData>(1);
Expand Down Expand Up @@ -110,17 +113,19 @@ MagnetometerSensorChannel::MagnetometerSensorChannel(const QString& id) :

MagnetometerSensorChannel::~MagnetometerSensorChannel()
{
SensorManager& sm = SensorManager::instance();
if (isValid()) {
SensorManager& sm = SensorManager::instance();

disconnectFromSource(magChain_, "calibratedmagnetometerdata", magnetometerReader_);
sm.releaseChain("magcalibrationchain");
disconnectFromSource(magChain_, "calibratedmagnetometerdata", magnetometerReader_);
sm.releaseChain("magcalibrationchain");

if (scaleFilter_) delete scaleFilter_;
if (scaleFilter_) delete scaleFilter_;

delete magnetometerReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
delete magnetometerReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
}
}

bool MagnetometerSensorChannel::start()
Expand Down
21 changes: 13 additions & 8 deletions sensors/orientationsensor/orientationsensor.cpp
Expand Up @@ -38,7 +38,10 @@ OrientationSensorChannel::OrientationSensorChannel(const QString& id) :
SensorManager& sm = SensorManager::instance();

orientationChain_ = sm.requestChain("orientationchain");
Q_ASSERT( orientationChain_ );
if (!orientationChain_) {
setValid(false);
return;
}
setValid(orientationChain_->isValid());

orientationReader_ = new BufferReader<PoseData>(1);
Expand Down Expand Up @@ -70,16 +73,18 @@ OrientationSensorChannel::OrientationSensorChannel(const QString& id) :

OrientationSensorChannel::~OrientationSensorChannel()
{
SensorManager& sm = SensorManager::instance();
if (isValid()) {
SensorManager& sm = SensorManager::instance();

disconnectFromSource(orientationChain_, "orientation", orientationReader_);
disconnectFromSource(orientationChain_, "orientation", orientationReader_);

sm.releaseChain("orientationchain");
sm.releaseChain("orientationchain");

delete orientationReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
delete orientationReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
}
}

bool OrientationSensorChannel::start()
Expand Down
21 changes: 13 additions & 8 deletions sensors/proximitysensor/proximitysensor.cpp
Expand Up @@ -38,7 +38,10 @@ ProximitySensorChannel::ProximitySensorChannel(const QString& id) :
SensorManager& sm = SensorManager::instance();

proximityAdaptor_ = sm.requestDeviceAdaptor("proximityadaptor");
Q_ASSERT( proximityAdaptor_ );
if (!proximityAdaptor_ ) {
setValid(false);
return;
}

proximityReader_ = new BufferReader<ProximityData>(1);

Expand Down Expand Up @@ -70,16 +73,18 @@ ProximitySensorChannel::ProximitySensorChannel(const QString& id) :

ProximitySensorChannel::~ProximitySensorChannel()
{
SensorManager& sm = SensorManager::instance();
if (isValid()) {
SensorManager& sm = SensorManager::instance();

disconnectFromSource(proximityAdaptor_, "proximity", proximityReader_);
disconnectFromSource(proximityAdaptor_, "proximity", proximityReader_);

sm.releaseDeviceAdaptor("proximityadaptor");
sm.releaseDeviceAdaptor("proximityadaptor");

delete proximityReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
delete proximityReader_;
delete outputBuffer_;
delete marshallingBin_;
delete filterBin_;
}
}

bool ProximitySensorChannel::start()
Expand Down

0 comments on commit b11a5f2

Please sign in to comment.