mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
48 lines
1.5 KiB
Objective-C
48 lines
1.5 KiB
Objective-C
//
|
|
// reader.m
|
|
// Sensors
|
|
//
|
|
// Created by Serhiy Mytrovtsiy on 06/05/2021.
|
|
// Using Swift 5.0.
|
|
// Running on macOS 10.15.
|
|
//
|
|
// Copyright © 2021 Serhiy Mytrovtsiy. All rights reserved.
|
|
//
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#import "bridge.h"
|
|
|
|
NSDictionary*AppleSiliconSensors(int32_t page, int32_t usage, int32_t type) {
|
|
NSDictionary* dictionary = @{@"PrimaryUsagePage":@(page),@"PrimaryUsage":@(usage)};
|
|
|
|
IOHIDEventSystemClientRef system = IOHIDEventSystemClientCreate(kCFAllocatorDefault);
|
|
IOHIDEventSystemClientSetMatching(system, (__bridge CFDictionaryRef)dictionary);
|
|
CFArrayRef services = IOHIDEventSystemClientCopyServices(system);
|
|
if (services == nil) {
|
|
return nil;
|
|
}
|
|
|
|
NSMutableDictionary*dict = [NSMutableDictionary dictionary];
|
|
for (int i = 0; i < CFArrayGetCount(services); i++) {
|
|
IOHIDServiceClientRef service = (IOHIDServiceClientRef)CFArrayGetValueAtIndex(services, i);
|
|
NSString* name = CFBridgingRelease(IOHIDServiceClientCopyProperty(service, CFSTR("Product")));
|
|
|
|
IOHIDEventRef event = IOHIDServiceClientCopyEvent(service, type, 0, 0);
|
|
if (event == nil) {
|
|
continue;
|
|
}
|
|
|
|
if (name && event) {
|
|
double value = IOHIDEventGetFloatValue(event, IOHIDEventFieldBase(type));
|
|
dict[name]=@(value);
|
|
}
|
|
|
|
CFRelease(event);
|
|
}
|
|
|
|
CFRelease(services);
|
|
CFRelease(system);
|
|
|
|
return dict;
|
|
}
|