泰凌微2代调通蓝牙模式
authorliangzhenying <867174124@qq.com>
Sat, 19 Apr 2025 03:51:55 +0000 (11:51 +0800)
committerliangzhenying <867174124@qq.com>
Sat, 19 Apr 2025 03:51:55 +0000 (11:51 +0800)
28 files changed:
MouseSdk/AiMouseSdk/AiMouseSdk.xcodeproj/project.pbxproj
MouseSdk/AiMouseSdk/AiMouseSdk/AiMouseSdk.m
MouseSdk/AiMouseSdk/AiMouseSdk/SbcConverter.h [moved from MouseSdk/AiMouseSdk/AiMouseSdk/AiAudioManager.h with 86% similarity]
MouseSdk/AiMouseSdk/AiMouseSdk/SbcConverter.m [moved from MouseSdk/AiMouseSdk/AiMouseSdk/AiAudioManager.m with 51% similarity]
MouseSdk/AiMouseSdk/ByteDance/ByteDanceSdk.h
MouseSdk/AiMouseSdk/ByteDance/ByteDanceSdk.m
MouseSdk/AiMouseSdk/ByteDance/arm/lib/stb_app.h
MouseSdk/AiMouseSdk/ByteDance/arm/lib/stb_identify.a
MouseSdk/AiMouseSdk/ByteDance/arm/lib/stb_identify.so
MouseSdk/AiMouseSdk/ByteDance/x86_64/lib/stb_app.h
MouseSdk/AiMouseSdk/ByteDance/x86_64/lib/stb_identify.a
MouseSdk/AiMouseSdk/ByteDance/x86_64/lib/stb_identify.so
MouseSdk/AiMouseSdk/M8/M8MouseSdk.m
MouseSdk/AiMouseSdk/Manager/BleManager.m
MouseSdk/AiMouseSdk/Manager/DeviceManger.h
MouseSdk/AiMouseSdk/Manager/DeviceManger.m
MouseSdk/AiMouseSdk/Manager/DeviceTool.h [new file with mode: 0644]
MouseSdk/AiMouseSdk/Manager/DeviceTool.m [new file with mode: 0644]
MouseSdk/AiMouseSdk/Manager/HidManager.m
MouseSdk/AiMouseSdk/Manager/TimerManager.m
MouseSdk/AiMouseSdk/TlwMouseSdk/AdpcmConverter.h [new file with mode: 0644]
MouseSdk/AiMouseSdk/TlwMouseSdk/AdpcmConverter.m [moved from MouseSdk/AiMouseSdk/TlwMouseSdk/TlwAudioManager.m with 64% similarity]
MouseSdk/AiMouseSdk/TlwMouseSdk/TlwAudioManager.h [deleted file]
MouseSdk/AiMouseSdk/TlwMouseSdk/TlwMouseSdk.m
MouseSdk/MouseSdk.xcworkspace/xcuserdata/yaozuopan.xcuserdatad/UserInterfaceState.xcuserstate
MouseSdk/MouseSdk.xcworkspace/xcuserdata/yaozuopan.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
MouseSdk/MouseSdk/ViewController.m
MouseSdk/Pods/Pods.xcodeproj/xcuserdata/yaozuopan.xcuserdatad/xcschemes/xcschememanagement.plist

index 8b758b5..b0b565f 100644 (file)
                180E7BDE2BD7BD84008558E8 /* AiMouseTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7B482BD7BD7F008558E8 /* AiMouseTools.h */; };
                180E7BDF2BD7BD84008558E8 /* AiMouseConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 180E7B492BD7BD80008558E8 /* AiMouseConfig.m */; };
                180E7BE02BD7BD84008558E8 /* AiMouseTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 180E7B4A2BD7BD80008558E8 /* AiMouseTools.m */; };
-               180E7BE22BD7BD84008558E8 /* AiAudioManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7B4C2BD7BD81008558E8 /* AiAudioManager.h */; };
+               180E7BE22BD7BD84008558E8 /* SbcConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7B4C2BD7BD81008558E8 /* SbcConverter.h */; };
                180E7BE42BD7BD84008558E8 /* AiRecordManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 180E7B4E2BD7BD81008558E8 /* AiRecordManager.m */; };
                180E7BE52BD7BD84008558E8 /* AiMouseTools2.m in Sources */ = {isa = PBXBuildFile; fileRef = 180E7B4F2BD7BD81008558E8 /* AiMouseTools2.m */; };
                180E7BE62BD7BD84008558E8 /* AiAudioDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7B502BD7BD82008558E8 /* AiAudioDecoder.h */; };
-               180E7BE72BD7BD84008558E8 /* AiAudioManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 180E7B512BD7BD82008558E8 /* AiAudioManager.m */; };
+               180E7BE72BD7BD84008558E8 /* SbcConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 180E7B512BD7BD82008558E8 /* SbcConverter.m */; };
                180E7BE82BD7BD84008558E8 /* AiAuthManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 180E7B522BD7BD82008558E8 /* AiAuthManager.m */; };
                180E7BE92BD7BD84008558E8 /* AiMouseTools2.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7B532BD7BD82008558E8 /* AiMouseTools2.h */; };
                180E7C842BD8FC4E008558E8 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7BF92BD8FC4E008558E8 /* version.h */; };
                18862B652C806BD900D3564D /* TlwMouseSdk.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AF42C7603E800AC5223 /* TlwMouseSdk.h */; settings = {ATTRIBUTES = (Public, ); }; };
                18862B672C806BD900D3564D /* parseutils.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C472BD8FC4E008558E8 /* parseutils.h */; };
                18862B682C806BD900D3564D /* codec_par.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C662BD8FC4E008558E8 /* codec_par.h */; };
-               18862B692C806BD900D3564D /* AiAudioManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7B4C2BD7BD81008558E8 /* AiAudioManager.h */; };
+               18862B692C806BD900D3564D /* SbcConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7B4C2BD7BD81008558E8 /* SbcConverter.h */; };
                18862B6A2C806BD900D3564D /* rc4.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C3B2BD8FC4E008558E8 /* rc4.h */; };
                18862B6B2C806BD900D3564D /* display.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C2B2BD8FC4E008558E8 /* display.h */; };
                18862B6C2C806BD900D3564D /* tx.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C282BD8FC4E008558E8 /* tx.h */; };
                18862B752C806BD900D3564D /* hdr_dynamic_metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C4A2BD8FC4E008558E8 /* hdr_dynamic_metadata.h */; };
                18862B762C806BD900D3564D /* hwcontext_drm.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C2F2BD8FC4E008558E8 /* hwcontext_drm.h */; };
                18862B772C806BD900D3564D /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C5A2BD8FC4E008558E8 /* version.h */; };
-               18862B792C806BD900D3564D /* TlwAudioManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AEE2C7603E800AC5223 /* TlwAudioManager.h */; };
+               18862B792C806BD900D3564D /* AdpcmConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AEE2C7603E800AC5223 /* AdpcmConverter.h */; };
                18862B7A2C806BD900D3564D /* time.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7BFF2BD8FC4E008558E8 /* time.h */; };
                18862B7B2C806BD900D3564D /* bprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C492BD8FC4E008558E8 /* bprint.h */; };
                18862B7D2C806BD900D3564D /* timecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 180E7C262BD8FC4E008558E8 /* timecode.h */; };
                18862BBB2C806BD900D3564D /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 184A70F82BDA4C040025A332 /* AFURLResponseSerialization.m */; };
                18862BBC2C806BD900D3564D /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 184A70FE2BDA4C040025A332 /* AFNetworkReachabilityManager.m */; };
                18862BBD2C806BD900D3564D /* AiRecordManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 180E7B4E2BD7BD81008558E8 /* AiRecordManager.m */; };
