Загрузка данных


#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_ */