87 lines
2.6 KiB
C
87 lines
2.6 KiB
C
|
/***************************************************************************
|
||
|
* __________ __ ___.
|
||
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||
|
* \/ \/ \/ \/ \/
|
||
|
*
|
||
|
* Copyright (C) 2013 Lorenzo Miori
|
||
|
*
|
||
|
* This program is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU General Public License
|
||
|
* as published by the Free Software Foundation; either version 2
|
||
|
* of the License, or (at your option) any later version.
|
||
|
*
|
||
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||
|
* KIND, either express or implied.
|
||
|
*
|
||
|
****************************************************************************/
|
||
|
|
||
|
#ifndef _COMMON_H_
|
||
|
#define _COMMON_H_
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <string.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <stdarg.h>
|
||
|
#include <getopt.h>
|
||
|
#include <stdint.h>
|
||
|
|
||
|
#if defined(WIN32)
|
||
|
# define DIR_SEPARATOR '\\'
|
||
|
#else
|
||
|
# define DIR_SEPARATOR '/'
|
||
|
#endif
|
||
|
|
||
|
#define MAX_PATH 255
|
||
|
|
||
|
/*
|
||
|
* Firmware description
|
||
|
*/
|
||
|
|
||
|
#define GENERIC_HEADER_LINES 5
|
||
|
#define MAX_HEADER_LEN 1000
|
||
|
/* Empty space used by bootloader to store checksums */
|
||
|
#define MBOOT_CHECKSUM_OFFSET 96
|
||
|
/* Length of the reserved space */
|
||
|
#define MBOOT_CHECKSUM_LENGTH 992
|
||
|
|
||
|
/* In case we don't have RevisionInfo.txt file, mock values are fine */
|
||
|
#define YPR0_VERSION "Version : V1.25\n"
|
||
|
#define YPR0_TARGET "Target : KR\n"
|
||
|
#define YPR0_USER "User : rockbox\n"
|
||
|
#define YPR0_DIR "Dir : /.rockbox\n"
|
||
|
#define YPR0_TIME "BuildTime : 11/04/20 14:17:34\n"
|
||
|
|
||
|
#define YPR0_COMPONENTS_COUNT 4
|
||
|
|
||
|
#define MD5_DIGEST_LENGTH 16
|
||
|
|
||
|
extern char* firmware_components[];
|
||
|
extern char* firmware_filenames[];
|
||
|
extern uint8_t g_yp_key[128];
|
||
|
|
||
|
struct firmware_data
|
||
|
{
|
||
|
char* component_data[YPR0_COMPONENTS_COUNT];
|
||
|
size_t component_size[YPR0_COMPONENTS_COUNT];
|
||
|
char component_checksum[YPR0_COMPONENTS_COUNT][MD5_DIGEST_LENGTH*2+1];
|
||
|
};
|
||
|
|
||
|
enum samsung_error_t
|
||
|
{
|
||
|
SAMSUNG_SUCCESS = 0,
|
||
|
SAMSUNG_READ_ERROR = -1,
|
||
|
SAMSUNG_FORMAT_ERROR = -2,
|
||
|
SAMSUNG_MD5_ERROR = -3,
|
||
|
SAMSUNG_WRITE_ERROR = -4,
|
||
|
};
|
||
|
|
||
|
void cyclic_xor(void *data, int datasize, void *xor, int xorsize);
|
||
|
size_t get_filesize(FILE* handle);
|
||
|
void join_path(char* destination, char* first, char* second);
|
||
|
void md5sum(char* component_checksum, char* data, unsigned long size);
|
||
|
|
||
|
#endif /* _COMMON_H_ */
|