mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-26 01:55:51 +03:00
ipa: vimc: Add support for tracing operations
Add support to the dummy VIMC IPA for tracing operation by using a FIFO channel that will be used by the IPA Interface test to verify communications with the IPA. At the moment only add support for the init() operation as it's the only defined one. Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
ecbe309b06
commit
c86dc5e00e
2 changed files with 89 additions and 1 deletions
|
@ -5,25 +5,91 @@
|
|||
* ipa_vimc.cpp - Vimc Image Processing Algorithm module
|
||||
*/
|
||||
|
||||
#include <ipa/ipa_vimc.h>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include <ipa/ipa_interface.h>
|
||||
#include <ipa/ipa_module_info.h>
|
||||
|
||||
#include "log.h"
|
||||
|
||||
namespace libcamera {
|
||||
|
||||
LOG_DEFINE_CATEGORY(IPAVimc)
|
||||
|
||||
class IPAVimc : public IPAInterface
|
||||
{
|
||||
public:
|
||||
IPAVimc();
|
||||
~IPAVimc();
|
||||
|
||||
int init();
|
||||
|
||||
private:
|
||||
void initTrace();
|
||||
void trace(enum IPAOperationCode operation);
|
||||
|
||||
int fd_;
|
||||
};
|
||||
|
||||
IPAVimc::IPAVimc()
|
||||
: fd_(-1)
|
||||
{
|
||||
initTrace();
|
||||
}
|
||||
|
||||
IPAVimc::~IPAVimc()
|
||||
{
|
||||
if (fd_)
|
||||
::close(fd_);
|
||||
}
|
||||
|
||||
int IPAVimc::init()
|
||||
{
|
||||
std::cout << "initializing vimc IPA!" << std::endl;
|
||||
trace(IPAOperationInit);
|
||||
|
||||
LOG(IPAVimc, Debug) << "initializing vimc IPA!";
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void IPAVimc::initTrace()
|
||||
{
|
||||
struct stat fifoStat;
|
||||
int ret = stat(VIMC_IPA_FIFO_PATH, &fifoStat);
|
||||
if (ret)
|
||||
return;
|
||||
|
||||
ret = ::open(VIMC_IPA_FIFO_PATH, O_WRONLY);
|
||||
if (ret < 0) {
|
||||
ret = errno;
|
||||
LOG(IPAVimc, Error) << "Failed to open vimc IPA test FIFO: "
|
||||
<< strerror(ret);
|
||||
return;
|
||||
}
|
||||
|
||||
fd_ = ret;
|
||||
}
|
||||
|
||||
void IPAVimc::trace(enum IPAOperationCode operation)
|
||||
{
|
||||
if (fd_ < 0)
|
||||
return;
|
||||
|
||||
int ret = ::write(fd_, &operation, sizeof(operation));
|
||||
if (ret < 0) {
|
||||
ret = errno;
|
||||
LOG(IPAVimc, Error) << "Failed to write to vimc IPA test FIFO: "
|
||||
<< strerror(ret);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* External IPA module interface
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue