Symbian platform (C++)
SDK native APIs, runtime and tooling
Loading...
Searching...
No Matches
usb.h
Go to the documentation of this file.
1#ifndef SYMBIAN_DEVICE_USB_H_
2#define SYMBIAN_DEVICE_USB_H_
3
4#include <cstddef>
5#include <cstdint>
6#include <optional>
7#include <string>
8#include <vector>
9
10#include <absl/status/statusor.h>
11
12namespace symbian::device {
13
15 // USB endpoint address, including its direction bit.
16 int address = 0;
17 // Human-readable transfer direction.
18 std::string direction;
19 // USB transfer type.
20 std::string transfer;
21 // Maximum packet size reported by the active descriptor.
23};
24
26 // Interface number within the active configuration.
27 int number = 0;
28 // Active alternate setting described by this record.
30 // USB class, subclass, and protocol codes.
31 int class_code = 0;
34 // Endpoints belonging to this alternate setting.
35 std::vector<UsbEndpointDescriptor> endpoints;
36};
37
39 // CDC control interface number.
40 int master = 0;
41 // CDC data interface numbers associated with the control interface.
42 std::vector<int> slaves;
43};
44
46 // First interface number and number of associated interfaces.
49 // USB function class, subclass, and protocol codes.
50 int class_code = 0;
53};
54
56 // PTP standard and vendor extension versions.
58 uint32_t vendor_extension_id = 0;
62 // Supported PTP operation codes, bounded during parsing.
63 std::vector<uint32_t> supported_operation_codes;
64 // Device-reported identity, excluding the private serial number.
65 std::string manufacturer;
66 std::string model;
67 std::string device_version;
68};
69
71 // PTP object handle.
72 uint32_t handle = 0;
73 // Populated when the object-info request succeeds.
74 std::optional<int> format_code;
75 std::optional<uint32_t> size_bytes;
76 std::optional<std::string> name;
77 // Request or decode error, if any.
78 std::optional<std::string> error;
79 std::optional<int> response_code;
80};
81
83 // PTP storage identifier.
84 uint32_t id = 0;
85 // Storage metadata populated on a successful request.
86 std::optional<int> storage_type;
87 std::optional<int> filesystem_type;
88 std::optional<int> access_capability;
89 std::optional<uint64_t> total_bytes;
90 std::optional<uint64_t> free_bytes;
91 std::optional<uint32_t> free_images;
92 std::optional<std::string> description;
93 std::optional<std::string> volume_label;
94 // Optional bounded root listing and any partial failure.
95 std::optional<size_t> root_object_count;
96 std::vector<MtpObjectInfo> root_objects;
97 std::optional<std::string> root_listing_error;
98 std::optional<int> root_listing_response_code;
99 std::optional<std::string> error;
100 std::optional<int> response_code;
101};
102
103struct UsbProbe {
104 // Probe state and backend. Unknown device details remain absent.
105 std::string state = "device-unavailable";
106 std::string backend = "libusb-static";
107 std::optional<std::string> detail;
108 std::optional<int> response_code;
109 std::string scope;
110 // Descriptor map fields.
111 std::optional<std::string> identity_basis;
112 std::optional<int> configuration;
113 std::vector<UsbInterfaceDescriptor> interfaces;
114 std::vector<UsbCdcUnion> cdc_unions;
115 std::vector<UsbInterfaceAssociation> interface_associations;
116 // MTP fields.
117 std::optional<std::string> transport;
118 std::optional<int> interface_number;
119 std::optional<MtpDeviceInfo> device_info;
120 std::vector<MtpStorageInfo> storage;
121 std::optional<size_t> storage_count;
122 std::optional<bool> session_closed;
123 // OBEX connect/disconnect fields.
124 std::optional<std::string> target;
125 std::optional<bool> connection_id_present;
126 std::optional<bool> disconnected;
127 std::optional<std::string> disconnect_error;
128 std::optional<int> disconnect_response_code;
129 std::optional<bool> alternate_restored;
130 std::optional<bool> interface_released;
131 std::optional<int> response_bytes;
132};
133
135 // Public USB vendor and product identifiers.
136 int vendor_id = 0;
137 int product_id = 0;
138 // Host bus address and port path; no serial is exposed.
139 int bus = 0;
140 int address = 0;
141 std::vector<int> ports;
142 // USB device class and configuration count.
145};
146
150 uint32_t storage_id = 0;
152 uint32_t object_handle = 0;
154 std::string name;
156 bool copied = false;
159};
160
167absl::StatusOr<UsbProbe> InspectUsb(uint16_t vendor, uint16_t product,
168 const std::string& anchor,
169 const std::string& operation,
170 uint32_t limit);
171
178absl::StatusOr<MtpStageResult> StageMtpSis(uint16_t vendor, uint16_t product,
179 const std::string& anchor,
180 const std::string& package_path,
181 const std::string& filename,
182 const std::string& expected_sha256);
183
184} // namespace symbian::device
185#endif // SYMBIAN_DEVICE_USB_H_
Definition transport.h:15
absl::StatusOr< UsbProbe > InspectUsb(uint16_t vendor, uint16_t product, const std::string &anchor, const std::string &operation, uint32_t limit)
Inspect a serial-matched USB device without changing its stored files.
Definition usb.cc:1249
absl::StatusOr< MtpStageResult > StageMtpSis(uint16_t vendor, uint16_t product, const std::string &anchor, const std::string &package_path, const std::string &filename, const std::string &expected_sha256)
Stage one SIS on a serial-matched device, checking the readback digest.
Definition usb.cc:1316
int vendor_extension_version
Definition usb.h:59
std::string device_version
Definition usb.h:67
int functional_mode
Definition usb.h:61
int standard_version
Definition usb.h:57
std::vector< uint32_t > supported_operation_codes
Definition usb.h:63
std::string vendor_extension_description
Definition usb.h:60
uint32_t vendor_extension_id
Definition usb.h:58
std::string manufacturer
Definition usb.h:65
std::string model
Definition usb.h:66
std::optional< int > response_code
Definition usb.h:79
std::optional< std::string > name
Definition usb.h:76
std::optional< std::string > error
Definition usb.h:78
uint32_t handle
Definition usb.h:72
std::optional< uint32_t > size_bytes
Definition usb.h:75
std::optional< int > format_code
Definition usb.h:74
Result of a checked SIS transfer to an MTP Installs folder.
Definition usb.h:148
uint32_t storage_id
Selected writable store reported by the MTP device.
Definition usb.h:150
uint32_t object_handle
New or already matching object, usable for later read-only inspection.
Definition usb.h:152
uint32_t unreadable_children
Existing child handles whose metadata the device refused to return.
Definition usb.h:158
bool copied
False when an existing object passed the same readback digest check.
Definition usb.h:156
std::string name
Content-addressed SIS name under the store's root Installs folder.
Definition usb.h:154
std::vector< MtpObjectInfo > root_objects
Definition usb.h:96
std::optional< std::string > description
Definition usb.h:92
std::optional< int > filesystem_type
Definition usb.h:87
std::optional< int > access_capability
Definition usb.h:88
std::optional< int > response_code
Definition usb.h:100
std::optional< uint32_t > free_images
Definition usb.h:91
std::optional< uint64_t > total_bytes
Definition usb.h:89
std::optional< std::string > error
Definition usb.h:99
std::optional< std::string > volume_label
Definition usb.h:93
std::optional< std::string > root_listing_error
Definition usb.h:97
std::optional< uint64_t > free_bytes
Definition usb.h:90
std::optional< int > root_listing_response_code
Definition usb.h:98
std::optional< size_t > root_object_count
Definition usb.h:95
std::optional< int > storage_type
Definition usb.h:86
Definition usb.h:38
std::vector< int > slaves
Definition usb.h:42
int master
Definition usb.h:40
int product_id
Definition usb.h:137
std::vector< int > ports
Definition usb.h:141
int address
Definition usb.h:140
int configuration_count
Definition usb.h:144
int vendor_id
Definition usb.h:136
int device_class
Definition usb.h:143
std::string transfer
Definition usb.h:20
int max_packet_bytes
Definition usb.h:22
std::string direction
Definition usb.h:18
int interface_count
Definition usb.h:48
int first_interface
Definition usb.h:47
int protocol_code
Definition usb.h:33
std::vector< UsbEndpointDescriptor > endpoints
Definition usb.h:35
int subclass_code
Definition usb.h:32
int alternate_setting
Definition usb.h:29
Definition usb.h:103
std::optional< std::string > target
Definition usb.h:124
std::optional< bool > alternate_restored
Definition usb.h:129
std::optional< int > response_code
Definition usb.h:108
std::vector< UsbCdcUnion > cdc_unions
Definition usb.h:114
std::vector< UsbInterfaceDescriptor > interfaces
Definition usb.h:113
std::string scope
Definition usb.h:109
std::optional< int > interface_number
Definition usb.h:118
std::string backend
Definition usb.h:106
std::optional< std::string > transport
Definition usb.h:117
std::optional< MtpDeviceInfo > device_info
Definition usb.h:119
std::vector< UsbInterfaceAssociation > interface_associations
Definition usb.h:115
std::optional< std::string > disconnect_error
Definition usb.h:127
std::optional< bool > disconnected
Definition usb.h:126
std::optional< bool > connection_id_present
Definition usb.h:125
std::string state
Definition usb.h:105
std::optional< int > configuration
Definition usb.h:112
std::optional< bool > session_closed
Definition usb.h:122
std::optional< size_t > storage_count
Definition usb.h:121
std::optional< bool > interface_released
Definition usb.h:130
std::optional< int > response_bytes
Definition usb.h:131
std::optional< std::string > identity_basis
Definition usb.h:111
std::optional< std::string > detail
Definition usb.h:107
std::vector< MtpStorageInfo > storage
Definition usb.h:120
std::optional< int > disconnect_response_code
Definition usb.h:128