浏览代码

增加: 蓝牙体重秤

tags/v1.5.11^0
larryzhang 2 年前
父节点
当前提交
f68ce66fe2
共有 100 个文件被更改,包括 619 次插入84 次删除
  1. 72
    42
      AILinkBleSDKDemo.xcodeproj/project.pbxproj
  2. 二进制
      AILinkBleSDKDemo/AILinkBleSDK.framework/AILinkBleSDK
  3. 4
    1
      AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/AILinkBleSDK-umbrella.h
  4. 1
    1
      AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/AILinkBleSDK_Version.h
  5. 16
    0
      AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELAILinkBleManager+MeatProbeBox.h
  6. 3
    4
      AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELAILinkBleManager+NoiseMeter.h
  7. 32
    18
      AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELAILinkBleManager.h
  8. 16
    0
      AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELMeatProbeBoxBleModel.h
  9. 16
    0
      AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELMeatProbeBoxBleParser.h
  10. 3
    2
      AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELNoiseMeterBleFunctionModel.h
  11. 1
    1
      AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELNoiseMeterBleHeader.h
  12. 24
    6
      AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELNoiseMeterBleParser.h
  13. 3
    3
      AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELNoiseMeterBleSettingModel.h
  14. 3
    3
      AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELNoiseMeterBleStatusModel.h
  15. 13
    3
      AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELSDKHeader.h
  16. 二进制
      AILinkBleSDKDemo/AILinkBleSDK.framework/Info.plist
  17. 0
    0
      AILinkBleSDKDemo/DeviceDemo/04_BabyScale/BabyScaleConnectViewController.h
  18. 0
    0
      AILinkBleSDKDemo/DeviceDemo/04_BabyScale/BabyScaleConnectViewController.m
  19. 0
    0
      AILinkBleSDKDemo/DeviceDemo/04_BabyScale/BabyScaleViewController.h
  20. 0
    0
      AILinkBleSDKDemo/DeviceDemo/04_BabyScale/BabyScaleViewController.m
  21. 0
    0
      AILinkBleSDKDemo/DeviceDemo/05_BloodPressure/BloodConnectViewController.h
  22. 0
    0
      AILinkBleSDKDemo/DeviceDemo/05_BloodPressure/BloodConnectViewController.m
  23. 0
    0
      AILinkBleSDKDemo/DeviceDemo/05_BloodPressure/BloodScanViewController.h
  24. 0
    0
      AILinkBleSDKDemo/DeviceDemo/05_BloodPressure/BloodScanViewController.m
  25. 0
    0
      AILinkBleSDKDemo/DeviceDemo/06_HeightGuage/HeightGuageConnectViewController.h
  26. 0
    0
      AILinkBleSDKDemo/DeviceDemo/06_HeightGuage/HeightGuageConnectViewController.m
  27. 0
    0
      AILinkBleSDKDemo/DeviceDemo/06_HeightGuage/HeightGuageScanViewController.h
  28. 0
    0
      AILinkBleSDKDemo/DeviceDemo/06_HeightGuage/HeightGuageScanViewController.m
  29. 0
    0
      AILinkBleSDKDemo/DeviceDemo/07_RemoteControl/RemoteControlConnectViewController.h
  30. 0
    0
      AILinkBleSDKDemo/DeviceDemo/07_RemoteControl/RemoteControlConnectViewController.m
  31. 0
    0
      AILinkBleSDKDemo/DeviceDemo/07_RemoteControl/RemoteControlScanViewController.h
  32. 0
    0
      AILinkBleSDKDemo/DeviceDemo/07_RemoteControl/RemoteControlScanViewController.m
  33. 0
    0
      AILinkBleSDKDemo/DeviceDemo/08_Forehead/ForeheadConnectViewController.h
  34. 0
    0
      AILinkBleSDKDemo/DeviceDemo/08_Forehead/ForeheadConnectViewController.m
  35. 0
    0
      AILinkBleSDKDemo/DeviceDemo/08_Forehead/ForeheadScanViewController.h
  36. 0
    0
      AILinkBleSDKDemo/DeviceDemo/08_Forehead/ForeheadScanViewController.m
  37. 0
    0
      AILinkBleSDKDemo/DeviceDemo/09_Thermometer/ThermometerConnectViewController.h
  38. 0
    0
      AILinkBleSDKDemo/DeviceDemo/09_Thermometer/ThermometerConnectViewController.m
  39. 0
    0
      AILinkBleSDKDemo/DeviceDemo/09_Thermometer/ThermometerScanViewController.h
  40. 0
    0
      AILinkBleSDKDemo/DeviceDemo/09_Thermometer/ThermometerScanViewController.m
  41. 0
    0
      AILinkBleSDKDemo/DeviceDemo/10_WheelMonitor/WheelMonitorConnectViewController.h
  42. 0
    0
      AILinkBleSDKDemo/DeviceDemo/10_WheelMonitor/WheelMonitorConnectViewController.m
  43. 0
    0
      AILinkBleSDKDemo/DeviceDemo/10_WheelMonitor/WheelMonitorScanViewController.h
  44. 0
    0
      AILinkBleSDKDemo/DeviceDemo/10_WheelMonitor/WheelMonitorScanViewController.m
  45. 21
    0
      AILinkBleSDKDemo/DeviceDemo/11B_BodyScale/BodyScaleVC.h
  46. 391
    0
      AILinkBleSDKDemo/DeviceDemo/11B_BodyScale/BodyScaleVC.m
  47. 0
    0
      AILinkBleSDKDemo/DeviceDemo/11_BodyFatScale/BodyFatScaleConnectViewController.h
  48. 0
    0
      AILinkBleSDKDemo/DeviceDemo/11_BodyFatScale/BodyFatScaleConnectViewController.m
  49. 0
    0
      AILinkBleSDKDemo/DeviceDemo/11_BodyFatScale/BodyFatScaleScanViewController.h
  50. 0
    0
      AILinkBleSDKDemo/DeviceDemo/11_BodyFatScale/BodyFatScaleScanViewController.m
  51. 0
    0
      AILinkBleSDKDemo/DeviceDemo/12_BroadcastScale/BroadcastScaleViewController.h
  52. 0
    0
      AILinkBleSDKDemo/DeviceDemo/12_BroadcastScale/BroadcastScaleViewController.m
  53. 0
    0
      AILinkBleSDKDemo/DeviceDemo/13_EightScale/BhBodyComposition120/BhBodyCompositionAllBody50KHz.h
  54. 0
    0
      AILinkBleSDKDemo/DeviceDemo/13_EightScale/BhBodyComposition120/BhBodyCompositionEnum.h
  55. 0
    0
      AILinkBleSDKDemo/DeviceDemo/13_EightScale/BhBodyComposition120/libBhBodyComposition120.a
  56. 0
    0
      AILinkBleSDKDemo/DeviceDemo/13_EightScale/ELEightScaleAlgorithmTool.h
  57. 0
    0
      AILinkBleSDKDemo/DeviceDemo/13_EightScale/ELEightScaleAlgorithmTool.m
  58. 0
    0
      AILinkBleSDKDemo/DeviceDemo/13_EightScale/ELEightScaleRecordModel.h
  59. 0
    0
      AILinkBleSDKDemo/DeviceDemo/13_EightScale/ELEightScaleRecordModel.m
  60. 0
    0
      AILinkBleSDKDemo/DeviceDemo/13_EightScale/EightScaleConnectionViewController.h
  61. 0
    0
      AILinkBleSDKDemo/DeviceDemo/13_EightScale/EightScaleConnectionViewController.m
  62. 0
    0
      AILinkBleSDKDemo/DeviceDemo/13_EightScale/EightScaleScanViewController.h
  63. 0
    0
      AILinkBleSDKDemo/DeviceDemo/13_EightScale/EightScaleScanViewController.m
  64. 0
    0
      AILinkBleSDKDemo/DeviceDemo/13_EightScale/HTBodyfat_SDK/HTBodyfat_SDK.h
  65. 0
    0
      AILinkBleSDKDemo/DeviceDemo/13_EightScale/HTBodyfat_SDK/libHTBodyfat_SDK.a
  66. 0
    0
      AILinkBleSDKDemo/DeviceDemo/14_WifiBleToothbrush/ToothbrushConnectionViewController.h
  67. 0
    0
      AILinkBleSDKDemo/DeviceDemo/14_WifiBleToothbrush/ToothbrushConnectionViewController.m
  68. 0
    0
      AILinkBleSDKDemo/DeviceDemo/14_WifiBleToothbrush/ToothbrushScanViewController.h
  69. 0
    0
      AILinkBleSDKDemo/DeviceDemo/14_WifiBleToothbrush/ToothbrushScanViewController.m
  70. 0
    0
      AILinkBleSDKDemo/DeviceDemo/15_WifiBleBodyFatScale/ELBfsWifiConnectTableViewCell.h
  71. 0
    0
      AILinkBleSDKDemo/DeviceDemo/15_WifiBleBodyFatScale/ELBfsWifiConnectTableViewCell.m
  72. 0
    0
      AILinkBleSDKDemo/DeviceDemo/15_WifiBleBodyFatScale/ELBfsWifiConnectVC.h
  73. 0
    0
      AILinkBleSDKDemo/DeviceDemo/15_WifiBleBodyFatScale/ELBfsWifiConnectVC.m
  74. 0
    0
      AILinkBleSDKDemo/DeviceDemo/15_WifiBleBodyFatScale/ELBfsWifiScanVC.h
  75. 0
    0
      AILinkBleSDKDemo/DeviceDemo/15_WifiBleBodyFatScale/ELBfsWifiScanVC.m
  76. 0
    0
      AILinkBleSDKDemo/DeviceDemo/16_Oximeter/OximeterConnectionViewController.h
  77. 0
    0
      AILinkBleSDKDemo/DeviceDemo/16_Oximeter/OximeterConnectionViewController.m
  78. 0
    0
      AILinkBleSDKDemo/DeviceDemo/16_Oximeter/OximeterScanViewController.h
  79. 0
    0
      AILinkBleSDKDemo/DeviceDemo/16_Oximeter/OximeterScanViewController.m
  80. 0
    0
      AILinkBleSDKDemo/DeviceDemo/17_BloodSugar/BloodSugarConnectionViewController.h
  81. 0
    0
      AILinkBleSDKDemo/DeviceDemo/17_BloodSugar/BloodSugarConnectionViewController.m
  82. 0
    0
      AILinkBleSDKDemo/DeviceDemo/17_BloodSugar/BloodSugarScanViewController.h
  83. 0
    0
      AILinkBleSDKDemo/DeviceDemo/17_BloodSugar/BloodSugarScanViewController.m
  84. 0
    0
      AILinkBleSDKDemo/DeviceDemo/18_CoffeeScale/CoffeeScaleConnectionViewController.h
  85. 0
    0
      AILinkBleSDKDemo/DeviceDemo/18_CoffeeScale/CoffeeScaleConnectionViewController.m
  86. 0
    0
      AILinkBleSDKDemo/DeviceDemo/18_CoffeeScale/CoffeeScaleScanViewController.h
  87. 0
    0
      AILinkBleSDKDemo/DeviceDemo/18_CoffeeScale/CoffeeScaleScanViewController.m
  88. 0
    0
      AILinkBleSDKDemo/DeviceDemo/19_FoodThermometer/FoodThermometerConnectionViewController.h
  89. 0
    0
      AILinkBleSDKDemo/DeviceDemo/19_FoodThermometer/FoodThermometerConnectionViewController.m
  90. 0
    0
      AILinkBleSDKDemo/DeviceDemo/19_FoodThermometer/FoodThermometerScanViewController.h
  91. 0
    0
      AILinkBleSDKDemo/DeviceDemo/19_FoodThermometer/FoodThermometerScanViewController.m
  92. 0
    0
      AILinkBleSDKDemo/DeviceDemo/20_BroadcastNutritionScale/BroadcastNutritionScaleViewController.h
  93. 0
    0
      AILinkBleSDKDemo/DeviceDemo/20_BroadcastNutritionScale/BroadcastNutritionScaleViewController.m
  94. 0
    0
      AILinkBleSDKDemo/DeviceDemo/21_NutritionScale/NutritionScaleConnectionViewController.h
  95. 0
    0
      AILinkBleSDKDemo/DeviceDemo/21_NutritionScale/NutritionScaleConnectionViewController.m
  96. 0
    0
      AILinkBleSDKDemo/DeviceDemo/21_NutritionScale/NutritionScaleScanViewController.h
  97. 0
    0
      AILinkBleSDKDemo/DeviceDemo/21_NutritionScale/NutritionScaleScanViewController.m
  98. 0
    0
      AILinkBleSDKDemo/DeviceDemo/22_AiFreshNutritionScale/AiFreshNutritionScaleConnectionViewController.h
  99. 0
    0
      AILinkBleSDKDemo/DeviceDemo/22_AiFreshNutritionScale/AiFreshNutritionScaleConnectionViewController.m
  100. 0
    0
      AILinkBleSDKDemo/DeviceDemo/22_AiFreshNutritionScale/AiFreshNutritionScaleScanViewController.h

