blob: b749a6b5c0752b4ab3612d9fbc29e6bb2fedd8ea [file] [log] [blame]
// Copyright (c) 2010 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.
//
// Provides a default implementation of a platform switch. On CrOS, switch
// state is represented in an integer exposed via a file in /sys. Each
// switch recieves one bit which is checked with a subclass-defined
// bitmask().
//
// A subclass only needs to set its name and bitmask to "just work".
#ifndef CROS_BOOT_MODE_PLATFORM_SWITCH_H_
#define CROS_BOOT_MODE_PLATFORM_SWITCH_H_
#include "platform_reader.h"
namespace cros_boot_mode {
class PlatformSwitch : public PlatformReader {
public:
PlatformSwitch();
virtual ~PlatformSwitch();
enum { kDisabled, kEnabled };
static const char *kPositionText[];
virtual const char *c_str() const;
virtual const char *default_platform_file_path() const {
return "/sys/devices/platform/chromeos_acpi/CHSW";
}
virtual size_t max_size() const {
return sizeof("65535"); // largest allowed switch value
}
virtual int Process(const char *file_contents, size_t length);
// To be overriden by the implementation
virtual unsigned int bitmask() const = 0;
virtual const char *name() const = 0;
};
} // namespace cros_boot_mode
#endif // CROS_BOOT_MODE_PLATFORM_SWITCH_H_