[camera] Improve logging of error codes
Change-Id: I1b72761ab539f08406a0d0d3765c6a62663b20e0
diff --git a/src/camera/camera_manager/video_device_client.cc b/src/camera/camera_manager/video_device_client.cc
index c9b8b8e..be7522c 100644
--- a/src/camera/camera_manager/video_device_client.cc
+++ b/src/camera/camera_manager/video_device_client.cc
@@ -43,14 +43,16 @@
}
zx::channel local, remote;
- zx_status_t status = zx::channel::create(0u, &local, &remote);
- FX_CHECK(status == ZX_OK) << "Failed to create channel. status " << status;
+ auto err = zx::channel::create(0u, &local, &remote);
+ if (err) {
+ FX_PLOGS(ERROR, err) << "Failed to create channel";
+ return nullptr;
+ }
fzl::FdioCaller dev(std::move(dev_node));
- zx_status_t res =
- fuchsia_hardware_camera_DeviceGetChannel(dev.borrow_channel(), remote.release());
- if (res != ZX_OK) {
- FX_LOGS(ERROR) << "Failed to obtain channel (res " << res << ")";
+ err = fuchsia_hardware_camera_DeviceGetChannel(dev.borrow_channel(), remote.release());
+ if (err) {
+ FX_PLOGS(ERROR, err) << "Failed to obtain channel";
return nullptr;
}
@@ -142,7 +144,7 @@
// since the camera manager does not retain control of the stream channel.
zx_status_t status = zx::eventpair::create(0, &stream->stream_token_, driver_token);
if (status != ZX_OK) {
- FX_LOGS(ERROR) << "Couldn't create driver token. status: " << status;
+ FX_PLOGS(ERROR, status) << "Couldn't create driver token";
return nullptr;
}
// Create a waiter that waits for the stream_token to be closed.
@@ -161,7 +163,7 @@
status = stream->stream_token_waiter_->Begin(async_get_default_dispatcher());
if (status != ZX_OK) {
- FX_LOGS(ERROR) << "Couldn't begin stream_token_waiter_ wait. status: " << status;
+ FX_PLOGS(ERROR, status) << "Couldn't begin stream_token_waiter_ wait";
return nullptr;
}
diff --git a/src/camera/camera_manager2/camera_manager_app.cc b/src/camera/camera_manager2/camera_manager_app.cc
index 97e4464..286a2ea 100644
--- a/src/camera/camera_manager2/camera_manager_app.cc
+++ b/src/camera/camera_manager2/camera_manager_app.cc
@@ -24,11 +24,10 @@
FX_LOGS(INFO) << "Starting";
auto camera_manager = std::make_unique<CameraManagerApp>(std::move(context));
-
zx_status_t status =
camera_manager->context_->svc()->Connect(camera_manager->sysmem_allocator_.NewRequest());
if (status != ZX_OK) {
- FX_LOGS(ERROR) << "Failed to connect to sysmem service. status " << status;
+ FX_PLOGS(ERROR, status) << "Failed to connect to sysmem service";
return nullptr;
}
@@ -36,7 +35,7 @@
status = camera_manager->plug_detector_.Start(
fbl::BindMember(camera_manager.get(), &CameraManagerApp::OnDeviceFound));
if (status != ZX_OK) {
- FX_LOGS(ERROR) << "Failed to start plug_detector. status " << status;
+ FX_PLOGS(ERROR, status) << "Failed to start plug_detector";
return nullptr;
}
@@ -87,11 +86,7 @@
fidl::InterfaceHandle<fuchsia::sysmem::BufferCollectionToken> token,
fidl::InterfaceRequest<fuchsia::camera2::Stream> client_request,
fuchsia::camera2::Manager::ConnectToStreamCallback callback) {
- auto cleanup = fbl::MakeAutoCall([&callback]() {
- FX_LOGS(ERROR) << "Failed to connect to stream";
- ::fuchsia::sysmem::ImageFormat_2 ret;
- callback(ret);
- });
+ auto cleanup = fbl::MakeAutoCall([&callback]() { callback({}); });
// 1: Check that the camera exists:
auto device = GetActiveDevice(camera_id);
@@ -107,9 +102,10 @@
// 3: Pick a config, stream and image_format_index
zx_status_t status = device->MatchConstraints(constraints, &config_index, &stream_type);
if (status != ZX_OK) {
- FX_LOGS(ERROR) << "Failed to match constraints. status: " << status;
+ FX_PLOGS(ERROR, status) << "Failed to match constraints";
return;
}
+
FX_LOGS(INFO) << "Picked config " << config_index << " stream index: " << stream_type
<< " format index: " << image_format_index;
// Get configs from the device:
@@ -134,7 +130,7 @@
status =
sysmem_allocator_->BindSharedCollection(std::move(token), sysmem_collection.NewRequest());
if (status != ZX_OK) {
- FX_LOGS(ERROR) << "Failed to connect to BindSharedCollection.";
+ FX_PLOGS(ERROR, status) << "BindSharedCollection failed";
return;
}
@@ -142,7 +138,7 @@
status = device->CreateStream(config_index, stream_type, image_format_index,
std::move(sysmem_collection), std::move(client_request));
if (status != ZX_OK) {
- FX_LOGS(ERROR) << "Failed to connect to create stream.";
+ FX_PLOGS(ERROR, status) << "CreateStream failed";
return;
}
diff --git a/src/camera/camera_manager2/test/camera_manager_test.cc b/src/camera/camera_manager2/test/camera_manager_test.cc
index 4762b82..2286677 100644
--- a/src/camera/camera_manager2/test/camera_manager_test.cc
+++ b/src/camera/camera_manager2/test/camera_manager_test.cc
@@ -114,10 +114,9 @@
bool passed = false;
bool stream_failure = false;
- // Set an error handler so that if the stream fails, the test can be stopped:
stream.set_error_handler([&stream_failure](zx_status_t status) {
stream_failure = true;
- FX_LOGS(ERROR) << "Stream failed with error " << status;
+ FX_PLOGS(ERROR, status) << "Stream failed with error ";
});
stream.events().OnFrameAvailable = [&passed](fuchsia::camera2::FrameAvailableInfo frame) {
passed = true;
diff --git a/src/camera/camera_manager2/video_device_client.cc b/src/camera/camera_manager2/video_device_client.cc
index 02ff6b8f..33add24 100644
--- a/src/camera/camera_manager2/video_device_client.cc
+++ b/src/camera/camera_manager2/video_device_client.cc
@@ -16,7 +16,7 @@
std::unique_ptr<VideoDeviceClient> VideoDeviceClient::Create(
fidl::InterfaceHandle<fuchsia::camera2::hal::Controller> controller) {
if (!controller.is_valid()) {
- FX_LOGS(ERROR) << __func__ << " Received invalid InterfaceHandle.";
+ FX_LOGS(ERROR) << " Received invalid InterfaceHandle";
return nullptr;
}
@@ -26,8 +26,9 @@
// Since the interface is synchronous, just gather info here.
// TODO(41395): Handle the stalled driver scenario so that one bad device
// doesn't hose the manager.
- if (device->GetInitialInfo() != ZX_OK) {
- FX_LOGS(ERROR) << "Couldn't get configs or info for device";
+ auto err = device->GetInitialInfo();
+ if (err) {
+ FX_PLOGS(ERROR, err) << "Couldn't get configs or info for device";
return nullptr;
}
@@ -39,7 +40,7 @@
fidl::InterfaceHandle<fuchsia::sysmem::BufferCollection> sysmem_collection,
::fidl::InterfaceRequest<::fuchsia::camera2::Stream> stream) {
if (config_index >= configs_.size()) {
- FX_LOGS(ERROR) << "Requested config " << config_index << " Does not exist.";
+ FX_LOGS(WARNING) << "Requested config " << config_index << " Does not exist.";
return ZX_ERR_INVALID_ARGS;
}
if (stream_type >= configs_[config_index].stream_configs.size()) {
@@ -54,34 +55,33 @@
return ZX_ERR_INVALID_ARGS;
}
if (!sysmem_collection.is_valid()) {
- FX_LOGS(ERROR) << __func__ << " Received invalid InterfaceHandle for buffer collection.";
+ FX_LOGS(ERROR) << " Received invalid InterfaceHandle for buffer collection.";
return ZX_ERR_INVALID_ARGS;
}
auto sysmem_collection_ptr = sysmem_collection.BindSync();
auto &stream_config = configs_[config_index].stream_configs[stream_type];
zx_status_t status = sysmem_collection_ptr->SetConstraints(true, stream_config.constraints);
- if (status != ZX_OK) {
- FX_LOGS(ERROR) << "Failed to connect to SetConstraints.";
+ if (status) {
+ FX_PLOGS(ERROR, status) << "SetContraints failed";
return status;
}
zx_status_t allocation_status = ZX_OK;
fuchsia::sysmem::BufferCollectionInfo_2 buffer_collection_info{};
- status =
- sysmem_collection_ptr->WaitForBuffersAllocated(&allocation_status, &buffer_collection_info);
+ status = sysmem_collection_ptr->WaitForBuffersAllocated(&allocation_status, &buffer_collection_info);
if (allocation_status != ZX_OK) {
- FX_LOGS(ERROR) << "Failed to allocate buffers.";
+ FX_PLOGS(ERROR, allocation_status) << "Failed to allocate buffers.";
return allocation_status;
}
if (status != ZX_OK) {
- FX_LOGS(ERROR) << "Failed to call WaitForBuffersAllocated.";
+ FX_PLOGS(ERROR, status) << "WaitForBuffersAllocated failed";
return status;
}
status = camera_control_->CreateStream(config_index, stream_type, image_format_index,
- std::move(buffer_collection_info), std::move(stream));
+ std::move(buffer_collection_info), std::move(stream));
if (status != ZX_OK) {
- FX_LOGS(ERROR) << "Failed to call CreateStream.";
+ FX_PLOGS(ERROR, status) << "Failed to call CreateStream.";
return status;
}
@@ -159,14 +159,13 @@
zx_status_t VideoDeviceClient::GetInitialInfo() {
zx_status_t out_status;
fidl::VectorPtr<fuchsia::camera2::hal::Config> out_configs;
- zx_status_t fidl_status = camera_control_->GetConfigs(&out_configs, &out_status);
-
- if (fidl_status != ZX_OK) {
- FX_LOGS(ERROR) << "Couldn't get Camera Configs. fidl status: " << fidl_status;
- return fidl_status;
+ auto err = camera_control_->GetConfigs(&out_configs, &out_status);
+ if (err) {
+ FX_PLOGS(ERROR, err) << "Couldn't get Camera Configs";
+ return err;
}
if (out_status != ZX_OK) {
- FX_LOGS(ERROR) << "Couldn't get Camera Configs. status: " << out_status;
+ FX_PLOGS(ERROR, out_status) << "Couldn't get Camera Configs";
return out_status;
}
if (!out_configs) {
@@ -210,10 +209,10 @@
// now we have configs, copy the vector to member variable.
configs_ = std::move(out_configs.value());
- fidl_status = camera_control_->GetDeviceInfo(&device_info_);
- if (fidl_status != ZX_OK) {
- FX_LOGS(ERROR) << "Couldn't get device info for device ";
- return fidl_status;
+ err = camera_control_->GetDeviceInfo(&device_info_);
+ if (err) {
+ FX_PLOGS(ERROR, err) << "Couldn't get device info for device ";
+ return err;
}
return ZX_OK;
}
diff --git a/src/camera/drivers/controller/controller-protocol.cc b/src/camera/drivers/controller/controller-protocol.cc
index b33633a..0885800 100644
--- a/src/camera/drivers/controller/controller-protocol.cc
+++ b/src/camera/drivers/controller/controller-protocol.cc
@@ -90,7 +90,7 @@
InternalConfigInfo* internal_config;
status = GetInternalConfiguration(config_index, &internal_config);
if (status != ZX_OK) {
- FX_LOGST(ERROR, TAG) << "Unable to get Internal configuration" << status;
+ FX_PLOGST(ERROR, TAG, status) << "Unable to get Internal configuration";
return;
}
@@ -112,7 +112,7 @@
// Configure the stream pipeline
status = pipeline_manager_.ConfigureStreamPipeline(&info, stream);
if (status != ZX_OK) {
- FX_LOGST(ERROR, TAG) << "Unable to create Stream Pipeline" << status;
+ FX_PLOGST(ERROR, TAG, status) << "Unable to create Stream Pipeline";
return;
}
diff --git a/src/camera/drivers/virtual_camera/virtual_camera2_control.cc b/src/camera/drivers/virtual_camera/virtual_camera2_control.cc
index c3cb25c..a90fe45 100644
--- a/src/camera/drivers/virtual_camera/virtual_camera2_control.cc
+++ b/src/camera/drivers/virtual_camera/virtual_camera2_control.cc
@@ -165,12 +165,12 @@
// If we fail here we return, which drops the stream request, closing the channel.
zx_status_t status = buffers_.Init(vmos.data(), buffer_collection.buffer_count);
if (status != ZX_OK) {
- FX_LOGST(ERROR, TAG) << "Init buffers failed!" << status;
+ FX_PLOGST(ERROR, TAG, status) << "Init buffers failed!";
return;
}
status = buffers_.MapVmos();
if (status != ZX_OK) {
- FX_LOGST(ERROR, TAG) << "Map buffers failed!" << status;
+ FX_PLOGST(ERROR, TAG, status) << "Map buffers failed!";
return;
}