device_controller_manager.dart 2.7 KB

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