#ifndef _SRTM_CAMERA_SERVICE_H_
#define _SRTM_CAMERA_SERVICE_H_
#include "srtm_service.h"
/* Кастомные идентификаторы для сервиса Камеры */
#define SRTM_CAMERA_CATEGORY (0x7FU)
#define SRTM_CAMERA_VERSION (0x0100U)
/* Коды команд */
#define SRTM_CAMERA_CMD_START (0x01U)
#define SRTM_CAMERA_CMD_STOP (0x02U)
/* Коды возврата (Статусы выполнения) */
#define SRTM_CAMERA_RETURN_CODE_SUCCESS (0x0U)
#define SRTM_CAMERA_RETURN_CODE_FAIL (0x1U)
#define SRTM_CAMERA_RETURN_CODE_UNSUPPORTED (0x2U)
/* Структура Payload для обмена сообщениями */
struct _srtm_camera_payload
{
uint8_t cameraID; /* ID камеры (например, 0 - фронтальная, 1 - тыловая) */
uint8_t retCode; /* Сюда записывается результат выполнения для Linux */
uint16_t reserved; /* Выравнивание по байтам */
} __attribute__((packed));
/* Опережающие объявления структур */
typedef struct _srtm_camera_adapter *srtm_camera_adapter_t;
/* Интерфейс адаптера (Callbacks для реализации физического управления на стороне М7) */
struct _srtm_camera_adapter
{
srtm_service_t *service;
/* Указатели на функции драйвера камеры */
srtm_status_t (*start)(srtm_camera_adapter_t adapter, uint8_t cameraID);
srtm_status_t (*stop)(srtm_camera_adapter_t adapter, uint8_t cameraID);
};
/* Экспортируемые функции API */
srtm_service_t SRTM_CameraService_Create(srtm_camera_adapter_t adapter);
void SRTM_CameraService_Destroy(srtm_service_t service);
void SRTM_CameraService_Reset(srtm_service_t service, srtm_peercore_t core);
#endif /* _SRTM_CAMERA_SERVICE_H_ */