handleOpen_closeWithData function

void handleOpen_closeWithData(
  1. List<int> value
)

处理 开锁关锁 返回的数据

Implementation

void handleOpen_closeWithData(List<int> value) async {
  // 0xFE 0X0a LEN OP_TYPE ERR_CODE checksum
  // 获取有效数据的长度
  int len = value[2];
  String cmdName = '开锁关锁';
  //获取解密后的有效数据
  List<int> dataDecrypt = await decryptTemp(value);

  // ERR_CODE为0x00时表示创建用户成功,为其他字段时则表示创建用户失败,其中为0X0B时表示用户已经重复
  int ERR_CODE = dataDecrypt[len - 1];
  if (ERR_CODE != 0) {
    print('开锁关锁,错误码:$ERR_CODE');
    if (ERR_CODE == 0x0b) {
      print('重复开门');
      ZygBluetoothTool.cmdMsgHandle('指令执行失败,错误码$ERR_CODE,重复开门',
          {'cmd': cmdName, 'ERR_CODE': ERR_CODE, 'msg': '重复开门'});
    }

    if (ERR_CODE == 0x0c) {
      print('密码错误');
      ZygBluetoothTool.cmdMsgHandle('指令执行失败,错误码$ERR_CODE,密码错误',
          {'cmd': cmdName, 'ERR_CODE': ERR_CODE, 'msg': '密码错误'});
    }
    return;
  }

  // OP_TYPE为开关门类型,0x00为关门,0x01为开门。
  int OP_TYPE = dataDecrypt[0];
  String OP_TYPE_String = OP_TYPE == 0 ? '关门' : '开门';
  print('开锁关锁,成功');
  ZygBluetoothTool.cmdMsgHandle('指令执行成功,当前锁的状态为:$OP_TYPE_String',
      {'cmd': cmdName, 'state': OP_TYPE_String});
}