summaryrefslogtreecommitdiffstats
path: root/src/osx/smc.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/osx/smc.hpp')
-rw-r--r--src/osx/smc.hpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/osx/smc.hpp b/src/osx/smc.hpp
new file mode 100644
index 0000000..0b851ad
--- /dev/null
+++ b/src/osx/smc.hpp
@@ -0,0 +1,69 @@
+#pragma once
+
+#define VERSION "0.01"
+
+#define KERNEL_INDEX_SMC 2
+
+#define SMC_CMD_READ_BYTES 5
+#define SMC_CMD_WRITE_BYTES 6
+#define SMC_CMD_READ_INDEX 8
+#define SMC_CMD_READ_KEYINFO 9
+#define SMC_CMD_READ_PLIMIT 11
+#define SMC_CMD_READ_VERS 12
+
+#define DATATYPE_FPE2 "fpe2"
+#define DATATYPE_UINT8 "ui8 "
+#define DATATYPE_UINT16 "ui16"
+#define DATATYPE_UINT32 "ui32"
+#define DATATYPE_SP78 "sp78"
+
+// key values
+#define SMC_KEY_CPU_TEMP "TC0P"
+#define SMC_KEY_CPU1_TEMP "TC1C"
+#define SMC_KEY_CPU2_TEMP "TC2C" // etc
+#define SMC_KEY_FAN0_RPM_CUR "F0Ac"
+
+typedef struct {
+ char major;
+ char minor;
+ char build;
+ char reserved[1];
+ UInt16 release;
+} SMCKeyData_vers_t;
+
+typedef struct {
+ UInt16 version;
+ UInt16 length;
+ UInt32 cpuPLimit;
+ UInt32 gpuPLimit;
+ UInt32 memPLimit;
+} SMCKeyData_pLimitData_t;
+
+typedef struct {
+ UInt32 dataSize;
+ UInt32 dataType;
+ char dataAttributes;
+} SMCKeyData_keyInfo_t;
+
+typedef char SMCBytes_t[32];
+
+typedef struct {
+ UInt32 key;
+ SMCKeyData_vers_t vers;
+ SMCKeyData_pLimitData_t pLimitData;
+ SMCKeyData_keyInfo_t keyInfo;
+ char result;
+ char status;
+ char data8;
+ UInt32 data32;
+ SMCBytes_t bytes;
+} SMCKeyData_t;
+
+typedef char UInt32Char_t[5];
+
+typedef struct {
+ UInt32Char_t key;
+ UInt32 dataSize;
+ UInt32Char_t dataType;
+ SMCBytes_t bytes;
+} SMCVal_t; \ No newline at end of file