libcamera/test/camera/configuration_set.cpp
Niklas Söderlund 75a9aebee5 libcamera: pipelines: Use sensor ID as camera name
Use the CameraSensor ID as the camera name in pipelines that uses a
CameraSensors, this is done in preparation of turning the camera name
into an ID. The CameraSensor ID meets the requirements that will be put
on camera ID.

Before this change example of camera names:

* OF based systems
    ov5695 7-0036
    ov2685 7-003c

* ACPI based systems
    ov13858 8-0010
    ov5670 10-0036

* VIMC
    VIMC Sensor B

After this change the same cameras are:

* OF based systems
    /base/i2c@ff160000/camera@36
    /base/i2c@ff160000/camera@36

* ACPI based systems
    \_SB_.PCI0.I2C2.CAM0
    \_SB_.PCI0.I2C4.CAM1

* VIMC
    platform/vimc.0 Sensor B

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
2020-08-05 20:07:13 +02:00

105 lines
2.2 KiB
C++

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright (C) 2019, Google Inc.
*
* libcamera Camera API tests
*/
#include <iostream>
#include "camera_test.h"
#include "test.h"
using namespace std;
namespace {
class ConfigurationSet : public CameraTest, public Test
{
public:
ConfigurationSet()
: CameraTest("platform/vimc.0 Sensor B")
{
}
protected:
int init() override
{
if (status_ != TestPass)
return status_;
config_ = camera_->generateConfiguration({ StreamRole::VideoRecording });
if (!config_ || config_->size() != 1) {
cout << "Failed to generate default configuration" << endl;
return TestFail;
}
return TestPass;
}
int run() override
{
StreamConfiguration &cfg = config_->at(0);
if (camera_->acquire()) {
cout << "Failed to acquire the camera" << endl;
return TestFail;
}
/* Test that setting the default configuration works. */
if (camera_->configure(config_.get())) {
cout << "Failed to set default configuration" << endl;
return TestFail;
}
/*
* Test that configuring the camera fails if it is not
* acquired, this will also test release and reacquiring
* of the camera.
*/
if (camera_->release()) {
cout << "Failed to release the camera" << endl;
return TestFail;
}
if (!camera_->configure(config_.get())) {
cout << "Setting configuration on a camera not acquired succeeded when it should have failed"
<< endl;
return TestFail;
}
if (camera_->acquire()) {
cout << "Failed to acquire the camera" << endl;
return TestFail;
}
/*
* Test that modifying the default configuration works. Doubling
* the default configuration of the VIMC camera is known to
* work.
*/
cfg.size.width *= 2;
cfg.size.height *= 2;
if (camera_->configure(config_.get())) {
cout << "Failed to set modified configuration" << endl;
return TestFail;
}
/*
* Test that setting an invalid configuration fails.
*/
cfg.size = { 0, 0 };
if (!camera_->configure(config_.get())) {
cout << "Invalid configuration incorrectly accepted" << endl;
return TestFail;
}
return TestPass;
}
std::unique_ptr<CameraConfiguration> config_;
};
} /* namespace */
TEST_REGISTER(ConfigurationSet);