#ifndef TESTS_FIXTURES_BAKED_CAMERA_PROFILES_H
#define TESTS_FIXTURES_BAKED_CAMERA_PROFILES_H

/** Baked camera profiles captured from real hardware for offline unit tests.
 *
 * To add profiles for a new machine or camera:
 * 1. Build lcameraDev_list_cameras with -DENABLE_LIB_lcameraDev=ON -DENABLE_TESTS=ON
 * 2. Run scripts/extractBakedCameraProfiles.sh <build-dir> <machine-tag>
 * 3. Merge the printed rows into the matching MACHINE section below.
 */

#include <cstddef>

namespace test_fixtures {

struct BakedCameraProfile
{
	const char *machineTag;
	const char *profileTag;
	const char *libcameraId;
	const char *model;
	const char *location;
	const char *usbVidPid;
	const char *usbSerial;
	const char *exampleSelector;
	bool requiredOnMachine;
};

// MACHINE: dell-laptop
// Captured via lcameraDev_list_cameras on 2026-06-10.
// Configure HIL note (2026-06-10): both cameras expose MJPEG and packed YUYV
// via libcamera VideoRecording/Viewfinder — no fully planar YUV420/NV12 at
// 640x480. configureSessionModeCReq correctly throws when fullPlanarIsOptional
// is false; with opt-planar / fullPlanarIsOptional=true configure succeeds
// selecting YUYV (Yuv422). lcameraBuff Stage 2 attach HIL uses v-res=480p.
inline constexpr BakedCameraProfile bakedCameraProfiles[] = {
	{
		"dell-laptop",
		"usb_hdmi_camera",
		"\\_SB_.PCI0.XHC_.RHUB.HS01-1:1.0-32e4:9415",
		"HDMI USB Camera: HDMI USB Camer",
		"external",
		"32e4:9415",
		"1020181e58586223",
		"model-substr:HDMI;location:EXTERNAL",
		true,
	},
	{
		"dell-laptop",
		"integrated_webcam",
		"\\_SB_.PCI0.XHC_.RHUB.HS04-4:1.0-1bcf:2b8a",
		"Integrated_Webcam_HD: Integrate",
		"front",
		"1bcf:2b8a",
		"",
		"model-substr:Integrated;location:front",
		true,
	},
};

inline constexpr std::size_t bakedCameraProfileCount =
	sizeof(bakedCameraProfiles) / sizeof(bakedCameraProfiles[0]);

} // namespace test_fixtures

#endif // TESTS_FIXTURES_BAKED_CAMERA_PROFILES_H
