device_controller_manager.dart 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import 'package:vitalapp/pages/medical/controllers/base.dart';
  2. import 'package:vnote_device_plugin/consts/types.dart';
  3. import 'package:vnote_device_plugin/devices/base.dart';
  4. import 'package:fis_common/logger/logger.dart';
  5. import 'package:vnote_device_plugin/devices/heart.dart';
  6. import 'package:vnote_device_plugin/devices/ic_reader.dart';
  7. import 'package:vnote_device_plugin/devices/nibp.dart';
  8. import 'package:vnote_device_plugin/devices/sp_o2.dart';
  9. import 'package:vnote_device_plugin/devices/sugar.dart';
  10. import 'package:vnote_device_plugin/devices/temp.dart';
  11. import 'package:vnote_device_plugin/devices/twelve_heart.dart';
  12. import 'package:vnote_device_plugin/devices/urine.dart';
  13. import 'package:vnote_device_plugin/devices/weight.dart';
  14. class DeviceControllerManager extends BaseDeviceController<DeviceWorkerBase> {
  15. DeviceControllerManager(
  16. this.type,
  17. super.model,
  18. super.mac,
  19. ) : super();
  20. final String type;
  21. DeviceWorkerBase? deviceWorker;
  22. @override
  23. DeviceWorkerBase createWorker() {
  24. if (deviceWorker != null) {
  25. logger.i('DeviceControllerManager:$type disconnect start');
  26. deviceWorker?.disconnect().then((value) {
  27. logger.i('DeviceControllerManager:$type disconnect end');
  28. deviceWorker?.dispose();
  29. logger.i('DeviceControllerManager:$type dispose');
  30. });
  31. }
  32. logger.i('DeviceControllerManager:$type create');
  33. print('DeviceControllerManager:$type create');
  34. return _createWorker();
  35. }
  36. @override
  37. void dispose() {
  38. super.dispose();
  39. deviceWorker = null;
  40. logger.i('DeviceControllerManager:$type dispose');
  41. print('DeviceControllerManager:$type dispose');
  42. }
  43. DeviceWorkerBase _createWorker() {
  44. switch (type) {
  45. //体重
  46. case DeviceTypes.WEIGHT:
  47. deviceWorker = WeightDeviceWorker(mac: super.mac, model: model);
  48. break;
  49. //心率
  50. case DeviceTypes.HEART:
  51. deviceWorker = HeartDeviceWorker(mac: super.mac, model: model);
  52. break;
  53. //血压
  54. case DeviceTypes.NIBP:
  55. deviceWorker = NibpDeviceWorker(mac: super.mac, model: model);
  56. break;
  57. //血氧
  58. case DeviceTypes.SPO2:
  59. deviceWorker = SpO2DeviceWorker(mac: super.mac, model: model);
  60. break;
  61. //血糖
  62. case DeviceTypes.SUGAR:
  63. deviceWorker = SugarDeviceWorker(mac: super.mac, model: model);
  64. break;
  65. //温度
  66. case DeviceTypes.TEMP:
  67. deviceWorker = TempDeviceWorker(mac: super.mac, model: model);
  68. break;
  69. //尿常规
  70. case DeviceTypes.URINE:
  71. deviceWorker = UrineDeviceWorker(mac: super.mac, model: model);
  72. break;
  73. case DeviceTypes.IC_READER:
  74. deviceWorker = ICReaderDeviceWorker(mac: super.mac, model: model);
  75. break;
  76. case DeviceTypes.TWELVEHEART:
  77. deviceWorker = TwelveHeartDeviceWorker(mac: super.mac, model: model);
  78. break;
  79. }
  80. return deviceWorker!;
  81. }
  82. }