This commit is contained in:
魏少阳 2024-04-25 16:17:54 +08:00
commit 84b3042579
10 changed files with 74 additions and 48 deletions

View File

@ -107,7 +107,7 @@ android {
dimension "flavor-type"
applicationId "com.xhjcn.lock"
signingConfig signingConfigs.xhj
resValue "string", "app_name", "星星锁"
resValue "string", "app_name", "锁"
manifestPlaceholders.JPUSH_PKGNAME = "com.xhjcn.lock"
}
}

View File

@ -95,7 +95,7 @@ flavors:
bundleId: "com.skychip.lock"
xhj:
app:
name: "星星锁"
name: "锁"
icon: "assets/icon/xhj.png"
android:
applicationId: "com.xhjcn.lock"

View File

@ -2,5 +2,5 @@
FLUTTER_TARGET=lib/main_xhj_full.dart
ASSET_PREFIX=xhj
BUNDLE_NAME=星星
BUNDLE_DISPLAY_NAME=星星
BUNDLE_NAME=
BUNDLE_DISPLAY_NAME=

View File

@ -2,5 +2,5 @@
FLUTTER_TARGET=lib/main_xhj_full.dart
ASSET_PREFIX=xhj
BUNDLE_NAME=星星
BUNDLE_DISPLAY_NAME=星星
BUNDLE_NAME=
BUNDLE_DISPLAY_NAME=

View File

@ -2,5 +2,5 @@
FLUTTER_TARGET=lib/main_xhj_lite.dart
ASSET_PREFIX=xhj
BUNDLE_NAME=星星
BUNDLE_DISPLAY_NAME=星星
BUNDLE_NAME=
BUNDLE_DISPLAY_NAME=

View File