+ 72
- 42
AILinkBleSDKDemo.xcodeproj/project.pbxproj 查看文件

objects = { objects = {


/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
78DC38C729278F790080E0D9 /* libBhBodyComposition120.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78DC38C529278F790080E0D9 /* libBhBodyComposition120.a */; };
78350BB329D2826900456695 /* libHTBodyfat_SDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78350BB129D2826900456695 /* libHTBodyfat_SDK.a */; };
78350BB729D282A300456695 /* libBhBodyComposition120.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78350BB429D282A300456695 /* libBhBodyComposition120.a */; };
78350BBB29D2869000456695 /* BodyScaleVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 78350BB929D2869000456695 /* BodyScaleVC.m */; };
78350BBD29D28C1200456695 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 78350BBC29D28C1200456695 /* README.md */; };
78DC4DE32990FB2E006C6911 /* ELDemoScanVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 78DC4DDE2990FB2E006C6911 /* ELDemoScanVC.xib */; }; 78DC4DE32990FB2E006C6911 /* ELDemoScanVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 78DC4DDE2990FB2E006C6911 /* ELDemoScanVC.xib */; };
78DC4DE42990FB2E006C6911 /* ELDemoDeviceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 78DC4DDF2990FB2E006C6911 /* ELDemoDeviceModel.m */; }; 78DC4DE42990FB2E006C6911 /* ELDemoDeviceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 78DC4DDF2990FB2E006C6911 /* ELDemoDeviceModel.m */; };
78DC4DE52990FB2E006C6911 /* ELDemoScanVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 78DC4DE02990FB2E006C6911 /* ELDemoScanVC.m */; }; 78DC4DE52990FB2E006C6911 /* ELDemoScanVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 78DC4DE02990FB2E006C6911 /* ELDemoScanVC.m */; };
9557263D276C38CD003BFBAC /* ThermometerConnectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 955725FD276C38CD003BFBAC /* ThermometerConnectViewController.m */; }; 9557263D276C38CD003BFBAC /* ThermometerConnectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 955725FD276C38CD003BFBAC /* ThermometerConnectViewController.m */; };
9557263E276C38CD003BFBAC /* EightScaleScanViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 95572600276C38CD003BFBAC /* EightScaleScanViewController.m */; }; 9557263E276C38CD003BFBAC /* EightScaleScanViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 95572600276C38CD003BFBAC /* EightScaleScanViewController.m */; };
9557263F276C38CD003BFBAC /* EightScaleConnectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 95572601276C38CD003BFBAC /* EightScaleConnectionViewController.m */; }; 9557263F276C38CD003BFBAC /* EightScaleConnectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 95572601276C38CD003BFBAC /* EightScaleConnectionViewController.m */; };
95572640276C38CD003BFBAC /* libHTBodyfat_SDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 95572605276C38CD003BFBAC /* libHTBodyfat_SDK.a */; };
95572641276C38CD003BFBAC /* ELEightScaleRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 95572606276C38CD003BFBAC /* ELEightScaleRecordModel.m */; }; 95572641276C38CD003BFBAC /* ELEightScaleRecordModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 95572606276C38CD003BFBAC /* ELEightScaleRecordModel.m */; };
95572642276C38CD003BFBAC /* ELEightScaleAlgorithmTool.m in Sources */ = {isa = PBXBuildFile; fileRef = 95572608276C38CD003BFBAC /* ELEightScaleAlgorithmTool.m */; }; 95572642276C38CD003BFBAC /* ELEightScaleAlgorithmTool.m in Sources */ = {isa = PBXBuildFile; fileRef = 95572608276C38CD003BFBAC /* ELEightScaleAlgorithmTool.m */; };
95572643276C38CD003BFBAC /* BodyFatScaleScanViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9557260B276C38CD003BFBAC /* BodyFatScaleScanViewController.m */; }; 95572643276C38CD003BFBAC /* BodyFatScaleScanViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9557260B276C38CD003BFBAC /* BodyFatScaleScanViewController.m */; };
/* End PBXContainerItemProxy section */ /* End PBXContainerItemProxy section */


/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
78DC38C429278F790080E0D9 /* BhBodyCompositionAllBody50KHz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BhBodyCompositionAllBody50KHz.h; sourceTree = "<group>"; };
78DC38C529278F790080E0D9 /* libBhBodyComposition120.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libBhBodyComposition120.a; sourceTree = "<group>"; };
78DC38C629278F790080E0D9 /* BhBodyCompositionEnum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BhBodyCompositionEnum.h; sourceTree = "<group>"; };
78350BB129D2826900456695 /* libHTBodyfat_SDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libHTBodyfat_SDK.a; sourceTree = "<group>"; };
78350BB229D2826900456695 /* HTBodyfat_SDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTBodyfat_SDK.h; sourceTree = "<group>"; };
78350BB429D282A300456695 /* libBhBodyComposition120.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libBhBodyComposition120.a; sourceTree = "<group>"; };
78350BB529D282A300456695 /* BhBodyCompositionEnum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BhBodyCompositionEnum.h; sourceTree = "<group>"; };
78350BB629D282A300456695 /* BhBodyCompositionAllBody50KHz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BhBodyCompositionAllBody50KHz.h; sourceTree = "<group>"; };
78350BB929D2869000456695 /* BodyScaleVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BodyScaleVC.m; sourceTree = "<group>"; };
78350BBA29D2869000456695 /* BodyScaleVC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BodyScaleVC.h; sourceTree = "<group>"; };
78350BBC29D28C1200456695 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
78DC4DDE2990FB2E006C6911 /* ELDemoScanVC.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ELDemoScanVC.xib; sourceTree = "<group>"; }; 78DC4DDE2990FB2E006C6911 /* ELDemoScanVC.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ELDemoScanVC.xib; sourceTree = "<group>"; };
78DC4DDF2990FB2E006C6911 /* ELDemoDeviceModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ELDemoDeviceModel.m; sourceTree = "<group>"; }; 78DC4DDF2990FB2E006C6911 /* ELDemoDeviceModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ELDemoDeviceModel.m; sourceTree = "<group>"; };
78DC4DE02990FB2E006C6911 /* ELDemoScanVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ELDemoScanVC.m; sourceTree = "<group>"; }; 78DC4DE02990FB2E006C6911 /* ELDemoScanVC.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ELDemoScanVC.m; sourceTree = "<group>"; };
95572600276C38CD003BFBAC /* EightScaleScanViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EightScaleScanViewController.m; sourceTree = "<group>"; }; 95572600276C38CD003BFBAC /* EightScaleScanViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EightScaleScanViewController.m; sourceTree = "<group>"; };
95572601276C38CD003BFBAC /* EightScaleConnectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EightScaleConnectionViewController.m; sourceTree = "<group>"; }; 95572601276C38CD003BFBAC /* EightScaleConnectionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EightScaleConnectionViewController.m; sourceTree = "<group>"; };
95572602276C38CD003BFBAC /* ELEightScaleAlgorithmTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ELEightScaleAlgorithmTool.h; sourceTree = "<group>"; }; 95572602276C38CD003BFBAC /* ELEightScaleAlgorithmTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ELEightScaleAlgorithmTool.h; sourceTree = "<group>"; };
95572604276C38CD003BFBAC /* HTBodyfat_SDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTBodyfat_SDK.h; sourceTree = "<group>"; };
95572605276C38CD003BFBAC /* libHTBodyfat_SDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libHTBodyfat_SDK.a; sourceTree = "<group>"; };
95572606276C38CD003BFBAC /* ELEightScaleRecordModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ELEightScaleRecordModel.m; sourceTree = "<group>"; }; 95572606276C38CD003BFBAC /* ELEightScaleRecordModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ELEightScaleRecordModel.m; sourceTree = "<group>"; };
95572607276C38CD003BFBAC /* EightScaleScanViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EightScaleScanViewController.h; sourceTree = "<group>"; }; 95572607276C38CD003BFBAC /* EightScaleScanViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EightScaleScanViewController.h; sourceTree = "<group>"; };
95572608276C38CD003BFBAC /* ELEightScaleAlgorithmTool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ELEightScaleAlgorithmTool.m; sourceTree = "<group>"; }; 95572608276C38CD003BFBAC /* ELEightScaleAlgorithmTool.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ELEightScaleAlgorithmTool.m; sourceTree = "<group>"; };
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
95572640276C38CD003BFBAC /* libHTBodyfat_SDK.a in Frameworks */,
78350BB329D2826900456695 /* libHTBodyfat_SDK.a in Frameworks */,
952D19A1276DE80000ED3A0C /* AILinkBleSDK.framework in Frameworks */, 952D19A1276DE80000ED3A0C /* AILinkBleSDK.framework in Frameworks */,
78DC38C729278F790080E0D9 /* libBhBodyComposition120.a in Frameworks */,
78350BB729D282A300456695 /* libBhBodyComposition120.a in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */


/* Begin PBXGroup section */ /* Begin PBXGroup section */
78350BB029D280D300456695 /* DeviceDemo */ = {
isa = PBXGroup;
children = (
955725E0276C38CC003BFBAC /* 04_BabyScale */,
955725BA276C38CC003BFBAC /* 05_BloodPressure */,
955725E5276C38CC003BFBAC /* 06_HeightGuage */,
9557261E276C38CD003BFBAC /* 07_RemoteControl */,
95572614276C38CD003BFBAC /* 08_Forehead */,
955725F9276C38CD003BFBAC /* 09_Thermometer */,
955725CC276C38CC003BFBAC /* 10_WheelMonitor */,
9557260A276C38CD003BFBAC /* 11_BodyFatScale */,
78350BB829D2869000456695 /* 11B_BodyScale */,
955725C4276C38CC003BFBAC /* 12_BroadcastScale */,
955725FE276C38CD003BFBAC /* 13_EightScale */,
95572619276C38CD003BFBAC /* 14_WifiBleToothbrush */,
955725D4276C38CC003BFBAC /* 15_WifiBleBodyFatScale */,
955725EA276C38CC003BFBAC /* 16_Oximeter */,
955725C7276C38CC003BFBAC /* 17_BloodSugar */,
955725DB276C38CC003BFBAC /* 18_CoffeeScale */,
9557260F276C38CD003BFBAC /* 19_FoodThermometer */,
955725D1276C38CC003BFBAC /* 20_BroadcastNutritionScale */,
955725EF276C38CC003BFBAC /* 21_NutritionScale */,
955725BF276C38CC003BFBAC /* 22_AiFreshNutritionScale */,
955725F4276C38CD003BFBAC /* 23_FaceMask */,
95565B742786EA3B000265EA /* 24_Skip */,
78DC4DF72990FC10006C6911 /* 25_HeightBodyFatScale */,
);
path = DeviceDemo;
sourceTree = "<group>";
};
78350BB829D2869000456695 /* 11B_BodyScale */ = {
isa = PBXGroup;
children = (
78350BBA29D2869000456695 /* BodyScaleVC.h */,
78350BB929D2869000456695 /* BodyScaleVC.m */,
);
path = 11B_BodyScale;
sourceTree = "<group>";
};
788D913626A1849C0009489E /* Frameworks */ = { 788D913626A1849C0009489E /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
78DC38C329278F790080E0D9 /* BhBodyComposition120 */ = { 78DC38C329278F790080E0D9 /* BhBodyComposition120 */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
78DC38C429278F790080E0D9 /* BhBodyCompositionAllBody50KHz.h */,
78DC38C629278F790080E0D9 /* BhBodyCompositionEnum.h */,
78DC38C529278F790080E0D9 /* libBhBodyComposition120.a */,
78350BB629D282A300456695 /* BhBodyCompositionAllBody50KHz.h */,
78350BB529D282A300456695 /* BhBodyCompositionEnum.h */,
78350BB429D282A300456695 /* libBhBodyComposition120.a */,
); );
path = BhBodyComposition120; path = BhBodyComposition120;
sourceTree = "<group>"; sourceTree = "<group>";
78DC4DF92990FC10006C6911 /* HeightBodyFatScaleVC.xib */, 78DC4DF92990FC10006C6911 /* HeightBodyFatScaleVC.xib */,
); );
name = 25_HeightBodyFatScale; name = 25_HeightBodyFatScale;
path = AILinkBleSDKDemo/25_HeightBodyFatScale;
path = AILinkBleSDKDemo/DeviceDemo/25_HeightBodyFatScale;
sourceTree = SOURCE_ROOT; sourceTree = SOURCE_ROOT;
}; };
95565B742786EA3B000265EA /* 24_Skip */ = { 95565B742786EA3B000265EA /* 24_Skip */ = {
95572603276C38CD003BFBAC /* HTBodyfat_SDK */ = { 95572603276C38CD003BFBAC /* HTBodyfat_SDK */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
95572604276C38CD003BFBAC /* HTBodyfat_SDK.h */,
95572605276C38CD003BFBAC /* libHTBodyfat_SDK.a */,
78350BB229D2826900456695 /* HTBodyfat_SDK.h */,
78350BB129D2826900456695 /* libHTBodyfat_SDK.a */,
); );
path = HTBodyfat_SDK; path = HTBodyfat_SDK;
sourceTree = "<group>"; sourceTree = "<group>";
958B4E76263C08E700476BAE /* AiLinkSuper */ = { 958B4E76263C08E700476BAE /* AiLinkSuper */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
958B4E79263C08E800476BAE /* AilinkSuperConnectViewController.h */,
958B4E77263C08E700476BAE /* AilinkSuperConnectViewController.m */, 958B4E77263C08E700476BAE /* AilinkSuperConnectViewController.m */,
958B4E78263C08E700476BAE /* AiLinkSuperViewController.h */, 958B4E78263C08E700476BAE /* AiLinkSuperViewController.h */,
958B4E79263C08E800476BAE /* AilinkSuperConnectViewController.h */,
958B4E7A263C08E800476BAE /* AiLinkSuperViewController.m */, 958B4E7A263C08E800476BAE /* AiLinkSuperViewController.m */,
); );
path = AiLinkSuper; path = AiLinkSuper;
E622E252243F1CA5003C319D = { E622E252243F1CA5003C319D = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
78350BBC29D28C1200456695 /* README.md */,
E622E25D243F1CA5003C319D /* AILinkBleSDKDemo */, E622E25D243F1CA5003C319D /* AILinkBleSDKDemo */,
E622E279243F1CA6003C319D /* AILinkBleSDKDemoUITests */, E622E279243F1CA6003C319D /* AILinkBleSDKDemoUITests */,
E622E25C243F1CA5003C319D /* Products */, E622E25C243F1CA5003C319D /* Products */,
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
788D914026A2E5380009489E /* SDK */, 788D914026A2E5380009489E /* SDK */,
955725E0276C38CC003BFBAC /* 04_BabyScale */,
955725BA276C38CC003BFBAC /* 05_BloodPressure */,
955725E5276C38CC003BFBAC /* 06_HeightGuage */,
9557261E276C38CD003BFBAC /* 07_RemoteControl */,
95572614276C38CD003BFBAC /* 08_Forehead */,
955725F9276C38CD003BFBAC /* 09_Thermometer */,
955725CC276C38CC003BFBAC /* 10_WheelMonitor */,
9557260A276C38CD003BFBAC /* 11_BodyFatScale */,
955725C4276C38CC003BFBAC /* 12_BroadcastScale */,
955725FE276C38CD003BFBAC /* 13_EightScale */,
95572619276C38CD003BFBAC /* 14_WifiBleToothbrush */,
955725D4276C38CC003BFBAC /* 15_WifiBleBodyFatScale */,
955725EA276C38CC003BFBAC /* 16_Oximeter */,
955725C7276C38CC003BFBAC /* 17_BloodSugar */,
955725DB276C38CC003BFBAC /* 18_CoffeeScale */,
9557260F276C38CD003BFBAC /* 19_FoodThermometer */,
955725D1276C38CC003BFBAC /* 20_BroadcastNutritionScale */,
955725EF276C38CC003BFBAC /* 21_NutritionScale */,
955725BF276C38CC003BFBAC /* 22_AiFreshNutritionScale */,
955725F4276C38CD003BFBAC /* 23_FaceMask */,
95565B742786EA3B000265EA /* 24_Skip */,
78DC4DF72990FC10006C6911 /* 25_HeightBodyFatScale */,
78350BB029D280D300456695 /* DeviceDemo */,
958B4E74263C08E700476BAE /* Others */, 958B4E74263C08E700476BAE /* Others */,
958B4E67263C08E700476BAE /* Tools */, 958B4E67263C08E700476BAE /* Tools */,
E622E26A243F1CA6003C319D /* Assets.xcassets */, E622E26A243F1CA6003C319D /* Assets.xcassets */,
E622E26E243F1CA6003C319D /* LaunchScreen.storyboard in Resources */, E622E26E243F1CA6003C319D /* LaunchScreen.storyboard in Resources */,
E622E26B243F1CA6003C319D /* Assets.xcassets in Resources */, E622E26B243F1CA6003C319D /* Assets.xcassets in Resources */,
78DC4DF62990FB40006C6911 /* ELDeviceScanCell.xib in Resources */, 78DC4DF62990FB40006C6911 /* ELDeviceScanCell.xib in Resources */,
78350BBD29D28C1200456695 /* README.md in Resources */,
78DC4DFC2990FC10006C6911 /* HeightBodyFatScaleVC.xib in Resources */, 78DC4DFC2990FC10006C6911 /* HeightBodyFatScaleVC.xib in Resources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
95572626276C38CD003BFBAC /* AiFreshNutritionScaleConnectionViewController.m in Sources */, 95572626276C38CD003BFBAC /* AiFreshNutritionScaleConnectionViewController.m in Sources */,
9557262F276C38CD003BFBAC /* ELBfsWifiConnectTableViewCell.m in Sources */, 9557262F276C38CD003BFBAC /* ELBfsWifiConnectTableViewCell.m in Sources */,
95572623276C38CD003BFBAC /* BloodConnectViewController.m in Sources */, 95572623276C38CD003BFBAC /* BloodConnectViewController.m in Sources */,
78350BBB29D2869000456695 /* BodyScaleVC.m in Sources */,
95572649276C38CD003BFBAC /* ToothbrushScanViewController.m in Sources */, 95572649276C38CD003BFBAC /* ToothbrushScanViewController.m in Sources */,
95572638276C38CD003BFBAC /* NutritionScaleScanViewController.m in Sources */, 95572638276C38CD003BFBAC /* NutritionScaleScanViewController.m in Sources */,
958B4EB5263C08E800476BAE /* MASViewConstraint.m in Sources */, 958B4EB5263C08E800476BAE /* MASViewConstraint.m in Sources */,
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 20230209;
CURRENT_PROJECT_VERSION = 20230327;
DEVELOPMENT_TEAM = YEU77XR292; DEVELOPMENT_TEAM = YEU77XR292;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/AILinkBleSDKDemo/EightScale/HTBodyfat_SDK", "$(PROJECT_DIR)/AILinkBleSDKDemo/EightScale/HTBodyfat_SDK",
"$(PROJECT_DIR)/AILinkBleSDKDemo/13_EightScale/HTBodyfat_SDK", "$(PROJECT_DIR)/AILinkBleSDKDemo/13_EightScale/HTBodyfat_SDK",
"$(PROJECT_DIR)/AILinkBleSDKDemo/13_EightScale/BhBodyComposition120", "$(PROJECT_DIR)/AILinkBleSDKDemo/13_EightScale/BhBodyComposition120",
"$(PROJECT_DIR)/AILinkBleSDKDemo/DeviceDemo/13_EightScale/HTBodyfat_SDK",
"$(PROJECT_DIR)/AILinkBleSDKDemo/DeviceDemo/13_EightScale/BhBodyComposition120",
); );
MARKETING_VERSION = 1.5.10_beta01;
MARKETING_VERSION = 1.5.11;
OTHER_LDFLAGS = "-ObjC"; OTHER_LDFLAGS = "-ObjC";
PRODUCT_BUNDLE_IDENTIFIER = com.pingwang.AILinkBleSDKDemo; PRODUCT_BUNDLE_IDENTIFIER = com.pingwang.AILinkBleSDKDemo;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 20230209;
CURRENT_PROJECT_VERSION = 20230327;
DEVELOPMENT_TEAM = YEU77XR292; DEVELOPMENT_TEAM = YEU77XR292;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(PROJECT_DIR)/AILinkBleSDKDemo/EightScale/HTBodyfat_SDK", "$(PROJECT_DIR)/AILinkBleSDKDemo/EightScale/HTBodyfat_SDK",
"$(PROJECT_DIR)/AILinkBleSDKDemo/13_EightScale/HTBodyfat_SDK", "$(PROJECT_DIR)/AILinkBleSDKDemo/13_EightScale/HTBodyfat_SDK",
"$(PROJECT_DIR)/AILinkBleSDKDemo/13_EightScale/BhBodyComposition120", "$(PROJECT_DIR)/AILinkBleSDKDemo/13_EightScale/BhBodyComposition120",
"$(PROJECT_DIR)/AILinkBleSDKDemo/DeviceDemo/13_EightScale/HTBodyfat_SDK",
"$(PROJECT_DIR)/AILinkBleSDKDemo/DeviceDemo/13_EightScale/BhBodyComposition120",
); );
MARKETING_VERSION = 1.5.10_beta01;
MARKETING_VERSION = 1.5.11;
OTHER_LDFLAGS = "-ObjC"; OTHER_LDFLAGS = "-ObjC";
PRODUCT_BUNDLE_IDENTIFIER = com.pingwang.AILinkBleSDKDemo; PRODUCT_BUNDLE_IDENTIFIER = com.pingwang.AILinkBleSDKDemo;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";

