#ifndef _IPOD_INFO_H_ #define _IPOD_INFO_H_ #define RGB_565 0 #define RGB_555 1 #define RGB_555_REC 2 typedef enum { THUMB_INVALID = -1, THUMB_COVER_SMALL, THUMB_COVER_MEDIUM1, THUMB_COVER_MEDIUM2, THUMB_COVER_MEDIUM3, THUMB_COVER_MEDIUM4, THUMB_COVER_LARGE, THUMB_PHOTO_SMALL, THUMB_PHOTO_LARGE, THUMB_PHOTO_FULL_SCREEN, THUMB_PHOTO_TV_SCREEN, } ThumbType; typedef enum { IPOD_COLOR_WHITE, IPOD_COLOR_BLACK, IPOD_COLOR_SILVER, IPOD_COLOR_BLUE, IPOD_COLOR_PINK, IPOD_COLOR_GREEN, IPOD_COLOR_ORANGE, IPOD_COLOR_GOLD, IPOD_COLOR_RED, IPOD_COLOR_U2, } iPodColor; typedef enum { IPOD_MODEL_INVALID=0, IPOD_MODEL_COLOR=1, IPOD_MODEL_REGULAR=2, IPOD_MODEL_MINI=3, IPOD_MODEL_SHUFFLE=4, IPOD_MODEL_VIDEO=5, IPOD_MODEL_NANO=6, IPOD_MODEL_CLASSIC=7, IPOD_MODEL_FATNANO=8, IPOD_MODEL_TOUCH=9, } iPodModel; typedef struct { ThumbType type; int width; int height; int correlation_id; int format; int row_align; int image_align; } ArtworkFormat; struct iPodModelInfo { // model_number is abbreviated: if the first character is not numeric, it is ommited. e.g. "MA350 -> A350", "M9829 -> 9829" const wchar_t *model_number; iPodModel model; iPodColor color; int image16; int image160; }; class iPodInfo { public: iPodInfo(const iPodModelInfo *model); ~iPodInfo(); void SetFWID(const uint8_t *new_fwid); int family_id; wchar_t *model_number; iPodModel model; iPodColor color; int image16; int image160; // Store the supported artwork formats if we // can dynamically read it from the extended sysinfo xml ArtworkFormat* supportedArtworkFormats; size_t numberOfSupportedFormats; unsigned char *fwid; unsigned int shadow_db_version; }; struct _iPodSerialToModel { const wchar_t *serial; const wchar_t *model_number; }; typedef struct _iPodSerialToModel iPodSerialToModel; iPodInfo *GetiPodInfo(wchar_t drive); const ArtworkFormat* GetArtworkFormats(const iPodInfo* info); #endif //_IPOD_INFO_H_