-               18862BBE2C806BD900D3564D /* TlwAudioManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AF52C7603E800AC5223 /* TlwAudioManager.m */; };
-               18862BC12C806BD900D3564D /* AiAudioManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 180E7B512BD7BD82008558E8 /* AiAudioManager.m */; };
+               18862BBE2C806BD900D3564D /* AdpcmConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AF52C7603E800AC5223 /* AdpcmConverter.m */; };
+               18862BC12C806BD900D3564D /* SbcConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 180E7B512BD7BD82008558E8 /* SbcConverter.m */; };
                18862BC32C806BD900D3564D /* TlwTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AEC2C7603E800AC5223 /* TlwTools.m */; };
                18862BC42C806BD900D3564D /* TlwMouseSdk.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AEB2C7603E800AC5223 /* TlwMouseSdk.m */; };
                18862BC52C806BD900D3564D /* BleManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18862A1E2C8064E300D3564D /* BleManager.m */; };
                18EF7AFA2C7603E800AC5223 /* TlwMouseSdk.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AEB2C7603E800AC5223 /* TlwMouseSdk.m */; };
                18EF7AFB2C7603E800AC5223 /* TlwTools.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AEC2C7603E800AC5223 /* TlwTools.m */; };
                18EF7AFC2C7603E800AC5223 /* AiConnectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AED2C7603E800AC5223 /* AiConnectManager.m */; };
-               18EF7AFD2C7603E800AC5223 /* TlwAudioManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AEE2C7603E800AC5223 /* TlwAudioManager.h */; };
+               18EF7AFD2C7603E800AC5223 /* AdpcmConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AEE2C7603E800AC5223 /* AdpcmConverter.h */; };
                18EF7B012C7603E800AC5223 /* adpcm.c in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AF22C7603E800AC5223 /* adpcm.c */; };
                18EF7B022C7603E800AC5223 /* TlwTools.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AF32C7603E800AC5223 /* TlwTools.h */; };
                18EF7B032C7603E800AC5223 /* TlwMouseSdk.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AF42C7603E800AC5223 /* TlwMouseSdk.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               18EF7B042C7603E800AC5223 /* TlwAudioManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AF52C7603E800AC5223 /* TlwAudioManager.m */; };
+               18EF7B042C7603E800AC5223 /* AdpcmConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 18EF7AF52C7603E800AC5223 /* AdpcmConverter.m */; };
                18EF7B052C7603E800AC5223 /* AiConnectManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EF7AF62C7603E800AC5223 /* AiConnectManager.h */; };
+               3F985CFA2DB34D0F008D6D73 /* DeviceTool.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F985CF82DB34D0F008D6D73 /* DeviceTool.h */; };
+               3F985CFB2DB34D0F008D6D73 /* DeviceTool.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F985CF92DB34D0F008D6D73 /* DeviceTool.m */; };
+               3F985CFC2DB34D0F008D6D73 /* DeviceTool.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F985CF82DB34D0F008D6D73 /* DeviceTool.h */; };
+               3F985CFD2DB34D0F008D6D73 /* DeviceTool.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F985CF92DB34D0F008D6D73 /* DeviceTool.m */; };
                3FCF534F2D1A5C97007EC52F /* LogManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FCF534E2D1A5C97007EC52F /* LogManager.m */; };
                3FCF53502D1A5C97007EC52F /* LogManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FCF534D2D1A5C97007EC52F /* LogManager.h */; };
                3FCF53512D1A5C97007EC52F /* LogManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FCF534D2D1A5C97007EC52F /* LogManager.h */; };
                180E7B482BD7BD7F008558E8 /* AiMouseTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AiMouseTools.h; sourceTree = "<group>"; };
                180E7B492BD7BD80008558E8 /* AiMouseConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AiMouseConfig.m; sourceTree = "<group>"; };
                180E7B4A2BD7BD80008558E8 /* AiMouseTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AiMouseTools.m; sourceTree = "<group>"; };
-               180E7B4C2BD7BD81008558E8 /* AiAudioManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AiAudioManager.h; sourceTree = "<group>"; };
+               180E7B4C2BD7BD81008558E8 /* SbcConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SbcConverter.h; sourceTree = "<group>"; };
                180E7B4E2BD7BD81008558E8 /* AiRecordManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AiRecordManager.m; sourceTree = "<group>"; };
                180E7B4F2BD7BD81008558E8 /* AiMouseTools2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AiMouseTools2.m; sourceTree = "<group>"; };
                180E7B502BD7BD82008558E8 /* AiAudioDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AiAudioDecoder.h; sourceTree = "<group>"; };
-               180E7B512BD7BD82008558E8 /* AiAudioManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AiAudioManager.m; sourceTree = "<group>"; };
+               180E7B512BD7BD82008558E8 /* SbcConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SbcConverter.m; sourceTree = "<group>"; };
                180E7B522BD7BD82008558E8 /* AiAuthManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AiAuthManager.m; sourceTree = "<group>"; };
                180E7B532BD7BD82008558E8 /* AiMouseTools2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AiMouseTools2.h; sourceTree = "<group>"; };
                180E7BF92BD8FC4E008558E8 /* version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = "<group>"; };
                18EF7AEB2C7603E800AC5223 /* TlwMouseSdk.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TlwMouseSdk.m; sourceTree = "<group>"; };
                18EF7AEC2C7603E800AC5223 /* TlwTools.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TlwTools.m; sourceTree = "<group>"; };
                18EF7AED2C7603E800AC5223 /* AiConnectManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AiConnectManager.m; sourceTree = "<group>"; };
-               18EF7AEE2C7603E800AC5223 /* TlwAudioManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TlwAudioManager.h; sourceTree = "<group>"; };
+               18EF7AEE2C7603E800AC5223 /* AdpcmConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdpcmConverter.h; sourceTree = "<group>"; };
                18EF7AF22C7603E800AC5223 /* adpcm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = adpcm.c; sourceTree = "<group>"; };
                18EF7AF32C7603E800AC5223 /* TlwTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TlwTools.h; sourceTree = "<group>"; };
                18EF7AF42C7603E800AC5223 /* TlwMouseSdk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TlwMouseSdk.h; sourceTree = "<group>"; };
-               18EF7AF52C7603E800AC5223 /* TlwAudioManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TlwAudioManager.m; sourceTree = "<group>"; };
+               18EF7AF52C7603E800AC5223 /* AdpcmConverter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdpcmConverter.m; sourceTree = "<group>"; };
                18EF7AF62C7603E800AC5223 /* AiConnectManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AiConnectManager.h; sourceTree = "<group>"; };
                3F5CE3E62D1E7BCA00A5628A /* libAiMouseSdk copy.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libAiMouseSdk copy.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+               3F985CF82DB34D0F008D6D73 /* DeviceTool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeviceTool.h; sourceTree = "<group>"; };
+               3F985CF92DB34D0F008D6D73 /* DeviceTool.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DeviceTool.m; sourceTree = "<group>"; };
                3FCF534D2D1A5C97007EC52F /* LogManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LogManager.h; sourceTree = "<group>"; };
                3FCF534E2D1A5C97007EC52F /* LogManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LogManager.m; sourceTree = "<group>"; };
                3FF3D7352DAE442C008EBA5D /* M8MouseSdk.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = M8MouseSdk.h; sourceTree = "<group>"; };
                                184A71232BDE2DA60025A332 /* AiSecretModel.m */,
                                180E7B502BD7BD82008558E8 /* AiAudioDecoder.h */,
                                180E7AB52BD7BD7D008558E8 /* AiAudioDecoder.m */,
-                               180E7B4C2BD7BD81008558E8 /* AiAudioManager.h */,
-                               180E7B512BD7BD82008558E8 /* AiAudioManager.m */,
+                               180E7B4C2BD7BD81008558E8 /* SbcConverter.h */,
+                               180E7B512BD7BD82008558E8 /* SbcConverter.m */,
                                180E7AB62BD7BD7D008558E8 /* AiMouseConfig.h */,
                                180E7B492BD7BD80008558E8 /* AiMouseConfig.m */,
                                180E7B482BD7BD7F008558E8 /* AiMouseTools.h */,
                                18862A192C8064E300D3564D /* HidManager.m */,
                                18862A1C2C8064E300D3564D /* BleManager.h */,
                                18862A1E2C8064E300D3564D /* BleManager.m */,
