// 网关配网 import 'dart:convert'; import '../io_reply.dart'; import '../io_sender.dart'; import '../io_tool/io_tool.dart'; import '../io_type.dart'; import '../sm4Encipher/sm4.dart'; import 'package:crypto/crypto.dart' as crypto; class GatewayConfiguringWifiCommand extends SenderProtocol { GatewayConfiguringWifiCommand({ this.ssid, this.password, }) : super(CommandType.gatewayConfiguringWifi); String? ssid; String? password; @override String toString() { return 'SenderConfiguringWifiCommand{ssid: $ssid, password: $password}'; } @override List messageDetail() { final List data = []; List subData = []; // 指令类型 final int type = commandType!.typeValue; final double typeDouble = type / 256; final int type1 = typeDouble.toInt(); final int type2 = type % 256; data.add(type1); data.add(type2); //SSID 30 final int ssidLength = utf8.encode(ssid!).length; subData.addAll(utf8.encode(ssid!)); subData = getFixedLengthList(subData, 30 - ssidLength); //Password 20 final int passwordLength = utf8.encode(password!).length; subData.addAll(utf8.encode(password!)); subData = getFixedLengthList(subData, 20 - passwordLength); data.add(subData.length); data.addAll(subData); if ((data.length % 16) != 0) { final int add = 16 - data.length % 16; for (int i = 0; i < add; i++) { data.add(0); } } printLog(data); return data; } } class GatewayConfiguringWifiReply extends Reply { GatewayConfiguringWifiReply.parseData(CommandType commandType, List dataDetail) : super.parseData(commandType, dataDetail) { data = dataDetail; final int status = data[5]; errorWithStstus(status); } } class GatewayConfiguringWifiResultReply extends Reply { GatewayConfiguringWifiResultReply.parseData(CommandType commandType, List dataDetail) : super.parseData(commandType, dataDetail) { data = dataDetail; final int status = data[5]; errorWithStstus(status); } }