| // Copyright 2017 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. |
| |
| #ifndef MODEMFWD_FIRMWARE_DIRECTORY_H_ |
| #define MODEMFWD_FIRMWARE_DIRECTORY_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include <base/files/file_path.h> |
| #include <base/optional.h> |
| |
| #include "modemfwd/firmware_file_info.h" |
| |
| namespace modemfwd { |
| |
| class FirmwareDirectory { |
| public: |
| struct Files { |
| base::Optional<FirmwareFileInfo> main_firmware; |
| base::Optional<FirmwareFileInfo> carrier_firmware; |
| }; |
| |
| static const char kGenericCarrierId[]; |
| |
| virtual ~FirmwareDirectory() = default; |
| |
| // Finds main firmware in the firmware directory for modems with device ID |
| // |device_id|, and carrier firmware for the carrier |carrier_id| if it |
| // is not null. |
| // |
| // |carrier_id| may be changed if we find a different carrier firmware |
| // that supports the carrier |carrier_id|, such as a generic one. |
| virtual Files FindFirmware(const std::string& device_id, |
| std::string* carrier_id) = 0; |
| }; |
| |
| std::unique_ptr<FirmwareDirectory> CreateFirmwareDirectory( |
| const base::FilePath& directory); |
| |
| } // namespace modemfwd |
| |
| #endif // MODEMFWD_FIRMWARE_DIRECTORY_H_ |