+                               3F985CF82DB34D0F008D6D73 /* DeviceTool.h */,
+                               3F985CF92DB34D0F008D6D73 /* DeviceTool.m */,
                                18862A1A2C8064E300D3564D /* TimerManager.h */,
                                18862A202C8064E300D3564D /* TimerManager.m */,
                                1888148C2C85766B009299A9 /* AiDeviceAuthManager.h */,
                                18EF7AEC2C7603E800AC5223 /* TlwTools.m */,
                                18EF7AF62C7603E800AC5223 /* AiConnectManager.h */,
                                18EF7AED2C7603E800AC5223 /* AiConnectManager.m */,
-                               18EF7AEE2C7603E800AC5223 /* TlwAudioManager.h */,
-                               18EF7AF52C7603E800AC5223 /* TlwAudioManager.m */,
+                               18EF7AEE2C7603E800AC5223 /* AdpcmConverter.h */,
+                               18EF7AF52C7603E800AC5223 /* AdpcmConverter.m */,
                                18EF7AEA2C7603E800AC5223 /* adpcm.h */,
                                18EF7AF22C7603E800AC5223 /* adpcm.c */,
                        );
                                18EF7B032C7603E800AC5223 /* TlwMouseSdk.h in Headers */,
                                180E7CD12BD8FC4E008558E8 /* parseutils.h in Headers */,
                                180E7CEC2BD8FC4E008558E8 /* codec_par.h in Headers */,
-                               180E7BE22BD7BD84008558E8 /* AiAudioManager.h in Headers */,
+                               180E7BE22BD7BD84008558E8 /* SbcConverter.h in Headers */,
                                18E0C5972D1000DF0093BA8F /* ByteDanceSdk.h in Headers */,
                                180E7CC52BD8FC4E008558E8 /* rc4.h in Headers */,
                                180E7CB52BD8FC4E008558E8 /* display.h in Headers */,
                                180E7CD42BD8FC4E008558E8 /* hdr_dynamic_metadata.h in Headers */,
                                180E7CB92BD8FC4E008558E8 /* hwcontext_drm.h in Headers */,
                                180E7CE22BD8FC4E008558E8 /* version.h in Headers */,
-                               18EF7AFD2C7603E800AC5223 /* TlwAudioManager.h in Headers */,
+                               18EF7AFD2C7603E800AC5223 /* AdpcmConverter.h in Headers */,
                                180E7C892BD8FC4E008558E8 /* time.h in Headers */,
                                180E7CD32BD8FC4E008558E8 /* bprint.h in Headers */,
                                180E7CB02BD8FC4E008558E8 /* timecode.h in Headers */,
                                180E7CA42BD8FC4E008558E8 /* md5.h in Headers */,
                                180E7CE32BD8FC4E008558E8 /* avio.h in Headers */,
+                               3F985CFC2DB34D0F008D6D73 /* DeviceTool.h in Headers */,
                                180E7CB42BD8FC4E008558E8 /* hwcontext_dxva2.h in Headers */,
                                180E7CDB2BD8FC4E008558E8 /* hash.h in Headers */,
                                180E7B562BD7BD83008558E8 /* AiMouseConfig.h in Headers */,
                                18862B602C806BD900D3564D /* dv_profile.h in Headers */,
                                18862B612C806BD900D3564D /* AFURLSessionManager.h in Headers */,
                                18862B622C806BD900D3564D /* downmix_info.h in Headers */,
+                               3F985CFA2DB34D0F008D6D73 /* DeviceTool.h in Headers */,
                                18862B632C806BD900D3564D /* spherical.h in Headers */,
                                18862B642C806BD900D3564D /* hwcontext_opencl.h in Headers */,
                                18862B652C806BD900D3564D /* TlwMouseSdk.h in Headers */,
                                18862B672C806BD900D3564D /* parseutils.h in Headers */,
                                18862B682C806BD900D3564D /* codec_par.h in Headers */,
-                               18862B692C806BD900D3564D /* AiAudioManager.h in Headers */,
+                               18862B692C806BD900D3564D /* SbcConverter.h in Headers */,
                                18862B6A2C806BD900D3564D /* rc4.h in Headers */,
                                18862B6B2C806BD900D3564D /* display.h in Headers */,
                                18862B6C2C806BD900D3564D /* tx.h in Headers */,
                                18862B752C806BD900D3564D /* hdr_dynamic_metadata.h in Headers */,
                                18862B762C806BD900D3564D /* hwcontext_drm.h in Headers */,
                                18862B772C806BD900D3564D /* version.h in Headers */,
-                               18862B792C806BD900D3564D /* TlwAudioManager.h in Headers */,
+                               18862B792C806BD900D3564D /* AdpcmConverter.h in Headers */,
                                18862B7A2C806BD900D3564D /* time.h in Headers */,
                                18862B7B2C806BD900D3564D /* bprint.h in Headers */,
                                18862B7D2C806BD900D3564D /* timecode.h in Headers */,
                                184A71062BDA4C050025A332 /* AFURLResponseSerialization.m in Sources */,
                                184A710C2BDA4C050025A332 /* AFNetworkReachabilityManager.m in Sources */,
                                180E7BE42BD7BD84008558E8 /* AiRecordManager.m in Sources */,
-                               18EF7B042C7603E800AC5223 /* TlwAudioManager.m in Sources */,
+                               18EF7B042C7603E800AC5223 /* AdpcmConverter.m in Sources */,
                                18E0C5982D1000DF0093BA8F /* ByteDanceSdk.m in Sources */,
                                189960112CEAD7B50042505F /* KeyboardSdk.m in Sources */,
                                3FCF534F2D1A5C97007EC52F /* LogManager.m in Sources */,
-                               180E7BE72BD7BD84008558E8 /* AiAudioManager.m in Sources */,
+                               180E7BE72BD7BD84008558E8 /* SbcConverter.m in Sources */,
                                18EF7AFB2C7603E800AC5223 /* TlwTools.m in Sources */,
                                18EF7AFA2C7603E800AC5223 /* TlwMouseSdk.m in Sources */,
                                3FF3D73A2DAE442C008EBA5D /* M8MouseSdk.m in Sources */,
                                189365592CEB153000023B62 /* MSUtilis.m in Sources */,
                                18AD83262BFAE8B9009BDE3B /* AiDeviceInfoManager.m in Sources */,
                                18EF7B012C7603E800AC5223 /* adpcm.c in Sources */,
+                               3F985CFD2DB34D0F008D6D73 /* DeviceTool.m in Sources */,
                                184A71092BDA4C050025A332 /* AFURLSessionManager.m in Sources */,
                                180E7BE82BD7BD84008558E8 /* AiAuthManager.m in Sources */,
                        );
                                18862BAF2C806BD900D3564D /* TimerManager.m in Sources */,
                                18862BB02C806BD900D3564D /* HidManager.m in Sources */,
                                18862BB22C806BD900D3564D /* AiMouseTools2.m in Sources */,
+                               3F985CFB2DB34D0F008D6D73 /* DeviceTool.m in Sources */,
                                3FCF53522D1A5C97007EC52F /* LogManager.m in Sources */,
                                18862BB32C806BD900D3564D /* AiSecretModel.m in Sources */,
                                18862BB42C806BD900D3564D /* AiSender.m in Sources */,
                                18862BBB2C806BD900D3564D /* AFURLResponseSerialization.m in Sources */,
                                18862BBC2C806BD900D3564D /* AFNetworkReachabilityManager.m in Sources */,
                                18862BBD2C806BD900D3564D /* AiRecordManager.m in Sources */,
-                               18862BBE2C806BD900D3564D /* TlwAudioManager.m in Sources */,
-                               18862BC12C806BD900D3564D /* AiAudioManager.m in Sources */,
+                               18862BBE2C806BD900D3564D /* AdpcmConverter.m in Sources */,
+                               18862BC12C806BD900D3564D /* SbcConverter.m in Sources */,
                                18862BC32C806BD900D3564D /* TlwTools.m in Sources */,
                                18862BC42C806BD900D3564D /* TlwMouseSdk.m in Sources */,
                                18862BC52C806BD900D3564D /* BleManager.m in Sources */,
