import 'dart:async'; import 'dart:convert'; import 'dart:math'; import 'dart:typed_data'; import 'package:ef/ef.dart'; import 'package:json_annotation/json_annotation.dart'; part 'bedController.g.dart'; // 由json_serializable自动生成的部分 @JsonSerializable() class BedModel { int patternType = 2; //1.助眠 2.手动 int noAutoPattern = -1; //1 TV 2 零重力 3 阅读 4 放平 int zhuMianPattern = -1; //1 一键放松 2 休闲模式 3腰部放松 4 腿部放松 // int anMoleftRight = 1; //1.左侧律动 2右侧律动 bool anMoStart = false; //启动按摩 bool isAnMoBei = false; //背部律动 bool isAnMoTui = false; //腿部律动 int anMoPattern = -1; //1234分别为模式1、2、3、4 double slideValue_bei = 1.0; //背部力度调节 double slideValue_tui = 1.0; //腿部力度调节 // bool isStart = false; //开启 关闭 int timerPattern = 2; //定时设置 10、20、30分钟 bool isZhuMian = false; //一键助眠开启 int zhuMainInitTime = 0; int zhuMainRunTime = 1800; //默认床垫30分钟,床为15分钟 int zhuMainRunAllTime = 1800; //默认床垫30分钟,床为15分钟 int useLastTime = DateTime.now().millisecondsSinceEpoch; //最新的使用时间 String? deviceMac; // 当前选中设备mac地址 List bodyData = [ {"lastData": {}, "bodyData": []}, {"lastData": {}, "bodyData": []} ]; BedModel(); factory BedModel.fromJson(Map json) { try { return _$BedModelFromJson(json); } catch (e) { return BedModel(); } } Map toJson() => _$BedModelToJson(this); } class BedController extends GetControllerEx { // WebsocketProp? websocketProp; // ble.ConnectedDeviceProp? deviceProp; // GlobalController get glcontroller => Get.find(); Function? calibrationListenCall; List pinlvTimerList = [null, null]; BedController() { attr = GetModel(BedModel()).obs; } // @override // void onInit() { // super.onInit(); // GlobalController globalController = Get.find(); // Timer.periodic(Duration(milliseconds: 1000), (e) { // if (model.isZhuMian) { // var deviceInfo = globalController.model.deviceMain; //获取当前选中设备信息 // if (deviceInfo != null && // deviceInfo.isNotEmpty && // model.deviceMac != deviceInfo["mac"]) { // model.deviceMac = deviceInfo["mac"]; // String deviceType = deviceInfo["deviceType"]["id"]; // if (deviceType == "1") { // //床 // model.zhuMainRunTime = 900; // model.zhuMainRunAllTime = 900; // } else if (deviceType == "3") { // //床垫 // model.zhuMainRunTime = 1800; // model.zhuMainRunAllTime = 1800; // } // } // int time = // DateTime.now().millisecondsSinceEpoch - model.zhuMainInitTime; // time = time ~/ 1000; // if (time <= model.zhuMainRunAllTime) { // model.zhuMainRunTime = model.zhuMainRunAllTime - time; // } else { // model.isZhuMian = false; // model.zhuMainRunTime = 0; // } // } // updateAll(); // }); // } // Future bleSendCode(d) async { // Completer completer = Completer(); // bleSendCodeNext(completer, d); // return completer.future; // } // Future bleSendCodeNext(Completer completer, d) async { // if (deviceProp == null) { // showToast("蓝牙设备尚未连接"); // completer.completeError(Exception("蓝牙设备尚未连接")); // return; // } // if (deviceProp!.isClose) { // showToast("蓝牙已断开,请稍后再试"); // completer.completeError(Exception("蓝牙已断开")); // return; // } // model.useLastTime = DateTime.now().millisecondsSinceEpoch; // deviceProp!.write(Uint8List.fromList(d), ([d]) { // completer.complete("success"); // }, (d) { // completer.completeError(Exception("蓝牙发送失败")); // }); // } // websocketInit() { // websocketProp = WebsocketProp(); // websocketProp!.initState(CommonVariables.wsUrl, {"message": onMessage}); // } // websocketSend(v) { // var deviceMain = glcontroller.model.deviceMain; // if (deviceMain == null || deviceMain["mac"] == null) { // return; // } // print("websocketSend 发送 $v"); // websocketProp?.sendMessage( // {"type": "10002", "did": deviceMain["bindMacA"], "state": v}); // if (deviceMain["bindMacB"] != null && deviceMain["bindMacB"] != "") { // websocketProp?.sendMessage( // {"type": "10002", "did": deviceMain["bindMacB"], "state": v}); // } // } // bodyDataHandle(index, data) { // var bodyData = model.bodyData[index]["bodyData"]; // if (bodyData.length > 0 && // data["data"]["deviceSendTime"] != null && // data["data"]["deviceSendTime"] == // bodyData[bodyData.length - 1]["deviceSendTime"]) { // return; // } // model.bodyData[index]["lastData"] = data["data"]; // model.bodyData[index]["bodyData"].add(data["data"]); // if (model.bodyData[index]["bodyData"].length > 120) { // model.bodyData[index]["bodyData"].removeAt(0); // } // } // onMessage(d) { // var data = jsonDecode(d); // if (calibrationListenCall != null) { // calibrationListenCall?.call(data); // return; // } // // print("receive ${data["data"]["deviceNo"]}"); // String mac = "${data?["data"]?["deviceNo"]}".toUpperCase() ?? ""; // if (CommonVariables.test) { // if (data["data"]["breathRate"] == 0) { // data["data"]["breathRate"] = Random().nextInt(10) + 10; // } // if (data["data"]["heartRate"] == 0) { // data["data"]["heartRate"] = Random().nextInt(10) + 60; // } // } // if ("${glcontroller.model.deviceMain["bindMacA"]}".length > 6 && // mac == "${glcontroller.model.deviceMain["bindMacA"]}".toUpperCase()) { // bodyDataHandle(0, data); // } else if ("${glcontroller.model.deviceMain["bindMacB"]}".length > 6 && // mac == "${glcontroller.model.deviceMain["bindMacB"]}".toUpperCase()) { // bodyDataHandle(1, data); // } // } // anmoReset() { // pinlvTimerList = [null, null]; // model.anMoStart = false; //启动按摩 // model.isAnMoBei = false; // model.isAnMoTui = false; // model.anMoPattern = -1; //1234分别为模式1、2、3、4 // model.slideValue_bei = 1.0; //背部力度调节 // model.slideValue_tui = 1.0; //腿部力度调节 // model.timerPattern = -1; //定时设置 10、20、30分钟 // updateAll(); // } // resetParm() { // model.noAutoPattern = -1; //1 TV 2 零重力 3 阅读 4放平 // model.zhuMianPattern = -1; //1 一键放松 2 休闲模式 3腰部放松 4 腿部放松 // model.isZhuMian = false; // model.useLastTime = DateTime.now().millisecondsSinceEpoch; // model.bodyData = [ // {"lastData": {}, "bodyData": []}, // {"lastData": {}, "bodyData": []} // ]; // anmoReset(); // } // anMoChange() { // model.zhuMianPattern = -1; //1 一键放松 2 休闲模式 3腰部放松 4 腿部放松 // model.isZhuMian = false; // updateAll(); // } }