二进制
AILinkBleSDKDemo/AILinkBleSDK.framework/AILinkBleSDK 查看文件


+ 4
- 1
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/AILinkBleSDK-umbrella.h 查看文件

#import "ELAILinkBleManager+MeatProbe.h" #import "ELAILinkBleManager+MeatProbe.h"
#import "ELMeatProbeBleModel.h" #import "ELMeatProbeBleModel.h"
#import "ELMeatProbeBleTool.h" #import "ELMeatProbeBleTool.h"
#import "ELAILinkBleManager+MeatProbeBox.h"
#import "ELMeatProbeBoxBleModel.h"
#import "ELMeatProbeBoxBleParser.h"
#import "ELAILinkBleManager+NoiseMeter.h" #import "ELAILinkBleManager+NoiseMeter.h"
#import "ELNoiseMeterBleFunctionModel.h" #import "ELNoiseMeterBleFunctionModel.h"
#import "ELNoiseMeterBleHeader.h" #import "ELNoiseMeterBleHeader.h"
#import "ELCoffeeScaleBleDataModel.h" #import "ELCoffeeScaleBleDataModel.h"
#import "ELCoffeeScaleBleHeader.h" #import "ELCoffeeScaleBleHeader.h"
#import "ELCoffeeScaleBleManager.h" #import "ELCoffeeScaleBleManager.h"
#import "AILinkBleSDK_Version.h"
#import "ELBlePublicTool.h" #import "ELBlePublicTool.h"
#import "ELBluetoothManager+BleWifi.h" #import "ELBluetoothManager+BleWifi.h"
#import "ELBluetoothManager+BleWifi_Callback.h" #import "ELBluetoothManager+BleWifi_Callback.h"
#import "ELWheelMonitorBleHeader.h" #import "ELWheelMonitorBleHeader.h"
#import "ELWheelMonitorBleManager.h" #import "ELWheelMonitorBleManager.h"
#import "ELWheelMonitorBleModel.h" #import "ELWheelMonitorBleModel.h"
#import "AILinkBleSDK_Version.h"
#import "ELBleDisposeDataTool.h" #import "ELBleDisposeDataTool.h"
#import "ELBleWifiDetailModel.h" #import "ELBleWifiDetailModel.h"
#import "ELSDKHeader.h" #import "ELSDKHeader.h"

+ 1
- 1
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/AILinkBleSDK_Version.h 查看文件

#define AILinkBleSDK_Version_h #define AILinkBleSDK_Version_h


//版本号 SDK Version //版本号 SDK Version
#define AiLinkBleSDKVersion @"1.5.10_beta01" //20230209 优化牙刷
#define AiLinkBleSDKVersion @"1.5.11" //20230327 增加 蓝牙体重秤


#endif /* AILinkBleSDK_Version_h */ #endif /* AILinkBleSDK_Version_h */

+ 16
- 0
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELAILinkBleManager+MeatProbeBox.h 查看文件

//
// ELAILinkBleManager+MeatProbeBox.h
// AILinkBleSDK
//
// Created by LarryZhang on 2023/2/16.
//

#import "ELAILinkBleManager.h"

NS_ASSUME_NONNULL_BEGIN

@interface ELAILinkBleManager (MeatProbeBox)

@end

NS_ASSUME_NONNULL_END

+ 3
- 4
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELAILinkBleManager+NoiseMeter.h 查看文件

// Created by LarryZhang on 2022/12/21. // Created by LarryZhang on 2022/12/21.
// //


#import "ELAILinkBleManager.h"
#import "ELTLVModel.h"
#import "ELNoiseMeterBleHeader.h"
#import "ELNoiseMeterBleParser.h"
#import <AILinkBleSDK/ELAILinkBleManager.h>

@class ELTLVModel;


NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN



+ 32
- 18
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELAILinkBleManager.h 查看文件



#import "NELBleManagerHeader.h" #import "NELBleManagerHeader.h"
#import "ELSDKHeader.h" #import "ELSDKHeader.h"
#import "AILinkBleSDK_Version.h"


NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN




//不是必须使用单例 //不是必须使用单例
+ (instancetype)sharedManager; + (instancetype)sharedManager;
- (NSString *)sdkVersion;
+ (NSString *)sdkVersion;


@property(nonatomic, assign, readonly, getter=isScanning) BOOL scanning; @property(nonatomic, assign, readonly, getter=isScanning) BOOL scanning;


#pragma mark - connect #pragma mark - connect
@interface ELAILinkBleManager (connect) @interface ELAILinkBleManager (connect)


- (void)connectPeripheral:(CBPeripheral *)peripheral;
//- (void)connectPeripheral:(CBPeripheral *)peripheral;


- (void)disconnectPeripheral; - (void)disconnectPeripheral;




@end @end


#pragma mark - specialMethod
@interface ELAILinkBleManager (specialMethod)

- (BOOL)specialMethodWithCid:(UInt16)cid vid:(UInt16)vid pid:(UInt16)pid secret:(NSString *)secret;

@end

#pragma mark - BleWifi #pragma mark - BleWifi
@interface ELAILinkBleManager (BleWifi) @interface ELAILinkBleManager (BleWifi)
//============ Bluetooth WIFI calling method(蓝牙WIFI 设置命令) ============== //============ Bluetooth WIFI calling method(蓝牙WIFI 设置命令) ==============
WIFI initiate connection and disconnect(WIFI 发起连接、断开连接) WIFI initiate connection and disconnect(WIFI 发起连接、断开连接)
@param connect YES: initiate connection NO: disconnect(YES:发起连接 NO:断开连接) @param connect YES: initiate connection NO: disconnect(YES:发起连接 NO:断开连接)
*/ */
-(void)bleWifiSetupWifiConnect:(BOOL)connect;
- (void)bleWifiSetupWifiConnect:(BOOL)connect;


/** /**
Set WIFI access URL(设置WIFI访问URL) Set WIFI access URL(设置WIFI访问URL)
@param url url(Not more than 56chars(不超过56chars)) @param url url(Not more than 56chars(不超过56chars))
*/ */
-(void)bleWifiSetWifiURL:(NSString *)url;
- (void)bleWifiSetWifiURL:(NSString *)url;


/** /**
Set Wifi access port number(设置Wifi访问端口号) Set Wifi access port number(设置Wifi访问端口号)
@param port 端口号 @param port 端口号
*/ */
-(void)bleWifiSetPort:(int)port;
- (void)bleWifiSetPort:(int)port;


/** /**
Set DTIM interval(设置DTIM间隔) Set DTIM interval(设置DTIM间隔)
@param interval 间隔 @param interval 间隔
*/ */
-(void)bleWifiSetDTIMInterval:(int)interval;
- (void)bleWifiSetDTIMInterval:(int)interval;


/** /**
Set WIFI password(设置WIFI密码) Set WIFI password(设置WIFI密码)
@param pwd WIFI password (8 ~ 56 chars)(WIFI密码(8~56 个chars)) @param pwd WIFI password (8 ~ 56 chars)(WIFI密码(8~56 个chars))
*/ */
-(void)bleWifiSetWifiPwd:(NSString *)pwd;
- (void)bleWifiSetWifiPwd:(NSString *)pwd;


/** /**
Set up connected WIFI(设置连接的WIFI) Set up connected WIFI(设置连接的WIFI)
@param macData wifi MAC (little endian)(wifi的MAC(小端序)) @param macData wifi MAC (little endian)(wifi的MAC(小端序))
*/ */
-(void)bleWifiSetConnectWifiMac:(NSData *)macData;
- (void)bleWifiSetConnectWifiMac:(NSData *)macData;


@end @end




//A7数据 payload //A7数据 payload
- (void)aiLinkBleReceiveA7Data:(NSData *)payload; - (void)aiLinkBleReceiveA7Data:(NSData *)payload;
- (void)aiLinkBleReceiveA7Data:(NSData *)payload withMac:(NSData *)mac;
- (void)aiLinkBleReceiveA7Data:(NSData *)payload withMac:(NSData *)mac DEPRECATED_MSG_ATTRIBUTE("use 'aiLinkBleReceiveA7Data:aILinkPeripheral' instead");
- (void)aiLinkBleReceiveA7Data:(NSData *)packet aILinkPeripheral:(ELAILinkPeripheral *)aILinkPeripheral;


//A6数据 packet //A6数据 packet
- (void)aiLinkBleReceiveA6Data:(NSData *)packet; - (void)aiLinkBleReceiveA6Data:(NSData *)packet;
- (void)aiLinkBleReceiveA6Data:(NSData *)packet withMac:(NSData *)mac;
- (void)aiLinkBleReceiveA6Data:(NSData *)packet withMac:(NSData *)mac DEPRECATED_MSG_ATTRIBUTE("use 'aiLinkBleReceiveA6Data:aILinkPeripheral' instead");
- (void)aiLinkBleReceiveA6Data:(NSData *)packet aILinkPeripheral:(ELAILinkPeripheral *)aILinkPeripheral;

- (void)aiLinkBleReceiveRawData:(NSData *)rawData aILinkPeripheral:(ELAILinkPeripheral *)aILinkPeripheral;


@end @end


Callback Wifi details(回调Wifi详情) Callback Wifi details(回调Wifi详情)
@param model 模型 @param model 模型
*/ */
-(void)bleWifiReceiveWifiDetailModel:(ELBleWifiDetailModel *_Nonnull)model;
- (void)bleWifiReceiveWifiDetailModel:(ELBleWifiDetailModel *_Nonnull)model;


/** /**
Scan nearby wifi results(扫描附近wifi结果) Scan nearby wifi results(扫描附近wifi结果)
@param count Number of nearby wifi(附近wifi数量) @param count Number of nearby wifi(附近wifi数量)
*/ */
-(void)bleWifiReceiveScanedWifiCount:(int)count;
- (void)bleWifiReceiveScanedWifiCount:(int)count;


/** /**
Callback Wifi MAC address(回调Wifi MAC地址) Callback Wifi MAC address(回调Wifi MAC地址)
@param macData mac @param macData mac
*/ */
-(void)bleWifiReceiveWifiMacData:(NSData *_Nullable)macData;
- (void)bleWifiReceiveWifiMacData:(NSData *_Nullable)macData;


/** /**
Callback WIFI password(回调WIFI密码) Callback WIFI password(回调WIFI密码)
@param pwd password(密码) @param pwd password(密码)
*/ */
-(void)bleWifiReceiveWifiPwd:(NSString *_Nonnull)pwd;
- (void)bleWifiReceiveWifiPwd:(NSString *_Nonnull)pwd;


/** /**
Get DTIM interval (unit: ms)(获取DTIM间隔(单位:ms)) Get DTIM interval (unit: ms)(获取DTIM间隔(单位:ms))
@param interval Interval (unit: ms)(间隔(单位:ms)) @param interval Interval (unit: ms)(间隔(单位:ms))
*/ */
-(void)bleWifiReceiveWifiDTIMInterval:(NSInteger)interval;
- (void)bleWifiReceiveWifiDTIMInterval:(NSInteger)interval;


