115 lines
3.2 KiB
C++
115 lines
3.2 KiB
C++
/*
|
|
* Copyright (C) 2006 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef ANDROID_USB_ADB_API_PRIVATE_DEFINES_H__
|
|
#define ANDROID_USB_ADB_API_PRIVATE_DEFINES_H__
|
|
/** \file
|
|
This file consists of private definitions used inside the API
|
|
*/
|
|
|
|
#include "adb_api.h"
|
|
|
|
/** \brief Encapsulates an entry in the array of enumerated interfaces.
|
|
*/
|
|
class AdbInstanceEnumEntry {
|
|
public:
|
|
/** \brief Constructs an empty object.
|
|
*/
|
|
AdbInstanceEnumEntry()
|
|
: flags_(0) {
|
|
ZeroMemory(&class_id_, sizeof(class_id_));
|
|
}
|
|
|
|
/** \brief Copy constructor
|
|
*/
|
|
AdbInstanceEnumEntry(const AdbInstanceEnumEntry& proto) {
|
|
Set(proto.device_name().c_str(), proto.class_id(), proto.flags());
|
|
}
|
|
|
|
/** \brief Constructs the object with parameters.
|
|
*/
|
|
AdbInstanceEnumEntry(const wchar_t* dev_name, GUID cls_id, DWORD flgs) {
|
|
Set(dev_name, cls_id, flgs);
|
|
}
|
|
|
|
/** \brief Destructs the object.
|
|
*/
|
|
~AdbInstanceEnumEntry() {
|
|
}
|
|
|
|
/// Operator =
|
|
AdbInstanceEnumEntry& operator=(const AdbInstanceEnumEntry& proto) {
|
|
Set(proto.device_name().c_str(), proto.class_id(), proto.flags());
|
|
return *this;
|
|
}
|
|
|
|
/// Initializes instance with parameters
|
|
void Set(const wchar_t* dev_name, GUID cls_id, DWORD flgs) {
|
|
device_name_ = dev_name;
|
|
class_id_ = cls_id;
|
|
flags_ = flgs;
|
|
}
|
|
|
|
/// Calculates memory size needed to save this entry into AdbInterfaceInfo
|
|
/// structure
|
|
ULONG GetFlatSize() const {
|
|
return static_cast<ULONG>(FIELD_OFFSET(AdbInterfaceInfo, device_name) +
|
|
(device_name_.length() + 1) * sizeof(wchar_t));
|
|
}
|
|
|
|
/** \brief Saves this entry into AdbInterfaceInfo structure.
|
|
|
|
@param[in] info Buffer to save this entry to. Must be big enough to fit it.
|
|
Use GetFlatSize() method to get buffer size needed for that.
|
|
|
|
*/
|
|
void Save(AdbInterfaceInfo* info) const {
|
|
info->class_id = class_id();
|
|
info->flags = flags();
|
|
wcscpy(info->device_name, device_name().c_str());
|
|
}
|
|
|
|
/// Gets interface's device name
|
|
const std::wstring& device_name() const {
|
|
return device_name_;
|
|
}
|
|
|
|
/// Gets inteface's class id
|
|
GUID class_id() const {
|
|
return class_id_;
|
|
}
|
|
|
|
/// Gets interface flags
|
|
DWORD flags() const {
|
|
return flags_;
|
|
}
|
|
|
|
private:
|
|
/// Inteface's class id (see SP_DEVICE_INTERFACE_DATA)
|
|
GUID class_id_;
|
|
|
|
/// Interface's device name
|
|
std::wstring device_name_;
|
|
|
|
/// Interface flags (see SP_DEVICE_INTERFACE_DATA)
|
|
DWORD flags_;
|
|
};
|
|
|
|
/// Defines array of enumerated interface entries
|
|
typedef std::vector< AdbInstanceEnumEntry > AdbEnumInterfaceArray;
|
|
|
|
#endif // ANDROID_USB_ADB_API_PRIVATE_DEFINES_H__
|