handleAutoLoginWithData function
处理 自动登陆指令 返回的数据
Implementation
void handleAutoLoginWithData(List<int> value) async {
String cmdName = '自动登陆指令';
int len = value[2];
//获取解密后的有效数据
List<int> dataDecrypt = await decryptTemp(value);
// ERR_CODE为0x00时表示创建用户成功,为其他字段时则表示创建用户失败,其中为0X0B时表示用户已经重复
int ERR_CODE = dataDecrypt[len - 1];
if (ERR_CODE != 0) {
print('$cmdName,失败');
ZygBluetoothTool.cmdMsgHandle(
'$cmdName,失败', {'cmd': cmdName, 'ERR_CODE': ERR_CODE});
return;
}
//获取有效长度,根据有效长度来判断是否成功自动创建用户,如果长度小于等于2,那么肯定无法执行’绑定成功后自动登陆‘这个指令
if (len <= 2) {
print('此处应该弹框:执行失败,请查看权限,ALLOW 的值是:${dataDecrypt[0]} ');
ZygBluetoothTool.cmdMsgHandle('执行失败,请查看权限,ALLOW 的值是:${dataDecrypt[0]}',
{'cmd': cmdName, 'ERR_CODE': ERR_CODE});
return;
}
// 0xFE 0x01 LEN ALLOW NID TYPE ID PASSWORD ERR_CODE checksum
// ALLOW为锁端每次绑定成功后能否自动创建登录密码的标记,为0x00表示不允许,为0x01表示允许。默认是允许的
int ALLOW = dataDecrypt[0];
// NID 为该密码对应的用户的NID, 其中管理员用户的NID为0x01
int NID = dataDecrypt[1];
// TYPE为密码类型,0x01为管理员的密码,0x02为普通用户的密码
int TYPE = dataDecrypt[2];
// ID 为password 对应的存储ID
int ID = dataDecrypt[3];
// PASSWORD 为当前绑定手机对应的用户密码
List<int> PASSWORD_List = dataDecrypt.sublist(4, 4 + len - 5);
String PASSWORD_str = jsonEncode(PASSWORD_List);
String msg =
'ALLOW为锁端每次绑定成功后能否自动创建登录密码的标记,为0x00表示不允许,为0x01表示允许。默认是允许的;NID 为该密码对应的用户的NID, 其中管理员用户的NID为0x01;TYPE为密码类型,0x01为管理员的密码,0x02为普通用户的密码; ID 为password 对应的存储ID;PASSWORD 为当前绑定手机对应的用户密码';
print('$cmdName,成功');
print(dataDecrypt);
Map dataMap = {
'cmd': cmdName,
'ERR_CODE': ERR_CODE,
'ALLOW': ALLOW,
'NID': NID,
'TYPE': TYPE,
'ID': ID,
'PASSWORD': PASSWORD_str,
'msg': msg
};
ZygBluetoothTool.cmdMsgHandle('$cmdName,成功', dataMap);
}