commit f890bb308963846e7bd61acde0733d8b67732088
Author: Christophe Fergeau <[email protected]>
Date:   Sat Jul 25 17:10:47 2009 +0200

    Update model info for iPhone 3G/3GS and make libgpod and HAL callout use it
    
    Based on patches by Martin Szulecki

 src/itdb.h          |   16 ++++++++++--
 src/itdb_device.c   |   66 +++++++++++++++++++++++++++++++++++++--------------
 src/itdb_itunesdb.c |    8 ++----
 tools/hal-callout.c |   23 ++++++++++++++++-
 4 files changed, 85 insertions(+), 28 deletions(-)
---
diff --git a/src/itdb.h b/src/itdb.h
index ddc0cde..dc00361 100644
--- a/src/itdb.h
+++ b/src/itdb.h
@@ -117,6 +117,9 @@ typedef struct _Itdb_Chapterdata Itdb_Chapterdata;
  * @ITDB_IPOD_GENERATION_CLASSIC_2: Second Generation iPod Classic
  * @ITDB_IPOD_GENERATION_TOUCH_1:   First Generation iPod Touch
  * @ITDB_IPOD_GENERATION_IPHONE_1:  First Generation iPhone
+ * @ITDB_IPOD_GENERATION_TOUCH_2:   Second Generation iPod Touch
+ * @ITDB_IPOD_GENERATION_IPHONE_2:  Second Generation iPhone (aka iPhone 3G)
+ * @ITDB_IPOD_GENERATION_IPHONE_3:  Third Generation iPhone (aka iPhone 3GS)
  *
  * iPod generation information
  *
