219 lines
7.2 KiB
Dart
219 lines
7.2 KiB
Dart
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<String, dynamic> json) {
|
||
try {
|
||
return _$BedModelFromJson(json);
|
||
} catch (e) {
|
||
return BedModel();
|
||
}
|
||
}
|
||
|
||
Map<String, dynamic> toJson() => _$BedModelToJson(this);
|
||
}
|
||
|
||
class BedController extends GetControllerEx<BedModel> {
|
||
// WebsocketProp? websocketProp;
|
||
|
||
// ble.ConnectedDeviceProp? deviceProp;
|
||
|
||
// GlobalController get glcontroller => Get.find<GlobalController>();
|
||
|
||
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();
|
||
// }
|
||
}
|