diff options
Diffstat (limited to 'hid/lib/drivers-avr')
-rw-r--r-- | hid/lib/drivers-avr/eeprom.h | 40 | ||||
-rw-r--r-- | hid/lib/drivers-avr/factory.cpp | 13 |
2 files changed, 53 insertions, 0 deletions
diff --git a/hid/lib/drivers-avr/eeprom.h b/hid/lib/drivers-avr/eeprom.h new file mode 100644 index 00000000..7868f03d --- /dev/null +++ b/hid/lib/drivers-avr/eeprom.h @@ -0,0 +1,40 @@ +/***************************************************************************** +# # +# KVMD - The main PiKVM daemon. # +# # +# Copyright (C) 2018-2022 Maxim Devaev <[email protected]> # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see <https://www.gnu.org/licenses/>. # +# # +*****************************************************************************/ + +#include "storage.h" +#ifdef HID_DYNAMIC +#include <avr/eeprom.h> +#endif + +namespace DRIVERS { + + struct Eeprom : public Storage { + using Storage::Storage; + + void read_block (void *_dst, const void *_src, size_t _n) override { + eeprom_read_block(_dst, _src, _n); + } + + void update_block (const void *_src, void *_dst, size_t _n) override { + eeprom_update_block(_src, _dst, _n); + } + }; +} diff --git a/hid/lib/drivers-avr/factory.cpp b/hid/lib/drivers-avr/factory.cpp index 26f10583..c6968777 100644 --- a/hid/lib/drivers-avr/factory.cpp +++ b/hid/lib/drivers-avr/factory.cpp @@ -23,6 +23,7 @@ #include "usb/hid.h" #include "ps2/hid.h" #include "factory.h" +#include "eeprom.h" namespace DRIVERS { @@ -56,4 +57,16 @@ namespace DRIVERS { return new Mouse(DRIVERS::DUMMY); } } + Storage* Factory::makeStorage(type _type) { + switch (_type) + { +# ifdef HID_DYNAMIC + case NON_VOLATILE_STORAGE: + return new Eeprom(DRIVERS::NON_VOLATILE_STORAGE); +# endif + default: + return new Storage(DRIVERS::DUMMY); + } + } + } |