- add PowerOnSensor() virtual,

- Add Or/And reg helpers.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31626 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
François Revol
2009-07-18 15:34:51 +00:00
parent 586b09a499
commit 591eab0aba
2 changed files with 35 additions and 0 deletions
@@ -305,6 +305,13 @@ CamDevice::Lock()
}
status_t
CamDevice::PowerOnSensor(bool on)
{
return B_OK;
}
ssize_t
CamDevice::WriteReg(uint16 address, uint8 *data, size_t count)
{
@@ -337,6 +344,29 @@ CamDevice::ReadReg(uint16 address, uint8 *data, size_t count, bool cached)
}
ssize_t
CamDevice::OrReg8(uint16 address, uint8 data, uint8 mask)
{
uint8 value;
if (ReadReg(address, &value, 1, true) < 1)
return EIO;
value &= mask;
value |= data;
return WriteReg8(address, value);
}
ssize_t
CamDevice::AndReg8(uint16 address, uint8 data)
{
uint8 value;
if (ReadReg(address, &value, 1, true) < 1)
return EIO;
value &= data;
return WriteReg8(address, value);
}
/*
status_t
CamDevice::GetStatusIIC()
@@ -91,11 +91,16 @@ class CamDevice {
// sensor chip handling
CamSensor* Sensor() const { return fSensor; };
virtual status_t PowerOnSensor(bool on);
// generic register-like access
virtual ssize_t WriteReg(uint16 address, uint8 *data, size_t count=1);
virtual ssize_t WriteReg8(uint16 address, uint8 data);
virtual ssize_t WriteReg16(uint16 address, uint16 data);
virtual ssize_t ReadReg(uint16 address, uint8 *data, size_t count=1, bool cached=false);
ssize_t OrReg8(uint16 address, uint8 data, uint8 mask=0xff);
ssize_t AndReg8(uint16 address, uint8 data);
// I2C-like access
//virtual status_t GetStatusIIC();