blob: b50c7c6ed0db0e567e9a97158b14aebd3d80c081 [file] [log] [blame]
// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <base/logging.h>
#include <chromeos/ec/ec_commands.h>
#include "biod/fp_mode.h"
namespace biod {
using Mode = FpMode::Mode;
FpMode::FpMode(uint32_t mode) {
mode_ = RawValToEnum(mode);
if (mode_ == Mode::kModeInvalid) {
LOG(ERROR) << "Attempted to set unrecognized mode: 0x" << std::hex << mode;
}
}
Mode FpMode::RawValToEnum(uint32_t mode) const {
switch (mode) {
case 0:
return Mode::kNone;
case FP_MODE_DEEPSLEEP:
return Mode::kDeepsleep;
case FP_MODE_FINGER_DOWN:
return Mode::kFingerDown;
case FP_MODE_FINGER_UP:
return Mode::kFingerUp;
case FP_MODE_CAPTURE:
return Mode::kCapture;
case FP_MODE_ENROLL_SESSION:
return Mode::kEnrollSession;
case (FP_MODE_ENROLL_SESSION | FP_MODE_FINGER_UP):
return Mode::kEnrollSessionFingerUp;
case (FP_MODE_ENROLL_SESSION | FP_MODE_ENROLL_IMAGE):
return Mode::kEnrollSessionEnrollImage;
case FP_MODE_ENROLL_IMAGE:
return Mode::kEnrollImage;
case FP_MODE_MATCH:
return Mode::kMatch;
case FP_MODE_RESET_SENSOR:
return Mode::kResetSensor;
case FP_MODE_DONT_CHANGE:
return Mode::kDontChange;
default:
return Mode::kModeInvalid;
}
}
uint32_t FpMode::EnumToRawVal(Mode mode) const {
switch (mode) {
case Mode::kModeInvalid:
case Mode::kNone:
return 0;
case Mode::kDeepsleep:
return FP_MODE_DEEPSLEEP;
case Mode::kFingerDown:
return FP_MODE_FINGER_DOWN;
case Mode::kFingerUp:
return FP_MODE_FINGER_UP;
case Mode::kCapture:
return FP_MODE_CAPTURE;
case Mode::kEnrollSession:
return FP_MODE_ENROLL_SESSION;
case Mode::kEnrollSessionFingerUp:
return (FP_MODE_ENROLL_SESSION | FP_MODE_FINGER_UP);
case Mode::kEnrollSessionEnrollImage:
return (FP_MODE_ENROLL_SESSION | FP_MODE_ENROLL_IMAGE);
case Mode::kEnrollImage:
return FP_MODE_ENROLL_IMAGE;
case Mode::kMatch:
return FP_MODE_MATCH;
case Mode::kResetSensor:
return FP_MODE_RESET_SENSOR;
case Mode::kDontChange:
return FP_MODE_DONT_CHANGE;
case Mode::kSensorMaintenance:
return FP_MODE_SENSOR_MAINTENANCE;
}
}
} // namespace biod