@@ -149,6 +152,9 @@ typedef enum {
     ITDB_IPOD_GENERATION_TOUCH_1,
     ITDB_IPOD_GENERATION_IPHONE_1,
     ITDB_IPOD_GENERATION_SHUFFLE_4,
+    ITDB_IPOD_GENERATION_TOUCH_2,
+    ITDB_IPOD_GENERATION_IPHONE_2,
+    ITDB_IPOD_GENERATION_IPHONE_3
 } Itdb_IpodGeneration;
 
 /**
@@ -190,7 +196,9 @@ typedef enum {
  * @ITDB_IPOD_MODEL_SHUFFLE_RED:    iPod Shuffle (Red)
  * @ITDB_IPOD_MODEL_CLASSIC_SILVER: iPod Classic (Silver)
  * @ITDB_IPOD_MODEL_CLASSIC_BLACK:  iPod Classic (Black)
- * @ITDB_IPOD_MODEL_TOUCH_BLACK:    iPod Touch (Black)
+ * @ITDB_IPOD_MODEL_TOUCH_SILVER:   iPod Touch (Silver)
+ * @ITDB_IPOD_MODEL_IPHONE_WHITE:   iPhone (White)
+ * @ITDB_IPOD_MODEL_IPHONE_BLACK:   iPhone (Black)
  *
  * iPod model information
  *
@@ -233,8 +241,10 @@ typedef enum {
     ITDB_IPOD_MODEL_SHUFFLE_RED,
     ITDB_IPOD_MODEL_CLASSIC_SILVER,
     ITDB_IPOD_MODEL_CLASSIC_BLACK,
-    ITDB_IPOD_MODEL_TOUCH_BLACK,
-    ITDB_IPOD_MODEL_SHUFFLE_BLACK
+    ITDB_IPOD_MODEL_TOUCH_SILVER,
+    ITDB_IPOD_MODEL_SHUFFLE_BLACK,
+    ITDB_IPOD_MODEL_IPHONE_WHITE,
+    ITDB_IPOD_MODEL_IPHONE_BLACK,
 } Itdb_IpodModel;
 
 /**
diff --git a/src/itdb_device.c b/src/itdb_device.c
index bf4544c..7fe36b5 100644
--- a/src/itdb_device.c
+++ b/src/itdb_device.c
@@ -234,19 +234,22 @@ static const Itdb_IpodInfo ipod_info_table [] = {
     {"B917",  16, ITDB_IPOD_MODEL_NANO_RED,       ITDB_IPOD_GENERATION_NANO_4, 
14},
     {"B918",  16, ITDB_IPOD_MODEL_NANO_BLACK,     ITDB_IPOD_GENERATION_NANO_4, 
14},
 
-    /* iPod touch G1 */
-    /* With touch screen */
-    {"A623",   8, ITDB_IPOD_MODEL_TOUCH_BLACK,    
ITDB_IPOD_GENERATION_TOUCH_1, 14},
-    {"A627",  16, ITDB_IPOD_MODEL_TOUCH_BLACK,    
ITDB_IPOD_GENERATION_TOUCH_1, 28},
-
-    /* iPhone G1 */
-    /* We used to not have a model number for the iPhone so we had that
-     * dummy "iPhone1" model number, we now keep it here for backward
-     * compatibility reasons
-     */
-    {"A501",  4, ITDB_IPOD_MODEL_IPHONE_1,       
ITDB_IPOD_GENERATION_IPHONE_1, 14},
-    {"A712",  8, ITDB_IPOD_MODEL_IPHONE_1,       
ITDB_IPOD_GENERATION_IPHONE_1, 14},
-    {"iPhone1", -1, ITDB_IPOD_MODEL_IPHONE_1, ITDB_IPOD_GENERATION_IPHONE_1, 
14},
+    /* iPod Touch */
+    {"A623",   8, ITDB_IPOD_MODEL_TOUCH_SILVER,   
ITDB_IPOD_GENERATION_TOUCH_1, 50},
+    {"A627",  16, ITDB_IPOD_MODEL_TOUCH_SILVER,   
ITDB_IPOD_GENERATION_TOUCH_1, 50},
+
+    /* iPhone, iPhone 3G and iPhone 3GS */
+    {"A501",   4, ITDB_IPOD_MODEL_IPHONE_1,       
ITDB_IPOD_GENERATION_IPHONE_1, 50},
+    {"A712",   8, ITDB_IPOD_MODEL_IPHONE_1,       
ITDB_IPOD_GENERATION_IPHONE_1, 50},
+    {"B384",  16, ITDB_IPOD_MODEL_IPHONE_1,       
ITDB_IPOD_GENERATION_IPHONE_1, 50},
+    {"B500",  16, ITDB_IPOD_MODEL_IPHONE_WHITE,   
ITDB_IPOD_GENERATION_IPHONE_2, 50},
+    {"B048",  16, ITDB_IPOD_MODEL_IPHONE_BLACK,   
ITDB_IPOD_GENERATION_IPHONE_2, 50},
+    {"B496",  16, ITDB_IPOD_MODEL_IPHONE_BLACK,   
ITDB_IPOD_GENERATION_IPHONE_2, 50},
+    {"C131",  16, ITDB_IPOD_MODEL_IPHONE_BLACK,   
ITDB_IPOD_GENERATION_IPHONE_3, 50},
+
+    /* iPhone G2 aka iPhone 3G (yeah, confusing ;) */
+    {"B500",  16, ITDB_IPOD_MODEL_IPHONE_WHITE,       
ITDB_IPOD_GENERATION_IPHONE_2, 14},
+    {"B048",  16, ITDB_IPOD_MODEL_IPHONE_BLACK,       
ITDB_IPOD_GENERATION_IPHONE_2, 14},
 
     /* No known model number -- create a Device/SysInfo file with
      * one entry, e.g.:
@@ -296,8 +299,10 @@ static const gchar *ipod_model_name_table [] = {
        N_("Shuffle (Red)"),
        N_("Classic (Silver)"),
        N_("Classic (Black)"),
-       N_("Touch (Black)"),
+       N_("Touch (Silver)"),
        N_("Shuffle (Black)"),
+       N_("iPhone (White)"),
+       N_("iPhone (Black)"),
        NULL
 };
 
@@ -324,8 +329,11 @@ static const gchar *ipod_generation_name_table [] = {
        N_("Classic"),
        N_("Classic"),
        N_("Touch"),
-        N_("iPhone"),
+       N_("iPhone"),
        N_("Shuffle (4th Gen.)"),
+       N_("Touch (2nd Gen.)"),
+       N_("iPhone 3G"),
+       N_("iPhone 3GS"),
        N_("Unused"),
        N_("Unused"),
        NULL
@@ -484,7 +492,10 @@ static const ArtworkCapabilities 
ipod_artwork_capabilities[] = {
     { ITDB_IPOD_GENERATION_CLASSIC_1, ipod_classic_1_cover_art_info, 
ipod_classic_1_photo_info, ipod_classic_1_chapter_image_info },
     { ITDB_IPOD_GENERATION_CLASSIC_2, ipod_classic_1_cover_art_info, 
ipod_classic_1_photo_info, ipod_classic_1_chapter_image_info },
     { ITDB_IPOD_GENERATION_TOUCH_1, ipod_touch_1_cover_art_info, 
ipod_touch_1_photo_info, NULL },
+    { ITDB_IPOD_GENERATION_TOUCH_2, ipod_touch_1_cover_art_info, 
ipod_touch_1_photo_info, NULL },
     { ITDB_IPOD_GENERATION_IPHONE_1, ipod_touch_1_cover_art_info, 
ipod_touch_1_photo_info, NULL },
+    { ITDB_IPOD_GENERATION_IPHONE_2, ipod_touch_1_cover_art_info, 
ipod_touch_1_photo_info, NULL },
+    { ITDB_IPOD_GENERATION_IPHONE_3, ipod_touch_1_cover_art_info, 
ipod_touch_1_photo_info, NULL },
     { ITDB_IPOD_GENERATION_MOBILE, ipod_mobile_1_cover_art_info, NULL, NULL },
     { ITDB_IPOD_GENERATION_UNKNOWN, NULL, NULL, NULL }
 };
@@ -672,6 +683,11 @@ static const ItdbSerialToModel serial_to_model_mapping[] = 
{
     { "5BF", "B918" }, /* 16GB Black Nano 4g */
     { "4NZ", "B867" }, /* 4GB Silver Shuffle 4g */
     { "891", "C164" }, /* 4GB Black Shuffle 4g */
