Skip to content

Instantly share code, notes, and snippets.

@matux
Created February 3, 2014 20:49
Show Gist options
  • Save matux/8792100 to your computer and use it in GitHub Desktop.
Save matux/8792100 to your computer and use it in GitHub Desktop.
SIDeviceModel SIRetrieveDeviceModel(void)
{
if( cachedDeviceModel == SIDM_UNKNOWN )
{
// Get the system platform name
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = @(machine);
free(machine);
if( [platform isEqualToString:@"iPhone1,1"] ) cachedDeviceModel = SIDM_IPHONE_EDGE;
else if( [platform isEqualToString:@"iPhone1,2"] ) cachedDeviceModel = SIDM_IPHONE_3G;
else if( [platform isEqualToString:@"iPhone2,1"] ) cachedDeviceModel = SIDM_IPHONE_3GS;
else if( [platform isEqualToString:@"iPhone3,1"] ) cachedDeviceModel = SIDM_IPHONE_4;
else if( [platform isEqualToString:@"iPhone3,2"] ) cachedDeviceModel = SIDM_IPHONE_4_VERIZON_CDMA;
else if( [platform isEqualToString:@"iPhone3,3"] ) cachedDeviceModel = SIDM_IPHONE_4_VERIZON;
else if( [platform isEqualToString:@"iPhone4,1"] ) cachedDeviceModel = SIDM_IPHONE_4S;
else if( [platform isEqualToString:@"iPhone5,1"] ) cachedDeviceModel = SIDM_IPHONE_5;
else if( [platform containsString:@"iPhone"] ) cachedDeviceModel = SIDM_IPHONE_UNKNOWN_NEWER;
else if( [platform isEqualToString:@"iPod1,1"] ) cachedDeviceModel = SIDM_IPOD_1G;
else if( [platform isEqualToString:@"iPod2,1"] ) cachedDeviceModel = SIDM_IPOD_2G;
else if( [platform isEqualToString:@"iPod3,1"] ) cachedDeviceModel = SIDM_IPOD_3G;
else if( [platform isEqualToString:@"iPod4,1"] ) cachedDeviceModel = SIDM_IPOD_4G;
else if( [platform containsString:@"iPod"] ) cachedDeviceModel = SIDM_IPOD_UNKNOWN_NEWER;
else if( [platform isEqualToString:@"iPad1,1"] ) cachedDeviceModel = SIDM_IPAD;
else if( [platform isEqualToString:@"iPad2,1"] ) cachedDeviceModel = SIDM_IPAD_2;
else if( [platform isEqualToString:@"iPad2,2"] ) cachedDeviceModel = SIDM_IPAD_2_GSM;
else if( [platform isEqualToString:@"iPad2,3"] ) cachedDeviceModel = SIDM_IPAD_2_CDMA;
else if( [platform isEqualToString:@"iPad2,4"] ) cachedDeviceModel = SIDM_IPAD_2_R2;
else if( [platform isEqualToString:@"iPad3,1"] ) cachedDeviceModel = SIDM_IPAD_3;
else if( [platform isEqualToString:@"iPad3,2"] ) cachedDeviceModel = SIDM_IPAD_3_CDMA;
else if( [platform isEqualToString:@"iPad3,3"] ) cachedDeviceModel = SIDM_IPAD_3_GSM;
else if( [platform containsString:@"iPad"] ) cachedDeviceModel = SIDM_IPAD_UNKNOWN_NEWER;
else if( [platform containsString:@"i386"] ) cachedDeviceModel = SIDM_SIMULATOR;
else if( [platform containsString:@"x86_64"] ) cachedDeviceModel = SIDM_SIMULATOR;
else cachedDeviceModel = SIDM_UNKNOWN;
}
return cachedDeviceModel;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment