iStats 1.5.2 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 50aba391f0764e8149790c7cc387ab03d1fa5b43
4
- data.tar.gz: ab72f3980510dfeccfa08d19436a1522826bcada
3
+ metadata.gz: 3d4524a43b23dc2f8c2ec7214001e9f167efdee9
4
+ data.tar.gz: d73cade1cc7a3cc4004e1fd39f6ac7b2d0e579a2
5
5
  SHA512:
6
- metadata.gz: 8c3a931e317a03b919d8c1e9066b8786a43f635e9d7a75cdb3acd9f8832344db016b5ede940f8a4dade6a1a339330cd6908b207ee10273882ca2e0e5b33f4be1
7
- data.tar.gz: 32694d5487bba3e4c4f60b230c193cb300088625d0149e8554cdab298dae97db4838099c2fd7c7016bc32db41313700630c42dc4e6f5d5bcfc39ff8897eb8e78
6
+ metadata.gz: 43be157566d393bcaf162bf0f8609e7526f469c814dca9a1aad59453a9c124827b7893117a4f8190acee93cca0cf59038a2709ad49d6eb33293f2b81e23648c4
7
+ data.tar.gz: d5ddf3e45144678fa0b7f5fd8752ea1741660b3d7416ae521f67e02ba01dd54ebeb49d34cd7c2b3ec8b2eda53ad733facc6b4ca4224a18c979f3e371254102c6
@@ -44,22 +44,14 @@ UInt32 _strtoul(char *str, int size, int base)
44
44
  return total;
45
45
  }
46
46
 
47
- float _strtof(unsigned char *str, int size, int e)
48
- {
49
- float total = 0;
50
- int i;
51
-
52
- for (i = 0; i < size; i++)
53
- {
54
- if (i == (size - 1))
55
- total += (str[i] & 0xff) >> e;
56
- else
57
- total += str[i] << (size - 1 - i) * (8 - e);
58
- }
59
-
60
- total += (str[size-1] & 0x03) * 0.25;
61
-
62
- return total;
47
+ float _flttof(unsigned char *str) {
48
+ fltUnion flt;
49
+ flt.b[0] = str[0];
50
+ flt.b[1] = str[1];
51
+ flt.b[2] = str[2];
52
+ flt.b[3] = str[3];
53
+
54
+ return flt.f;
63
55
  }
64
56
 
65
57
  void _ultostr(char *str, UInt32 val)
@@ -193,11 +185,25 @@ float SMCGetFanSpeed(int fanNum)
193
185
  {
194
186
  SMCVal_t val;
195
187
  kern_return_t result;
196
-
197
188
  UInt32Char_t key;
198
189
  sprintf(key, SMC_KEY_FAN_SPEED, fanNum);
190
+
199
191
  result = SMCReadKey(key, &val);
200
- return _strtof(val.bytes, val.dataSize, 2);
192
+ if (result == kIOReturnSuccess) {
193
+ // read succeeded - check returned value
194
+ if (val.dataSize > 0) {
195
+ if (strcmp(val.dataType, DATATYPE_FPE2) == 0) {
196
+ // convert fpe2 value to rpm
197
+ int intValue = (unsigned char)val.bytes[0] * 256 + (unsigned char)val.bytes[1];
198
+ return intValue / 4.0;
199
+ } else if (strcmp(val.dataType, DATATYPE_FLT) == 0) {
200
+ // 2018 models have the ftp type for this key
201
+ return _flttof((unsigned char *)val.bytes);
202
+ }
203
+ }
204
+ }
205
+ // read failed
206
+ return 0.0;
201
207
  }
202
208
 
203
209
  int SMCGetFanNumber(char *key)
@@ -327,10 +333,9 @@ VALUE BATTERY_STATS = Qnil;
327
333
  * We never call this, Ruby does.
328
334
  */
329
335
  void Init_osx_stats() {
330
-
331
336
  SMC_INFO = rb_define_module("SMC_INFO");
332
337
  rb_define_method(SMC_INFO,"is_key_supported",method_SMCKeySupported,1);
333
-
338
+
334
339
  CPU_STATS = rb_define_module("CPU_STATS");
335
340
  rb_define_method(CPU_STATS, "get_cpu_temp", method_get_cpu_temp, 0);
336
341
 
@@ -347,13 +352,12 @@ void Init_osx_stats() {
347
352
  rb_define_method(BATTERY_STATS, "get_battery_charge", method_get_battery_charge, 0);
348
353
  }
349
354
 
350
- VALUE method_SMCKeySupported(VALUE self, VALUE key)
351
- {
355
+ VALUE method_SMCKeySupported(VALUE self, VALUE key) {
352
356
  char *keyString = RSTRING_PTR(key);
353
357
  SMCOpen();
354
358
  double temp = SMCGetTemperature(keyString);
355
359
  SMCClose();
356
-
360
+
357
361
  return rb_float_new(temp);
358
362
  }
359
363
 
@@ -36,14 +36,16 @@
36
36
  #define DATATYPE_UINT16 "ui16"
37
37
  #define DATATYPE_UINT32 "ui32"
38
38
  #define DATATYPE_SP78 "sp78"
39
+ #define DATATYPE_FLT "flt "
39
40
 
40
41
  // key values
41
42
  #define SMC_KEY_CPU_TEMP "TC0P"
42
43
  #define SMC_KEY_FAN_SPEED "F%dAc"
44
+ #define SMC_KEY_MIN_FAN_SPEED "F%dMn"
45
+ #define SMC_KEY_MAX_FAN_SPEED "F%dMx"
43
46
  #define SMC_KEY_FAN_NUM "FNum"
44
47
  #define SMC_KEY_BATTERY_TEMP "TB0T"
45
48
 
46
-
47
49
  typedef struct {
48
50
  char major;
49
51
  char minor;
@@ -89,6 +91,11 @@ typedef struct {
89
91
  SMCBytes_t bytes;
90
92
  } SMCVal_t;
91
93
 
94
+ typedef union _data {
95
+ float f;
96
+ char b[4];
97
+ } fltUnion;
98
+
92
99
  // prototypes
93
100
  float SMCGetFanSpeed(int fanNum);
94
101
  int SMCGetFanNumber(char *key);
@@ -1,3 +1,3 @@
1
1
  module IStats
2
- VERSION = '1.5.2'
2
+ VERSION = '1.6.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iStats
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris911
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-19 00:00:00.000000000 Z
11
+ date: 2018-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sparkr
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  version: '0'
137
137
  requirements: []
138
138
  rubyforge_project:
139
- rubygems_version: 2.6.11
139
+ rubygems_version: 2.5.2
140
140
  signing_key:
141
141
  specification_version: 4
142
142
  summary: Stats for your mac