/** /**
Returns the visited URL(返回访问的url) Returns the visited URL(返回访问的url)
@param url url @param url url
*/ */
-(void)bleWifiReceiveWifiAccessURL:(NSString *_Nonnull)url;
- (void)bleWifiReceiveWifiAccessURL:(NSString *_Nonnull)url;


/** /**
Call back wifi port number(回调wifi的端口号) Call back wifi port number(回调wifi的端口号)
@param port 端口号 @param port 端口号
*/ */
-(void)bleWifiReceiveWifiPort:(int)port;
- (void)bleWifiReceiveWifiPort:(int)port;


/** /**
Set or query the callback of the instruction execution result(设置指令蓝牙WIFI响应回调方法) Set or query the callback of the instruction execution result(设置指令蓝牙WIFI响应回调方法)
@param type Type of setting (设置的类型) @param type Type of setting (设置的类型)
@param result Set result(设置的结果) @param result Set result(设置的结果)
*/ */
-(void)bleWifiReceiceResponseType:(ELInetSetCmdType)type result:(ELSetBluetoothResponseType)result;
- (void)bleWifiReceiceResponseType:(ELInetSetCmdType)type result:(ELSetBluetoothResponseType)result;


/** /**
获取会话码(deviceId) 获取会话码(deviceId)
@param code (deviceId) deviceId(0 means no:为0时表示不存在) @param code (deviceId) deviceId(0 means no:为0时表示不存在)
*/ */
-(void)bleWifiReceiveWifiSNCode:(int)code;
- (void)bleWifiReceiveWifiSNCode:(int)code;


/** 返回wifi名称 */ /** 返回wifi名称 */
- (void)bleWifiName:(NSString *)wifiName; - (void)bleWifiName:(NSString *)wifiName;

+ 16
- 0
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELMeatProbeBoxBleModel.h 查看文件

//
// ELMeatProbeBoxBleModel.h
// AILinkBleSDK
//
// Created by LarryZhang on 2023/2/16.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface ELMeatProbeBoxBleModel : NSObject

@end

NS_ASSUME_NONNULL_END

+ 16
- 0
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELMeatProbeBoxBleParser.h 查看文件

//
// ELMeatProbeBoxBleParser.h
// AILinkBleSDK
//
// Created by LarryZhang on 2023/2/16.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface ELMeatProbeBoxBleParser : NSObject

@end

NS_ASSUME_NONNULL_END

+ 3
- 2
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELNoiseMeterBleFunctionModel.h 查看文件

@property (nonatomic, assign) BOOL supportMeasurementLevelSwitch; @property (nonatomic, assign) BOOL supportMeasurementLevelSwitch;


//0x04:Max/Min模式 1 //0x04:Max/Min模式 1
@property (nonatomic, assign) BOOL supportMaxMinModel;
@property (nonatomic, assign) BOOL supportMaxMinMode;


//0x05:时间加权(Fast/Slow) 1 //0x05:时间加权(Fast/Slow) 1
@property (nonatomic, assign) BOOL supportTimeWeightedFastSlow;
@property (nonatomic, assign) BOOL supportTimeWeightedFast;
@property (nonatomic, assign) BOOL supportTimeWeightedSlow;


//0x06:数值保持(hold) 1 //0x06:数值保持(hold) 1
@property (nonatomic, assign) BOOL supportValueHold; @property (nonatomic, assign) BOOL supportValueHold;

+ 1
- 1
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELNoiseMeterBleHeader.h 查看文件

ELNoiseMeterTLVTypeFrequencyWeightingAC = 0x01, //0x01:频率计权A/C ELNoiseMeterTLVTypeFrequencyWeightingAC = 0x01, //0x01:频率计权A/C
ELNoiseMeterTLVTypeTotalMeasuringRange = 0x02, //0x02:测量总范围 ELNoiseMeterTLVTypeTotalMeasuringRange = 0x02, //0x02:测量总范围
ELNoiseMeterTLVTypeMeasurementLevelSwitch = 0x03, //0x03:测量等级切换 ELNoiseMeterTLVTypeMeasurementLevelSwitch = 0x03, //0x03:测量等级切换
ELNoiseMeterTLVTypeMaxMinModel = 0x04, //0x04:Max/Min模式
ELNoiseMeterTLVTypeMaxMinMode = 0x04, //0x04:Max/Min模式
ELNoiseMeterTLVTypeTimeWeightedFastSlow = 0x05, //0x05:时间加权(Fast/Slow) ELNoiseMeterTLVTypeTimeWeightedFastSlow = 0x05, //0x05:时间加权(Fast/Slow)
ELNoiseMeterTLVTypeValueHold = 0x06, //0x06:数值保持(hold) ELNoiseMeterTLVTypeValueHold = 0x06, //0x06:数值保持(hold)
ELNoiseMeterTLVTypeAlarm = 0x07, //0x07:报警 ELNoiseMeterTLVTypeAlarm = 0x07, //0x07:报警

+ 24
- 6
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELNoiseMeterBleParser.h 查看文件

// //


#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import "ELSDKHeader.h"
#import "ELNoiseMeterBleHeader.h" #import "ELNoiseMeterBleHeader.h"
#import "ELNoiseMeterBleFunctionModel.h"
#import "ELNoiseMeterBleStatusModel.h"
#import "ELNoiseMeterBleSettingModel.h"


NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN


@class ELNoiseMeterBleFunctionModel;
@class ELNoiseMeterBleStatusModel;
@class ELNoiseMeterBleSettingModel;

@protocol ELNoiseMeterBleParserDelegate;

@interface ELNoiseMeterBleParser : NSObject @interface ELNoiseMeterBleParser : NSObject


typedef void(^noiseMeterDidUpdateDataBlock)(ELNoiseMeterBleCMD cmd, ELNoiseMeterTLVType type);
@property (nonatomic, weak) id<ELNoiseMeterBleParserDelegate> delegate;


/// 设备返回支持功能列表Model
@property (nonatomic, strong) ELNoiseMeterBleFunctionModel *functionModel; @property (nonatomic, strong) ELNoiseMeterBleFunctionModel *functionModel;


/// 设备返回状态Model
@property (nonatomic, strong) ELNoiseMeterBleStatusModel *statusModel; @property (nonatomic, strong) ELNoiseMeterBleStatusModel *statusModel;


/// 获取参数Model
@property (nonatomic, strong) ELNoiseMeterBleSettingModel *settingModel; @property (nonatomic, strong) ELNoiseMeterBleSettingModel *settingModel;




- (void)parseData:(NSData *)payload callback:(noiseMeterDidUpdateDataBlock)calllback;
- (void)parseData:(NSData *)payload;

@end

@protocol ELNoiseMeterBleParserDelegate <NSObject>

/// MCU主控回应设备功能列表
- (void)noiseMeterBleParser:(ELNoiseMeterBleParser *)bleParser returnFunctionWithTlvType:(ELNoiseMeterTLVType)tlvType;

/// MCU主控回应设备状态
- (void)noiseMeterBleParser:(ELNoiseMeterBleParser *)bleParser returnStatusWithTlvType:(ELNoiseMeterTLVType)tlvType;

/// MCU主控回应设备参数
- (void)noiseMeterBleParser:(ELNoiseMeterBleParser *)bleParser returnSettingWithTlvType:(ELNoiseMeterTLVType)tlvType;


@end @end



+ 3
- 3
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELNoiseMeterBleSettingModel.h 查看文件

@property (nonatomic, assign) NSInteger measurementLevelMax; @property (nonatomic, assign) NSInteger measurementLevelMax;


//0x04:Max/Min模式 1 //0x04:Max/Min模式 1
@property (nonatomic, assign) NSInteger maxMinModel;
@property (nonatomic, assign) NSInteger maxMinMode;


//0x05:时间加权(Fast/Slow) 1 //0x05:时间加权(Fast/Slow) 1
@property (nonatomic, assign) NSInteger timeWeightedFastSlowModel;
@property (nonatomic, assign) NSInteger timeWeightedFastSlowMode;


//0x06:数值保持(hold) 3 //0x06:数值保持(hold) 3
@property (nonatomic, assign) NSInteger valueHoldModel;
@property (nonatomic, assign) NSInteger valueHoldMode;
@property (nonatomic, assign) NSInteger valueHoldValue; @property (nonatomic, assign) NSInteger valueHoldValue;


//0x07:报警 3 //0x07:报警 3

+ 3
- 3
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELNoiseMeterBleStatusModel.h 查看文件

@property (nonatomic, assign) NSInteger measurementLevelMax; @property (nonatomic, assign) NSInteger measurementLevelMax;


//0x04:Max/Min模式 1 //0x04:Max/Min模式 1
@property (nonatomic, assign) NSInteger maxMinModel;
@property (nonatomic, assign) NSInteger maxMinMode;


//0x05:时间加权(Fast/Slow) 1 //0x05:时间加权(Fast/Slow) 1
@property (nonatomic, assign) NSInteger timeWeightedFastSlowModel;
@property (nonatomic, assign) NSInteger timeWeightedFastSlowMode;


//0x06:数值保持(hold) 3 //0x06:数值保持(hold) 3
@property (nonatomic, assign) NSInteger valueHoldModel;
@property (nonatomic, assign) NSInteger valueHoldMode;
@property (nonatomic, assign) NSInteger valueHoldValue; @property (nonatomic, assign) NSInteger valueHoldValue;


//0x07:报警 2 //0x07:报警 2

+ 13
- 3
AILinkBleSDKDemo/AILinkBleSDK.framework/Headers/ELSDKHeader.h 查看文件

ELSupportDeviceTypeCoffeeScale = 0x0024 , //咖啡秤 ELSupportDeviceTypeCoffeeScale = 0x0024 , //咖啡秤
ELSupportDeviceTypeHeightBodyFatScale = 0x0026 , //身高体脂秤 ELSupportDeviceTypeHeightBodyFatScale = 0x0026 , //身高体脂秤
ELSupportDeviceTypeHeightScale = 0x0028 , //身高体重仪,CID:40 (0x0028)
ELSupportDeviceTypeFoodThermometer = 0x002B, //Food Thermometer(食品温度计) ELSupportDeviceTypeFoodThermometer = 0x002B, //Food Thermometer(食品温度计)
ELSupportDeviceType电动自行车 = 0x004A, //电动自行车 ELSupportDeviceType电动自行车 = 0x004A, //电动自行车
ELSupportDeviceType电动自行车4G = 0x004B, //电动自行车 4G
ELSupportDeviceType电动车 = 0x004C, //电动车 ELSupportDeviceType电动车 = 0x004C, //电动车
ELSupportDeviceType电动车4G = 0x004D, //电动车 4G
ELSupportDeviceType电动平衡车 = 0x004E, //电动平衡车 ELSupportDeviceType电动平衡车 = 0x004E, //电动平衡车
ELSupportDeviceType电动平衡车4G = 0x004F, //电动平衡车 4G
ELSupportDeviceTypeBLEWiFiNoiseMeter = 0x0050, //噪音计(WiFi+BLE) ELSupportDeviceTypeBLEWiFiNoiseMeter = 0x0050, //噪音计(WiFi+BLE)
ELSupportDeviceType智能仪表 = 0x0051, //CM01-C02智能仪表 ELSupportDeviceType智能仪表 = 0x0051, //CM01-C02智能仪表
ELSupportDeviceType双频八电极体脂秤 = 0x0052, //双频八电极体脂秤 ELSupportDeviceType双频八电极体脂秤 = 0x0052, //双频八电极体脂秤
ELSupportDeviceTypeAirDetectorLite = 0x0053, //环境气体检测仪 不支持MQTT ELSupportDeviceTypeAirDetectorLite = 0x0053, //环境气体检测仪 不支持MQTT
// ELSupportDeviceType54 = 0x0054,
// ELSupportDeviceType55 = 0x0055,
// ELSupportDeviceType56 = 0x0056,
ELSupportDeviceType华普照度计 = 0x0054, //华普照度计
ELSupportDeviceTypeMeatProbeBox = 0x0055, //食物探针充电盒
ELSupportDeviceTypeBodyScale = 0x0056, //Body scale(no body fat) 体重秤(无体脂)
// ELSupportDeviceType57 = 0x0057, // ELSupportDeviceType57 = 0x0057,
// ELSupportDeviceType58 = 0x0058, // ELSupportDeviceType58 = 0x0058,
// ELSupportDeviceType59 = 0x0059, // ELSupportDeviceType59 = 0x0059,

