handleAutoLoginWithData function

void handleAutoLoginWithData(
  1. List<int> value
)

处理 自动登陆指令 返回的数据

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);
}