summaryrefslogtreecommitdiff
path: root/rbutil/ipodpatcher/ipodio.h
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2007-02-10 19:49:43 +0000
committerDave Chapman <dave@dchapman.com>2007-02-10 19:49:43 +0000
commit955afed1b74793a3f06f98f3c259ec98f26a0b82 (patch)
tree6dcaa6b318ce282b21327530171f4f6a3297cb04 /rbutil/ipodpatcher/ipodio.h
parentf0efde23039064d393e8cc35c2d88a487c47b1c7 (diff)
Move ipodpatcher into rbutil directory
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12263 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/ipodpatcher/ipodio.h')
-rw-r--r--rbutil/ipodpatcher/ipodio.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/rbutil/ipodpatcher/ipodio.h b/rbutil/ipodpatcher/ipodio.h
new file mode 100644
index 0000000000..d0641faa2b
--- /dev/null
+++ b/rbutil/ipodpatcher/ipodio.h
@@ -0,0 +1,89 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2006-2007 Dave Chapman
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#ifndef __IPODIO_H
+#define __IPODIO_H
+
+#include <stdint.h>
+
+#ifdef __WIN32__
+#include <windows.h>
+#else
+#define HANDLE int
+#define O_BINARY 0
+#endif
+
+/* The maximum number of images in a firmware partition - a guess... */
+#define MAX_IMAGES 10
+
+enum firmwaretype_t {
+ FTYPE_OSOS = 0,
+ FTYPE_RSRC,
+ FTYPE_AUPD,
+ FTYPE_HIBE
+};
+
+struct ipod_directory_t {
+ enum firmwaretype_t ftype;
+ int id;
+ uint32_t devOffset; /* Offset of image relative to one sector into bootpart*/
+ uint32_t len;
+ uint32_t addr;
+ uint32_t entryOffset;
+ uint32_t chksum;
+ uint32_t vers;
+ uint32_t loadAddr;
+};
+
+struct partinfo_t {
+ unsigned long start; /* first sector (LBA) */
+ unsigned long size; /* number of sectors */
+ int type;
+};
+
+struct ipod_t {
+ HANDLE dh;
+ char diskname[4096];
+ int sector_size;
+ struct ipod_directory_t ipod_directory[MAX_IMAGES];
+ int nimages;
+ off_t diroffset;
+ off_t start; /* Offset in bytes of firmware partition from start of disk */
+ off_t fwoffset; /* Offset in bytes of start of firmware images from start of disk */
+ struct partinfo_t pinfo[4];
+ int modelnum;
+ char* modelname;
+ char* modelstr;
+ int macpod;
+#ifdef WITH_BOOTOBJS
+ unsigned char* bootloader;
+ int bootloader_len;
+#endif
+};
+
+void print_error(char* msg);
+int ipod_open(struct ipod_t* ipod, int silent);
+int ipod_reopen_rw(struct ipod_t* ipod);
+int ipod_close(struct ipod_t* ipod);
+int ipod_seek(struct ipod_t* ipod, unsigned long pos);
+int ipod_read(struct ipod_t* ipod, unsigned char* buf, int nbytes);
+int ipod_write(struct ipod_t* ipod, unsigned char* buf, int nbytes);
+int ipod_alloc_buffer(unsigned char** sectorbuf, int bufsize);
+
+#endif