二进制
AILinkBleSDKDemo/AILinkBleSDK.framework/Info.plist 查看文件


AILinkBleSDKDemo/04_BabyScale/BabyScaleConnectViewController.h → AILinkBleSDKDemo/DeviceDemo/04_BabyScale/BabyScaleConnectViewController.h 查看文件


AILinkBleSDKDemo/04_BabyScale/BabyScaleConnectViewController.m → AILinkBleSDKDemo/DeviceDemo/04_BabyScale/BabyScaleConnectViewController.m 查看文件


AILinkBleSDKDemo/04_BabyScale/BabyScaleViewController.h → AILinkBleSDKDemo/DeviceDemo/04_BabyScale/BabyScaleViewController.h 查看文件


AILinkBleSDKDemo/04_BabyScale/BabyScaleViewController.m → AILinkBleSDKDemo/DeviceDemo/04_BabyScale/BabyScaleViewController.m 查看文件


AILinkBleSDKDemo/05_BloodPressure/BloodConnectViewController.h → AILinkBleSDKDemo/DeviceDemo/05_BloodPressure/BloodConnectViewController.h 查看文件


AILinkBleSDKDemo/05_BloodPressure/BloodConnectViewController.m → AILinkBleSDKDemo/DeviceDemo/05_BloodPressure/BloodConnectViewController.m 查看文件


AILinkBleSDKDemo/05_BloodPressure/BloodScanViewController.h → AILinkBleSDKDemo/DeviceDemo/05_BloodPressure/BloodScanViewController.h 查看文件


AILinkBleSDKDemo/05_BloodPressure/BloodScanViewController.m → AILinkBleSDKDemo/DeviceDemo/05_BloodPressure/BloodScanViewController.m 查看文件


AILinkBleSDKDemo/06_HeightGuage/HeightGuageConnectViewController.h → AILinkBleSDKDemo/DeviceDemo/06_HeightGuage/HeightGuageConnectViewController.h 查看文件


AILinkBleSDKDemo/06_HeightGuage/HeightGuageConnectViewController.m → AILinkBleSDKDemo/DeviceDemo/06_HeightGuage/HeightGuageConnectViewController.m 查看文件


AILinkBleSDKDemo/06_HeightGuage/HeightGuageScanViewController.h → AILinkBleSDKDemo/DeviceDemo/06_HeightGuage/HeightGuageScanViewController.h 查看文件


AILinkBleSDKDemo/06_HeightGuage/HeightGuageScanViewController.m → AILinkBleSDKDemo/DeviceDemo/06_HeightGuage/HeightGuageScanViewController.m 查看文件


AILinkBleSDKDemo/07_RemoteControl/RemoteControlConnectViewController.h → AILinkBleSDKDemo/DeviceDemo/07_RemoteControl/RemoteControlConnectViewController.h 查看文件


AILinkBleSDKDemo/07_RemoteControl/RemoteControlConnectViewController.m → AILinkBleSDKDemo/DeviceDemo/07_RemoteControl/RemoteControlConnectViewController.m 查看文件


AILinkBleSDKDemo/07_RemoteControl/RemoteControlScanViewController.h → AILinkBleSDKDemo/DeviceDemo/07_RemoteControl/RemoteControlScanViewController.h 查看文件


AILinkBleSDKDemo/07_RemoteControl/RemoteControlScanViewController.m → AILinkBleSDKDemo/DeviceDemo/07_RemoteControl/RemoteControlScanViewController.m 查看文件


AILinkBleSDKDemo/08_Forehead/ForeheadConnectViewController.h → AILinkBleSDKDemo/DeviceDemo/08_Forehead/ForeheadConnectViewController.h 查看文件


AILinkBleSDKDemo/08_Forehead/ForeheadConnectViewController.m → AILinkBleSDKDemo/DeviceDemo/08_Forehead/ForeheadConnectViewController.m 查看文件


AILinkBleSDKDemo/08_Forehead/ForeheadScanViewController.h → AILinkBleSDKDemo/DeviceDemo/08_Forehead/ForeheadScanViewController.h 查看文件


AILinkBleSDKDemo/08_Forehead/ForeheadScanViewController.m → AILinkBleSDKDemo/DeviceDemo/08_Forehead/ForeheadScanViewController.m 查看文件


AILinkBleSDKDemo/09_Thermometer/ThermometerConnectViewController.h → AILinkBleSDKDemo/DeviceDemo/09_Thermometer/ThermometerConnectViewController.h 查看文件


AILinkBleSDKDemo/09_Thermometer/ThermometerConnectViewController.m → AILinkBleSDKDemo/DeviceDemo/09_Thermometer/ThermometerConnectViewController.m 查看文件


AILinkBleSDKDemo/09_Thermometer/ThermometerScanViewController.h → AILinkBleSDKDemo/DeviceDemo/09_Thermometer/ThermometerScanViewController.h 查看文件


AILinkBleSDKDemo/09_Thermometer/ThermometerScanViewController.m → AILinkBleSDKDemo/DeviceDemo/09_Thermometer/ThermometerScanViewController.m 查看文件


AILinkBleSDKDemo/10_WheelMonitor/WheelMonitorConnectViewController.h → AILinkBleSDKDemo/DeviceDemo/10_WheelMonitor/WheelMonitorConnectViewController.h 查看文件


AILinkBleSDKDemo/10_WheelMonitor/WheelMonitorConnectViewController.m → AILinkBleSDKDemo/DeviceDemo/10_WheelMonitor/WheelMonitorConnectViewController.m 查看文件


AILinkBleSDKDemo/10_WheelMonitor/WheelMonitorScanViewController.h → AILinkBleSDKDemo/DeviceDemo/10_WheelMonitor/WheelMonitorScanViewController.h 查看文件


AILinkBleSDKDemo/10_WheelMonitor/WheelMonitorScanViewController.m → AILinkBleSDKDemo/DeviceDemo/10_WheelMonitor/WheelMonitorScanViewController.m 查看文件


+ 21
- 0
AILinkBleSDKDemo/DeviceDemo/11B_BodyScale/BodyScaleVC.h 查看文件

//
// BodyScaleVC.h
// AILinkBleSDKSourceCode
//
// Created by LarryZhang on 2023/3/27.
// Copyright © 2020 IOT. All rights reserved.
//

#import <UIKit/UIKit.h>

@class ELAILinkPeripheral;

NS_ASSUME_NONNULL_BEGIN

@interface BodyScaleVC : UIViewController

@property (nonatomic, strong) ELAILinkPeripheral *per;

@end

NS_ASSUME_NONNULL_END

+ 391
- 0
AILinkBleSDKDemo/DeviceDemo/11B_BodyScale/BodyScaleVC.m 查看文件

//
// BodyScaleVC.m
// AILinkBleSDKSourceCode
//
// Created by LarryZhang on 2023/3/27.
// Copyright © 2020 IOT. All rights reserved.
//

#import <AILinkBleSDK/ELAILinkBleManager.h>
#import <AILinkBleSDK/ELBluetoothManager+Settings.h>
#import <AILinkBleSDK/ELBodyFatScaleBleManager.h>
#import <AILinkBleSDK/ELBodyFatScaleBleUserModel.h>
#import <AILinkBleSDK/ELBodyFatScaleBleWeightModel.h>
#import "BodyScaleVC.h"
#import "Masonry.h"

#import <AILinkBleSDK/ELUnitConvertTool.h>
#import <AILinkBleSDK/OEMAlgorithmSDK.h>

@interface BodyScaleVC () <ELBluetoothManagerDelegate, ELBodyFatScaleBleDelegate>

@property (nonatomic, strong) UITextView *textView;

@property (nonatomic, copy) NSArray<NSNumber *> *units;
@end

@implementation BodyScaleVC

- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];

[ELBodyFatScaleBleManager shareManager].delegate = self;
[ELBodyFatScaleBleManager shareManager].bodyFatScaleDelegate = self;
[[ELBodyFatScaleBleManager shareManager] startScan];

[self setupUIView];
}

- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[ELBodyFatScaleBleManager shareManager] disconnectPeripheral];
}

- (void)dealloc {
}

#pragma mark - Init UI

- (void)setupUIView {
UIButton *button1 = [UIButton buttonWithType:(UIButtonTypeCustom)];

[button1 setTitle:@"Get BM Version" forState:(UIControlStateNormal)];
button1.tag = 1;
button1.titleLabel.adjustsFontSizeToFitWidth = YES;
button1.titleLabel.numberOfLines = 2;
button1.backgroundColor = [UIColor blackColor];
[button1 addTarget:self action:@selector(buttonAction:) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:button1];
[button1 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(10);
make.top.mas_equalTo(100);
make.width.mas_equalTo(100);
make.height.mas_equalTo(40);
}];

UIButton *button2 = [UIButton buttonWithType:(UIButtonTypeCustom)];
[button2 setTitle:@"Get C V P ID" forState:(UIControlStateNormal)];
button2.tag = 2;
button2.titleLabel.adjustsFontSizeToFitWidth = YES;
button2.titleLabel.numberOfLines = 2;
button2.backgroundColor = [UIColor blackColor];
[button2 addTarget:self action:@selector(buttonAction:) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:button2];
[button2 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(button1.mas_right).mas_offset(10);
make.top.mas_equalTo(100);
make.width.mas_equalTo(100);
make.height.mas_equalTo(40);
}];

