Hi Timo & Markus,
We want to test qt mobility test application given for sensors like show_als
We have written adopter for BH1780 ALS using sysfs adopter class in meego
sensor framework(0.6.19)
Please see the code attached (based on BH1780 driver in linux kernel)
But when we run the test we are getting following log.
Have we done something wrong?
"[r...@localhost bin]# ./show_als
loaded the Generic plugin
loaded the grue plugin
Loaded the Maemo 6 sensor plugin
Request for control interface not granted...
New listen sensor "alssensor" interface created with session id 3 ...
Data rate in don't care mode (interval 0 ms) for "alssensor""
Regards,
Preetham rao
/* Ambient Light Sensor BH1780 power control */
#define ALS_BH1780_CONTROL
"/sys/devices/platform/nmk-i2c.2/i2c-2/2-0029/power_state"
#define ALS_BH1780_DATA "/sys/devices/platform/nmk-i2c.2/i2c-2/2-0029/lux"
#define ALS_BH1780_ON "3"
#define ALS_BH1780_OFF "0"
ALSAdaptor::ALSAdaptor(const QString& id) :
SysfsAdaptor(id, SysfsAdaptor::IntervalMode,
Config::configuration()->value(ALS_BH1780_DATA).toString())
{
sensordLogD()<<" ALSAdaptor::ALSAdaptorBH1780 \n";
alsBuffer_ = new DeviceAdaptorRingBuffer<TimedUnsigned>(1024);
addAdaptedSensor("als", "Internal ambient light sensor lux values",
alsBuffer_);
introduceAvailableDataRange(DataRange(0, 65535, 1));
}
ALSAdaptor::~ALSAdaptor()
{
sensordLogD()<<" ALSAdaptor::~ALSAdaptorBH1780() \n";
delete alsBuffer_;
}
bool ALSAdaptor::startSensor (const QString& sensorid) {
bool flag=isRunning();
bool ret=false;
sensordLogD()<<" ALSAdaptor::startSensor \n";
ret=SysfsAdaptor::startSensor (sensorid);
if(ret==FALSE)
{
sensordLogC()<<" SysfsAdaptor::startSensor failed \n ";
return ret;
}
/* if one more instance already open,no need to do anything
other wise time for device power on */
if(flag==FALSE)
{
/* SysfsAdaptor::startSensor returns false if it is not runnig
*/
ret=writeToFile(ALS_BH1780_CONTROL,ALS_BH1780_ON);
if(ret==FALSE)
sensordLogC()<<" BH1780 device ON failed ret: \n "<<ret;
}
return ret;
}
void ALSAdaptor::stopSensor (const QString& sensorid) {
bool flag;
sensordLogD()<<" ALSAdaptor::stopSensor \n";
SysfsAdaptor::stopSensor(sensorid);
flag=isRunning();
if(flag==FALSE)
{
if(! writeToFile(ALS_BH1780_CONTROL,ALS_BH1780_OFF))
sensordLogC()<<" BH1780 device OFF failed ";
}
}
bool ALSAdaptor::standby (){
bool ret=false;
sensordLogD()<<" ALSAdaptor::standby \n";
ret=SysfsAdaptor::standby();
if(ret==FALSE)
{
sensordLogC()<<" SysfsAdaptor::standby failed \n ";
return ret;
}
ret=writeToFile(ALS_BH1780_CONTROL,ALS_BH1780_OFF);
if(ret==FALSE)
sensordLogC()<<" BH1780 device OFF failed ret: \n "<<ret;
return ret;
}
bool ALSAdaptor::resume () {
bool ret=false;
sensordLogD()<<" ALSAdaptor::resume \n";
ret=SysfsAdaptor::resume();
if(ret==FALSE)
{
sensordLogC()<<" SysfsAdaptor::resume failed \n ";
return ret;
}
ret=writeToFile(ALS_BH1780_CONTROL,ALS_BH1780_ON);
if(ret==FALSE)
sensordLogC()<<" BH1780 device ON failed ret: \n "<<ret;
return ret;
}
void ALSAdaptor::processSample(int pathId, int fd)
{
Q_UNUSED(pathId);
static char asciidata[8];
__u16 idata = 0;
sensordLogD()<<" ALSAdaptor::processSample \n";
int bytesRead = read(fd, &asciidata, sizeof(asciidata));
asciidata[sizeof(asciidata)-1] = '\0';
idata = atoi(asciidata);
if (bytesRead <= 0) {
sensordLogW() << "read():" << strerror(errno);
return;
}
sensordLogT() << "Ambient light value: " << idata;
TimedUnsigned* lux = alsBuffer_->nextSlot();
lux->value_ = idata;
lux->timestamp_ = Utils::getTimeStamp();
alsBuffer_->commit();
alsBuffer_->wakeUpReaders();
}
_______________________________________________
MeeGo-dev mailing list
[email protected]
http://lists.meego.com/listinfo/meego-dev