+    { "W4T", "A627" }, /* 16GB Silver iPod Touch */
+    { "WH8", "A712" }, /* 8GB Silver iPhone */
+    { "0KH", "B384" }, /* 16GB Silver iPhone */
+    { "Y7K", "B496" }, /* 16GB Black iPhone 3G */
+    { "3NP", "C131" }, /* 16GB Black iPhone 3GS */
     { NULL ,  NULL  }
 };
 
@@ -1191,6 +1207,9 @@ itdb_device_supports_sparse_artwork (const Itdb_Device 
*device)
             case ITDB_IPOD_GENERATION_CLASSIC_2:
             case ITDB_IPOD_GENERATION_TOUCH_1:
             case ITDB_IPOD_GENERATION_IPHONE_1:
+            case ITDB_IPOD_GENERATION_TOUCH_2:
+            case ITDB_IPOD_GENERATION_IPHONE_2:
+            case ITDB_IPOD_GENERATION_IPHONE_3:
                 supports_sparse_artwork = TRUE;
                 break;
         }
@@ -1491,8 +1510,11 @@ gboolean itdb_device_supports_video (const Itdb_Device 
*device)
         case ITDB_IPOD_GENERATION_VIDEO_2:
         case ITDB_IPOD_GENERATION_CLASSIC_1:
        case ITDB_IPOD_GENERATION_CLASSIC_2:
-        case ITDB_IPOD_GENERATION_TOUCH_1:
-        case ITDB_IPOD_GENERATION_IPHONE_1:
+       case ITDB_IPOD_GENERATION_TOUCH_1:
+       case ITDB_IPOD_GENERATION_IPHONE_1:
+       case ITDB_IPOD_GENERATION_TOUCH_2:
+       case ITDB_IPOD_GENERATION_IPHONE_2:
+       case ITDB_IPOD_GENERATION_IPHONE_3:
             return TRUE;
     }
     g_return_val_if_reached (FALSE);
@@ -1591,9 +1613,14 @@ static ItdbChecksumType itdb_device_get_checksum_type 
(const Itdb_Device *device
     case ITDB_IPOD_GENERATION_CLASSIC_2:
     case ITDB_IPOD_GENERATION_NANO_3:
     case ITDB_IPOD_GENERATION_NANO_4:
+      return ITDB_CHECKSUM_HASH58;
+
     case ITDB_IPOD_GENERATION_TOUCH_1:
+    case ITDB_IPOD_GENERATION_TOUCH_2:
     case ITDB_IPOD_GENERATION_IPHONE_1:
-      return ITDB_CHECKSUM_HASH58;
+    case ITDB_IPOD_GENERATION_IPHONE_2:
+    case ITDB_IPOD_GENERATION_IPHONE_3:
+        return ITDB_CHECKSUM_HASH72;
 
     case ITDB_IPOD_GENERATION_UNKNOWN:
     case ITDB_IPOD_GENERATION_FIRST:
@@ -1875,6 +1902,9 @@ itdb_device_supports_podcast (const Itdb_Device *device)
            case ITDB_IPOD_GENERATION_CLASSIC_2:
            case ITDB_IPOD_GENERATION_TOUCH_1:
            case ITDB_IPOD_GENERATION_IPHONE_1:
+           case ITDB_IPOD_GENERATION_TOUCH_2:
+           case ITDB_IPOD_GENERATION_IPHONE_2:
+           case ITDB_IPOD_GENERATION_IPHONE_3:
                return TRUE;
        }
        g_return_val_if_reached (FALSE);
diff --git a/src/itdb_itunesdb.c b/src/itdb_itunesdb.c
index ed66e98..3796445 100644
--- a/src/itdb_itunesdb.c
+++ b/src/itdb_itunesdb.c
@@ -7002,11 +7002,9 @@ static gboolean itdb_create_directories (Itdb_Device 
*device, GError **error)
        devicefile = TRUE;
        break;
     case ITDB_IPOD_MODEL_IPHONE_1:
