openMSX
FirmwareSwitch.cc
Go to the documentation of this file.
1#include "FirmwareSwitch.hh"
2#include "MSXCliComm.hh"
3#include "FileContext.hh"
4#include "File.hh"
5#include "FileException.hh"
6#include <array>
7#include <cstdint>
8
9namespace openmsx {
10
11static constexpr const char* const filename = "firmwareswitch";
12
14 : config(config_)
15 , setting(
16 config.getCommandController(), "firmwareswitch",
17 "This setting controls the firmware switch",
18 false, Setting::DONT_SAVE)
19{
20 // load firmware switch setting from persistent data
21 try {
22 File file(config.getFileContext().resolveCreate(filename),
24 std::array<uint8_t, 1> byteBuf;
25 file.read(byteBuf);
26 setting.setBoolean(byteBuf[0] != 0);
27 } catch (FileException& e) {
28 config.getCliComm().printWarning(
29 "Couldn't load firmwareswitch status: ", e.getMessage());
30 }
31}
32
34{
35 // save firmware switch setting value to persistent data
36 try {
37 File file(config.getFileContext().resolveCreate(filename),
39 std::array byteBuf = {uint8_t(setting.getBoolean() ? 0xFF : 0x00)};
40 file.write(byteBuf);
41 } catch (FileException& e) {
42 config.getCliComm().printWarning(
43 "Couldn't save firmwareswitch status: ", e.getMessage());
44 }
45}
46
47} // namespace openmsx
BaseSetting * setting
bool getBoolean() const noexcept
void printWarning(std::string_view message)
Definition CliComm.cc:10
MSXCliComm & getCliComm() const
const FileContext & getFileContext() const
std::string resolveCreate(std::string_view filename) const
void read(std::span< uint8_t > buffer)
Read from file.
Definition File.cc:92
void write(std::span< const uint8_t > buffer)
Write to file.
Definition File.cc:97
@ SAVE_PERSISTENT
Definition File.hh:23
@ LOAD_PERSISTENT
Definition File.hh:22
FirmwareSwitch(const DeviceConfig &config)
This file implemented 3 utility functions:
Definition Autofire.cc:9