Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
iOSDeviceType.cs
Go to the documentation of this file.
1 // Copyright (c) 2014 Silicon Studio Corp. (http://siliconstudio.co.jp)
2 // This file is distributed under GPL v3. See LICENSE.md for details.
3 #if SILICONSTUDIO_PLATFORM_IOS
4 using System;
5 using System.Runtime.InteropServices;
6 using MonoTouch;
7 
8 namespace SiliconStudio.Paradox.Graphics.Regression
9 {
10  public class iOSDeviceType
11  {
12  public enum HardwareModel
13  {
14  iPhone1G,
15  iPhone3G,
16  iPhone3GS,
17  iPhone4,
18  iPhone4S,
19  iPhone5,
20  iPhone5S,
21  iPod1G,
22  iPod2G,
23  iPod3G,
24  iPod4G,
25  iPod5G,
26  iPad,
27  iPad2,
28  iPad3,
29  iPad4,
30  iPadAir,
31  Simulator,
32  Unknown
33  }
34 
35  [DllImport(Constants.SystemLibrary)]
36  static extern int sysctlbyname([MarshalAs(UnmanagedType.LPStr)] string property, // name of the property
37  IntPtr output, // output
38  IntPtr oldLen, // IntPtr.Zero
39  IntPtr newp, // IntPtr.Zero
40  uint newlen // 0
41  );
42 
43  public static HardwareModel Version
44  {
45  get
46  {
47  // Query length
48  var lengthPtr = Marshal.AllocHGlobal(sizeof(int));
49  sysctlbyname("hw.machine", IntPtr.Zero, lengthPtr, IntPtr.Zero, 0);
50 
51  var length = Marshal.ReadInt32(lengthPtr);
52 
53  // Empty string?
54  if (length == 0)
55  {
56  Marshal.FreeHGlobal(lengthPtr);
57  return HardwareModel.Unknown;
58  }
59 
60  // get the hardware string
61  var hardwareStrPtr = Marshal.AllocHGlobal(length);
62  sysctlbyname("hw.machine", hardwareStrPtr, lengthPtr, IntPtr.Zero, 0);
63 
64  // convert the native string into a C# string
65  var hardwareStr = Marshal.PtrToStringAnsi(hardwareStrPtr);
66  var ret = HardwareModel.Unknown;
67 
68 
69  // determine which hardware we are running
70  if (hardwareStr == "iPhone1,1")
71  ret = HardwareModel.iPhone1G;
72  else if (hardwareStr == "iPhone1,2")
73  ret = HardwareModel.iPhone3G;
74  else if (hardwareStr == "iPhone2,1")
75  ret = HardwareModel.iPhone3GS;
76  else if (hardwareStr.StartsWith("iPhone3"))
77  ret = HardwareModel.iPhone4;
78  else if (hardwareStr.StartsWith("iPhone4"))
79  ret = HardwareModel.iPhone4S;
80  else if (hardwareStr.StartsWith("iPhone5"))
81  ret = HardwareModel.iPhone5;
82  else if (hardwareStr.StartsWith("iPhone6"))
83  ret = HardwareModel.iPhone5S;
84  else if (hardwareStr.StartsWith("iPod1"))
85  ret = HardwareModel.iPod1G;
86  else if (hardwareStr.StartsWith("iPod2"))
87  ret = HardwareModel.iPod2G;
88  else if (hardwareStr.StartsWith("iPod3"))
89  ret = HardwareModel.iPod3G;
90  else if (hardwareStr.StartsWith("iPod4"))
91  ret = HardwareModel.iPod4G;
92  else if (hardwareStr.StartsWith("iPod5"))
93  ret = HardwareModel.iPod5G;
94  else if (hardwareStr == "iPad1,1")
95  ret = HardwareModel.iPad;
96  else if (hardwareStr.StartsWith("iPad2"))
97  ret = HardwareModel.iPad2;
98  else if (hardwareStr == "iPad3,1" || hardwareStr == "iPad3,2" || hardwareStr == "iPad3,3")
99  ret = HardwareModel.iPad3;
100  else if (hardwareStr == "iPad3,4" || hardwareStr == "iPad3,5" || hardwareStr == "iPad3,6")
101  ret = HardwareModel.iPad4;
102  else if (hardwareStr.StartsWith("iPad4"))
103  ret = HardwareModel.iPadAir;
104  else if (hardwareStr == "i386")
105  ret = HardwareModel.Simulator;
106 
107  // Cleanup
108  Marshal.FreeHGlobal(lengthPtr);
109  Marshal.FreeHGlobal(hardwareStrPtr);
110 
111  return ret;
112  }
113  }
114  }
115 }
116 #endif
global::MonoTouch.Constants Constants
Definition: TouchRunner.cs:42