-       podpath = g_strdup ("iTunes_Control");
-       calconnotes = FALSE;
-       devicefile = TRUE;
-       break;
-    case ITDB_IPOD_MODEL_TOUCH_BLACK:
+    case ITDB_IPOD_MODEL_TOUCH_SILVER:
+    case ITDB_IPOD_MODEL_IPHONE_WHITE:
+    case ITDB_IPOD_MODEL_IPHONE_BLACK:
        podpath = g_strdup ("iTunes_Control");
        calconnotes = FALSE;
        devicefile = TRUE;
diff --git a/tools/hal-callout.c b/tools/hal-callout.c
index 8476281..77d8cee 100644
--- a/tools/hal-callout.c
+++ b/tools/hal-callout.c
@@ -184,8 +184,11 @@ get_model_name (const Itdb_IpodInfo *info)
        case ITDB_IPOD_GENERATION_CLASSIC_2:
                return g_strdup ("classic");
        case ITDB_IPOD_GENERATION_TOUCH_1:
+       case ITDB_IPOD_GENERATION_TOUCH_2:
                return g_strdup ("touch");
        case ITDB_IPOD_GENERATION_IPHONE_1:
+       case ITDB_IPOD_GENERATION_IPHONE_2:
+       case ITDB_IPOD_GENERATION_IPHONE_3:
                return g_strdup ("phone");
        case ITDB_IPOD_GENERATION_MOBILE:
                return g_strdup ("rokr");
@@ -243,8 +246,14 @@ get_generation (const Itdb_IpodInfo *info)
                return 6.5;
        case ITDB_IPOD_GENERATION_TOUCH_1:
                return 1.0;
+       case ITDB_IPOD_GENERATION_TOUCH_2:
+               return 2.0;
        case ITDB_IPOD_GENERATION_IPHONE_1:
                return 1.0;
+       case ITDB_IPOD_GENERATION_IPHONE_2:
+               return 2.0;
+       case ITDB_IPOD_GENERATION_IPHONE_3:
+               return 3.0;
        case ITDB_IPOD_GENERATION_MOBILE:
                return 1.0;
        }
@@ -269,19 +278,21 @@ get_color_name (const Itdb_IpodInfo *info)
        case ITDB_IPOD_MODEL_VIDEO_WHITE:
        case ITDB_IPOD_MODEL_SHUFFLE:
        case ITDB_IPOD_MODEL_MOBILE_1:
+       case ITDB_IPOD_MODEL_IPHONE_WHITE:
                return g_strdup ("white");
        case ITDB_IPOD_MODEL_MINI:
        case ITDB_IPOD_MODEL_NANO_SILVER:
        case ITDB_IPOD_MODEL_SHUFFLE_SILVER:
        case ITDB_IPOD_MODEL_CLASSIC_SILVER:
+       case ITDB_IPOD_MODEL_TOUCH_SILVER:
+       case ITDB_IPOD_MODEL_IPHONE_1:
                return g_strdup ("silver");
        case ITDB_IPOD_MODEL_VIDEO_U2:
        case ITDB_IPOD_MODEL_NANO_BLACK:
        case ITDB_IPOD_MODEL_VIDEO_BLACK:
        case ITDB_IPOD_MODEL_CLASSIC_BLACK:
        case ITDB_IPOD_MODEL_SHUFFLE_BLACK:
-       case ITDB_IPOD_MODEL_TOUCH_BLACK:
-       case ITDB_IPOD_MODEL_IPHONE_1:
+       case ITDB_IPOD_MODEL_IPHONE_BLACK:
                return g_strdup ("black");
        case ITDB_IPOD_MODEL_MINI_PINK:
        case ITDB_IPOD_MODEL_NANO_PINK:
@@ -421,7 +432,15 @@ get_icon_name (const Itdb_IpodInfo *info)
                }
 
        case ITDB_IPOD_GENERATION_TOUCH_1:
+               return g_strdup ("multimedia-player-apple-ipod-touch");
+       case ITDB_IPOD_GENERATION_TOUCH_2:
+               return g_strdup ("multimedia-player-apple-ipod-touch-2g");
        case ITDB_IPOD_GENERATION_IPHONE_1:
+               return g_strdup ("phone-apple-iphone");
+       case ITDB_IPOD_GENERATION_IPHONE_2:
+               return g_strdup ("phone-apple-iphone-3g");
+       case ITDB_IPOD_GENERATION_IPHONE_3:
+               return g_strdup ("phone-apple-iphone-3gs");
        case ITDB_IPOD_GENERATION_MOBILE:
                return g_strdup ("multimedia-player-apple-ipod");
        }

------------------------------------------------------------------------------
Return on Information:
Google Enterprise Search pays you back
Get the facts.
http://p.sf.net/sfu/google-dev2dev
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2

Reply via email to