1、添加卡跟指纹循环、胁迫、限时协议。2、添加配网成功后返回锁设置功能

This commit is contained in:
魏少阳 2024-04-15 16:30:00 +08:00
parent 408b516106
commit e55e3482bf
29 changed files with 816 additions and 226 deletions

View File

@ -23,7 +23,7 @@ class SenderAddFingerprintCommand extends SenderProtocol {
int? startTime;
int? endTime;
int? needAuthor;
List<int>? publicKey;
List<int>? signKey;
List<int>? privateKey;
SenderAddFingerprintCommand({
@ -35,7 +35,7 @@ class SenderAddFingerprintCommand extends SenderProtocol {
this.startTime,
this.endTime,
this.needAuthor,
this.publicKey,
this.signKey,
this.privateKey,
}) : super(CommandType.generalExtendedCommond);
@ -96,17 +96,16 @@ class SenderAddFingerprintCommand extends SenderProtocol {
subData.add(0);
} else {
List<int> authCodeData = [];
//KeyID
authCodeData.addAll(utf8.encode(keyID!));
//authUserID
authCodeData.addAll(utf8.encode(userID!));
//KeyID
authCodeData.addAll(utf8.encode(keyID!));
//token 4 Token 0
authCodeData.addAll(token!);
authCodeData.addAll(publicKey!);
authCodeData.addAll(signKey!);
print("${commandType!.typeValue}-authCodeData:$authCodeData");

View File

@ -0,0 +1,185 @@
import 'dart:convert';
import '../io_tool/io_tool.dart';
import '../sm4Encipher/sm4.dart';
import '../io_reply.dart';
import '../io_sender.dart';
import '../io_type.dart';
import 'package:crypto/crypto.dart' as crypto;
///TODO:
/*
UseCountLimit 0 UseCountLimit 0FingerNo 255userId Delete All !@#
**/
class SenderAddFingerprintWithTimeCycleCoercionCommand extends SenderProtocol {
String? keyID;
String? userID;
int? fingerNo;
int? useCountLimit;
int? isForce;
List<int>? token;
int? isRound;
int? weekRound;
int? startDate;
int? endDate;
int? startTime;
int? endTime;
int? needAuthor;
List<int>? signKey;
List<int>? privateKey;
SenderAddFingerprintWithTimeCycleCoercionCommand({
this.keyID,
this.userID,
this.fingerNo,
this.useCountLimit,
this.isForce,
this.token,
this.isRound,
this.weekRound,
this.startDate,
this.endDate,
this.startTime,
this.endTime,
this.needAuthor,
this.signKey,
this.privateKey,
}) : super(CommandType.generalExtendedCommond);
@override
List<int> messageDetail() {
List<int> data = [];
List<int> subData = [];
List<int> ebcData = [];
print("pwdNopwdNopwdNopwdNo:$fingerNo");
//
int type = commandType!.typeValue;
double typeDouble = type / 256;
int type1 = typeDouble.toInt();
int type2 = type % 256;
data.add(type1);
data.add(type2);
//
data.add(36);
// keyID 40
int keyIDLength = utf8.encode(keyID!).length;
// print("${commandType!.typeValue}LockIDLength:$lockIDLength utf8.encode(lockID!)${utf8.encode(lockID!)}");
subData.addAll(utf8.encode(keyID!));
subData = getFixedLengthList(subData, 40 - keyIDLength);
//userID 20
int userIDLength = utf8.encode(userID!).length;
// print("${commandType!.typeValue}IDLength:$authUserIDLength utf8.encode(authUserID!)${utf8.encode(authUserID!)}");
subData.addAll(utf8.encode(userID!));
subData = getFixedLengthList(subData, 20 - userIDLength);
// fingerNo
subData.add(fingerNo!);
// UseCountLimit
subData.add(useCountLimit!);
// isForce
subData.add(isForce!);
// token
subData.addAll(token!);
// isRound
subData.add(isRound!);
// weekRound
subData.add(weekRound!);
// startDate 4
subData.add((startDate! & 0xff000000) >> 24);
subData.add((startDate! & 0xff0000) >> 16);
subData.add((startDate! & 0xff00) >> 8);
subData.add((startDate! & 0xff));
// endDate 4
subData.add((endDate! & 0xff000000) >> 24);
subData.add((endDate! & 0xff0000) >> 16);
subData.add((endDate! & 0xff00) >> 8);
subData.add((endDate! & 0xff));
// startTime 4
subData.add((startTime! & 0xff000000) >> 24);
subData.add((startTime! & 0xff0000) >> 16);
subData.add((startTime! & 0xff00) >> 8);
subData.add((startTime! & 0xff));
// endTime 4
subData.add((endTime! & 0xff000000) >> 24);
subData.add((endTime! & 0xff0000) >> 16);
subData.add((endTime! & 0xff00) >> 8);
subData.add((endTime! & 0xff));
if(needAuthor == 0){
//AuthCodeLen 1
subData.add(0);
} else {
List<int> authCodeData = [];
//KeyID
authCodeData.addAll(utf8.encode(keyID!));
//authUserID
authCodeData.addAll(utf8.encode(userID!));
//token 4 Token 0
authCodeData.addAll(token!);
authCodeData.addAll(signKey!);
print("${commandType!.typeValue}-authCodeData:$authCodeData");
// KeyIDauthUserIDmd5加密之后就是authCode
var authCode = crypto.md5.convert(authCodeData);
subData.add(authCode.bytes.length);
subData.addAll(authCode.bytes);
}
data.add(subData.length);
data.addAll(subData);
if ((data.length % 16) != 0) {
int add = (16 - data.length % 16);
for (int i = 0; i < add; i++) {
data.add(0);
}
}
print("${commandType!.typeName} SM4Data:$data");
// LockId进行SM4 ECB加密 key:544d485f633335373034383064613864
ebcData = SM4.encrypt(data, key: privateKey, mode: SM4CryptoMode.ECB);
return ebcData;
}
}
class SenderAddFingerprintWithTimeCycleCoercionReply extends Reply {
SenderAddFingerprintWithTimeCycleCoercionReply.parseData(CommandType commandType, List<int> dataDetail)
: super.parseData(commandType, dataDetail) {
data = dataDetail;
}
}
class SenderAddFingerprintProcessReply extends Reply {
SenderAddFingerprintProcessReply.parseData(CommandType commandType, List<int> dataDetail)
: super.parseData(commandType, dataDetail) {
data = dataDetail;
}
}
class SenderAddFingerprintConfirmationReply extends Reply {
SenderAddFingerprintConfirmationReply.parseData(CommandType commandType, List<int> dataDetail)
: super.parseData(commandType, dataDetail) {
data = dataDetail;
}
}

View File

@ -24,7 +24,7 @@ class SenderAddICCardCommand extends SenderProtocol {
int? startTime;
int? endTime;
int? needAuthor;
List<int>? publicKey;
List<int>? signKey;
List<int>? privateKey;
SenderAddICCardCommand({
@ -36,7 +36,7 @@ class SenderAddICCardCommand extends SenderProtocol {
this.startTime,
this.endTime,
this.needAuthor,
this.publicKey,
this.signKey,
this.privateKey,
}) : super(CommandType.generalExtendedCommond);
@ -46,6 +46,8 @@ class SenderAddICCardCommand extends SenderProtocol {
List<int> subData = [];
List<int> ebcData = [];
print("pwdNopwdNopwdNopwdNo:$cardNo");
//
int type = commandType!.typeValue;
double typeDouble = type / 256;
@ -95,17 +97,16 @@ class SenderAddICCardCommand extends SenderProtocol {
subData.add(0);
} else {
List<int> authCodeData = [];
//KeyID
authCodeData.addAll(utf8.encode(keyID!));
//authUserID
authCodeData.addAll(utf8.encode(userID!));
//KeyID
authCodeData.addAll(utf8.encode(keyID!));
//token 4 Token 0
authCodeData.addAll(token!);
authCodeData.addAll(publicKey!);
authCodeData.addAll(signKey!);
print("${commandType!.typeValue}-authCodeData:$authCodeData");

View File

@ -0,0 +1,178 @@
import 'dart:convert';
import '../io_tool/io_tool.dart';
import '../sm4Encipher/sm4.dart';
import '../io_reply.dart';
import '../io_sender.dart';
import '../io_type.dart';
import 'package:crypto/crypto.dart' as crypto;
///TODO:
/*
UseCountLimit 0 UseCountLimit 0FingerNo 255userId Delete All !@#
**/
class SenderAddICCardWithTimeCycleCoercionCommand extends SenderProtocol {
String? keyID;
String? userID;
int? cardNo;
int? useCountLimit;
int? isForce;
List<int>? token;
int? isRound;
int? weekRound;
int? startDate;
int? endDate;
int? startTime;
int? endTime;
int? needAuthor;
List<int>? signKey;
List<int>? privateKey;
SenderAddICCardWithTimeCycleCoercionCommand({
this.keyID,
this.userID,
this.cardNo,
this.useCountLimit,
this.isForce,
this.token,
this.isRound,
this.weekRound,
this.startDate,
this.endDate,
this.startTime,
this.endTime,
this.needAuthor,
this.signKey,
this.privateKey,
}) : super(CommandType.generalExtendedCommond);
@override
List<int> messageDetail() {
List<int> data = [];
List<int> subData = [];
List<int> ebcData = [];
print("cardNocardNocardNocardNo:$cardNo");
//
int type = commandType!.typeValue;
double typeDouble = type / 256;
int type1 = typeDouble.toInt();
int type2 = type % 256;
data.add(type1);
data.add(type2);
//
data.add(24);
// keyID 40
int keyIDLength = utf8.encode(keyID!).length;
// print("${commandType!.typeValue}LockIDLength:$lockIDLength utf8.encode(lockID!)${utf8.encode(lockID!)}");
subData.addAll(utf8.encode(keyID!));
subData = getFixedLengthList(subData, 40 - keyIDLength);
//userID 20
int userIDLength = utf8.encode(userID!).length;
// print("${commandType!.typeValue}IDLength:$authUserIDLength utf8.encode(authUserID!)${utf8.encode(authUserID!)}");
subData.addAll(utf8.encode(userID!));
subData = getFixedLengthList(subData, 20 - userIDLength);
// fingerNo
subData.add(cardNo!);
// UseCountLimit
subData.add(useCountLimit!);
// isForce
subData.add(isForce!);
// token
subData.addAll(token!);
// isRound
subData.add(isRound!);
// weekRound
subData.add(weekRound!);
// startDate 4
subData.add((startDate! & 0xff000000) >> 24);
subData.add((startDate! & 0xff0000) >> 16);
subData.add((startDate! & 0xff00) >> 8);
subData.add((startDate! & 0xff));
// endDate 4
subData.add((endDate! & 0xff000000) >> 24);
subData.add((endDate! & 0xff0000) >> 16);
subData.add((endDate! & 0xff00) >> 8);
subData.add((endDate! & 0xff));
// startTime 4
subData.add((startTime! & 0xff000000) >> 24);
subData.add((startTime! & 0xff0000) >> 16);
subData.add((startTime! & 0xff00) >> 8);
subData.add((startTime! & 0xff));
// endTime 4
subData.add((endTime! & 0xff000000) >> 24);
subData.add((endTime! & 0xff0000) >> 16);
subData.add((endTime! & 0xff00) >> 8);
subData.add((endTime! & 0xff));
if(needAuthor == 0){
//AuthCodeLen 1
subData.add(0);
} else {
List<int> authCodeData = [];
//KeyID
authCodeData.addAll(utf8.encode(keyID!));
//authUserID
authCodeData.addAll(utf8.encode(userID!));
//token 4 Token 0
authCodeData.addAll(token!);
authCodeData.addAll(signKey!);
print("${commandType!.typeValue}-authCodeData:$authCodeData");
// KeyIDauthUserIDmd5加密之后就是authCode
var authCode = crypto.md5.convert(authCodeData);
subData.add(authCode.bytes.length);
subData.addAll(authCode.bytes);
}
data.add(subData.length);
data.addAll(subData);
if ((data.length % 16) != 0) {
int add = (16 - data.length % 16);
for (int i = 0; i < add; i++) {
data.add(0);
}
}
print("${commandType!.typeName} SM4Data:$data");
// LockId进行SM4 ECB加密 key:544d485f633335373034383064613864
ebcData = SM4.encrypt(data, key: privateKey, mode: SM4CryptoMode.ECB);
return ebcData;
}
}
class SenderAddICCardWithTimeCycleCoercionReply extends Reply {
SenderAddICCardWithTimeCycleCoercionReply.parseData(CommandType commandType, List<int> dataDetail)
: super.parseData(commandType, dataDetail) {
data = dataDetail;
}
}
class SenderAddICCardConfirmationReply extends Reply {
SenderAddICCardConfirmationReply.parseData(CommandType commandType, List<int> dataDetail)
: super.parseData(commandType, dataDetail) {
data = dataDetail;
}
}

View File

@ -46,7 +46,7 @@ class SenderCustomPasswordsCommand extends SenderProtocol {
List<int> subData = [];
List<int> ebcData = [];
// print("pwdNopwdNopwdNopwdNo:$pwdNo");
print("pwdNopwdNopwdNopwdNo:$pwdNo");
//
int type = commandType!.typeValue;

View File

@ -20,8 +20,10 @@ import 'package:star_lock/blue/io_protocol/io_timing.dart';
import 'package:star_lock/blue/io_protocol/io_transferPermissions.dart';
import '../tools/storage.dart';
import 'io_protocol/io_addFingerprint.dart';
import 'io_protocol/io_addICCard.dart';
// import 'io_protocol/io_addFingerprint.dart';
import 'io_protocol/io_addFingerprintWithTimeCycleCoercion.dart';
// import 'io_protocol/io_addICCard.dart';
import 'io_protocol/io_addICCardWithTimeCycleCoercion.dart';
import 'io_protocol/io_addStressFingerprint.dart';
import 'io_protocol/io_addStressICCard.dart';
import 'io_protocol/io_addStressPassword.dart';
@ -225,12 +227,12 @@ class CommandReciverManager {
commandType, data);
}
break;
case 21:
{
//
reply = SenderAddICCardReply.parseData(commandType, data);
}
break;
// case 21:
// {
// //
// reply = SenderAddICCardReply.parseData(commandType, data);
// }
// break;
case 22:
{
//
@ -238,6 +240,13 @@ class CommandReciverManager {
commandType, data);
}
break;
case 24:
{
//
reply = SenderAddICCardWithTimeCycleCoercionReply.parseData(
commandType, data);
}
break;
case 30:
{
//
@ -245,13 +254,13 @@ class CommandReciverManager {
commandType, data);
}
break;
case 31:
{
//
reply =
SenderAddFingerprintReply.parseData(commandType, data);
}
break;
// case 31:
// {
// //
// reply =
// SenderAddFingerprintReply.parseData(commandType, data);
// }
// break;
case 32:
{
//
@ -266,6 +275,13 @@ class CommandReciverManager {
commandType, data);
}
break;
case 36:
{
// (...)
reply = SenderAddFingerprintWithTimeCycleCoercionReply.parseData(
commandType, data);
}
break;
case 40:
{
//

View File

@ -8,6 +8,8 @@ import 'package:star_lock/blue/io_protocol/io_queryingFaceStatus.dart';
import 'package:star_lock/blue/io_protocol/io_readAdminPassword.dart';
import 'io_protocol/io_addFingerprint.dart';
import 'io_protocol/io_addFingerprintWithTimeCycleCoercion.dart';
import 'io_protocol/io_addICCardWithTimeCycleCoercion.dart';
import 'io_protocol/io_addStressFingerprint.dart';
import 'io_protocol/io_addStressPassword.dart';
import 'io_protocol/io_addUser.dart';
@ -338,7 +340,7 @@ class IoSenderManage {
required int? startTime,
required int? endTime,
required int? needAuthor,
required List<int>? publicKey,
required List<int>? signKey,
required List<int>? privateKey,
CommandSendCallBack? callBack}) {
CommandSenderManager().managerSendData(
@ -351,7 +353,47 @@ class IoSenderManage {
startTime: startTime,
endTime: endTime,
needAuthor: needAuthor,
publicKey: publicKey,
signKey: signKey,
privateKey: privateKey,
),
callBack: callBack);
}
//todo:(...)
static void senderAddFingerprintWithTimeCycleCoercionCommand(
{
required String? keyID,
required String? userID,
required int? fingerNo,
required int? useCountLimit,
required int? isForce,
required List<int>? token,
required int? isRound,
required int? weekRound,
required int? startDate,
required int? endDate,
required int? startTime,
required int? endTime,
required int? needAuthor,
required List<int>? signKey,
required List<int>? privateKey,
CommandSendCallBack? callBack}) {
CommandSenderManager().managerSendData(
command: SenderAddFingerprintWithTimeCycleCoercionCommand(
keyID: keyID,
userID: userID,
fingerNo: fingerNo,
useCountLimit: useCountLimit,
isForce: isForce,
token: token,
isRound: isRound,
weekRound: weekRound,
startDate: startDate,
endDate: endDate,
startTime: startTime,
endTime: endTime,
needAuthor: needAuthor,
signKey: signKey,
privateKey: privateKey,
),
callBack: callBack);
@ -367,7 +409,7 @@ class IoSenderManage {
required int? startTime,
required int? endTime,
required int? needAuthor,
required List<int>? publicKey,
required List<int>? signKey,
required List<int>? privateKey,
CommandSendCallBack? callBack}) {
CommandSenderManager().managerSendData(
@ -380,7 +422,47 @@ class IoSenderManage {
startTime: startTime,
endTime: endTime,
needAuthor: needAuthor,
publicKey: publicKey,
signKey: signKey,
privateKey: privateKey,
),
callBack: callBack);
}
//todo:(...)
static void senderAddCardWithTimeCycleCoercionCommand(
{
required String? keyID,
required String? userID,
required int? cardNo,
required int? useCountLimit,
required int? isForce,
required List<int>? token,
required int? isRound,
required int? weekRound,
required int? startDate,
required int? endDate,
required int? startTime,
required int? endTime,
required int? needAuthor,
required List<int>? signKey,
required List<int>? privateKey,
CommandSendCallBack? callBack}) {
CommandSenderManager().managerSendData(
command: SenderAddICCardWithTimeCycleCoercionCommand(
keyID: keyID,
userID: userID,
cardNo: cardNo,
useCountLimit: useCountLimit,
isForce: isForce,
token: token,
isRound: isRound,
weekRound: weekRound,
startDate: startDate,
endDate: endDate,
startTime: startTime,
endTime: endTime,
needAuthor: needAuthor,
signKey: signKey,
privateKey: privateKey,
),
callBack: callBack);

View File

@ -23,9 +23,6 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
final logic = Get.put(StarLockRegisterLogic());
final state = Get.find<StarLockRegisterLogic>().state;
// late Timer _timer;
// final int _seconds = 60;
@override
Widget build(BuildContext context) {
return Scaffold(

View File

@ -75,6 +75,7 @@ class AddCardTypeLogic extends BaseGetXController{
"isAdministrator": state.isAdministrator.value == false ? "1" : "2", // 1: 2:
"effectiveTime": startTime,
"failureTime": endTime,
"selectType": state.selectType.value,
});
}

View File

@ -1,15 +1,13 @@
import 'dart:async';
// import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart';
import 'package:star_lock/blue/io_type.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/dateTool.dart';
import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_protocol/io_addICCard.dart';
import '../../../../blue/io_protocol/io_addICCardWithTimeCycleCoercion.dart';
import '../../../../blue/io_protocol/io_addStressICCard.dart';
import '../../../../blue/io_reply.dart';
import '../../../../blue/io_tool/io_tool.dart';
@ -28,7 +26,7 @@ class AddICCardLogic extends BaseGetXController{
void _initReplySubscription() {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
// IC卡开始
if(reply is SenderAddICCardReply) {
if(reply is SenderAddICCardWithTimeCycleCoercionReply) {
_replyAddICCardBegin(reply);
}
@ -59,22 +57,25 @@ class AddICCardLogic extends BaseGetXController{
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var token = reply.data.sublist(5, 9);
var saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList);
IoSenderManage.senderAddFingerprintCommand(
IoSenderManage.senderAddICCardCommand(
keyID:"1",
userID:await Storage.getUid(),
fingerNo:1,
cardNo:state.isAdministrator.value == "2" ? 254 : 1,
useCountLimit:0xff,
startTime:int.parse(state.startDate.value)~/1000,
endTime:int.parse(state.endDate.value)~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: token,
);
@ -166,6 +167,7 @@ class AddICCardLogic extends BaseGetXController{
var saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList);
Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
IoSenderManage.senderAddStressICCardCommand(
keyID:"1",
userID:await Storage.getUid(),
@ -206,8 +208,19 @@ class AddICCardLogic extends BaseGetXController{
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected){
cancelBlueConnetctToastTimer();
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var weekStr = "00000000";
for (var day in state.weekDay.value) {
int index = day % 7; // 0
weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}';
}
// print("weekStrweekStrweekStr:$weekStr");
int weekRound = int.parse(weekStr, radix: 2);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -215,18 +228,37 @@ class AddICCardLogic extends BaseGetXController{
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
IoSenderManage.senderAddICCardCommand(
Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:"1",
userID:await Storage.getUid(),
cardNo:state.isAdministrator.value == "2" ? 254 : 1,
fingerNo:state.isAdministrator.value == "2" ? 254 : 1,
useCountLimit:0xff,
startTime:int.parse(state.startDate.value)~/1000,
endTime:int.parse(state.endDate.value)~/1000,
isForce:state.isCoerced.value == "1" ? 0 : 1, //
isRound:state.selectType.value == "2" ? 1: 0, //
weekRound:weekRound, //
startDate: int.parse(state.startDate.value)~/1000,
endDate: int.parse(state.endDate.value)~/1000,
startTime:int.parse(state.effectiveDateTime.value)~/1000,
endTime:int.parse(state.failureDateTime.value)~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);
// IoSenderManage.senderAddICCardCommand(
// keyID:"1",
// userID:await Storage.getUid(),
// cardNo:state.isAdministrator.value == "2" ? 254 : 1,
// useCountLimit:0xff,
// startTime:int.parse(state.startDate.value)~/1000,
// endTime:int.parse(state.endDate.value)~/1000,
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
} else if (deviceConnectionState == BluetoothConnectionState.disconnected){
if(state.ifCurrentScreen.value == true){
showBlueConnetctToast();

View File

@ -27,8 +27,7 @@ class _AddICCardPageState extends State<AddICCardPage> with RouteAware {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
barTitle:
"${TranslationLoader.lanKeys!.add!.tr}${TranslationLoader.lanKeys!.card!.tr}",
barTitle: "${TranslationLoader.lanKeys!.add!.tr}${TranslationLoader.lanKeys!.card!.tr}",
haveBack: true,
backgroundColor: AppColors.mainColor,
),

View File

@ -19,6 +19,7 @@ class AddICCardState{
final fromType = 0.obs;
final effectiveDateTime = "".obs;//
final failureDateTime = "".obs;//
final selectType = "0".obs;// 0 1 2
AddICCardState() {
Map map = Get.arguments;
@ -37,5 +38,6 @@ class AddICCardState{
fromType.value = map["fromType"];
effectiveDateTime.value = map["effectiveTime"];
failureDateTime.value = map["failureTime"];
selectType.value = map["selectType"];
}
}

View File

@ -51,6 +51,9 @@ class CardDetailLogic extends BaseGetXController{
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
@ -66,7 +69,7 @@ class CardDetailLogic extends BaseGetXController{
startTime:int.parse(state.starDate.value),
endTime:int.parse(state.endDate.value),
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);
@ -100,8 +103,11 @@ class CardDetailLogic extends BaseGetXController{
});
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected){
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -118,7 +124,7 @@ class CardDetailLogic extends BaseGetXController{
startTime:int.parse(state.starDate.value),
endTime:int.parse(state.endDate.value),
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);

View File

@ -62,8 +62,11 @@ class CardListLogic extends BaseGetXController {
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
@ -76,7 +79,7 @@ class CardListLogic extends BaseGetXController {
startTime:0x11223344,
endTime:0x11223344,
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);
@ -258,8 +261,11 @@ class CardListLogic extends BaseGetXController {
});
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected){
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -275,7 +281,7 @@ class CardListLogic extends BaseGetXController {
startTime:0x11223344,
endTime:0x11223344,
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);

View File

@ -100,8 +100,7 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
SizedBox(height: 20.h),
Expanded(child: _buildMainUI()),
AddBottomWhiteBtn(
btnName:
'${TranslationLoader.lanKeys!.add!.tr}${TranslationLoader.lanKeys!.card!.tr}',
btnName: '${TranslationLoader.lanKeys!.add!.tr}${TranslationLoader.lanKeys!.card!.tr}',
onClick: () async {
var data = await Get.toNamed(Routers.addCardTypeManagePage, arguments: {
"lockId": state.lockId.value,
@ -179,8 +178,7 @@ class _CardListPageState extends State<CardListPage> with RouteAware {
) : NoData(noDataHeight: 1.sh - ScreenUtil().statusBarHeight - ScreenUtil().bottomBarHeight - 190.h - 64.h));
}
Widget _keyItem(String lockTypeIcon, String lockTypeTitle, String ifInvalidation, String showTime,
Function() action) {
Widget _keyItem(String lockTypeIcon, String lockTypeTitle, String ifInvalidation, String showTime, Function() action) {
return GestureDetector(
onTap: action,
child: Container(

View File

@ -116,9 +116,9 @@ class SendElectronicKeyLogic extends BaseGetXController {
//
state.isCreateUser.value = true;
if (isPhoneNumber(state.emailOrPhoneController.text) == true) {
_showPhoneDialog(Get.context, '${entity.errorMsg}');
_showEmailDialog();
} else {
_showEmailDialog(Get.context);
_showEmailDialog();
}
}
}
@ -137,51 +137,51 @@ class SendElectronicKeyLogic extends BaseGetXController {
return emailRegExp.hasMatch(input);
}
//
void _showPhoneDialog(widgetContext, String errMsg) {
showCupertinoDialog(
context: widgetContext,
builder: (context) {
return CupertinoAlertDialog(
title: Text('接收者号码未注册,请重新发送'.tr),
actions: [
CupertinoDialogAction(
child: Text(
TranslationLoader.lanKeys!.cancel!.tr,
style: TextStyle(color: AppColors.mainColor),
),
onPressed: () {
Get.back();
},
),
CupertinoDialogAction(
child: Text(
TranslationLoader.lanKeys!.sure!.tr,
style: TextStyle(color: AppColors.mainColor),
),
onPressed: () async {
//
Get.back();
// var result = await Get.toNamed(Routers.selectCountryRegionPage);
// if (result != null) {
// result as Map<String, dynamic>;
// state.countryCode.value = result['code'];
// state.countryName.value = result['countryName'];
// }
sendElectronicKeyRequest();
},
),
],
);
},
);
}
// //
// void _showPhoneDialog(widgetContext, String errMsg) {
// showCupertinoDialog(
// context: widgetContext,
// builder: (context) {
// return CupertinoAlertDialog(
// title: Text('接收者号码未注册,请重新发送'.tr),
// actions: [
// CupertinoDialogAction(
// child: Text(
// TranslationLoader.lanKeys!.cancel!.tr,
// style: TextStyle(color: AppColors.mainColor),
// ),
// onPressed: () {
// Get.back();
// },
// ),
// CupertinoDialogAction(
// child: Text(
// TranslationLoader.lanKeys!.sure!.tr,
// style: TextStyle(color: AppColors.mainColor),
// ),
// onPressed: () async {
// //
// Get.back();
//
// // var result = await Get.toNamed(Routers.selectCountryRegionPage);
// // if (result != null) {
// // result as Map<String, dynamic>;
// // state.countryCode.value = result['code'];
// // state.countryName.value = result['countryName'];
// // }
// sendElectronicKeyRequest();
// },
// ),
// ],
// );
// },
// );
// }
//---
void _showEmailDialog(widgetContext) {
void _showEmailDialog() {
showCupertinoDialog(
context: widgetContext,
context: Get.context!,
builder: (context) {
return CupertinoAlertDialog(
title: Text('${"是否发送电子钥匙给未注册账号".tr}\n${state.emailOrPhoneController.text}'),

View File

@ -7,7 +7,7 @@ import 'package:get/get.dart';
import 'package:star_lock/blue/io_type.dart';
import '../../../../../blue/blue_manage.dart';
import '../../../../../blue/io_protocol/io_addFingerprint.dart';
// import '../../../../../blue/io_protocol/io_addFingerprint.dart';
import '../../../../../blue/io_protocol/io_addStressFingerprint.dart';
import '../../../../../blue/io_reply.dart';
import '../../../../../blue/io_tool/io_tool.dart';
@ -17,6 +17,7 @@ import '../../../../../network/api_repository.dart';
import '../../../../../tools/baseGetXController.dart';
import '../../../../../tools/eventBusEventManage.dart';
import '../../../../../tools/storage.dart';
import '../../../../blue/io_protocol/io_addFingerprintWithTimeCycleCoercion.dart';
import 'addFingerprint_state.dart';
class AddFingerprintLogic extends BaseGetXController {
@ -27,7 +28,7 @@ class AddFingerprintLogic extends BaseGetXController {
void _initReplySubscription() {
_replySubscription = EventBusManager().eventBus!.on<Reply>().listen((reply) async {
//
if(reply is SenderAddFingerprintReply) {
if(reply is SenderAddFingerprintWithTimeCycleCoercionReply) {
_replyAddFingerprintBegin(reply);
}
@ -69,22 +70,39 @@ class AddFingerprintLogic extends BaseGetXController {
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
var token = reply.data.sublist(5, 9);
print("tokentokentokentoken:$token");
var saveStrList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, saveStrList);
IoSenderManage.senderAddFingerprintCommand(
var weekStr = "00000000";
for (var day in state.weekDay.value) {
int index = day % 7; // 0
weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}';
}
// print("weekStrweekStrweekStr:$weekStr");
int weekRound = int.parse(weekStr, radix: 2);
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:"1",
userID:await Storage.getUid(),
fingerNo:state.isAdministrator.value == "2" ? 254 : 1,
useCountLimit:0xff,
startTime:int.parse(state.startDate.value)~/1000,
endTime:int.parse(state.endDate.value)~/1000,
isForce:state.isCoerced.value == "1" ? 1 : 0, //
isRound:state.selectType.value == "2" ? 1: 0, //
weekRound:weekRound, //
startDate: int.parse(state.startDate.value)~/1000,
endDate: int.parse(state.endDate.value)~/1000,
startTime:int.parse(state.effectiveDateTime.value)~/1000,
endTime:int.parse(state.failureDateTime.value)~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: token,
);
@ -164,13 +182,13 @@ class AddFingerprintLogic extends BaseGetXController {
}else{
state.fingerprintNumber.value = (reply.data[6]).toString();
}
if(state.isCoerced.value == "1"){
// if(state.isCoerced.value == "1"){
//
addFingerprintsData();
}else{
//
senderAddStressFingerprint();
}
// }else{
// //
// senderAddStressFingerprint();
// }
break;
case 0x06:
//
@ -254,27 +272,41 @@ class AddFingerprintLogic extends BaseGetXController {
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected){
cancelBlueConnetctToastTimer();
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var weekStr = "00000000";
for (var day in state.weekDay.value) {
int index = day % 7; // 0
weekStr = '${weekStr.substring(0, index)}1${weekStr.substring(index + 1)}';
}
// print("weekStrweekStrweekStr:$weekStr");
int weekRound = int.parse(weekStr, radix: 2);
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
IoSenderManage.senderAddFingerprintCommand(
IoSenderManage.senderAddFingerprintWithTimeCycleCoercionCommand(
keyID:"1",
userID:await Storage.getUid(),
fingerNo:state.isAdministrator.value == "2" ? 254 : 1,
useCountLimit:0xff,
// startTime:0x11223344,
// endTime:0x11223344,
startTime:int.parse(state.startDate.value)~/1000,
endTime:int.parse(state.endDate.value)~/1000,
isForce:state.isCoerced.value == "1" ? 0 : 1, //
isRound:state.selectType.value == "2" ? 1: 0, //
weekRound:weekRound, //
startDate: int.parse(state.startDate.value)~/1000,
endDate: int.parse(state.endDate.value)~/1000,
startTime:int.parse(state.effectiveDateTime.value)~/1000,
endTime:int.parse(state.failureDateTime.value)~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);
@ -286,6 +318,45 @@ class AddFingerprintLogic extends BaseGetXController {
Get.close(1);
}
});
// BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
// if (deviceConnectionState == BluetoothConnectionState.connected){
// cancelBlueConnetctToastTimer();
// // var publicKey = await Storage.getStringList(saveBluePublicKey);
// // List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
//
// var privateKey = await Storage.getStringList(saveBluePrivateKey);
// List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
//
// var signKey = await Storage.getStringList(saveBlueSignKey);
// List<int> signKeyDataList = changeStringListToIntList(signKey!);
//
// var token = await Storage.getStringList(saveBlueToken);
// List<int> getTokenList = changeStringListToIntList(token!);
//
// Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
// IoSenderManage.senderAddFingerprintCommand(
// keyID:"1",
// userID:await Storage.getUid(),
// fingerNo:state.isAdministrator.value == "2" ? 254 : 1,
// useCountLimit:0xff,
// // startTime:0x11223344,
// // endTime:0x11223344,
// startTime:int.parse(state.startDate.value)~/1000,
// endTime:int.parse(state.endDate.value)~/1000,
// needAuthor:1,
// signKey:signKeyDataList,
// privateKey:getPrivateKeyList,
// token: getTokenList,
// );
// }else if (deviceConnectionState == BluetoothConnectionState.disconnected){
// if(state.ifCurrentScreen.value == true){
// showBlueConnetctToast();
// }
// cancelBlueConnetctToastTimer();
// Get.close(1);
// }
// });
}
//

View File

@ -22,6 +22,7 @@ class AddFingerprintState{
final fromType = 1.obs;
final effectiveDateTime = "".obs;//
final failureDateTime = "".obs;//
final selectType = "0".obs;// 0 1 2
AddFingerprintState() {
Map map = Get.arguments;
@ -40,5 +41,6 @@ class AddFingerprintState{
fromType.value = map["fromType"];
effectiveDateTime.value = map["effectiveTime"];
failureDateTime.value = map["failureTime"];
selectType.value = map["selectType"];
}
}

View File

@ -77,6 +77,7 @@ class AddFingerprintTypeLogic extends BaseGetXController{
"isAdministrator": state.isAdministrator.value == false ? "1" : "2", // 1: 2:
"effectiveTime": startTime,
"failureTime": endTime,
"selectType": state.selectType.value,
});
}

View File

@ -52,8 +52,11 @@ class FingerprintDetailLogic extends BaseGetXController{
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
@ -67,7 +70,7 @@ class FingerprintDetailLogic extends BaseGetXController{
startTime:int.parse(state.starDate.value),
endTime:int.parse(state.endDate.value),
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);
@ -101,8 +104,11 @@ class FingerprintDetailLogic extends BaseGetXController{
});
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected){
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -120,7 +126,7 @@ class FingerprintDetailLogic extends BaseGetXController{
startTime:int.parse(state.starDate.value),
endTime:int.parse(state.endDate.value),
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);

View File

@ -64,8 +64,11 @@ class FingerprintListLogic extends BaseGetXController{
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
@ -78,7 +81,7 @@ class FingerprintListLogic extends BaseGetXController{
startTime:0x11223344,
endTime:0x11223344,
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);
@ -299,8 +302,11 @@ class FingerprintListLogic extends BaseGetXController{
});
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected){
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -316,7 +322,7 @@ class FingerprintListLogic extends BaseGetXController{
startTime:0x11223344,
endTime:0x11223344,
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);

View File

@ -52,8 +52,11 @@ class IrisDetailLogic extends BaseGetXController {
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
@ -67,7 +70,7 @@ class IrisDetailLogic extends BaseGetXController {
startTime: int.parse(state.starDate.value),
endTime: int.parse(state.endDate.value),
needAuthor: 1,
publicKey: publicKeyDataList,
signKey: signKeyDataList,
privateKey: getPrivateKeyList,
token: getTokenList,
);
@ -105,8 +108,11 @@ class IrisDetailLogic extends BaseGetXController {
BlueManage().bludSendData(BlueManage().connectDeviceName,
(BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected) {
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -124,7 +130,7 @@ class IrisDetailLogic extends BaseGetXController {
startTime: int.parse(state.starDate.value),
endTime: int.parse(state.endDate.value),
needAuthor: 1,
publicKey: publicKeyDataList,
signKey: signKeyDataList,
privateKey: getPrivateKeyList,
token: getTokenList,
);

View File

@ -4,6 +4,7 @@ import 'dart:io';
// import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart';
import 'package:network_info_plus/network_info_plus.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:star_lock/tools/baseGetXController.dart';
@ -68,7 +69,9 @@ class ConfiguringWifiLogic extends BaseGetXController{
state.sureBtnState.value = 0;
cancelBlueConnetctToastTimer();
dismissEasyLoading();
showToast("配网成功");
showToast("配网成功", something:(){
Get.close(2);
});
break;
case 0x06:
//

View File

@ -1,15 +1,12 @@
import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/blue/io_type.dart';
import 'package:star_lock/tools/showTipView.dart';
import '../../../../appRouters.dart';
import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_protocol/io_factoryDataReset.dart';
import '../../../../blue/io_protocol/io_setSupportFunctionsNoParameters.dart';
@ -20,9 +17,7 @@ import '../../../../blue/sender_manage.dart';
import '../../../../network/api_repository.dart';
import '../../../../tools/baseGetXController.dart';
import '../../../../tools/eventBusEventManage.dart';
import '../../../../tools/showTFView.dart';
import '../../../../tools/storage.dart';
import '../../../../translations/trans_lib.dart';
import 'checkingInInfoData_entity.dart';
import 'lockSetInfo_entity.dart';
import 'lockSet_state.dart';

View File

@ -51,8 +51,11 @@ class PalmDetailLogic extends BaseGetXController {
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
@ -66,7 +69,7 @@ class PalmDetailLogic extends BaseGetXController {
startTime: int.parse(state.starDate.value),
endTime: int.parse(state.endDate.value),
needAuthor: 1,
publicKey: publicKeyDataList,
signKey: signKeyDataList,
privateKey: getPrivateKeyList,
token: getTokenList,
);
@ -104,8 +107,11 @@ class PalmDetailLogic extends BaseGetXController {
BlueManage().bludSendData(BlueManage().connectDeviceName,
(BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected) {
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -123,7 +129,7 @@ class PalmDetailLogic extends BaseGetXController {
startTime: int.parse(state.starDate.value),
endTime: int.parse(state.endDate.value),
needAuthor: 1,
publicKey: publicKeyDataList,
signKey: signKeyDataList,
privateKey: getPrivateKeyList,
token: getTokenList,
);

View File

@ -308,7 +308,7 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
// Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
Get.log("state.isAdministrator.value:${state.isAdministrator.value}");
IoSenderManage.senderCustomPasswordsCommand(
keyID: "1",
userID: await Storage.getUid(),

View File

@ -1,10 +1,10 @@
import 'dart:async';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
// import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:get/get.dart';
import 'package:star_lock/blue/io_protocol/io_changeAdministratorPassword.dart';
import 'package:star_lock/blue/io_protocol/io_senderCustomPasswords.dart';
@ -48,21 +48,18 @@ class SaveLockLogic extends BaseGetXController {
//
Future<void> _replyAddUserKey(Reply reply) async {
var lockId = reply.data.sublist(2, 42);
// print("lockId:$lockId");
var token = reply.data.sublist(42, 46);
List<String> strTokenList = changeIntListToStringList(token);
Storage.setStringList(saveBlueToken, strTokenList);
// print("token:$token");
int status = reply.data[46];
// print("status:$status reply.data:${reply.data}");
print("status:$status");
Get.log("status:$status");
switch (status) {
case 0x00:
//
print("添加用户数据解析成功");
Get.log("添加用户数据解析成功");
state.lockUserNo = reply.data[47];
cancelBlueConnetctToastTimer();
@ -70,7 +67,7 @@ class SaveLockLogic extends BaseGetXController {
break;
case 0x06:
//
print("需要鉴权");
Get.log("需要鉴权");
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -95,17 +92,17 @@ class SaveLockLogic extends BaseGetXController {
break;
case 0x07:
//
print("用户无权限");
Get.log("用户无权限");
dismissEasyLoading();
break;
case 0x09:
//
print("添加用户权限校验错误");
Get.log("添加用户权限校验错误");
dismissEasyLoading();
break;
default:
//
print("领锁失败");
Get.log("领锁失败");
dismissEasyLoading();
break;
}
@ -115,22 +112,21 @@ class SaveLockLogic extends BaseGetXController {
Future<void> _replySenderCustomPasswords(Reply reply) async {
var token = reply.data.sublist(5, 9);
var saveStrList = changeIntListToStringList(token);
print("_replyFactoryDataResetKeyToken:$token");
Storage.setStringList(saveBlueToken, saveStrList);
int status = reply.data[2];
print("status:$status");
Get.log("status:$status");
switch (status) {
case 0x00:
//
print("${reply.commandType!.typeValue} 数据解析成功");
//
Get.log("${reply.commandType!.typeValue} 数据解析成功");
dismissEasyLoading();
addLockAdminPassword(true);
break;
case 0x06:
//
print("${reply.commandType!.typeValue} 需要鉴权");
//
Get.log("${reply.commandType!.typeValue} 需要鉴权");
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -151,19 +147,16 @@ class SaveLockLogic extends BaseGetXController {
token: token);
break;
case 0x07:
//
print("${reply.commandType!.typeValue} 用户无权限");
//
Get.log("${reply.commandType!.typeValue} 用户无权限");
break;
case 0x09:
//
print("${reply.commandType!.typeValue} 权限校验错误");
//
Get.log("${reply.commandType!.typeValue} 权限校验错误");
break;
default:
//
print("${reply.commandType!.typeValue} 失败");
//
Get.log("${reply.commandType!.typeValue} 失败");
break;
}
}
@ -172,22 +165,21 @@ class SaveLockLogic extends BaseGetXController {
Future<void> _replyChangeAdministratorPassword(Reply reply) async {
var token = reply.data.sublist(5, 9);
var saveStrList = changeIntListToStringList(token);
print("_replyFactoryDataResetKeyToken:$token");
Storage.setStringList(saveBlueToken, saveStrList);
int status = reply.data[2];
print("status:$status");
Get.log("status:$status");
switch (status) {
case 0x00:
//
print("${reply.commandType!.typeValue} 数据解析成功");
//
Get.log("${reply.commandType!.typeValue} 数据解析成功");
cancelBlueConnetctToastTimer();
addLockAdminPassword(false);
break;
case 0x06:
//
print("${reply.commandType!.typeValue} 需要鉴权");
//
Get.log("${reply.commandType!.typeValue} 需要鉴权");
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
@ -209,26 +201,22 @@ class SaveLockLogic extends BaseGetXController {
token: token);
break;
case 0x07:
//
print("${reply.commandType!.typeValue} 用户无权限");
//
Get.log("${reply.commandType!.typeValue} 用户无权限");
break;
case 0x09:
//
print("${reply.commandType!.typeValue} 权限校验错误");
//
Get.log("${reply.commandType!.typeValue} 权限校验错误");
break;
default:
//
print("${reply.commandType!.typeValue} 失败");
//
Get.log("${reply.commandType!.typeValue} 失败");
break;
}
}
//
Future<void> addUserConnectBlue() async {
// print("111111");
//
showEasyLoading();
showBlueConnetctToastTimer(action: (){
@ -236,9 +224,7 @@ class SaveLockLogic extends BaseGetXController {
state.saveBtnIsUsable.value = true;
});
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState deviceConnectionState) async {
// print("222222");
if (deviceConnectionState == BluetoothConnectionState.connected){
// print("333333");
//
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -269,7 +255,6 @@ class SaveLockLogic extends BaseGetXController {
token: getTokenList
);
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
print("444444");
dismissEasyLoading();
cancelBlueConnetctToastTimer();
state.saveBtnIsUsable.value = true;
@ -296,7 +281,6 @@ class SaveLockLogic extends BaseGetXController {
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
print("openDoorTokenPubToken:$getTokenList");
IoSenderManage.senderCustomPasswordsCommand(
keyID: "1",
@ -330,7 +314,7 @@ class SaveLockLogic extends BaseGetXController {
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
print("openDoorTokenPubToken:$getTokenList");
Get.log("openDoorTokenPubToken:$getTokenList");
IoSenderManage.changeAdministratorPasswordCommand(
keyID: "1",
@ -345,7 +329,6 @@ class SaveLockLogic extends BaseGetXController {
privateKey: getPrivateKeyList,
token: getTokenList);
} else if (deviceConnectionState == BluetoothConnectionState.disconnected) {
print("444444");
dismissEasyLoading();
cancelBlueConnetctToastTimer();
state.saveBtnIsUsable.value = true;
@ -357,7 +340,6 @@ class SaveLockLogic extends BaseGetXController {
}
void bindBlueAdmin() async{
// print("state.lockInfo:${state.lockInfo}");
var positionMap = {};
positionMap['longitude'] = state.addressInfo["longitude"];
@ -385,8 +367,6 @@ class SaveLockLogic extends BaseGetXController {
List<int> signKeyDataList = changeStringListToIntList(signKey!);
bluetooth['signKey'] = signKeyDataList;
// print("addUser:publicKeyDataList$publicKeyDataList getPrivateKeyList:$getPrivateKeyList signKeyDataList:$signKeyDataList");
var entity = await ApiRepository.to.bindingBlueAdmin(
lockAlias: state.aliName.value,
position: positionMap,
@ -468,7 +448,6 @@ class SaveLockLogic extends BaseGetXController {
void onReady() {
// TODO: implement onReady
super.onReady();
print("onReady()");
_initReplySubscription();
}
@ -477,7 +456,7 @@ class SaveLockLogic extends BaseGetXController {
void onInit() {
// TODO: implement onInit
super.onInit();
print("onInit()");
}
@override
@ -487,4 +466,5 @@ class SaveLockLogic extends BaseGetXController {
BlueManage().stopScan();
super.onClose();
}
}

View File

@ -52,8 +52,11 @@ class ExpireCardLogic extends BaseGetXController {
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!);
@ -67,7 +70,7 @@ class ExpireCardLogic extends BaseGetXController {
startTime:state.deletExpireCardItemEntity.startDate!~/1000,
endTime:state.deletExpireCardItemEntity.endDate!~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);
@ -104,8 +107,11 @@ class ExpireCardLogic extends BaseGetXController {
});
BlueManage().bludSendData(state.deletExpireCardItemEntity.lockInfo!.btDeviceName!, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected){
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -123,7 +129,7 @@ class ExpireCardLogic extends BaseGetXController {
startTime:state.deletExpireCardItemEntity.startDate!~/1000,
endTime:state.deletExpireCardItemEntity.endDate!~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);

View File

@ -53,6 +53,9 @@ class ExpireFingerprintLogic extends BaseGetXController {
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
@ -68,7 +71,7 @@ class ExpireFingerprintLogic extends BaseGetXController {
startTime:state.deletExpireFingerprintItemEntity.startDate!~/1000,
endTime:state.deletExpireFingerprintItemEntity.endDate!~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);
@ -105,8 +108,11 @@ class ExpireFingerprintLogic extends BaseGetXController {
});
BlueManage().bludSendData(state.deletExpireFingerprintItemEntity.lockInfo!.btDeviceName!, (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected){
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
// var publicKey = await Storage.getStringList(saveBluePublicKey);
// List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
@ -124,7 +130,7 @@ class ExpireFingerprintLogic extends BaseGetXController {
startTime:state.deletExpireFingerprintItemEntity.startDate!~/1000,
endTime:state.deletExpireFingerprintItemEntity.endDate!~/1000,
needAuthor:1,
publicKey:publicKeyDataList,
signKey:signKeyDataList,
privateKey:getPrivateKeyList,
token: getTokenList,
);