1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // Copyright 2019 The Chromium 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 CHROMEOS_PRINTING_USB_PRINTER_ID_H_
- #define CHROMEOS_PRINTING_USB_PRINTER_ID_H_
- #include <map>
- #include <memory>
- #include <string>
- #include <utility>
- #include <vector>
- #include "base/component_export.h"
- #include "base/containers/span.h"
- namespace chromeos {
- // This class parses and holds the IEEE 1284 Device ID string as queried
- // from a USB-connected printer.
- class COMPONENT_EXPORT(CHROMEOS_PRINTING) UsbPrinterId {
- public:
- UsbPrinterId();
- UsbPrinterId(const UsbPrinterId& other);
- ~UsbPrinterId();
- // Expects |printer_id_data| to contain the data portion response to a USB
- // Printer Class-Specific GET_DEVICE_ID Request.
- explicit UsbPrinterId(base::span<const uint8_t> printer_id_data);
- // Accessors.
- const std::string& make() const { return make_; }
- const std::string& model() const { return model_; }
- const std::vector<std::string>& command_set() const { return command_set_; }
- // Setters (only used in testing).
- void set_make(std::string make) { make_ = make; }
- void set_model(std::string model) { model_ = model; }
- void set_command_set(std::vector<std::string> command_set) {
- command_set_ = std::move(command_set);
- }
- private:
- std::string make_;
- std::string model_;
- // List of supported document formats (MIME types).
- std::vector<std::string> command_set_;
- // Holds the fully parsed IEEE 1284 Device ID.
- std::map<std::string, std::vector<std::string>> id_mappings_;
- };
- // Expects data to hold a IEEE 1284 Device ID. Parses |data| and returns the
- // resulting key-value(s) pairs.
- COMPONENT_EXPORT(CHROMEOS_PRINTING)
- std::map<std::string, std::vector<std::string>> BuildDeviceIdMapping(
- base::span<const uint8_t> data);
- } // namespace chromeos
- #endif // CHROMEOS_PRINTING_USB_PRINTER_ID_H_
|