index 749e1ae..bd3f24f 100644 (file)
@@ -12,7 +12,8 @@
 #import "AiBkzhAuthManager.h"
 
 #import "AiDeviceInfoManager.h"
-#import "AiAudioManager.h"
+#import "SbcConverter.h"
+#import "AdpcmConverter.h"
 #import "AiMouseTools.h"
 #import "AiMouseTools2.h"
 #import "AiMouseConfig.h"
@@ -39,8 +40,7 @@
 
 @interface AiMouse()
 @property (nonatomic, strong) NSMutableData *voiceData;
-@property (nonatomic, strong) ByteDanceSdk *byteSdk;
-@property (nonatomic, strong) AiAudioManager *audioManager;
+@property (nonatomic, strong) SbcConverter *sbcTool;
 @property (nonatomic, strong) AiRecordManager *recordManager;
 @property (nonatomic, strong) AiDeviceInfoManager *deviceInfoManager;
 @property (nonatomic, strong) AiConnectManager *connectdManager;
         _connectType =  AiMouseConnectType_bluetooth;
         self.voiceData = [[NSMutableData alloc] init];
         [self.recordManager checkPermissions];
-        
-        if ([DeviceManger shared].appType == 2 || [DeviceManger shared].appType == 4) {
-            self.byteSdk = [ByteDanceSdk shared];
-            [self.byteSdk initSdk];
-        }
     }
     return self;
 }
     return _deviceInfoManager;;
 }
 
