NewsBlur/clients/ios/Other Sources/Overshare Kit/UIDevice+OSKHardware.m
2014-01-06 17:55:14 -08:00

98 lines
4.9 KiB
Objective-C
Executable file

//
// UIDevice+OSKHardware
// Overshare
//
// Created by Jared Sinclair on 10/10/13.
// Copyright (c) 2013 Overshare Kit. All rights reserved.
//
// Based on code by InderKumarRathmore at https://github.com/InderKumarRathore/UIDevice-Hardware
//
#import "UIDevice+OSKHardware.h"
#include <sys/types.h>
#include <sys/sysctl.h>
@implementation UIDevice (OSKHardware)
- (NSString*)osk_hardwareString {
size_t size = 100;
char *hw_machine = malloc(size);
int name[] = {CTL_HW,HW_MACHINE};
sysctl(name, 2, hw_machine, &size, NULL, 0);
NSString *hardware = [NSString stringWithUTF8String:hw_machine];
free(hw_machine);
return hardware;
}
- (OSKHardwareType)osk_hardwareType {
NSString *hardware = [self osk_hardwareString];
if ([hardware isEqualToString:@"iPhone1,1"]) return OSKHardwareType_iPhone_2G;
if ([hardware isEqualToString:@"iPhone1,2"]) return OSKHardwareType_iPhone_3G;
if ([hardware isEqualToString:@"iPhone2,1"]) return OSKHardwareType_iPhone_3GS;
if ([hardware isEqualToString:@"iPhone3,1"]) return OSKHardwareType_iPhone_4;
if ([hardware isEqualToString:@"iPhone3,2"]) return OSKHardwareType_iPhone_4;
if ([hardware isEqualToString:@"iPhone3,3"]) return OSKHardwareType_iPhone_4_CDMA;
if ([hardware isEqualToString:@"iPhone4,1"]) return OSKHardwareType_iPhone_4S;
if ([hardware isEqualToString:@"iPhone5,1"]) return OSKHardwareType_iPhone_5;
if ([hardware isEqualToString:@"iPhone5,2"]) return OSKHardwareType_iPhone_5_CDMA_GSM;
if ([hardware isEqualToString:@"iPhone5,3"]) return OSKHardwareType_iPhone_5C;
if ([hardware isEqualToString:@"iPhone5,4"]) return OSKHardwareType_iPhone_5C_CDMA_GSM;
if ([hardware isEqualToString:@"iPhone6,1"]) return OSKHardwareType_iPhone_5S;
if ([hardware isEqualToString:@"iPhone6,2"]) return OSKHardwareType_iPhone_5S_CDMA_GSM;
if ([hardware isEqualToString:@"iPod1,1"]) return OSKHardwareType_iPodTouch_1G;
if ([hardware isEqualToString:@"iPod2,1"]) return OSKHardwareType_iPodTouch_2G;
if ([hardware isEqualToString:@"iPod3,1"]) return OSKHardwareType_iPodTouch_3G;
if ([hardware isEqualToString:@"iPod4,1"]) return OSKHardwareType_iPodTouch_4G;
if ([hardware isEqualToString:@"iPod5,1"]) return OSKHardwareType_iPodTouch_5G;
if ([hardware isEqualToString:@"iPad1,1"]) return OSKHardwareType_iPad;
if ([hardware isEqualToString:@"iPad1,2"]) return OSKHardwareType_iPad_3G;
if ([hardware isEqualToString:@"iPad2,1"]) return OSKHardwareType_iPad_2_WIFI;
if ([hardware isEqualToString:@"iPad2,2"]) return OSKHardwareType_iPad_2;
if ([hardware isEqualToString:@"iPad2,3"]) return OSKHardwareType_iPad_2_CDMA;
if ([hardware isEqualToString:@"iPad2,4"]) return OSKHardwareType_iPad_2;
if ([hardware isEqualToString:@"iPad2,5"]) return OSKHardwareType_iPad_Mini_WIFI;
if ([hardware isEqualToString:@"iPad2,6"]) return OSKHardwareType_iPad_Mini;
if ([hardware isEqualToString:@"iPad2,7"]) return OSKHardwareType_iPad_Mini_WIFI_CDMA;
if ([hardware isEqualToString:@"iPad3,1"]) return OSKHardwareType_iPad_3_WIFI;
if ([hardware isEqualToString:@"iPad3,2"]) return OSKHardwareType_iPad_3_WIFI_CDMA;
if ([hardware isEqualToString:@"iPad3,3"]) return OSKHardwareType_iPad_3;
if ([hardware isEqualToString:@"iPad3,4"]) return OSKHardwareType_iPad_4_WIFI;
if ([hardware isEqualToString:@"iPad3,5"]) return OSKHardwareType_iPad_4;
if ([hardware isEqualToString:@"iPad3,6"]) return OSKHardwareType_iPad_4_GSM_CDMA;
if ([hardware isEqualToString:@"iPad4,1"]) return OSKHardwareType_iPad_Air_WIFI;
if ([hardware isEqualToString:@"iPad4,2"]) return OSKHardwareType_iPad_Air_CELLULAR;
if ([hardware isEqualToString:@"iPad4,4"]) return OSKHardwareType_iPad_Mini_2G_WIFI;
if ([hardware isEqualToString:@"iPad4,5"]) return OSKHardwareType_iPad_Mini_2G_CELLULAR;
if ([hardware isEqualToString:@"i386"]) return OSKHardwareType_Simulator;
if ([hardware isEqualToString:@"x86_64"]) return OSKHardwareType_Simulator;
return OSKHardwareType_NotAvailable;
}
- (BOOL)osk_airDropIsAvailable {
BOOL isAvailable = NO;
OSKHardwareType hardwareType = [self osk_hardwareType];
if (OSKHardwareType_NotAvailable) {
isAvailable = YES;
} else {
NSString *hardwareString = [self osk_hardwareString];
if ([hardwareString hasPrefix:@"iPhone"]) {
isAvailable = (hardwareType >= OSKHardwareType_iPhone_5);
}
else if ([hardwareString hasPrefix:@"iPad"]) {
isAvailable = (hardwareType >= OSKHardwareType_iPad_4_WIFI);
}
else if ([hardwareString hasPrefix:@"iPod"]) {
isAvailable = (hardwareType >= OSKHardwareType_iPodTouch_5G);
}
}
return isAvailable;
}
@end