From: liangzhenying <867174124@qq.com>
Date: Mon, 1 Apr 2024 02:33:10 +0000 (+0800)
Subject: 新增设备管理类
X-Git-Tag: é¿éé´æ~5
X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=e4ef871c803e2a62b26e2293bb4995cc065b1734;p=mirrors%2FMouseSdk-MacOS.git
新增设备管理类
---
diff --git a/MouseSdk/AiMouseSdk/AiFrameManager.h b/MouseSdk/AiMouseSdk/AiFrameManager.h
index 03109a3..71a82db 100644
--- a/MouseSdk/AiMouseSdk/AiFrameManager.h
+++ b/MouseSdk/AiMouseSdk/AiFrameManager.h
@@ -14,6 +14,9 @@ NS_ASSUME_NONNULL_BEGIN
/// æ¥æ¶å°æ°æ®å¸§
- (void)didReceiveFrameData:(NSData *)data;
+
+/// æ¶å°hidé´ææ¶æ®
+- (void)didReceiveHidAuthData:(NSData *)data;
@end
NS_ASSUME_NONNULL_END
diff --git a/MouseSdk/AiMouseSdk/AiFrameManager.m b/MouseSdk/AiMouseSdk/AiFrameManager.m
index e02fdad..056c7f8 100644
--- a/MouseSdk/AiMouseSdk/AiFrameManager.m
+++ b/MouseSdk/AiMouseSdk/AiFrameManager.m
@@ -20,6 +20,8 @@
self.recvData = [[NSMutableData alloc] init];
}
else if([str isEqualTo:@"$$-\n"]){
+ NSString *str1 = [AiMouseTools dataToHexString:self.recvData];
+ NSLog(@"æ¶å°å®æ´æ°æ® = %@",str1);
//ç»æ
if(self.didReceiveFullData){
self.didReceiveFullData(self.recvData);
@@ -30,4 +32,35 @@
[self.recvData appendData:data];
}
}
+
+- (void)didReceiveHidAuthData:(NSData *)data{
+ NSString *str = [AiMouseTools dataToHexString:data];
+ NSLog(@"æ¶å°æ°æ® = %@",str);
+ if ([str hasPrefix:@"2D2424"]) {
+ //å¼å§
+ NSData *subData = [data subdataWithRange:NSMakeRange(3, data.length - 4)];
+ NSString *str1 = [AiMouseTools dataToHexString:subData];
+ NSLog(@"宿¶æ°æ® = %@",str1);
+ self.recvData = [[NSMutableData alloc] initWithData:subData];
+ }
+ else if([str hasSuffix:@"24242D0A"]){
+ NSData *subData = [data subdataWithRange:NSMakeRange(0, data.length - 5)];
+ NSString *str1 = [AiMouseTools dataToHexString:subData];
+ NSLog(@"宿¶æ°æ® = %@",str1);
+ [self.recvData appendData:subData];
+ NSString *all = [AiMouseTools dataToUtf8String:self.recvData];
+ NSLog(@"宿´æ°æ® %@\n %@",[AiMouseTools dataToHexString:self.recvData],all);
+ //ç»æ
+ if(self.didReceiveFullData){
+ self.didReceiveFullData(self.recvData);
+ }
+ }
+ else{
+ //æ°æ®
+ NSData *subData = [data subdataWithRange:NSMakeRange(0, data.length - 1)];
+ NSString *str1 = [AiMouseTools dataToHexString:subData];
+ NSLog(@"宿¶æ°æ® = %@",str1);
+ [self.recvData appendData:data];
+ }
+}
@end
diff --git a/MouseSdk/AiMouseSdk/AiMouse.m b/MouseSdk/AiMouseSdk/AiMouse.m
index 25892f5..9a3f06b 100644
--- a/MouseSdk/AiMouseSdk/AiMouse.m
+++ b/MouseSdk/AiMouseSdk/AiMouse.m
@@ -164,10 +164,17 @@
NSString *str = [AiMouseTools dataToUtf8String:data];
NSString *str2 = [AiMouseTools2 fixDeviceData:str];
NSDictionary *dict = [AiMouseTools stringToDictionary:str2];
+
+ if(self.connectType == AiMouseConnectType_hid && dict == nil){
+ [self.frameManager didReceiveHidAuthData:data];
+ return;
+ }
+
if (dict == nil) {
//é¼ æ ç§»å¨æ°æ®ï¼ä¸å¤ç
return;
}
+
[self showLog:[NSString stringWithFormat:@"fixå = %@",str]];
[self showLog:[NSString stringWithFormat:@"fixå = %@",str2]];
if(dict[@"set_config"]){
@@ -236,8 +243,39 @@
}
#pragma mark - other
- (void)sendAuthData:(NSData *)data{
- if (self.delegate) {
- [self.delegate aiMouseSendAuthData:data];
+ if(self.connectType == AiMouseConnectType_bluetooth){
+ NSString *str = [AiMouseTools dataToUtf8String:data];
+ NSMutableString *str1 = [NSMutableString stringWithString:str];
+ NSString *sendStr = [NSString stringWithFormat:@"-$$%@$$-\n",str1];
+ NSData *sendData = [sendStr dataUsingEncoding:NSUTF8StringEncoding];
+ [self showLog:[NSString stringWithFormat:@"åéçé´ææ°æ® = %@",sendStr]];
+
+ if (self.delegate) {
+ [self.delegate aiMouseSendAuthData:sendData];
+ }
+ }
+ else{
+ NSString *str = [AiMouseTools dataToUtf8String:data];
+// NSString *str = @"0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz";
+
+ NSString *sendStr = [NSString stringWithFormat:@"-$$%@$$-",str];
+ NSData *sendData = [sendStr dataUsingEncoding:NSUTF8StringEncoding];
+ [self showLog:[NSString stringWithFormat:@"åéçé´ææ°æ® = %@",sendStr]];
+
+ NSInteger len = 39;
+ for (NSInteger i = 0; i < sendData.length;i = i+len) {
+ NSData *subData;
+ if (i + len > data.length) {
+ subData = [sendData subdataWithRange:NSMakeRange(i, sendData.length - i)];
+ }
+ else{
+ subData = [sendData subdataWithRange:NSMakeRange(i, len)];
+ }
+ if (self.delegate) {
+ sleep(1);
+ [self.delegate aiMouseSendAuthData:subData];
+ }
+ }
}
}
- (void)sendDeviceInfoData:(NSData *)data{
diff --git a/MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate b/MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate
index fc4e3f5..1b585d5 100644
Binary files a/MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate and b/MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
index 2d6da70..8cf9284 100644
--- a/MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
+++ b/MouseSdk/MouseSdk.xcworkspace/xcuserdata/apple.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -32,37 +32,5 @@
stopOnStyle = "0">
-
-
-
-
-
-
-
-
diff --git a/MouseSdk/MouseSdk/BleManager.m b/MouseSdk/MouseSdk/BleManager.m
index fbc625f..b0c5082 100644
--- a/MouseSdk/MouseSdk/BleManager.m
+++ b/MouseSdk/MouseSdk/BleManager.m
@@ -47,7 +47,7 @@
#pragma mark - CBCentralManagerDelegate
- (void)centralManagerDidUpdateState:(nonnull CBCentralManager *)central {
- [self showLog:[NSString stringWithFormat:@"设å¤ç¶æ = %@",@(central.state)]];
+ [self showLog:[NSString stringWithFormat:@"èçç¶æ = %@",@(central.state)]];
switch (central.state) {
case CBManagerStateUnknown:
diff --git a/MouseSdk/MouseSdk/DeviceManger.h b/MouseSdk/MouseSdk/DeviceManger.h
index 234f4ab..91f9a0f 100644
--- a/MouseSdk/MouseSdk/DeviceManger.h
+++ b/MouseSdk/MouseSdk/DeviceManger.h
@@ -24,6 +24,8 @@ NS_ASSUME_NONNULL_BEGIN
/// è·å设å¤ä¿¡æ¯
- (void)getDeviceInfo:(void (^)(AiMouseDeviceInfo *deviceInfo,NSError *error))completation;
+-(void)startAuthentication;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/MouseSdk/MouseSdk/DeviceManger.m b/MouseSdk/MouseSdk/DeviceManger.m
index 4a2a3af..fbeb4b0 100644
--- a/MouseSdk/MouseSdk/DeviceManger.m
+++ b/MouseSdk/MouseSdk/DeviceManger.m
@@ -99,4 +99,8 @@
if(self.connectStateCallBack)self.connectStateCallBack(AiMouseConnectType_bluetooth,false);
[[AiMouse shared] switchConnect:AiMouseConnectType_hid];
}
+
+-(void)startAuthentication{
+ [self.hid startAuthentication];
+}
@end
diff --git a/MouseSdk/MouseSdk/HidManager.h b/MouseSdk/MouseSdk/HidManager.h
index 8c32827..c1e4e62 100644
--- a/MouseSdk/MouseSdk/HidManager.h
+++ b/MouseSdk/MouseSdk/HidManager.h
@@ -18,6 +18,9 @@ NS_ASSUME_NONNULL_BEGIN
/// è·å设å¤ä¿¡æ¯
- (void)getDeviceInfo:(void (^)(AiMouseDeviceInfo *deviceInfo,NSError *error))completation;
+
+
+-(void)startAuthentication;
@end
NS_ASSUME_NONNULL_END
diff --git a/MouseSdk/MouseSdk/HidManager.m b/MouseSdk/MouseSdk/HidManager.m
index 60ea2c1..838d5d1 100644
--- a/MouseSdk/MouseSdk/HidManager.m
+++ b/MouseSdk/MouseSdk/HidManager.m
@@ -87,13 +87,19 @@ static void hidAppearDevice(void *inContext,IOReturn inResult,void *inSender,IOH
// PrimaryUsagePage=1 PrimaryUsage=6,é´æ
// PrimaryUsagePage=65283 PrimaryUsage=0ï¼ai
if(PrimaryUsagePage == 1 && PrimaryUsage == 0){
+ //设å¤ä¿¡æ¯
[HidManager shared].deviceInfoCha = inIOHIDDeviceRef;
- }
- else if(PrimaryUsagePage == 1 && PrimaryUsage == 6){
+ //é´æ
[HidManager shared].authCha = inIOHIDDeviceRef;
[[HidManager shared] startAuthentication];
}
+ else if(PrimaryUsagePage == 1 && PrimaryUsage == 6){
+// //é´æ
+// [HidManager shared].authCha = inIOHIDDeviceRef;
+// [[HidManager shared] startAuthentication];
+ }
else if(PrimaryUsagePage == 65283 && PrimaryUsage == 0){
+ //ai
[HidManager shared].aiCha = inIOHIDDeviceRef;
}
@@ -114,7 +120,7 @@ static void hidDisAppearDevice(void *inContext,IOReturn inResult,void *inSender,
static void hidReceiveData(void* context, IOReturn result, void* sender, IOHIDReportType type, uint32_t reportID, uint8_t *report,CFIndex reportLength){
NSInteger len = get_data_len(report, reportLength);
NSData *data = [[NSData alloc] initWithBytes:report length:len];
- [[HidManager shared] showLog:[NSString stringWithFormat:@"device = %@ \n [receive] = %@",sender,[AiMouseTools dataToHexString:data]]];
+ [[HidManager shared] showLog:[NSString stringWithFormat:@"[receive] = %@",[AiMouseTools dataToHexString:data]]];
uint32_t PrimaryUsagePage = IOHIDDevGetUInt32Property(sender, CFSTR(kIOHIDPrimaryUsagePageKey));
uint32_t PrimaryUsage = IOHIDDevGetUInt32Property(sender, CFSTR(kIOHIDPrimaryUsageKey));
@@ -123,10 +129,6 @@ static void hidReceiveData(void* context, IOReturn result, void* sender, IOHIDRe
[[HidManager shared] showLog:@"deviceæ°æ®"];
[[AiMouse shared] sendDeviceDataToSdk:data];
}
- else if(PrimaryUsagePage == 1 && PrimaryUsage == 6){
- [[HidManager shared] showLog:@"é´ææ°æ®"];
- [[AiMouse shared] sendAuthDataToSdk:data];
- }
else if(PrimaryUsagePage == 65283 && PrimaryUsage == 0){
[[HidManager shared] showLog:@"AIæ°æ®"];
[[AiMouse shared] sendAiDataToSdk:data];
@@ -208,10 +210,15 @@ static uint32_t IOHIDDevGetUInt32Property(IOHIDDeviceRef inIOHIDDeviceRef, CFStr
}
-(void)sendData:(NSData *)data toDevice:(IOHIDDeviceRef)device{
- [self showLog:[NSString stringWithFormat:@"å¼å§åé %@\n [send] %@",device,[AiMouseTools dataToHexString:data]]];
+ if(device == nil){
+ [self showLog:@"请å
è¿ä¸è®¾å¤"];
+ return;
+ }
+ [self showLog:[NSString stringWithFormat:@"å¼å§åé[send] %@\n%@",[AiMouseTools dataToHexString:data],[AiMouseTools dataToUtf8String:data]]];
+
IOReturn ret = IOHIDDeviceSetReport(device, kIOHIDReportTypeOutput, 0, data.bytes, data.length);
if (ret != kIOReturnSuccess) {
- [self showLog:@"åé失败!"];
+ [self showLog:[NSString stringWithFormat:@"åé失败! code = %d",ret]];
}else{
[self showLog:@"åéæå!"];
}
@@ -239,4 +246,5 @@ static inline int get_data_len(uint8_t *buf, u_long len) {
while (buf[url_len] != 0x00) url_len++;
return url_len;
}
+
@end
diff --git a/MouseSdk/MouseSdk/ViewController.m b/MouseSdk/MouseSdk/ViewController.m
index 60a34cb..afa7c09 100644
--- a/MouseSdk/MouseSdk/ViewController.m
+++ b/MouseSdk/MouseSdk/ViewController.m
@@ -52,6 +52,15 @@
btn.state = 1;
[self.view addSubview:btn];
}
+ {
+ NSButton *btn = [[NSButton alloc]initWithFrame:NSMakeRect(50, self.view.bounds.size.height - 0, 100, 45)];
+ btn.bordered = true;
+ btn.title = @"é´æ";
+ [btn setTarget:self];
+ [btn setAction:@selector(authAction)];
+ btn.state = 1;
+ [self.view addSubview:btn];
+ }
{
NSTextField *label = [[NSTextField alloc] initWithFrame:CGRectMake(180, self.view.bounds.size.height - 80, 300, 35)];
label.editable = NO;
@@ -144,4 +153,8 @@
[ws connectStateDidChange:type connectState:isConnected];
};
}
+
+- (void)authAction{
+ [[DeviceManger shared] startAuthentication];
+}
@end