UIButton *button3 = [UIButton buttonWithType:(UIButtonTypeCustom)];
[button3 setTitle:@"Get Name" forState:(UIControlStateNormal)];
button3.tag = 3;
button3.titleLabel.adjustsFontSizeToFitWidth = YES;
button3.titleLabel.numberOfLines = 2;
button3.backgroundColor = [UIColor blackColor];
[button3 addTarget:self action:@selector(buttonAction:) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:button3];
[button3 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(button2.mas_right).mas_offset(10);
make.top.mas_equalTo(100);
make.width.mas_equalTo(100);
make.height.mas_equalTo(40);
}];
//
UIButton *button4 = [UIButton buttonWithType:(UIButtonTypeCustom)];
[button4 setTitle:@"Set Name" forState:(UIControlStateNormal)];
button4.tag = 4;
button4.titleLabel.adjustsFontSizeToFitWidth = YES;
button4.titleLabel.numberOfLines = 2;
button4.backgroundColor = [UIColor blackColor];
[button4 addTarget:self action:@selector(buttonAction:) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:button4];
[button4 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(10);
make.top.equalTo(button1.mas_bottom).mas_offset(10);
make.width.mas_equalTo(100);
make.height.mas_equalTo(40);
}];
//
UIButton *button5 = [UIButton buttonWithType:(UIButtonTypeCustom)];
[button5 setTitle:@"Change unit" forState:(UIControlStateNormal)];
button5.tag = 5;
button5.titleLabel.adjustsFontSizeToFitWidth = YES;
button5.titleLabel.numberOfLines = 2;
button5.backgroundColor = [UIColor blackColor];
[button5 addTarget:self action:@selector(buttonAction:) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:button5];
[button5 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(button4.mas_right).mas_offset(10);
make.top.equalTo(button1.mas_bottom).mas_offset(10);
make.width.mas_equalTo(100);
make.height.mas_equalTo(40);
}];
//
self.textView = [[UITextView alloc] init];
self.textView.backgroundColor = [UIColor blackColor];
self.textView.text = @"Log";
self.textView.textColor = [UIColor redColor];
[self.view addSubview:self.textView];
[self.textView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(10);
make.right.bottom.mas_equalTo(-10);
make.top.equalTo(button5.mas_bottom).mas_offset(10);
}];
}

#pragma mark - Action

- (void)buttonAction:(UIButton *)sender {
if ([ELBodyFatScaleBleManager shareManager].state != ELBluetoothStateDidValidationPass) {
[self addLog:@"Disconnected"];
return;
}

[self addLog:sender.titleLabel.text];
NSInteger tag = sender.tag;

if (tag == 1) {
//getBluetoothInfoWithELInetGetCmdType是获取设备信息的方法
[[ELBodyFatScaleBleManager shareManager] getBluetoothInfoWithELInetGetCmdType:(ELInetGetCmdTypeGetBMVersion)];
} else if (tag == 2) {
[[ELBodyFatScaleBleManager shareManager] getBluetoothInfoWithELInetGetCmdType:(ELInetGetCmdTypeGetC_V_P_ID)];
} else if (tag == 3) {
[[ELBodyFatScaleBleManager shareManager] getBluetoothInfoWithELInetGetCmdType:(ELInetGetCmdTypeGetName)];
} else if (tag == 4) {
[[ELBodyFatScaleBleManager shareManager] setBluetoothName:@"AILink"];
} else if (tag == 5) {
if (self.units.count == 0) {
[self addLog:@"No units obtained"];
return;
}

// [[ELBodyFatScaleBleManager shareManager] changeBodyFatScaleUnit:(ELDeviceWeightUnit_KG)];
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Change Unit" message:@"" preferredStyle:(UIAlertControllerStyleAlert)];

for (int i = 0; i < self.units.count; i++) {
UIAlertAction *action = [UIAlertAction actionWithTitle:AiLinkBleWeightUnitDic[self.units[i]]
style:(UIAlertActionStyleDefault)
handler:^(UIAlertAction *_Nonnull action) {
[[ELBodyFatScaleBleManager shareManager] changeBodyFatScaleUnit:self.units[i].integerValue];
}];
[alert addAction:action];
}

[self presentViewController:alert animated:YES completion:nil];
}
}

#pragma mark - ELBodyFatScaleBleDelegate

- (void)bodyFatScaleManagerScanDevices:(NSArray<ELPeripheralModel *> *)scaleDevices {
for (ELPeripheralModel *per in scaleDevices) {
if ([per.macAddress isEqualToString:self.per.macAddressString]) {
[[ELBodyFatScaleBleManager shareManager] stopScan];
[[ELBodyFatScaleBleManager shareManager] connectPeripheral:per];
}
}
}

- (void)bodyFatScaleManagerUpdateState:(ELBluetoothState)state {
switch (state) {
case ELBluetoothStateUnavailable: {
self.title = @"Please open the bluetooth";
}
break;

case ELBluetoothStateAvailable: {
self.title = @"Bluetooth is open";
}
break;

case ELBluetoothStateScaning: {
self.title = @"Scaning";
}
break;

case ELBluetoothStateConnectFail: {
self.title = @"Connect fail";
}
break;

case ELBluetoothStateDidDisconnect: {
self.title = @"Disconnected";
}
break;

case ELBluetoothStateDidValidationPass: {
self.title = @"Connected";
//获取设备支持的单位
[[ELBodyFatScaleBleManager shareManager] getBluetoothInfoWithELInetGetCmdType:(ELInetGetCmdTypeReadDeviceSupportUnit)];
//将你自己设置的单位发给秤
ELDeviceWeightUnit unit = ELDeviceWeightUnit_KG;
[[ELBodyFatScaleBleManager shareManager] changeBodyFatScaleUnit:unit];
}
break;

case ELBluetoothStateFailedValidation: {
self.title = @"Illegal equipment";
}
break;

case ELBluetoothStateWillConnect:
self.title = @"Connecting";
break;

default:
break;
}
}

- (void)bluetoothManagerReceiceResponseType:(ELInetSetCmdType)type result:(ELSetBluetoothResponseType)result {
if (type == ELInetSetCmdTypeSetName) {
if (result == ELSetBluetoothResponseTypeSuccess) {
[self addLog:@"Set name Success "];
} else if (result == ELSetBluetoothResponseTypeFailure) {
[self addLog:@"Set name failure "];
} else if (result == ELSetBluetoothResponseTypeNoSupport) {
[self addLog:@"Set name unsupport "];
}
}
}

- (void)bluetoothManagerReceiceName:(NSString *)name {
[self addLog:name];
}

- (void)bluetoothManagerReceiveDID:(struct ELDIDStruct)did {
[self addLog:[NSString stringWithFormat:@"CID = %lu, VID = %d, PID = %d", (unsigned long)did.deviceType, did.vendorID, did.productID]];
}

- (void)bluetoothManagerReceiveBMVersion:(NSString *)bmVersion {
[self addLog:bmVersion];
}

- (void)bluetoothManagerBackDeviceSupportUnitWithWeight:(NSArray<NSNumber *> *)weightArray Height:(NSArray<NSNumber *> *)heightArray Temperature:(NSArray<NSNumber *> *)temperatureArray BloodPressure:(NSArray<NSNumber *> *)bloodPressureArray Pressure:(NSArray<NSNumber *> *)pressureArray {
//这里只要体重数据
self.units = weightArray;
}

/**
Callback to set unit result(回调设置单位结果)

@param result 结果
*/
- (void)bodyFatScaleManagerCallBackSetUnitResult:(ELSetBluetoothResponseType)result {
switch (result) {
case ELSetBluetoothResponseTypeSuccess: {
[self addLog:@"Change Unit Success"];
}
break;

case ELSetBluetoothResponseTypeFailure: {
[self addLog:@"Change Unit Failure"];
}
break;

case ELSetBluetoothResponseTypeNoSupport: {
[self addLog:@"Unsupport Change Unit"];
}
break;

default:
break;
}
}

/**
Return weight and body fat model(返回重量及体脂model)
*/
- (void)bodyFatScaleManagerCallBackWeight:(ELBodyFatScaleBleWeightModel *)weightModel state:(BodyFatScaleMeasureStatus)status {
switch (status) {
case BodyFatScaleMeasureStatus_Unstable: {
[self addLog:[NSString stringWithFormat:@"Unstable data weight = %ld unit = %@ point = %ld", weightModel.weight, AiLinkBleWeightUnitDic[@(weightModel.weightUnit)], weightModel.weightPoint]];
}
break;

case BodyFatScaleMeasureStatus_Stable: {
[self addLog:[NSString stringWithFormat:@"Stable data weight = %ld unit = %@ point = %ld", weightModel.weight, AiLinkBleWeightUnitDic[@(weightModel.weightUnit)], weightModel.weightPoint]];
}
break;

case BodyFatScaleMeasureStatus_Failed: {
[self addLog:@"Test failure"];
}
break;

case BodyFatScaleMeasureStatus_Complete: {
[self addLog:[NSString stringWithFormat:@"Tested weight = %ld unit = %@ point = %ld", weightModel.weight, AiLinkBleWeightUnitDic[@(weightModel.weightUnit)], weightModel.weightPoint]];
NSLog(@"weightModel:%@", weightModel);
//App算法
[self algorithmWithBleModel:weightModel user:self.getOneUser];
}
break;

default:
break;
}
}

- (void)algorithmWithBleModel:(ELBodyFatScaleBleWeightModel *)weightModel user:(ELBodyFatScaleBleUserModel *)user {
NSString *weightKg = [ELUnitConvertTool getWeightShowStrWithTargetUnit:ELDeviceWeightUnit_KG bleWeightInt:weightModel.weight bleWeightUnit:weightModel.weightUnit bleWeightPoint:weightModel.weightPoint];

OEMAlgorithmModel *algorithmModel = [OEMAlgorithmSDK getBodyfatWithWeight:weightKg.floatValue adc:(int)weightModel.adc sex:user.sex age:(int)user.age height:(int)user.height];

NSLog(@"algorithmModel.bmi:%@", algorithmModel.bmi);
}

/**
Return error code(返回错误码)

@param code 错误码
1:超重
*/
- (void)bodyFatScaleManagerCallBackErrorCode:(NSInteger)code {
[self addLog:[NSString stringWithFormat:@"error code = %ld", code]];
}

#pragma mark - private

- (void)addLog:(NSString *)log {
self.textView.text = [NSString stringWithFormat:@"%@\n%@", log, self.textView.text];
}

- (NSArray<ELBodyFatScaleBleUserModel *> *)get8Users {
NSMutableArray *users = [[NSMutableArray alloc] init];

for (int i = 0; i < 8; i++) {
ELBodyFatScaleBleUserModel *user = [[ELBodyFatScaleBleUserModel alloc] init];
user.createTime = [[NSDate date] timeIntervalSince1970];
user.usrID = i;
user.role = i % 4;
user.sex = i % 2;
user.age = 26 + i;
user.height = 170 + i;
user.weight = 600 + i;
user.adc = 560 + i;
[users addObject:user];
}

return users.copy;
}

- (ELBodyFatScaleBleUserModel *)getOneUser {
ELBodyFatScaleBleUserModel *user = [[ELBodyFatScaleBleUserModel alloc] init];

user.createTime = [[NSDate date] timeIntervalSince1970];
user.usrID = 0;
user.role = BodyFatScaleRole_Ordinary;
user.sex = ELBluetoothUserSex_Woman;
user.age = 26;
user.height = 170;
user.weight = 600;
user.adc = 560;
return user;
}

@end

AILinkBleSDKDemo/11_BodyFatScale/BodyFatScaleConnectViewController.h → AILinkBleSDKDemo/DeviceDemo/11_BodyFatScale/BodyFatScaleConnectViewController.h 查看文件


AILinkBleSDKDemo/11_BodyFatScale/BodyFatScaleConnectViewController.m → AILinkBleSDKDemo/DeviceDemo/11_BodyFatScale/BodyFatScaleConnectViewController.m 查看文件


AILinkBleSDKDemo/11_BodyFatScale/BodyFatScaleScanViewController.h → AILinkBleSDKDemo/DeviceDemo/11_BodyFatScale/BodyFatScaleScanViewController.h 查看文件


AILinkBleSDKDemo/11_BodyFatScale/BodyFatScaleScanViewController.m → AILinkBleSDKDemo/DeviceDemo/11_BodyFatScale/BodyFatScaleScanViewController.m 查看文件


AILinkBleSDKDemo/12_BroadcastScale/BroadcastScaleViewController.h → AILinkBleSDKDemo/DeviceDemo/12_BroadcastScale/BroadcastScaleViewController.h 查看文件