--(AiAudioManager *)audioManager{
-    if (!_audioManager) {
-        _audioManager = [[AiAudioManager alloc] init];
+-(SbcConverter *)sbcTool{
+    if (!_sbcTool) {
+        _sbcTool = [[SbcConverter alloc] init];
         __weak typeof(self) ws = self;
-        _audioManager.decodeCallBack = ^(NSData * _Nonnull data) {
+        _sbcTool.decodeCallBack = ^(NSData * _Nonnull data) {
             [ws sendRecordData:data];
         };
-        _audioManager.outputLog = ^(NSString * _Nonnull log) {
+        _sbcTool.outputLog = ^(NSString * _Nonnull log) {
             [ws showLog:log];
         };
     }
-    return _audioManager;
+    return _sbcTool;
 }
 
 - (AiRecordManager *)recordManager{
                 [ws switchConnect:ws.connectType isConnected:false];
                 return;
             }
-//            if (([DeviceManger shared].appType == 2 || [DeviceManger shared].appType == 4) && ws.byteSdk.info.token == nil) {
-//                [ws.byteSdk startAuth:^(ByteDanceInfo *info) {
+//            if (([DeviceManger shared].appType == 2 || [DeviceManger shared].appType == 4) ) {
+//                [[ByteDanceSdk shared] startAuth:^(ByteDanceInfo *info) {
 //                    deviceInfo.byteAuthInfo = info;
 //                    [ws showLog:deviceInfo.description];
-//                    if([ws.delegate respondsToSelector:@selector(aiMouseConnectStateDidChange:)]) [ws.delegate aiMouseConnectStateDidChange:ws.connected];
-//                    if(ws.delegate) [ws.delegate aiMouseAuthenticationResult:true];
 //                }];
 //            }
-//            else{
-//                if([ws.delegate respondsToSelector:@selector(aiMouseConnectStateDidChange:)]) [ws.delegate aiMouseConnectStateDidChange:ws.connected];
-//                if(ws.delegate) [ws.delegate aiMouseAuthenticationResult:true];
-//            }
-            
-            if (([DeviceManger shared].appType == 2 || [DeviceManger shared].appType == 4) && ws.byteSdk.info.token == nil) {
-                [ws.byteSdk startAuth:^(ByteDanceInfo *info) {
-                    deviceInfo.byteAuthInfo = info;
-                    [ws showLog:deviceInfo.description];
-                }];
-
-            }
             dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                 if([ws.delegate respondsToSelector:@selector(aiMouseConnectStateDidChange:)]) [ws.delegate aiMouseConnectStateDidChange:ws.connected];
                 if(ws.delegate) [ws.delegate aiMouseAuthenticationResult:true];
         }
         NSString *cmd = [[AiMouseTools dataToHexString:data] lowercaseString];
         if([cmd hasPrefix:@"9c31"]){
-            //声音
-            [self.audioManager receiveData:data];
+            //声音转换
+            [self.sbcTool receiveData:data];
         }
         else{
-            [self showLog:@"未实现指令"];
+            NSData *pcm = [AdpcmConverter toPcm:data];
+            [self sendRecordData:pcm];
+//            [self showLog:@"未实现指令"];
         }
     }
 }
             
         }
         else{
-            [self.byteSdk sendToSdk:data];
+            [[ByteDanceSdk shared] sendToSdk:data];
         }
     }
     else{
     __weak typeof(self) ws = self;
     [self.deviceInfoManager getDeviceInfo:^(AiMouseDeviceInfo * _Nonnull deviceInfo, NSError * _Nonnull error) {
         if (deviceInfo && ([DeviceManger shared].appType == 2 || [DeviceManger shared].appType == 4)) {
-            deviceInfo.byteAuthInfo = ws.byteSdk.info;
-            [ws showLog:deviceInfo.description];
+            [[ByteDanceSdk shared] startAuth:^(ByteDanceInfo *info,NSError *err) {
+                deviceInfo.byteAuthInfo = info;
+                [ws showLog:deviceInfo.description];
+                complete(deviceInfo,error);
+            }];
+        }
+        else{
+            complete(deviceInfo,error);
         }
-        complete(deviceInfo,error);
         if (error != nil) {
             [ws switchConnect:ws.connectType isConnected:false];
         }
@@ -1,5 +1,5 @@
 //
-//  AiAudioManager.h
+//  SbcConverter.h
 //  AiMouse
 //
 //  Created by incar on 2024/2/28.
@@ -9,7 +9,7 @@
 
 NS_ASSUME_NONNULL_BEGIN
 
-@interface AiAudioManager : NSObject
+@interface SbcConverter : NSObject
 @property (nonatomic,strong)void (^outputData)(NSData *data);
 @property (nonatomic,strong)void (^decodeCallBack)(NSData *data);
 @property (nonatomic,strong)void (^outputLog)(NSString *log);
@@ -1,19 +1,19 @@
 //
-//  AiAudioManager.m
+//  SbcConverter.m
 //  AiMouse
 //
 //  Created by incar on 2024/2/28.
 //
 
-#import "AiAudioManager.h"
+#import "SbcConverter.h"
 #import "AiMouseTools.h"
 #import "AiAudioDecoder.h"
 
-@interface AiAudioManager ()
+@interface SbcConverter ()
 @property (nonatomic,strong)AiAudioDecoder *audioDecoder;
 @end
 
-@implementation AiAudioManager
+@implementation SbcConverter
 
 -(instancetype)init{
     if (self = [super init]) {
 
 - (void)receiveData:(NSData *)data{
     [self.audioDecoder decodeSBCData:data];
-//    NSString *str = [[AiMouseTools dataToHexString:data] lowercaseString];
-//    NSString *cmd = [str substringWithRange:NSMakeRange(0, 12)];
-//    if([cmd hasPrefix:@"0a"] && [cmd hasSuffix:@"31"]){
-////        0x0a6500002a3100020101c0c1a5a5a5a5
-//        [self showLog:@"开始录音"];
-//    }
-//    if( [cmd hasPrefix:@"0a"] && [cmd hasSuffix:@"32"]){
-//        [self showLog:@"结束录音"];
-////        [self showLog:[NSString stringWithFormat:@"完整声音数据 %@",self.recvData]];
-////        [self finishRecevice:self.recvData];
-////        self.recvData = nil;
-//    }
-//    else if([str hasPrefix:@"9c31"] && data.length >= 32){
-//        [self.audioDecoder decodeSBCData:data];
-//    }
-//    else{
-//        [self showLog:@"未实现指令"];
-//    }
 }
 
 - (void)setupAudioDecoder{
index 3f1f2ff..1122cfe 100644 (file)
 
 @interface ByteDanceSdk : NSObject
 @property (nonatomic, strong) void (^sendToBleCallback)(NSData *data);/// 发送给蓝牙设备
-@property (nonatomic, strong) void (^byteDanceAuthInfoCallback)(ByteDanceInfo *data);
+@property (nonatomic, strong) void (^byteDanceAuthInfoCallback)(ByteDanceInfo *data,NSError *error);
 @property (nonatomic,strong) ByteDanceInfo *info;
 
 +(ByteDanceSdk *)shared;
 
 - (void)initSdk;
 
-- (void)startAuth:(void (^)(ByteDanceInfo *info))complete;
+- (void)startAuth:(void (^)(ByteDanceInfo *info,NSError *error))complete;
 
 - (void)sendToSdk:(NSData *)data;
 
index c3dafdd..9c76d5d 100644 (file)
 }
 
 
-- (void)startAuth:(void (^)(ByteDanceInfo *info))complete{
+- (void)startAuth:(void (^)(ByteDanceInfo *info,NSError *error))complete{
     self.byteDanceAuthInfoCallback = complete;
     self.info = [[ByteDanceInfo alloc] init];
     stb_app_start_identify();
+    [self performSelector:@selector(timeOutAction) withObject:nil afterDelay:5];
+}
+
+- (void)timeOutAction{
+    if(self.byteDanceAuthInfoCallback){
+        self.byteDanceAuthInfoCallback(nil,[NSError errorWithDomain:@"" code:-1 userInfo:@{}]);
+    }
 }
 
 - (void)sendToSdk:(NSData *)data{
@@ -56,9 +63,9 @@
 - (void)checkAuthSuccess{
     if (self.info.urlParams && self.info.expireTime && self.info.token && self.info.host) {
         if(self.byteDanceAuthInfoCallback){
-            self.byteDanceAuthInfoCallback(self.info);           
+            self.byteDanceAuthInfoCallback(self.info,nil);
         }
-//        [self performSelector:@selector(stopAuth) withObject:nil afterDelay:5];
+        [NSObject cancelPreviousPerformRequestsWithTarget:self];
     }
 }
 - (void)stopAuth{
index 21fb305..f2dbd13 100644 (file)
@@ -190,7 +190,7 @@ DLL_EXPORTS int STB_STDCALL stb_app_identify_test(uint8_t *pk, uint8_t *dn, uint
 //如需使用产线激活,使用该接口
 DLL_EXPORTS char* STB_STDCALL device_register(char* product_key, char* device_name, char* product_secret);
 //如需使用产线激活,使用该接口
-DLL_EXPORTS int STB_STDCALL device_active(char*product_key, char* device_name, char*device_secret);
+DLL_EXPORTS int STB_STDCALL device_active(char*product_key, char* device_name, char*device_secret,char*app_id);
 
 #if defined(__cplusplus)
 }
index dfd8d67..3f20503 100644 (file)
Binary files a/MouseSdk/AiMouseSdk/ByteDance/arm/lib/stb_identify.a and b/MouseSdk/AiMouseSdk/ByteDance/arm/lib/stb_identify.a differ
index 408e324..addead3 100644 (file)
Binary files a/MouseSdk/AiMouseSdk/ByteDance/arm/lib/stb_identify.so and b/MouseSdk/AiMouseSdk/ByteDance/arm/lib/stb_identify.so differ
index 21fb305..f2dbd13 100644 (file)
@@ -190,7 +190,7 @@ DLL_EXPORTS int STB_STDCALL stb_app_identify_test(uint8_t *pk, uint8_t *dn, uint
 //如需使用产线激活,使用该接口
 DLL_EXPORTS char* STB_STDCALL device_register(char* product_key, char* device_name, char* product_secret);
 //如需使用产线激活,使用该接口
-DLL_EXPORTS int STB_STDCALL device_active(char*product_key, char* device_name, char*device_secret);
+DLL_EXPORTS int STB_STDCALL device_active(char*product_key, char* device_name, char*device_secret,char*app_id);
 
 #if defined(__cplusplus)
 }
index 42aba62..a85612b 100644 (file)
Binary files a/MouseSdk/AiMouseSdk/ByteDance/x86_64/lib/stb_identify.a and b/MouseSdk/AiMouseSdk/ByteDance/x86_64/lib/stb_identify.a differ
index 375ece8..e0685e6 100644 (file)
Binary files a/MouseSdk/AiMouseSdk/ByteDance/x86_64/lib/stb_identify.so and b/MouseSdk/AiMouseSdk/ByteDance/x86_64/lib/stb_identify.so differ
index 8206b95..53fee02 100644 (file)
@@ -6,13 +6,12 @@
 //
 
 #import "M8MouseSdk.h"
-#import "TlwAudioManager.h"
+#import "AdpcmConverter.h"
 #import "TlwTools.h"
 #import "AiRecordManager.h"
 #import "M8MouseInfo.h"
 @interface M8MouseSdk()
 
-@property (nonatomic, strong) TlwAudioManager *audioManager;
 @property (nonatomic, strong) AiRecordManager *recordManager;
 
 @property (nonatomic,strong)void (^dongleStateCallBack)(BOOL success);
     return @"1.0.2";
 }
 
--(TlwAudioManager *)audioManager{
-    if (!_audioManager) {
-        _audioManager = [[TlwAudioManager alloc] init];
-        __weak typeof(self) ws = self;
-        _audioManager.decodeCallBack = ^(NSData * _Nonnull data) {
-            [ws sendRecordData:data];
-        };
-        _audioManager.outputLog = ^(NSString * _Nonnull log) {
-            [ws showLog:log];
-        };
-    }
-    return _audioManager;
-}
-
 - (AiRecordManager *)recordManager{
     if (!_recordManager) {
         _recordManager = [[AiRecordManager alloc] init];
 }
 
 - (void)sendAiDataToSdk:(NSData *)data{
-        [self showLog:[NSString stringWithFormat:@"[receive][Voice] %@",data]];
+    [self showLog:[NSString stringWithFormat:@"[receive][Voice] %@",data]];
     if(self.connectType == AiMouseConnectType_hid){
     }
     else if (self.connectType == AiMouseConnectType_bluetooth){
 }
 #pragma mark - ble
 - (void)bleReceiveAiData:(NSData *)data{
-    [self.audioManager receiveData:data];
+    NSData *pcm = [AdpcmConverter toPcm:data];
+    [self sendRecordData:pcm];
 }
 
 -(void)bleReceiveDeviceData:(NSData *)data{
index 7772f53..9644e50 100644 (file)
@@ -8,6 +8,8 @@
 #import "BleManager.h"
 #import "TlwTools.h"
 #import "M8MouseInfo.h"
+#import "DeviceTool.h"
+
 // 服务id
 #define kFrkServiceUUID @"FFF1"
 //ai特征
 #pragma mark - CBPeripheralDelegate
 //发现服务
 - (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error {
-    [self showLog:[NSString stringWithFormat:@"发现服务"]];
+    [self showLog:[NSString stringWithFormat:@"发现服务\n %@",peripheral.services]];
     for (CBService *service in peripheral.services){
         [peripheral discoverCharacteristics:nil forService:service];
     }
 
 // 发现特征
 - (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error {
-    for (CBCharacteristic *characteristic in service.characteristics){
-        [self showLog:characteristic.UUID.UUIDString];
-        if ([characteristic.UUID.UUIDString isEqualToString:@"2A25"]) {
-            M8MouseInfo.shared.sn = [TlwTools dataToUtf8String:characteristic.value];
-        }
-        else if ([characteristic.UUID.UUIDString isEqualToString:@"2A19"]) {
-            NSData *data = characteristic.value;
-            int result;
-            [data getBytes:&result length:1];
-            M8MouseInfo.shared.battery_power = [NSString stringWithFormat:@"%d",result];
-        }
-        else if ([characteristic.UUID.UUIDString isEqualToString:@"2A24"]) {
-            M8MouseInfo.shared.brand = [TlwTools dataToUtf8String:characteristic.value];
-        }
-        else if ([characteristic.UUID.UUIDString isEqualToString:@"2A26"]) {
-            M8MouseInfo.shared.version = [TlwTools dataToUtf8String:characteristic.value];
-            [self showLog:[NSString stringWithFormat:@"Firmware Revision = %@",[TlwTools dataToUtf8String:characteristic.value]]];
-        }
-        else if ([characteristic.UUID.UUIDString isEqualToString:@"2A28"]) {
-            [self showLog:[NSString stringWithFormat:@"Software Revision = %@",[TlwTools dataToUtf8String:characteristic.value]]];
-        }
-//        else if ([characteristic.UUID.UUIDString isEqualToString:@"2A27"]) {
-//            [self showLog:[NSString stringWithFormat:@"Hardware Revision = %@",[TlwTools dataToUtf8String:characteristic.value]]];
-//        }
-//
+    [self showLog:[NSString stringWithFormat:@"发现特征\n%@\n%@",service,service.characteristics]];
 
-//        else if ([characteristic.UUID.UUIDString isEqualToString:@"2A23"]) {
-//            [self showLog:[NSString stringWithFormat:@"System ID = %@",[TlwTools dataToUtf8String:characteristic.value]]];
-//        }
-//        else if ([characteristic.UUID.UUIDString isEqualToString:@"2A2A"]) {
-//            [self showLog:[NSString stringWithFormat:@"PnP ID = %@",[TlwTools dataToUtf8String:characteristic.value]]];
-//        }
-//        else if ([characteristic.UUID.UUIDString isEqualToString:@"2A29"]) {
-//            [self showLog:[NSString stringWithFormat:@"Manufacturer Name = %@",[TlwTools dataToUtf8String:characteristic.value]]];
-//        }
-        else if ([characteristic.UUID.UUIDString isEqualToString:kM8ClickUUID]) {
-            [peripheral setNotifyValue:YES forCharacteristic:characteristic];
-        }
-        else if ([characteristic.UUID.UUIDString isEqualToString:kM8VoiceUUID]) {
-            //语音特征
-            [peripheral setNotifyValue:YES forCharacteristic:characteristic];
-            self.productType = AiMouseProductType_m8;
-//            dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC);
-//            dispatch_after(delayTime, dispatch_get_main_queue(), ^{
-                [self showLog:[NSString stringWithFormat:@"连接成功 = %@",peripheral.name]];
-                self.connectStateCallBack(self.curentPeripheral.name,true);
-//            });
-        }
-        [self showLog:[NSString stringWithFormat:@"%@",characteristic]];
-    }
-//    return;
-    for (CBCharacteristic *characteristic in service.characteristics){
-        if ([characteristic.UUID.UUIDString isEqualToString:kFrkVoiceUUID]) {
-            //语音特征
-            [peripheral setNotifyValue:YES forCharacteristic:characteristic];
-        }
-        else if ([characteristic.UUID.UUIDString isEqualToString:kFrkDeviceInfoUUID]) {
-            //通知设备信息特征
-            [peripheral setNotifyValue:YES forCharacteristic:characteristic];
-            self.deviceInfoCha = characteristic;
-            self.productType = AiMouseProductType_frk;
-            dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC);
-            dispatch_after(delayTime, dispatch_get_main_queue(), ^{
-                [self showLog:[NSString stringWithFormat:@"连接成功 = %@",peripheral.name]];
-                self.connectStateCallBack(self.curentPeripheral.name,true);
-            });
+    if ([DeviceTool isFrk:peripheral]) {
+        //泰凌微二代也走的是富瑞坤方案
+        for (CBCharacteristic *characteristic in service.characteristics){
+            if ([characteristic.UUID.UUIDString isEqualToString:kFrkVoiceUUID]) {
+                [peripheral setNotifyValue:YES forCharacteristic:characteristic];
+            }
+            else if ([characteristic.UUID.UUIDString isEqualToString:kFrkDeviceInfoUUID]) {
+                [peripheral setNotifyValue:YES forCharacteristic:characteristic];
+                self.deviceInfoCha = characteristic;
+                self.productType = AiMouseProductType_frk;
+                dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC);
+                dispatch_after(delayTime, dispatch_get_main_queue(), ^{
+                    [self showLog:[NSString stringWithFormat:@"连接成功 = %@",peripheral.name]];
+                    self.connectStateCallBack(self.curentPeripheral.name,true);
+                });
+            }
         }
+        return;
     }
-    
-    for (CBCharacteristic *characteristic in service.characteristics){
-        if ([characteristic.UUID.UUIDString isEqualToString:kTlwVoiceUUID]) {
-            //语音特征
-            [peripheral setNotifyValue:YES forCharacteristic:characteristic];
-        }
-        else if ([characteristic.UUID.UUIDString isEqualToString:kTlwNotifyDeviceInfoUUID]) {
-            //通知设备信息特征
-            [peripheral setNotifyValue:YES forCharacteristic:characteristic];
-            self.productType = AiMouseProductType_tlw;
-            // 使用dispatch_after来延迟执行任务
-            dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC);
-            dispatch_after(delayTime, dispatch_get_main_queue(), ^{
-                [self showLog:[NSString stringWithFormat:@"连接成功 = %@",peripheral.name]];
-                self.connectStateCallBack(self.curentPeripheral.name,true);
-            });
-        }
-        else if ([characteristic.UUID.UUIDString isEqualToString:kTlwSetDeviceInfoUUID]) {
-            //设备信息特征
-            self.deviceInfoCha = characteristic;
+    if ([DeviceTool isTlw:peripheral]) {
+        for (CBCharacteristic *characteristic in service.characteristics){
+            if ([characteristic.UUID.UUIDString isEqualToString:kTlwVoiceUUID]) {
+                [peripheral setNotifyValue:YES forCharacteristic:characteristic];
+            }
+            else if ([characteristic.UUID.UUIDString isEqualToString:kTlwNotifyDeviceInfoUUID]) {
+                [peripheral setNotifyValue:YES forCharacteristic:characteristic];
+                self.productType = AiMouseProductType_tlw;
+                // 使用dispatch_after来延迟执行任务
+                dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC);
+                dispatch_after(delayTime, dispatch_get_main_queue(), ^{
+                    [self showLog:[NSString stringWithFormat:@"连接成功 = %@",peripheral.name]];
+                    self.connectStateCallBack(self.curentPeripheral.name,true);
+                });
+            }
+            else if ([characteristic.UUID.UUIDString isEqualToString:kTlwSetDeviceInfoUUID]) {
+                self.deviceInfoCha = characteristic;
+            }
         }
+        return;
     }
-    
-    for (CBCharacteristic *characteristic in service.characteristics){
-        if ([characteristic.UUID.UUIDString isEqualToString:kM8VoiceUUID]) {
-            //语音特征
-            [peripheral setNotifyValue:YES forCharacteristic:characteristic];
-        }
-        else if ([characteristic.UUID.UUIDString isEqualToString:kTlwNotifyDeviceInfoUUID]) {
-            //通知设备信息特征
-            [peripheral setNotifyValue:YES forCharacteristic:characteristic];
-            self.productType = AiMouseProductType_tlw;
-            // 使用dispatch_after来延迟执行任务
-            dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC);
-            dispatch_after(delayTime, dispatch_get_main_queue(), ^{
+    if ([DeviceTool isM8:peripheral]) {
+        for (CBCharacteristic *characteristic in service.characteristics){
+            [self showLog:characteristic.UUID.UUIDString];
+            if ([characteristic.UUID.UUIDString isEqualToString:@"2A25"]) {
+                M8MouseInfo.shared.sn = [TlwTools dataToUtf8String:characteristic.value];
+            }
+            else if ([characteristic.UUID.UUIDString isEqualToString:@"2A19"]) {
+                NSData *data = characteristic.value;
+                int result;
+                [data getBytes:&result length:1];
+                M8MouseInfo.shared.battery_power = [NSString stringWithFormat:@"%d",result];
+            }
+            else if ([characteristic.UUID.UUIDString isEqualToString:@"2A24"]) {
+                M8MouseInfo.shared.brand = [TlwTools dataToUtf8String:characteristic.value];
+            }
+            else if ([characteristic.UUID.UUIDString isEqualToString:@"2A26"]) {
+                M8MouseInfo.shared.version = [TlwTools dataToUtf8String:characteristic.value];
+                [self showLog:[NSString stringWithFormat:@"Firmware Revision = %@",[TlwTools dataToUtf8String:characteristic.value]]];
+            }
+            else if ([characteristic.UUID.UUIDString isEqualToString:@"2A28"]) {
+                [self showLog:[NSString stringWithFormat:@"Software Revision = %@",[TlwTools dataToUtf8String:characteristic.value]]];
+            }
+            //        else if ([characteristic.UUID.UUIDString isEqualToString:@"2A27"]) {
+            //            [self showLog:[NSString stringWithFormat:@"Hardware Revision = %@",[TlwTools dataToUtf8String:characteristic.value]]];
+            //        }
+            //
+            
+            //        else if ([characteristic.UUID.UUIDString isEqualToString:@"2A23"]) {
+            //            [self showLog:[NSString stringWithFormat:@"System ID = %@",[TlwTools dataToUtf8String:characteristic.value]]];
+            //        }
+            //        else if ([characteristic.UUID.UUIDString isEqualToString:@"2A2A"]) {
+            //            [self showLog:[NSString stringWithFormat:@"PnP ID = %@",[TlwTools dataToUtf8String:characteristic.value]]];
+            //        }
+            //        else if ([characteristic.UUID.UUIDString isEqualToString:@"2A29"]) {
+            //            [self showLog:[NSString stringWithFormat:@"Manufacturer Name = %@",[TlwTools dataToUtf8String:characteristic.value]]];
+            //        }
+            else if ([characteristic.UUID.UUIDString isEqualToString:kM8ClickUUID]) {
+                [peripheral setNotifyValue:YES forCharacteristic:characteristic];
+            }
+            else if ([characteristic.UUID.UUIDString isEqualToString:kM8VoiceUUID]) {
+                //语音特征
+                [peripheral setNotifyValue:YES forCharacteristic:characteristic];
+                self.productType = AiMouseProductType_m8;
+                //            dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC);
+                //            dispatch_after(delayTime, dispatch_get_main_queue(), ^{
                 [self showLog:[NSString stringWithFormat:@"连接成功 = %@",peripheral.name]];
                 self.connectStateCallBack(self.curentPeripheral.name,true);
-            });
-        }
-        else if ([characteristic.UUID.UUIDString isEqualToString:kTlwSetDeviceInfoUUID]) {
-            //设备信息特征
-            self.deviceInfoCha = characteristic;
+                //            });
+            }
+            [self showLog:[NSString stringWithFormat:@"%@",characteristic]];
         }
     }
 }
                                           [CBUUID UUIDWithString:kTlwServiceUUID],
                                           [CBUUID UUIDWithString:kM8ServiceUUID],
                                         ]];
-//    [self showLog:[NSString stringWithFormat:@"查询配对过的设备%@",devices]];
+    [self showLog:[NSString stringWithFormat:@"查询配对过的设备%@",devices]];
 
     if (devices.count > 0) {
         [self showLog:[NSString stringWithFormat:@"配对匹配过的设备%@",devices[0].name]];
         [self.curentPeripheral writeValue:data forCharacteristic:self.deviceInfoCha type:CBCharacteristicWriteWithResponse];
     }
     else{
-        [self.curentPeripheral writeValue:data forCharacteristic:self.deviceInfoCha type:CBCharacteristicWriteWithoutResponse];
+        if ([DeviceManger shared].appType == 2 || [DeviceManger shared].appType == 4) {
+            [self.curentPeripheral writeValue:data forCharacteristic:self.deviceInfoCha type:CBCharacteristicWriteWithResponse];
+        }
+        else{
+            [self.curentPeripheral writeValue:data forCharacteristic:self.deviceInfoCha type:CBCharacteristicWriteWithoutResponse];
+        }
     }
 }
 
index e35bfd4..398d31f 100644 (file)
 
 /// 产品类型
 typedef NS_ENUM(NSInteger,AiMouseProductType) {
-    AiMouseProductType_frk = 1,///富瑞坤
-    AiMouseProductType_tlw = 2,///泰凌微
-    AiMouseProductType_n = 3,///一键上网
-    AiMouseProductType_keyboard = 4,///键盘
-    AiMouseProductType_m8 = 5,///泰凌微m8
+    AiMouseProductType_frk = 1,///富瑞坤,(usb/ble)
+    AiMouseProductType_tlw = 2,///泰凌微(usb/ble)
+    AiMouseProductType_n = 3,///一键上网(usb)
+    AiMouseProductType_keyboard = 4,///键盘(usb)
+    AiMouseProductType_m8 = 5,///泰凌微m8(usb/ble)
 };
 
 NS_ASSUME_NONNULL_BEGIN
index 2c097ab..2c1cea8 100644 (file)
     [self setupBle];
     [self setupHid];
     [self setupTimer];
+    
+    if ([DeviceManger shared].appType == 2 || [DeviceManger shared].appType == 4) {
+        [[ByteDanceSdk shared] initSdk];
+    }
 }
 -(void)setDebugLevel:(int)debugLevel{
     [LogManager shared].debugLevel = debugLevel;
diff --git a/MouseSdk/AiMouseSdk/Manager/DeviceTool.h b/MouseSdk/AiMouseSdk/Manager/DeviceTool.h
new file mode 100644 (file)
index 0000000..ca955fc
--- /dev/null
@@ -0,0 +1,23 @@
+//
+//  DeviceTool.h
+//  AiMouseSdk
+//
+//  Created by liangshi on 2025/4/19.
+//
+
+#import <Foundation/Foundation.h>
+#import "DeviceManger.h"
+#import <CoreBluetooth/CoreBluetooth.h>
+
+
+@interface DeviceTool : NSObject
+
+
++ (AiMouseProductType)getTypeFromBle:(CBPeripheral *)peripheral;
+
++ (BOOL)isFrk:(CBPeripheral *)peripheral;
+
++ (BOOL)isTlw:(CBPeripheral *)peripheral;
+
++ (BOOL)isM8:(CBPeripheral *)peripheral;
+@end
diff --git a/MouseSdk/AiMouseSdk/Manager/DeviceTool.m b/MouseSdk/AiMouseSdk/Manager/DeviceTool.m
new file mode 100644 (file)
index 0000000..e840b0f
--- /dev/null
@@ -0,0 +1,62 @@
+//
+//  DeviceTool.m
+//  AiMouseSdk
+//
+//  Created by liangshi on 2025/4/19.
+//
+
+#import "DeviceTool.h"
+
+@implementation DeviceTool
+
++ (AiMouseProductType)getTypeFromBle:(CBPeripheral *)peripheral{
+    if ([self isFrk:peripheral]) {
+        return AiMouseProductType_frk;
+    }
+    if ([self isTlw:peripheral]) {
+        return AiMouseProductType_tlw;
+    }
+    return AiMouseProductType_m8;
+}
+
++ (BOOL)isFrk:(CBPeripheral *)peripheral{
+    NSArray *list = peripheral.services;
+    BOOL FFF1 = false;
+    for (CBService *s in list) {
+        if ([s.UUID.UUIDString isEqualToString:@"FFF1"]) {
+            FFF1 = true;
+        }
+    }
+    if (FFF1) {
+        return true;
+    }
+    return false;
+}
+
++ (BOOL)isTlw:(CBPeripheral *)peripheral{
+    NSArray *list = peripheral.services;
+    BOOL FFF0 = false;
+    BOOL FFF1 = false;
+    for (CBService *s in list) {
+        if ([s.UUID.UUIDString isEqualToString:@"FFF0"]) {
+            FFF0 = true;
+        }
+        if ([s.UUID.UUIDString isEqualToString:@"FFF1"]) {
+            FFF1 = true;
+        }
+    }
+    if (FFF0 && !FFF1) {
+        return true;
+    }
+    return false;
+}
+
++ (BOOL)isM8:(CBPeripheral *)peripheral{
+    if (![self isFrk:peripheral] && ![self isTlw:peripheral]) {
+        return true;
+    }
+    else{
+        return false;
+    }
+}
+@end
index 734ec3a..71df3bd 100644 (file)
@@ -210,7 +210,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){
     NSData *data = [[NSData alloc] initWithBytes:report length:reportLength];
-//        [[HidManager shared] showLog:[NSString stringWithFormat:@"receive = %@",data]];
+        [[HidManager shared] showLog:[NSString stringWithFormat:@"receive = %@",data]];
 //    return;
     if([HidManager shared].productType == AiMouseProductType_keyboard){
         uint32_t primaryUsagePage = IOHIDDevGetUInt32Property(sender, CFSTR(kIOHIDPrimaryUsagePageKey));
index 556807b..8d6edc9 100644 (file)
@@ -32,7 +32,7 @@
 //        [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
 //        [[NSRunLoop currentRunLoop] run];
 //    });
-    self.timer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(timerAction) userInfo:nil repeats:true];
+    self.timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(timerAction) userInfo:nil repeats:true];
 }
 
 - (void)timerAction{
diff --git a/MouseSdk/AiMouseSdk/TlwMouseSdk/AdpcmConverter.h b/MouseSdk/AiMouseSdk/TlwMouseSdk/AdpcmConverter.h
new file mode 100644 (file)
index 0000000..559c392
--- /dev/null
@@ -0,0 +1,18 @@
+//
+//  AdpcmConverter.h
+//  AiMouse
+//
+//  Created by incar on 2024/2/28.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface AdpcmConverter : NSObject
+
+
++ (NSData *)toPcm:(NSData *)data;
+@end
+
+NS_ASSUME_NONNULL_END
@@ -1,31 +1,24 @@
 //
-//  TlwAudioManager.m
+//  AdpcmConverter.m
 //  AiMouse
 //
 //  Created by incar on 2024/2/28.
 //
 
-#import "TlwAudioManager.h"
+#import "AdpcmConverter.h"
 #import <AVFoundation/AVFoundation.h>
 #import "adpcm.h"
 
-@interface TlwAudioManager ()
+@interface AdpcmConverter ()
 @end
 
-@implementation TlwAudioManager
+@implementation AdpcmConverter
 
--(instancetype)init{
-    if (self = [super init]) {
-
-    }
-    return self;
-}
-
-- (void)receiveData:(NSData *)data{
++ (NSData *)toPcm:(NSData *)data;{
     NSData *pcmData = [self convertADPCMDataToPCMData:data];
-    if(self.decodeCallBack)self.decodeCallBack(pcmData);
+    return pcmData;
 }
-- (NSData *)convertADPCMDataToPCMData:(NSData *)adpcmData {
++ (NSData *)convertADPCMDataToPCMData:(NSData *)adpcmData {
     const unsigned char *adpcmBytes = (const unsigned char *)[adpcmData bytes];
     NSUInteger adpcmLength = [adpcmData length];
 
diff --git a/MouseSdk/AiMouseSdk/TlwMouseSdk/TlwAudioManager.h b/MouseSdk/AiMouseSdk/TlwMouseSdk/TlwAudioManager.h
deleted file mode 100644 (file)
index bcbc620..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-//
-//  TlwAudioManager.h
-//  AiMouse
-//
-//  Created by incar on 2024/2/28.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface TlwAudioManager : NSObject
-@property (nonatomic,strong)void (^outputData)(NSData *data);
-@property (nonatomic,strong)void (^decodeCallBack)(NSData *data);
-@property (nonatomic,strong)void (^outputLog)(NSString *log);
-
-- (void)receiveData:(NSData *)data;
-@end
-
-NS_ASSUME_NONNULL_END
index a3b98f2..0ab53c5 100644 (file)
@@ -6,7 +6,7 @@
 //
 
 #import "TlwMouseSdk.h"
-#import "TlwAudioManager.h"
+#import "AdpcmConverter.h"
 #import "TlwTools.h"
 #import "AiRecordManager.h"
 
@@ -25,7 +25,6 @@
 
 @interface TlwMouse()
 
-@property (nonatomic, strong) TlwAudioManager *audioManager;
 @property (nonatomic, strong) AiRecordManager *recordManager;
 
 @property (nonatomic,strong)void (^dongleStateCallBack)(BOOL success);
     return @"1.0.2";
 }
 
--(TlwAudioManager *)audioManager{
-    if (!_audioManager) {
-        _audioManager = [[TlwAudioManager alloc] init];
-        __weak typeof(self) ws = self;
-        _audioManager.decodeCallBack = ^(NSData * _Nonnull data) {
-            [ws sendRecordData:data];
-        };
-        _audioManager.outputLog = ^(NSString * _Nonnull log) {
-            [ws showLog:log];
-        };
-    }
-    return _audioManager;
-}
-
 - (AiRecordManager *)recordManager{
     if (!_recordManager) {
         _recordManager = [[AiRecordManager alloc] init];
 }
 #pragma mark - ble
 - (void)bleReceiveAiData:(NSData *)data{
-    [self.audioManager receiveData:data];
+    NSData *pcm = [AdpcmConverter toPcm:data];
+    [self sendRecordData:pcm];
 }
 
 -(void)bleReceiveDeviceData:(NSData *)data{
index 0e26bc4..cd7c339 100644 (file)
Binary files a/MouseSdk/MouseSdk.xcworkspace/xcuserdata/yaozuopan.xcuserdatad/UserInterfaceState.xcuserstate and b/MouseSdk/MouseSdk.xcworkspace/xcuserdata/yaozuopan.xcuserdatad/UserInterfaceState.xcuserstate differ
index ff83931..45774dd 100644 (file)
@@ -3,38 +3,4 @@
    uuid = "D56CBD13-B1CD-4964-946C-9C0A140796C8"
    type = "0"
    version = "2.0">
-   <Breakpoints>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "7811129E-8425-43E8-9FDC-75B40C321EE5"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "AiMouseSdk/AiMouseSdk/AiAudioManager.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "52"
-            endingLineNumber = "52"
-            landmarkName = "-setupAudioDecoder"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "4CD2AA7E-80CE-4CAA-A0AC-008B3CD5E559"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "AiMouseSdk/Manager/HidManager.m"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "57"
-            endingLineNumber = "57"
-            landmarkName = "hidAppearDevice(inContext, inResult, inSender, inIOHIDDeviceRef)"
-            landmarkType = "9">
-         </BreakpointContent>
-      </BreakpointProxy>
-   </Breakpoints>
 </Bucket>
index decd0e0..d4282c0 100644 (file)
             else{
                 ws.typeLabel.stringValue = @"连接模式:--";
                 ws.connectLabel.stringValue = @"连接状态:未连接";
+                ws.deviceInfoLabel.stringValue = @"";
+                ws.authLabel.stringValue = @"鉴权状态:--";
             }
         });
     }];
         NSLog(@"%@",[NSString stringWithFormat:@"按键指令 = %@",data]);
     };
     manager.recordingCallBack = ^(NSString * _Nonnull data) {
-        NSLog(@"%@",[NSString stringWithFormat:@"语音数据 = %@",data]);
+//        NSLog(@"%@",[NSString stringWithFormat:@"语音数据 = %@",data]);
     };
 }
 
index a1cc8f6..c230d1a 100644 (file)
@@ -7,12 +7,12 @@
                <key>Masonry.xcscheme_^#shared#^_</key>
                <dict>
                        <key>orderHint</key>
-                       <integer>3</integer>
+                       <integer>2</integer>
                </dict>
                <key>Pods-MouseSdk.xcscheme_^#shared#^_</key>
                <dict>
                        <key>orderHint</key>
-                       <integer>2</integer>
+                       <integer>3</integer>
                </dict>
        </dict>
 </dict>