@ -55,53 +55,78 @@ class OTAUpgradeCommand extends SenderProtocol {
data.add(type1);
data.add(type2);
print('---> 指令 : $type1 $type2' );
// id 40
int lockIDLength = utf8.encode(lockID!).length;
data.addAll(utf8.encode(lockID!));
data = getFixedLengthList(data, 40 - lockIDLength);
print('---> 锁id :' + utf8.encode(lockID!).toString());
//userID 20
int userIDLength = utf8.encode(userID!).length;
data.addAll(utf8.encode(userID!));
data = getFixedLengthList(data, 20 - userIDLength);
print('---> userID :' + utf8.encode(userID!).toString());
//platform 2
int platform0 = (platform! & 0xFF00) >> 8;
int platform1 = platform! & 0xFF;
data.add(platform0);
data.add(platform1);
print('---> platform : $platform0 $platform1');
//product 2
int product0 = (product! & 0xFF00) >> 8;
int product1 = product! & 0xFF;
data.add(product0);
data.add(product1);
// int product0 = (product! & 0xFF00) >> 8;
// int product1 = product! & 0xFF;
// data.add(product0);
// data.add(product1);
data.addAll([0,1]);// 01
print('---> platform : ${[0,1]}');
//HwVersion 20
int hwVersionLength = utf8.encode(hwVersion!).length;
data.addAll(utf8.encode(hwVersion!));
data = getFixedLengthList(data, 20 - hwVersionLength);
print('---> hwVersion : ${utf8.encode(hwVersion!)}');
//FwVersion 20
int fwVersionLength = utf8.encode(fwVersion!).length;
data.addAll(utf8.encode(fwVersion!));
data = getFixedLengthList(data, 20 - fwVersionLength);
print('---> FwVersion : ${utf8.encode(fwVersion!)}');
//fwSize 4
ByteData bytes = ByteData(4); // 4
bytes.setInt32(0, fwSize!);
List<int> byteList = bytes.buffer.asUint8List();
data.addAll(byteList);
//fwMD5 16
int fwMD5Length = utf8.encode(fwMD5!).length;
data.addAll(utf8.encode(fwMD5!));
data = getFixedLengthList(data, 16 - fwMD5Length);
print('---> fwSize : ${byteList}');
// 16
Uint8List result = Uint8List(16);
// 4
for (int i = 0; i < fwMD5!.length; i += 2) {
String hex = fwMD5!.substring(i, i + 2);
int byteValue = int.parse(hex, radix: 16);
result[i ~/ 2] = byteValue;
}
data.addAll(result);
print('---> fwMD5 : ${result}');
// token 4 Token 0 token失效或者第一次发送的时候token为0
data.addAll(token!);
print('--->1'+data.toString());
print('---> token : ${token}');
print('--->1' + data.toString());
if (needAuthor == 0) {
//AuthCodeLen 1
@ -120,6 +145,8 @@ class OTAUpgradeCommand extends SenderProtocol {
authCodeData.addAll(signKey!);
print('---> ${utf8.encode(keyID!)} ${utf8.encode(userID!)} $token $signKey');
// KeyIDauthUserIDmd5加密之后就是authCode
var authCode = crypto.md5.convert(authCodeData);
@ -149,7 +176,7 @@ class OTAUpgradeReply extends Reply {
data = dataDetail;
token = data.sublist(2, 6);
status = data[6];
print('--->2'+data.toString());
print('--->2' + data.toString());
errorWithStstus(status);
}
}

View File

@ -13,8 +13,8 @@ enum CommandType {
calibrationTime, // = 0x30f0
readStarLockStatusInfo, // 0x3040
startOATUpgrade, //OTA升级开始 0x30E0
confirmationOTAUpgrade, //OTA升级开始 0x30E1
processOTAUpgrade, //OTA升级过程 0x30E2
confirmationOTAUpgrade, //OTA升级开始 0x30E2
processOTAUpgrade, //OTA升级过程 0x30E1
generalExtendedCommond, // = 0x3030
gecChangeAdministratorPassword, // - = 2

View File

@ -74,7 +74,7 @@ class F {
case Flavor.sky:
return '锁通通';
case Flavor.xhj:
return '星星';
return '';
default:
throw Exception('flavor[$name] title not found');
}
@ -91,7 +91,7 @@ class F {
case Flavor.sky:
return '锁通通';
case Flavor.xhj:
return '星星';
return '';
default:
throw Exception('flavor[$name] title not found');
}

View File

@ -14,6 +14,8 @@ import 'package:star_lock/blue/io_protocol/io_processOtaUpgrade.dart';
import 'package:star_lock/blue/io_reply.dart';
import 'package:star_lock/blue/io_tool/io_tool.dart';
import 'package:star_lock/blue/io_tool/manager_event_bus.dart';
import 'package:star_lock/blue/sender_manage.dart';
import 'package:star_lock/main/lockDetail/lockSet/lockSet/lockSet_logic.dart';
import 'package:star_lock/permission/permission_dialog.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/commonDataManage.dart';
@ -64,7 +66,7 @@ class LockEscalationLogic extends BaseGetXController {
}
String md5Str = md5.convert(otaBin!).toString();
headJson!['fwMd5'] = md5Str;
blueOTAUpgrade(headJson!, [0,0,0,0]);
blueOTAUpgrade(headJson!, [0, 0, 0, 0]);
}
// ota
@ -74,20 +76,13 @@ class LockEscalationLogic extends BaseGetXController {
if (deviceConnectionState == BluetoothConnectionState.connected) {
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var signKey = await Storage.getStringList(saveBlueSignKey);
List<int> signKeyDataList = changeStringListToIntList(signKey!);
String lockID = CommonDataManage.shareManager()?.currentLockSetInfoData
.lockId
?.toString() ??
'';
String keyID =
CommonDataManage.shareManager()?.currentKeyInfo.keyId?.toString() ??
'';
String uid = await Storage.getUid() ?? '';
BlueManage().writeCharacteristicWithResponse(OTAUpgradeCommand(
lockID: lockID,
userID: await Storage.getUid(),
keyID: keyID,
lockID: BlueManage().connectDeviceName,
userID: uid,
keyID: BlueManage().connectDeviceName,
platform: int.tryParse(data['platform']) ?? 0,
product: int.tryParse(data['product']) ?? 0,
hwVersion: data['hwVersion'],
@ -96,7 +91,7 @@ class LockEscalationLogic extends BaseGetXController {
fwMD5: data['fwMd5'],
needAuthor: 1,
token: token,
signKey: signKeyDataList,
signKey: signKeyDataList,
privateKey: getPrivateKeyList)
.packageData());
} else if (deviceConnectionState ==
@ -119,10 +114,11 @@ class LockEscalationLogic extends BaseGetXController {
}
if (otaCount <= otaIndex) {
int now = DateTime.now().millisecondsSinceEpoch ~/ 1000;
String msg = '传输完成 时间:${now - startSecond}';
String msg =
'传输完成 时间:${now - startSecond}秒 otaCount:$otaCount otaIndex:$otaIndex ';
closeOTADAta();
print(msg);
showToast(msg);
// showToast(msg);
return;
}
int star = otaIndex * 240;
@ -130,10 +126,11 @@ class LockEscalationLogic extends BaseGetXController {
if (end > length) {
end = length;
}
int size = end - star;
List<int> data = otaBin!.sublist(star, end);
state.otaProgress.value = otaIndex / otaCount;
await BlueManage().writeCharacteristicWithResponse(
ProcessOtaUpgradeCommand(index: otaIndex, size: length, data: data)
ProcessOtaUpgradeCommand(index: otaIndex, size: size, data: data)
.packageData());
}
@ -173,7 +170,7 @@ class LockEscalationLogic extends BaseGetXController {
Uint8List metaLenList = data.sublist(12, 16);
int metaLen = ByteData.sublistView(metaLenList).getUint32(0);
if (metaLen < 2 || metaLen > 10240) {
showToast('元数据长度错误');
showToast('文件校验失败 0x01');
return null;
}
//
@ -190,13 +187,14 @@ class LockEscalationLogic extends BaseGetXController {
//
Uint8List bin = data.sublist(binOffset.toInt(), data.length);
//md5
// String md5Str = md5.convert(bin).toString();
// if (md5Str != meta['fwMd5']) {
// showToast('固件MD5校验失败');
// return false;
// }
String md5Str = md5.convert(bin).toString().toUpperCase();
print('---> $md5Str ${meta['fwMd5']}');
if (md5Str != meta['fwMd5']) {
showToast('文件校验失败 0x02');
return null;
}
if (bin.length != meta['fwSize']) {
showToast('固件校验失败');
showToast('文件校验失败 0x03');
return null;
}
return bin;
@ -216,6 +214,7 @@ class LockEscalationLogic extends BaseGetXController {
if (reply is OTAUpgradeReply) {
if (reply.status == 0x00) {
//
startOTAData();
processOtaUpgrade();
} else if (reply.status == 0x06) {
blueOTAUpgrade(headJson!, reply.token);

View File

@ -32,9 +32,9 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# 1.0.27+2024041101打包提审
# 1.0.27+2024041102打包预发布环境给田总测试
# 1.0.28+2024041702打包给欧阳回归测试
# 1.0.27+2024041702 打包星星锁提审华为
# 1.0.27+2024041703 打包星星锁提审ios
# 1.0.27+2024042204 打包星星锁提审ios与 android
# 1.0.27+2024041702 打包锁提审华为
# 1.0.27+2024041703 打包锁提审ios
# 1.0.27+2024042204 打包锁提审ios与 android
version: 1.0.27+2024042204