AILinkBleSDKDemo/12_BroadcastScale/BroadcastScaleViewController.m → AILinkBleSDKDemo/DeviceDemo/12_BroadcastScale/BroadcastScaleViewController.m 查看文件


AILinkBleSDKDemo/13_EightScale/BhBodyComposition120/BhBodyCompositionAllBody50KHz.h → AILinkBleSDKDemo/DeviceDemo/13_EightScale/BhBodyComposition120/BhBodyCompositionAllBody50KHz.h 查看文件


AILinkBleSDKDemo/13_EightScale/BhBodyComposition120/BhBodyCompositionEnum.h → AILinkBleSDKDemo/DeviceDemo/13_EightScale/BhBodyComposition120/BhBodyCompositionEnum.h 查看文件


AILinkBleSDKDemo/13_EightScale/BhBodyComposition120/libBhBodyComposition120.a → AILinkBleSDKDemo/DeviceDemo/13_EightScale/BhBodyComposition120/libBhBodyComposition120.a 查看文件


AILinkBleSDKDemo/13_EightScale/ELEightScaleAlgorithmTool.h → AILinkBleSDKDemo/DeviceDemo/13_EightScale/ELEightScaleAlgorithmTool.h 查看文件


AILinkBleSDKDemo/13_EightScale/ELEightScaleAlgorithmTool.m → AILinkBleSDKDemo/DeviceDemo/13_EightScale/ELEightScaleAlgorithmTool.m 查看文件


AILinkBleSDKDemo/13_EightScale/ELEightScaleRecordModel.h → AILinkBleSDKDemo/DeviceDemo/13_EightScale/ELEightScaleRecordModel.h 查看文件


AILinkBleSDKDemo/13_EightScale/ELEightScaleRecordModel.m → AILinkBleSDKDemo/DeviceDemo/13_EightScale/ELEightScaleRecordModel.m 查看文件


AILinkBleSDKDemo/13_EightScale/EightScaleConnectionViewController.h → AILinkBleSDKDemo/DeviceDemo/13_EightScale/EightScaleConnectionViewController.h 查看文件


AILinkBleSDKDemo/13_EightScale/EightScaleConnectionViewController.m → AILinkBleSDKDemo/DeviceDemo/13_EightScale/EightScaleConnectionViewController.m 查看文件


AILinkBleSDKDemo/13_EightScale/EightScaleScanViewController.h → AILinkBleSDKDemo/DeviceDemo/13_EightScale/EightScaleScanViewController.h 查看文件


AILinkBleSDKDemo/13_EightScale/EightScaleScanViewController.m → AILinkBleSDKDemo/DeviceDemo/13_EightScale/EightScaleScanViewController.m 查看文件


AILinkBleSDKDemo/13_EightScale/HTBodyfat_SDK/HTBodyfat_SDK.h → AILinkBleSDKDemo/DeviceDemo/13_EightScale/HTBodyfat_SDK/HTBodyfat_SDK.h 查看文件


AILinkBleSDKDemo/13_EightScale/HTBodyfat_SDK/libHTBodyfat_SDK.a → AILinkBleSDKDemo/DeviceDemo/13_EightScale/HTBodyfat_SDK/libHTBodyfat_SDK.a 查看文件


AILinkBleSDKDemo/14_WifiBleToothbrush/ToothbrushConnectionViewController.h → AILinkBleSDKDemo/DeviceDemo/14_WifiBleToothbrush/ToothbrushConnectionViewController.h 查看文件


AILinkBleSDKDemo/14_WifiBleToothbrush/ToothbrushConnectionViewController.m → AILinkBleSDKDemo/DeviceDemo/14_WifiBleToothbrush/ToothbrushConnectionViewController.m 查看文件


AILinkBleSDKDemo/14_WifiBleToothbrush/ToothbrushScanViewController.h → AILinkBleSDKDemo/DeviceDemo/14_WifiBleToothbrush/ToothbrushScanViewController.h 查看文件


AILinkBleSDKDemo/14_WifiBleToothbrush/ToothbrushScanViewController.m → AILinkBleSDKDemo/DeviceDemo/14_WifiBleToothbrush/ToothbrushScanViewController.m 查看文件


AILinkBleSDKDemo/15_WifiBleBodyFatScale/ELBfsWifiConnectTableViewCell.h → AILinkBleSDKDemo/DeviceDemo/15_WifiBleBodyFatScale/ELBfsWifiConnectTableViewCell.h 查看文件


AILinkBleSDKDemo/15_WifiBleBodyFatScale/ELBfsWifiConnectTableViewCell.m → AILinkBleSDKDemo/DeviceDemo/15_WifiBleBodyFatScale/ELBfsWifiConnectTableViewCell.m 查看文件


AILinkBleSDKDemo/15_WifiBleBodyFatScale/ELBfsWifiConnectVC.h → AILinkBleSDKDemo/DeviceDemo/15_WifiBleBodyFatScale/ELBfsWifiConnectVC.h 查看文件


AILinkBleSDKDemo/15_WifiBleBodyFatScale/ELBfsWifiConnectVC.m → AILinkBleSDKDemo/DeviceDemo/15_WifiBleBodyFatScale/ELBfsWifiConnectVC.m 查看文件


AILinkBleSDKDemo/15_WifiBleBodyFatScale/ELBfsWifiScanVC.h → AILinkBleSDKDemo/DeviceDemo/15_WifiBleBodyFatScale/ELBfsWifiScanVC.h 查看文件


AILinkBleSDKDemo/15_WifiBleBodyFatScale/ELBfsWifiScanVC.m → AILinkBleSDKDemo/DeviceDemo/15_WifiBleBodyFatScale/ELBfsWifiScanVC.m 查看文件


AILinkBleSDKDemo/16_Oximeter/OximeterConnectionViewController.h → AILinkBleSDKDemo/DeviceDemo/16_Oximeter/OximeterConnectionViewController.h 查看文件


AILinkBleSDKDemo/16_Oximeter/OximeterConnectionViewController.m → AILinkBleSDKDemo/DeviceDemo/16_Oximeter/OximeterConnectionViewController.m 查看文件


AILinkBleSDKDemo/16_Oximeter/OximeterScanViewController.h → AILinkBleSDKDemo/DeviceDemo/16_Oximeter/OximeterScanViewController.h 查看文件


AILinkBleSDKDemo/16_Oximeter/OximeterScanViewController.m → AILinkBleSDKDemo/DeviceDemo/16_Oximeter/OximeterScanViewController.m 查看文件


AILinkBleSDKDemo/17_BloodSugar/BloodSugarConnectionViewController.h → AILinkBleSDKDemo/DeviceDemo/17_BloodSugar/BloodSugarConnectionViewController.h 查看文件


AILinkBleSDKDemo/17_BloodSugar/BloodSugarConnectionViewController.m → AILinkBleSDKDemo/DeviceDemo/17_BloodSugar/BloodSugarConnectionViewController.m 查看文件


AILinkBleSDKDemo/17_BloodSugar/BloodSugarScanViewController.h → AILinkBleSDKDemo/DeviceDemo/17_BloodSugar/BloodSugarScanViewController.h 查看文件


AILinkBleSDKDemo/17_BloodSugar/BloodSugarScanViewController.m → AILinkBleSDKDemo/DeviceDemo/17_BloodSugar/BloodSugarScanViewController.m 查看文件


AILinkBleSDKDemo/18_CoffeeScale/CoffeeScaleConnectionViewController.h → AILinkBleSDKDemo/DeviceDemo/18_CoffeeScale/CoffeeScaleConnectionViewController.h 查看文件


AILinkBleSDKDemo/18_CoffeeScale/CoffeeScaleConnectionViewController.m → AILinkBleSDKDemo/DeviceDemo/18_CoffeeScale/CoffeeScaleConnectionViewController.m 查看文件


AILinkBleSDKDemo/18_CoffeeScale/CoffeeScaleScanViewController.h → AILinkBleSDKDemo/DeviceDemo/18_CoffeeScale/CoffeeScaleScanViewController.h 查看文件


AILinkBleSDKDemo/18_CoffeeScale/CoffeeScaleScanViewController.m → AILinkBleSDKDemo/DeviceDemo/18_CoffeeScale/CoffeeScaleScanViewController.m 查看文件


AILinkBleSDKDemo/19_FoodThermometer/FoodThermometerConnectionViewController.h → AILinkBleSDKDemo/DeviceDemo/19_FoodThermometer/FoodThermometerConnectionViewController.h 查看文件


AILinkBleSDKDemo/19_FoodThermometer/FoodThermometerConnectionViewController.m → AILinkBleSDKDemo/DeviceDemo/19_FoodThermometer/FoodThermometerConnectionViewController.m 查看文件


AILinkBleSDKDemo/19_FoodThermometer/FoodThermometerScanViewController.h → AILinkBleSDKDemo/DeviceDemo/19_FoodThermometer/FoodThermometerScanViewController.h 查看文件


AILinkBleSDKDemo/19_FoodThermometer/FoodThermometerScanViewController.m → AILinkBleSDKDemo/DeviceDemo/19_FoodThermometer/FoodThermometerScanViewController.m 查看文件


AILinkBleSDKDemo/20_BroadcastNutritionScale/BroadcastNutritionScaleViewController.h → AILinkBleSDKDemo/DeviceDemo/20_BroadcastNutritionScale/BroadcastNutritionScaleViewController.h 查看文件


AILinkBleSDKDemo/20_BroadcastNutritionScale/BroadcastNutritionScaleViewController.m → AILinkBleSDKDemo/DeviceDemo/20_BroadcastNutritionScale/BroadcastNutritionScaleViewController.m 查看文件


AILinkBleSDKDemo/21_NutritionScale/NutritionScaleConnectionViewController.h → AILinkBleSDKDemo/DeviceDemo/21_NutritionScale/NutritionScaleConnectionViewController.h 查看文件


AILinkBleSDKDemo/21_NutritionScale/NutritionScaleConnectionViewController.m → AILinkBleSDKDemo/DeviceDemo/21_NutritionScale/NutritionScaleConnectionViewController.m 查看文件


AILinkBleSDKDemo/21_NutritionScale/NutritionScaleScanViewController.h → AILinkBleSDKDemo/DeviceDemo/21_NutritionScale/NutritionScaleScanViewController.h 查看文件


AILinkBleSDKDemo/21_NutritionScale/NutritionScaleScanViewController.m → AILinkBleSDKDemo/DeviceDemo/21_NutritionScale/NutritionScaleScanViewController.m 查看文件


AILinkBleSDKDemo/22_AiFreshNutritionScale/AiFreshNutritionScaleConnectionViewController.h → AILinkBleSDKDemo/DeviceDemo/22_AiFreshNutritionScale/AiFreshNutritionScaleConnectionViewController.h 查看文件


AILinkBleSDKDemo/22_AiFreshNutritionScale/AiFreshNutritionScaleConnectionViewController.m → AILinkBleSDKDemo/DeviceDemo/22_AiFreshNutritionScale/AiFreshNutritionScaleConnectionViewController.m 查看文件


AILinkBleSDKDemo/22_AiFreshNutritionScale/AiFreshNutritionScaleScanViewController.h → AILinkBleSDKDemo/DeviceDemo/22_AiFreshNutritionScale/AiFreshNutritionScaleScanViewController.h 查看文件


部分文件因为文件数量过多而无法显示

正在加载...
取消
保存