#ifndef XBOX_REF_BRIDGE_H_INCLUDED
#define XBOX_REF_BRIDGE_H_INCLUDED

#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

#define XBOX_REF_RESULT_PATH_MAX 4096
#define XBOX_REF_RESULT_TITLE_MAX 256
#define XBOX_REF_RESULT_MEDIA_ID_MAX 64

typedef struct xbox_ref_dump_result_s {
    int attempted;
    int dump_success;
    int hashes_complete;
    char mode;
    uint32_t output_sectors;
    uint64_t output_size;
    double elapsed_seconds;
    char output_path[XBOX_REF_RESULT_PATH_MAX];
    char title[XBOX_REF_RESULT_TITLE_MAX];
    char media_id[XBOX_REF_RESULT_MEDIA_ID_MAX];
    char crc32[9];
    char md5[33];
    char sha1[41];
    char sha256[65];
} xbox_ref_dump_result;

void xbox_ref_dump_result_init(xbox_ref_dump_result *result);
int xbox_ref_gdr8050l_dump_with_handle(void *native_handle,
                                       const char *device,
                                       const char *filename,
                                       char mode,
                                       xbox_ref_dump_result *result);
int xbox_ref_gdr8050l_dump(const char *device,
                           const char *filename,
                           char mode,
                           xbox_ref_dump_result *result);

#ifdef __cplusplus
}
#endif

#endif
