1 /**************************************************************************/ 2 /* */ 3 /* Copyright (c) Microsoft Corporation. All rights reserved. */ 4 /* */ 5 /* This software is licensed under the Microsoft Software License */ 6 /* Terms for Microsoft Azure RTOS. Full text of the license can be */ 7 /* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */ 8 /* and in the root directory of this software. */ 9 /* */ 10 /**************************************************************************/ 11 12 13 /**************************************************************************/ 14 /**************************************************************************/ 15 /** */ 16 /** USBX Component */ 17 /** */ 18 /** PIMA Class */ 19 /** */ 20 /**************************************************************************/ 21 /**************************************************************************/ 22 23 24 /**************************************************************************/ 25 /* */ 26 /* COMPONENT DEFINITION RELEASE */ 27 /* */ 28 /* ux_device_class_pima.h PORTABLE C */ 29 /* 6.3.0 */ 30 /* AUTHOR */ 31 /* */ 32 /* Chaoqiong Xiao, Microsoft Corporation */ 33 /* */ 34 /* DESCRIPTION */ 35 /* */ 36 /* This file contains all the header and extern functions used by the */ 37 /* USBX PIMA class. */ 38 /* */ 39 /* RELEASE HISTORY */ 40 /* */ 41 /* DATE NAME DESCRIPTION */ 42 /* */ 43 /* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */ 44 /* 09-30-2020 Chaoqiong Xiao Modified comment(s), */ 45 /* used UX prefix to refer to */ 46 /* TX symbols instead of using */ 47 /* them directly, */ 48 /* resulting in version 6.1 */ 49 /* 08-02-2021 Wen Wang Modified comment(s), */ 50 /* added extern "C" keyword */ 51 /* for compatibility with C++, */ 52 /* resulting in version 6.1.8 */ 53 /* 01-31-2022 Chaoqiong Xiao Modified comment(s), */ 54 /* updated definitions, */ 55 /* improved internal function, */ 56 /* added cancel callback, */ 57 /* resulting in version 6.1.10 */ 58 /* 04-25-2022 Chaoqiong Xiao Modified comment(s), */ 59 /* fixed standalone compile, */ 60 /* resulting in version 6.1.11 */ 61 /* 10-31-2023 Chaoqiong Xiao Modified comment(s), */ 62 /* optimized PIMA data sets, */ 63 /* added a new mode to manage */ 64 /* endpoint buffer in classes, */ 65 /* added error checks support, */ 66 /* resulting in version 6.3.0 */ 67 /* */ 68 /**************************************************************************/ 69 70 #ifndef UX_DEVICE_CLASS_PIMA_H 71 #define UX_DEVICE_CLASS_PIMA_H 72 73 /* Determine if a C++ compiler is being used. If so, ensure that standard 74 C is used to process the API information. */ 75 76 #ifdef __cplusplus 77 78 /* Yes, C++ compiler is present. Use standard C. */ 79 extern "C" { 80 81 #endif 82 83 84 /* Internal option: enable the basic USBX error checking. This define is typically used 85 while debugging application. */ 86 #if defined(UX_ENABLE_ERROR_CHECKING) && !defined(UX_DEVICE_CLASS_PIMA_ENABLE_ERROR_CHECKING) 87 #define UX_DEVICE_CLASS_PIMA_ENABLE_ERROR_CHECKING 88 #endif 89 90 #define UX_DEVICE_CLASS_PIMA_BULK_BUFFER_LENGTH UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH 91 #define UX_DEVICE_CLASS_PIMA_INTERRUPT_BUFFER_LENGTH 32 /* >=UX_DEVICE_CLASS_PIMA_AEI_MAX_LENGTH */ 92 93 94 /* Define PIMA Class constants. */ 95 96 #ifndef UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH 97 #define UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH UX_SLAVE_REQUEST_DATA_MAX_LENGTH 98 #endif 99 #define UX_DEVICE_CLASS_PIMA_MAX_PAYLOAD (UX_DEVICE_CLASS_PIMA_TRANSFER_BUFFER_LENGTH - UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE) 100 #define UX_DEVICE_CLASS_PIMA_OBJECT_INFO_BUFFER_SIZE (UX_DEVICE_CLASS_PIMA_MAX_PAYLOAD) 101 #define UX_DEVICE_CLASS_PIMA_DEVICE_INFO_BUFFER_SIZE (UX_DEVICE_CLASS_PIMA_MAX_PAYLOAD) 102 #define UX_DEVICE_CLASS_PIMA_STORAGE_INFO_BUFFER_SIZE (UX_DEVICE_CLASS_PIMA_MAX_PAYLOAD) 103 #define UX_DEVICE_CLASS_PIMA_ARRAY_BUFFER_SIZE (UX_DEVICE_CLASS_PIMA_MAX_PAYLOAD) 104 #define UX_DEVICE_CLASS_PIMA_DEVICE_PROP_VALUE_BUFFER_SIZE (UX_DEVICE_CLASS_PIMA_MAX_PAYLOAD) 105 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_VALUE_BUFFER_SIZE (UX_DEVICE_CLASS_PIMA_MAX_PAYLOAD) 106 107 #define UX_DEVICE_CLASS_PIMA_CLASS_TRANSFER_TIMEOUT 300000 108 #define UX_DEVICE_CLASS_PIMA_CLASS 0x06 109 #define UX_DEVICE_CLASS_PIMA_SUBCLASS 0X01 110 #define UX_DEVICE_CLASS_PIMA_PROTOCOL 0X01 111 #define UX_DEVICE_CLASS_PIMA_MAGIC_NUMBER 0x50494D41 112 #define UX_DEVICE_CLASS_PIMA_UNICODE_MAX_LENGTH 256 113 #define UX_DEVICE_CLASS_PIMA_DATE_TIME_STRING_MAX_LENGTH 64 114 #define UX_DEVICE_CLASS_PIMA_MAX_EVENTS_QUEUE 16 115 #define UX_DEVICE_CLASS_PIMA_MAX_STORAGE_IDS 1 116 #define UX_DEVICE_CLASS_PIMA_ARRAY_MAX_LENGTH 256 117 #define UX_DEVICE_CLASS_PIMA_DEVICE_PROPERTIES_ARRAY_MAX_ITEMS 32 118 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROPERTIES_ARRAY_MAX_ITEMS 128 119 #define UX_DEVICE_CLASS_PIMA_PROP_VALUE_SIZE 256 120 #define UX_DEVICE_CLASS_PIMA_MICROSOFT_VENDOR_COMMAND_CODE 0x54 121 122 /* Define PIMA versions. */ 123 #define UX_DEVICE_CLASS_PIMA_STANDARD_VERSION 100 124 #define UX_DEVICE_CLASS_PIMA_VENDOR_EXTENSION_ID 6 125 #define UX_DEVICE_CLASS_PIMA_EXTENSION_VERSION 100 126 #define UX_DEVICE_CLASS_PIMA_STANDARD_MODE 0 127 128 129 /* Define PIMA phases. */ 130 131 #define UX_DEVICE_CLASS_PIMA_PHASE_IDLE 0 132 #define UX_DEVICE_CLASS_PIMA_PHASE_COMMAND 1 133 #define UX_DEVICE_CLASS_PIMA_PHASE_RESPONSE 2 134 #define UX_DEVICE_CLASS_PIMA_PHASE_DATA_IN 3 135 #define UX_DEVICE_CLASS_PIMA_PHASE_DATA_OUT 4 136 137 /* Define PIMA data phases. */ 138 139 #define UX_DEVICE_CLASS_PIMA_DATA_PHASE_NONE 0 140 #define UX_DEVICE_CLASS_PIMA_DATA_PHASE_IN 1 141 #define UX_DEVICE_CLASS_PIMA_DATA_PHASE_OUT 2 142 143 /* Define PIMA session states. */ 144 145 #define UX_DEVICE_CLASS_PIMA_SESSION_STATE_CLOSED 0 146 #define UX_DEVICE_CLASS_PIMA_SESSION_STATE_OPENED 1 147 148 /* Define PIMA object and thumb states. */ 149 150 #define UX_DEVICE_CLASS_PIMA_OBJECT_STATE_CLOSED 0 151 #define UX_DEVICE_CLASS_PIMA_OBJECT_STATE_OPENED 1 152 153 /* Define PIMA object and thumb transfer status. */ 154 155 #define UX_DEVICE_CLASS_PIMA_OBJECT_TRANSFER_STATUS_INACTIVE 0 156 #define UX_DEVICE_CLASS_PIMA_OBJECT_TRANSFER_STATUS_ACTIVE 1 157 #define UX_DEVICE_CLASS_PIMA_OBJECT_TRANSFER_STATUS_COMPLETED 2 158 #define UX_DEVICE_CLASS_PIMA_OBJECT_TRANSFER_STATUS_ABORTED 3 159 160 /* Define PIMA object and thumb transfer phase. */ 161 162 #define UX_DEVICE_CLASS_PIMA_OBJECT_TRANSFER_PHASE_ACTIVE 0 163 #define UX_DEVICE_CLASS_PIMA_OBJECT_TRANSFER_PHASE_COMPLETED 1 164 #define UX_DEVICE_CLASS_PIMA_OBJECT_TRANSFER_PHASE_COMPLETED_ERROR 2 165 166 167 /* Define PIMA Cancel Request equivalences. */ 168 169 #define UX_DEVICE_CLASS_PIMA_REQUEST_CANCEL_COMMAND 0x64 170 #define UX_DEVICE_CLASS_PIMA_REQUEST_CANCEL_DATA_LENGTH 0x06 171 #define UX_DEVICE_CLASS_PIMA_REQUEST_CANCEL_CODE 0x04001 172 #define UX_DEVICE_CLASS_PIMA_REQUEST_CANCEL_OFFSET_CODE 0x00 173 #define UX_DEVICE_CLASS_PIMA_REQUEST_CANCEL_OFFSET_TRANSACTION_ID 0x02 174 175 /* Define PIMA Reset Request equivalences. */ 176 177 #define UX_DEVICE_CLASS_PIMA_REQUEST_RESET_DEVICE 0x66 178 179 /* Define PIMA Status Request equivalences. */ 180 181 #define UX_DEVICE_CLASS_PIMA_REQUEST_STATUS_COMMAND 0x67 182 #define UX_DEVICE_CLASS_PIMA_REQUEST_STATUS_DATA_LENGTH 0x40 183 #define UX_DEVICE_CLASS_PIMA_REQUEST_STATUS_OFFSET_LENGTH 0x00 184 #define UX_DEVICE_CLASS_PIMA_REQUEST_STATUS_OFFSET_CODE 0x02 185 #define UX_DEVICE_CLASS_PIMA_REQUEST_STATUS_COMMAND_COUNTER 16 186 #define UX_DEVICE_CLASS_PIMA_REQUEST_STATUS_COMMAND_DELAY (1 * UX_PERIODIC_RATE) 187 188 /* Define PIMA command container type. */ 189 190 #define UX_DEVICE_CLASS_PIMA_CT_UNDEFINED 0x00 191 #define UX_DEVICE_CLASS_PIMA_CT_COMMAND_BLOCK 0x01 192 #define UX_DEVICE_CLASS_PIMA_CT_DATA_BLOCK 0x02 193 #define UX_DEVICE_CLASS_PIMA_CT_RESPONSE_BLOCK 0x03 194 #define UX_DEVICE_CLASS_PIMA_CT_EVENT_BLOCK 0x04 195 196 /* Define PIMA Extended Event Data Request payload Format. */ 197 198 #define UX_DEVICE_CLASS_PIMA_EEDR_EVENT_CODE 0x00 199 #define UX_DEVICE_CLASS_PIMA_EEDR_TRANSACTION_ID 0x02 200 #define UX_DEVICE_CLASS_PIMA_EEDR_NUMBER_PARAMETERS 0x06 201 #define UX_DEVICE_CLASS_PIMA_EEDR_SIZE_PARAMETER 0x08 202 203 /* Define PIMA Device Status Data Format. */ 204 205 #define UX_DEVICE_CLASS_PIMA_DSD_LENGTH 0x00 206 #define UX_DEVICE_CLASS_PIMA_DSD_CODE 0x02 207 #define UX_DEVICE_CLASS_PIMA_DSD_PARAMETER 0x04 208 209 /* Define PIMA Command Header Format. */ 210 211 #define UX_DEVICE_CLASS_PIMA_COMMAND_HEADER_LENGTH 0x00 212 #define UX_DEVICE_CLASS_PIMA_COMMAND_HEADER_TYPE 0x04 213 #define UX_DEVICE_CLASS_PIMA_COMMAND_HEADER_CODE 0x06 214 #define UX_DEVICE_CLASS_PIMA_COMMAND_HEADER_TRANSACTION_ID 0x08 215 #define UX_DEVICE_CLASS_PIMA_COMMAND_HEADER_PARAMETER_1 0x0C 216 #define UX_DEVICE_CLASS_PIMA_COMMAND_HEADER_PARAMETER_2 0x10 217 #define UX_DEVICE_CLASS_PIMA_COMMAND_HEADER_PARAMETER_3 0x14 218 #define UX_DEVICE_CLASS_PIMA_COMMAND_HEADER_PARAMETER_4 0x18 219 #define UX_DEVICE_CLASS_PIMA_COMMAND_HEADER_PARAMETER_5 0x1C 220 221 #define UX_DEVICE_CLASS_PIMA_COMMAND_HEADER_SIZE 0x0C 222 #define UX_DEVICE_CLASS_PIMA_CONTAINER_SIZE 0x40 223 #define UX_DEVICE_CLASS_PIMA_ALL_HEADER_SIZE 0x20 224 225 /* Define PIMA Data Header Format. */ 226 227 #define UX_DEVICE_CLASS_PIMA_DATA_HEADER_LENGTH 0x00 228 #define UX_DEVICE_CLASS_PIMA_DATA_HEADER_TYPE 0x04 229 #define UX_DEVICE_CLASS_PIMA_DATA_HEADER_CODE 0x06 230 #define UX_DEVICE_CLASS_PIMA_DATA_HEADER_TRANSACTION_ID 0x08 231 #define UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE 0x0C 232 233 234 /* Define PIMA Response Header Format. */ 235 236 #define UX_DEVICE_CLASS_PIMA_RESPONSE_HEADER_LENGTH 0x00 237 #define UX_DEVICE_CLASS_PIMA_RESPONSE_HEADER_TYPE 0x04 238 #define UX_DEVICE_CLASS_PIMA_RESPONSE_HEADER_CODE 0x06 239 #define UX_DEVICE_CLASS_PIMA_RESPONSE_HEADER_TRANSACTION_ID 0x08 240 #define UX_DEVICE_CLASS_PIMA_RESPONSE_HEADER_PARAMETERS 0x0C 241 #define UX_DEVICE_CLASS_PIMA_RESPONSE_HEADER_SIZE 0x0C 242 243 /* Define PIMA Asynchronous Event Interrupt Data Format. */ 244 245 #define UX_DEVICE_CLASS_PIMA_AEI_DATA_LENGTH 0x00 246 #define UX_DEVICE_CLASS_PIMA_AEI_TYPE 0x04 247 #define UX_DEVICE_CLASS_PIMA_AEI_EVENT_CODE 0x06 248 #define UX_DEVICE_CLASS_PIMA_AEI_TRANSACTION_ID 0x08 249 #define UX_DEVICE_CLASS_PIMA_AEI_PARAMETER_1 0x0C 250 #define UX_DEVICE_CLASS_PIMA_AEI_PARAMETER_2 0x10 251 #define UX_DEVICE_CLASS_PIMA_AEI_PARAMETER_3 0x14 252 #define UX_DEVICE_CLASS_PIMA_AEI_MAX_LENGTH 0x18 253 254 /* Define PIMA Operation Commands. */ 255 256 #define UX_DEVICE_CLASS_PIMA_OC_UNDEFINED 0x1000 257 #define UX_DEVICE_CLASS_PIMA_OC_GET_DEVICE_INFO 0x1001 258 #define UX_DEVICE_CLASS_PIMA_OC_OPEN_SESSION 0x1002 259 #define UX_DEVICE_CLASS_PIMA_OC_CLOSE_SESSION 0x1003 260 #define UX_DEVICE_CLASS_PIMA_OC_GET_STORAGE_IDS 0x1004 261 #define UX_DEVICE_CLASS_PIMA_OC_GET_STORAGE_INFO 0x1005 262 #define UX_DEVICE_CLASS_PIMA_OC_GET_NUM_OBJECTS 0x1006 263 #define UX_DEVICE_CLASS_PIMA_OC_GET_OBJECT_HANDLES 0x1007 264 #define UX_DEVICE_CLASS_PIMA_OC_GET_OBJECT_INFO 0x1008 265 #define UX_DEVICE_CLASS_PIMA_OC_GET_OBJECT 0x1009 266 #define UX_DEVICE_CLASS_PIMA_OC_GET_THUMB 0x100A 267 #define UX_DEVICE_CLASS_PIMA_OC_DELETE_OBJECT 0x100B 268 #define UX_DEVICE_CLASS_PIMA_OC_SEND_OBJECT_INFO 0x100C 269 #define UX_DEVICE_CLASS_PIMA_OC_SEND_OBJECT 0x100D 270 #define UX_DEVICE_CLASS_PIMA_OC_INITIATE_CAPTURE 0x100E 271 #define UX_DEVICE_CLASS_PIMA_OC_FORMAT_STORE 0x100F 272 #define UX_DEVICE_CLASS_PIMA_OC_RESET_DEVICE 0x1010 273 #define UX_DEVICE_CLASS_PIMA_OC_SELF_TEST 0x1011 274 #define UX_DEVICE_CLASS_PIMA_OC_SET_OBJECT_PROTECTION 0x1012 275 #define UX_DEVICE_CLASS_PIMA_OC_POWER_DOWN 0x1013 276 #define UX_DEVICE_CLASS_PIMA_OC_GET_DEVICE_PROP_DESC 0x1014 277 #define UX_DEVICE_CLASS_PIMA_OC_GET_DEVICE_PROP_VALUE 0x1015 278 #define UX_DEVICE_CLASS_PIMA_OC_SET_DEVICE_PROP_VALUE 0x1016 279 #define UX_DEVICE_CLASS_PIMA_OC_RESET_DEVICE_PROP_VALUE 0x1017 280 #define UX_DEVICE_CLASS_PIMA_OC_TERMINATE_OPEN_CAPTURE 0x1018 281 #define UX_DEVICE_CLASS_PIMA_OC_MOVE_OBJECT 0x1019 282 #define UX_DEVICE_CLASS_PIMA_OC_COPY_OBJECT 0x101A 283 #define UX_DEVICE_CLASS_PIMA_OC_GET_PARTIAL_OBJECT 0x101B 284 #define UX_DEVICE_CLASS_PIMA_OC_INITIATE_OPEN_CAPTURE 0x101C 285 #define UX_DEVICE_CLASS_PIMA_OC_GET_OBJECT_PROPS_SUPPORTED 0x9801 286 #define UX_DEVICE_CLASS_PIMA_OC_GET_OBJECT_PROP_DESC 0x9802 287 #define UX_DEVICE_CLASS_PIMA_OC_GET_OBJECT_PROP_VALUE 0x9803 288 #define UX_DEVICE_CLASS_PIMA_OC_SET_OBJECT_PROP_VALUE 0x9804 289 #define UX_DEVICE_CLASS_PIMA_OC_GET_OBJECT_REFERENCES 0x9810 290 #define UX_DEVICE_CLASS_PIMA_OC_SET_OBJECT_REFERENCES 0x9811 291 292 /* Define PIMA Response Codes. */ 293 294 #define UX_DEVICE_CLASS_PIMA_RC_UNDEFINED 0x2000 295 #define UX_DEVICE_CLASS_PIMA_RC_OK 0x2001 296 #define UX_DEVICE_CLASS_PIMA_RC_GENERAL_ERROR 0x2002 297 #define UX_DEVICE_CLASS_PIMA_RC_SESSION_NOT_OPEN 0x2003 298 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_TRANSACTION_ID 0x2004 299 #define UX_DEVICE_CLASS_PIMA_RC_OPERATION_NOT_SUPPORTED 0x2005 300 #define UX_DEVICE_CLASS_PIMA_RC_PARAMETER_NOT_SUPPORTED 0x2006 301 #define UX_DEVICE_CLASS_PIMA_RC_INCOMPLETE_TRANSFER 0x2007 302 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_STORAGE_ID 0x2008 303 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_OBJECT_HANDLE 0x2009 304 #define UX_DEVICE_CLASS_PIMA_RC_DEVICE_PROP_NOT_SUPPORTED 0x200A 305 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_OBJECT_FORMAT_CODE 0x200B 306 #define UX_DEVICE_CLASS_PIMA_RC_STORE_FULL 0x200C 307 #define UX_DEVICE_CLASS_PIMA_RC_OBJECT_WRITE_PROTECTED 0x200D 308 #define UX_DEVICE_CLASS_PIMA_RC_STORE_READ_ONLY 0x200E 309 #define UX_DEVICE_CLASS_PIMA_RC_ACCESS_DENIED 0x200F 310 #define UX_DEVICE_CLASS_PIMA_RC_NO_THUMBNAIL_PRESENT 0x2010 311 #define UX_DEVICE_CLASS_PIMA_RC_SELF_TEST_FAILED 0x2011 312 #define UX_DEVICE_CLASS_PIMA_RC_PARTIAL_DELETION 0x2012 313 #define UX_DEVICE_CLASS_PIMA_RC_STORE_NOT_AVAILABLE 0x2013 314 #define UX_DEVICE_CLASS_PIMA_RC_FORMAT_UNSUPPORTED 0x2014 315 #define UX_DEVICE_CLASS_PIMA_RC_NO_VALID_OBJECT_INFO 0x2015 316 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_CODE_FORMAT 0x2016 317 #define UX_DEVICE_CLASS_PIMA_RC_UNKNOWN_VENDOR_CODE 0x2017 318 #define UX_DEVICE_CLASS_PIMA_RC_CAPTURE_ALREADY_TERMINATED 0x2018 319 #define UX_DEVICE_CLASS_PIMA_RC_DEVICE_BUSY 0x2019 320 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_PARENT_OBJECT 0x201A 321 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_DEVICE_PROP_FORMAT 0x201B 322 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_DEVICE_PROP_VALUE 0x201C 323 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_PARAMETER 0x201D 324 #define UX_DEVICE_CLASS_PIMA_RC_SESSION_ALREADY_OPENED 0x201E 325 #define UX_DEVICE_CLASS_PIMA_RC_TRANSACTION_CANCELED 0x201F 326 #define UX_DEVICE_CLASS_PIMA_RC_DESTINATION_UNSUPPORTED 0x2020 327 #define UX_DEVICE_CLASS_PIMA_RC_OBJECT_ALREADY_OPENED 0x2021 328 #define UX_DEVICE_CLASS_PIMA_RC_OBJECT_ALREADY_CLOSED 0x2022 329 #define UX_DEVICE_CLASS_PIMA_RC_OBJECT_NOT_OPENED 0x2023 330 331 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_OBJECT_PROP_CODE 0xA801 332 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_OBJECT_PROP_FORMAT 0xA802 333 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_OBJECT_PROP_VALUE 0xA803 334 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_OBJECT_REFERENCE 0xA804 335 #define UX_DEVICE_CLASS_PIMA_RC_INVALID_DATASET 0xA806 336 #define UX_DEVICE_CLASS_PIMA_RC_SPECIFICATION_BY_GROUP_UNSUPPORTED 0xA807 337 #define UX_DEVICE_CLASS_PIMA_RC_SPECIFICATION_BY_DEPTH_UNSUPPORTED 0xA808 338 #define UX_DEVICE_CLASS_PIMA_RC_OBJECT_TOO_LARGE 0xA809 339 #define UX_DEVICE_CLASS_PIMA_RC_OBJECT_PROP_NOT_SUPPORTED 0xA80A 340 341 /* Define PIMA Event Codes. */ 342 343 #define UX_DEVICE_CLASS_PIMA_EC_UNDEFINED 0x4000 344 #define UX_DEVICE_CLASS_PIMA_EC_CANCEL_TRANSACTION 0x4001 345 #define UX_DEVICE_CLASS_PIMA_EC_OBJECT_ADDED 0x4002 346 #define UX_DEVICE_CLASS_PIMA_EC_OBJECT_REMOVED 0x4003 347 #define UX_DEVICE_CLASS_PIMA_EC_STORE_ADDED 0x4004 348 #define UX_DEVICE_CLASS_PIMA_EC_STORE_REMOVED 0x4005 349 #define UX_DEVICE_CLASS_PIMA_EC_DEVICE_PROP_CHANGED 0x4006 350 #define UX_DEVICE_CLASS_PIMA_EC_OBJECT_INFO_CHANGED 0x4007 351 #define UX_DEVICE_CLASS_PIMA_EC_DEVICE_INFO_CHANGED 0x4008 352 #define UX_DEVICE_CLASS_PIMA_EC_REQUEST_OBJECT_TRANSFER 0x4009 353 #define UX_DEVICE_CLASS_PIMA_EC_STORE_FULL 0x400A 354 #define UX_DEVICE_CLASS_PIMA_EC_DEVICE_RESET 0x400B 355 #define UX_DEVICE_CLASS_PIMA_EC_STORAGE_INFO_CHANGED 0x400C 356 #define UX_DEVICE_CLASS_PIMA_EC_CAPTURE_COMPLETE 0x400D 357 #define UX_DEVICE_CLASS_PIMA_EC_UNREPORTED_STATUS 0x400E 358 359 /* Define PIMA Object Format Codes. */ 360 361 #define UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED 0x3000 362 #define UX_DEVICE_CLASS_PIMA_OFC_ASSOCIATION 0x3001 363 #define UX_DEVICE_CLASS_PIMA_OFC_SCRIPT 0x3002 364 #define UX_DEVICE_CLASS_PIMA_OFC_EXECUTABLE 0x3003 365 #define UX_DEVICE_CLASS_PIMA_OFC_TEXT 0x3004 366 #define UX_DEVICE_CLASS_PIMA_OFC_HTML 0x3005 367 #define UX_DEVICE_CLASS_PIMA_OFC_DPOF 0x3006 368 #define UX_DEVICE_CLASS_PIMA_OFC_AIFF 0x3007 369 #define UX_DEVICE_CLASS_PIMA_OFC_WAV 0x3008 370 #define UX_DEVICE_CLASS_PIMA_OFC_MP3 0x3009 371 #define UX_DEVICE_CLASS_PIMA_OFC_AVI 0x300A 372 #define UX_DEVICE_CLASS_PIMA_OFC_MPEG 0x300B 373 #define UX_DEVICE_CLASS_PIMA_OFC_ASF 0x300C 374 #define UX_DEVICE_CLASS_PIMA_OFC_DEFINED 0x3800 375 #define UX_DEVICE_CLASS_PIMA_OFC_EXIF_JPEG 0x3801 376 #define UX_DEVICE_CLASS_PIMA_OFC_TIFF_EP 0x3802 377 #define UX_DEVICE_CLASS_PIMA_OFC_FLASHPIX 0x3803 378 #define UX_DEVICE_CLASS_PIMA_OFC_BMP 0x3804 379 #define UX_DEVICE_CLASS_PIMA_OFC_CIFF 0x3805 380 #define UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_2 0x3806 381 #define UX_DEVICE_CLASS_PIMA_OFC_GIF 0x3807 382 #define UX_DEVICE_CLASS_PIMA_OFC_JFIF 0x3808 383 #define UX_DEVICE_CLASS_PIMA_OFC_CD 0x3809 384 #define UX_DEVICE_CLASS_PIMA_OFC_PICT 0x380A 385 #define UX_DEVICE_CLASS_PIMA_OFC_PNG 0x380B 386 #define UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_3 0x380C 387 #define UX_DEVICE_CLASS_PIMA_OFC_TIFF 0x380D 388 #define UX_DEVICE_CLASS_PIMA_OFC_TIFF_IT 0x380E 389 #define UX_DEVICE_CLASS_PIMA_OFC_JP2 0x380F 390 #define UX_DEVICE_CLASS_PIMA_OFC_JPX 0x3810 391 #define UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_FIRMWARE 0xB802 392 #define UX_DEVICE_CLASS_PIMA_OFC_WINDOWS_IMAGE_FORMAT 0xB881 393 #define UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_AUDIO 0xB900 394 #define UX_DEVICE_CLASS_PIMA_OFC_WMA 0xB901 395 #define UX_DEVICE_CLASS_PIMA_OFC_OGG 0xB902 396 #define UX_DEVICE_CLASS_PIMA_OFC_AAC 0xB903 397 #define UX_DEVICE_CLASS_PIMA_OFC_AUDIBLE 0xB904 398 #define UX_DEVICE_CLASS_PIMA_OFC_FLAC 0xB906 399 #define UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_VIDEO 0xB980 400 #define UX_DEVICE_CLASS_PIMA_OFC_WMV 0xB981 401 #define UX_DEVICE_CLASS_PIMA_OFC_MP4_CONTAINER 0xB982 402 #define UX_DEVICE_CLASS_PIMA_OFC_MP2 0xB983 403 #define UX_DEVICE_CLASS_PIMA_OFC_3GP_CONTAINER 0xB984 404 #define UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_COLLECTION 0xBA00 405 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_MULTIMEDIA_ALBUM 0xBA01 406 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_IMAGE_ALBUM 0xBA02 407 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_AUDIO_ALBUM 0xBA03 408 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_VIDEO_ALBUM 0xBA04 409 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_AUDIO_AND_VIDEO_PLAYLIST 0xBA05 410 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_CONTACT_GROUP 0xBA06 411 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_MESSAGE_FOLDER 0xBA07 412 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_CHAPTERED_PRODUCTION 0xBA08 413 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_AUDIO_PLAYLIST 0xBA09 414 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_VIDEO_PLAYLIST 0xBA0A 415 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_MEDIACAST 0xBA0B 416 #define UX_DEVICE_CLASS_PIMA_OFC_WPL_PLAYLIST 0xBA10 417 #define UX_DEVICE_CLASS_PIMA_OFC_M3U_PLAYLIST 0xBA11 418 #define UX_DEVICE_CLASS_PIMA_OFC_MPL_PLAYLIST 0xBA12 419 #define UX_DEVICE_CLASS_PIMA_OFC_ASX_PLAYLIST 0xBA13 420 #define UX_DEVICE_CLASS_PIMA_OFC_PLS_PLAYLIST 0xBA14 421 #define UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_DOCUMENT 0xBA80 422 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_DOCUMENT 0xBA81 423 #define UX_DEVICE_CLASS_PIMA_OFC_XML_DOCUMENT 0xBA82 424 #define UX_DEVICE_CLASS_PIMA_OFC_MICROSOFT_WORD_DOCUMENT 0xBA83 425 #define UX_DEVICE_CLASS_PIMA_OFC_MHT_COMPILED_HTML_DOCUMENT 0xBA84 426 #define UX_DEVICE_CLASS_PIMA_OFC_MICROSOFT_EXCEL_SPREADSHEET 0xBA85 427 #define UX_DEVICE_CLASS_PIMA_OFC_MICROSOFT_POWERPOINT_PRESENTATION 0xBA86 428 #define UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_MESSAGE 0xBB00 429 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_MESSAGE 0xBB01 430 #define UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_CONTACT 0xBB80 431 #define UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_CONTACT 0xBB81 432 #define UX_DEVICE_CLASS_PIMA_OFC_VCARD2 0xBB82 433 434 /* Define PIMA Device Format Codes. */ 435 436 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_UNDEFINED 0x5000 437 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_BATTERY_LEVEL 0x5001 438 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_FUNCTIONAL_MODE 0x5002 439 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_IMAGE_SIZE 0x5003 440 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_COMPRESSION_SETTING 0x5004 441 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_WHITE_BALANCE 0x5005 442 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_RGB_GAIN 0x5006 443 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_F_NUMBER 0x5007 444 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_FOCAL_LENGTH 0x5008 445 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_FOCUS_DISTANCE 0x5009 446 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_FOCUS_MODE 0x500A 447 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_EXPOSURE_METERING_MODE 0x500B 448 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_FLASH_MODE 0x500C 449 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_EXPOSURE_TIME 0x500D 450 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_EXPOSURE_PROGRAM_MODE 0x500E 451 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_EXPOSURE_INDEX 0x500F 452 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_EXPOSURE_BIAS_COMPENSATION 0x5010 453 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_DATE_TIME 0x5011 454 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_CAPTURE_DELAY 0x5012 455 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_STILL_CAPTURE_MODE 0x5013 456 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_CONTRAST 0x5014 457 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_SHARPNESS 0x5015 458 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_DIGITAL_ZOOM 0x5016 459 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_EFFECT_MODE 0x5017 460 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_BURST_NUMBER 0x5018 461 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_BURST_INTERVAL 0x5019 462 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_TIME_LAPSE_NUMBER 0x501A 463 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_TIME_LAPSE_INTERVAL 0x501B 464 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_FOCUS_METERING_MODE 0x501C 465 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_UPLOAD_URL 0x501D 466 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_ARTIST 0x501E 467 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_COPYRIGHT_INFO 0x501F 468 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_SYNCHRONIZATION_PARTNER 0xD401 469 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_DEVICE_FRIENDLY_NAME 0xD402 470 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_VOLUME 0xD403 471 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_SUPPORTED_FORMATS_ORDERED 0xD404 472 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_DEVICE_ICON 0xD405 473 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_PLAYBACK_RATE 0xD410 474 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_PLAYBACK_OBJECT 0xD411 475 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_PLAYBACK_CONTAINER 0xD412 476 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_SESSION_INITIATOR_VERSION_INFO 0xD406 477 #define UX_DEVICE_CLASS_PIMA_DEV_PROP_PERCEIVED_DEVICE_TYPE 0xD407 478 479 /* Define PIMA Object Format Codes. */ 480 481 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_STORAGEID 0xDC01 482 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FORMAT 0xDC02 483 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PROTECTION_STATUS 0xDC03 484 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_SIZE 0xDC04 485 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ASSOCIATION_TYPE 0xDC05 486 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ASSOCIATION_DESC 0xDC06 487 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FILE_NAME 0xDC07 488 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_DATE_CREATED 0xDC08 489 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_DATE_MODIFIED 0xDC09 490 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_KEYWORDS 0xDC0A 491 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PARENT_OBJECT 0xDC0B 492 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ALLOWED_FOLDER_CONTENTS 0xDC0C 493 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_HIDDEN 0xDC0D 494 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SYSTEM_OBJECT 0xDC0E 495 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PERSISTENT_UNIQUE_OBJECT_IDENTIFIER 0xDC41 496 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SYNCID 0xDC42 497 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PROPERTY_BAG 0xDC43 498 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NAME 0xDC44 499 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_CREATED_BY 0xDC45 500 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ARTIST 0xDC46 501 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_DATE_AUTHORED 0xDC47 502 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_DESCRIPTION 0xDC48 503 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_URL_REFERENCE 0xDC49 504 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_LANGUAGE_LOCALE 0xDC4A 505 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_COPYRIGHT_INFORMATION 0xDC4B 506 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SOURCE 0xDC4C 507 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ORIGIN_LOCATION 0xDC4D 508 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_DATE_ADDED 0xDC4E 509 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NON_CONSUMABLE 0xDC4F 510 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_CORRUPT_UNPLAYABLE 0xDC50 511 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PRODUCER_SERIA_LNUMBER 0xDC51 512 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_REPRESENTATIVE_SAMPLE_FORMAT 0xDC81 513 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_REPRESENTATIVE_SAMPLE_SIZE 0xDC82 514 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_REPRESENTATIVE_SAMPLE_HEIGHT 0xDC83 515 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_REPRESENTATIVE_SAMPLE_WIDTH 0xDC84 516 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_REPRESENTATIVE_SAMPLE_DURATION 0xDC85 517 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_REPRESENTATIVE_SAMPLE_DATA 0xDC86 518 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_WIDTH 0xDC87 519 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_HEIGHT 0xDC88 520 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_DURATION 0xDC89 521 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_RATING 0xDC8A 522 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_TRACK 0xDC8B 523 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_GENRE 0xDC8C 524 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_CREDITS 0xDC8D 525 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_LYRICS 0xDC8E 526 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SUBSCRIPTION_CONTENT_ID 0xDC8F 527 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PRODUCED_BY 0xDC90 528 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_USE_COUNT 0xDC91 529 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SKIP_COUNT 0xDC92 530 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_LAST_ACCESSED 0xDC93 531 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PARENTAL_RATING 0xDC94 532 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_META_GENRE 0xDC95 533 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_COMPOSER 0xDC96 534 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_EFFECTIVE_RATING 0xDC97 535 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SUBTITLE 0xDC98 536 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ORIGINAL_RELEASE_DATE 0xDC99 537 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ALBUM_NAME 0xDC9A 538 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ALBUM_ARTIST 0xDC9B 539 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_MOOD 0xDC9C 540 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_DRM_STATUS 0xDC9D 541 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SUB_DESCRIPTION 0xDC9E 542 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_IS_CROPPED 0xDCD1 543 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_IS_COLOUR_CORRECTED 0xDCD2 544 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_IMAGE_BIT_DEPTH 0xDCD3 545 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_FNUMBER 0xDCD4 546 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_EXPOSURE_TIME 0xDCD5 547 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_EXPOSURE_INDEX 0xDCD6 548 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_TOTAL_BITRATE 0xDE91 549 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_BITRATE_TYPE 0xDE92 550 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SAMPLE_RATE 0xDE93 551 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NUMBER_OF_CHANNELS 0xDE94 552 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_AUDIO_BITDEPTH 0xDE95 553 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SCAN_TYPE 0xDE97 554 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_AUDIO_WAVE_CODEC 0xDE99 555 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_AUDIO_BITRATE 0xDE9A 556 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_VIDEO_FOURCC_CODEC 0xDE9B 557 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_VIDEO_BITRATE 0xDE9C 558 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_FRAMES_PER_THOUSAND_SECONDS 0xDE9D 559 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_KEYFRAME_DISTANCE 0xDE9E 560 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_BUFFER_SIZE 0xDE9F 561 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ENCODING_QUALITY 0xDEA0 562 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ENCODING_PROFILE 0xDEA1 563 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_DISPLAY_NAME 0xDCE0 564 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_BODY_TEXT 0xDCE1 565 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SUBJECT 0xDCE2 566 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PRIORITY 0xDCE3 567 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_GIVEN_NAME 0xDD00 568 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_MIDDLE_NAMES 0xDD01 569 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_FAMILY_NAME 0xDD02 570 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PREFIX 0xDD03 571 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SUFFIX 0xDD04 572 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PHONETIC_GIVEN_NAME 0xDD05 573 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PHONETIC_FAMILY_NAME 0xDD06 574 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_EMAIL_PRIMARY 0xDD07 575 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_EMAIL_PERSONAL_1 0xDD08 576 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_EMAIL_PERSONAL_2 0xDD09 577 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_EMAIL_BUSINESS_1 0xDD0A 578 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_EMAIL_BUSINESS_2 0xDD0B 579 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_EMAIL_OTHERS 0xDD0C 580 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PHONE_NUMBER_PRIMARY 0xDD0D 581 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PHONE_NUMBER_PERSONAL 0xDD0E 582 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PHONE_NUMBER_PERSONAL_2 0xDD0F 583 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PHONE_NUMBER_BUSINESS 0xDD10 584 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PHONE_NUMBER_BUSINESS_2 0xDD11 585 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PHONE_NUMBER_MOBILE 0xDD12 586 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PHONE_NUMBER_MOBILE_2 0xDD13 587 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_FAX_NUMBER_PRIMARY 0xDD14 588 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_FAX_NUMBER_PERSONAL 0xDD15 589 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_FAX_NUMBER_BUSINESS 0xDD16 590 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PAGER_NUMBER 0xDD17 591 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PHONE_NUMBER_OTHERS 0xDD18 592 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PRIMARY_WEB_ADDRESS 0xDD19 593 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PERSONAL_WEB_ADDRESS 0xDD1A 594 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_BUSINESS_WEB_ADDRESS 0xDD1B 595 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_INSTANT_MESSENGER_ADDRESS 0xDD1C 596 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_INSTANT_MESSENGER_ADDRESS_2 0xDD1D 597 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_INSTANT_MESSENGER_ADDRESS_3 0xDD1E 598 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_PERSONAL_FULL 0xDD1F 599 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_PERSONAL_LINE_1 0xDD20 600 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_PERSONAL_LINE_2 0xDD21 601 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_PERSONAL_CITY 0xDD22 602 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_PERSONAL_REGION 0xDD23 603 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_PERSONAL_POSTAL_CODE 0xDD24 604 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_PERSONAL_COUNTRY 0xDD25 605 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_BUSINESS_FULL 0xDD26 606 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_BUSINESS_LINE_1 0xDD27 607 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_BUSINESS_LINE_2 0xDD28 608 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_BUSINESS_CITY 0xDD29 609 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_BUSINESS_REGION 0xDD2A 610 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_BUSINESS_POSTAL_CODE 0xDD2B 611 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_BUSINESS_COUNTRY 0xDD2C 612 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_OTHER_FULL 0xDD2D 613 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_OTHER_LINE_1 0xDD2E 614 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_OTHER_LINE_2 0xDD2F 615 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_OTHER_CITY 0xDD30 616 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_OTHER_REGION 0xDD31 617 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_OTHER_POSTAL_CODE 0xDD32 618 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_POSTAL_ADDRESS_OTHER_COUNTRY 0xDD33 619 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ORGANIZATION_NAME 0xDD34 620 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PHONETIC_ORGANIZATION_NAME 0xDD35 621 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ROLE 0xDD36 622 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_BIRTHDATE 0xDD37 623 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_MESSAGE_TO 0xDD40 624 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_MESSAGE_CC 0xDD41 625 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_MESSAGE_BCC 0xDD42 626 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_MESSAGE_READ 0xDD43 627 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_MESSAGE_RECEIVED_TIME 0xDD44 628 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_MESSAGE_SENDER 0xDD45 629 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ACTIVITY_BEGIN_TIME 0xDD50 630 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ACTIVITY_END_TIME 0xDD51 631 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ACTIVITY_LOCATION 0xDD52 632 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ACTIVITY_REQUIRED_ATTENDEES 0xDD54 633 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ACTIVITY_OPTIONAL_ATTENDEES 0xDD55 634 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ACTIVITY_RESOURCES 0xDD56 635 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ACTIVITY_ACCEPTED 0xDD57 636 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OWNER 0xDD5D 637 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_EDITOR 0xDD5E 638 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_WEBMASTER 0xDD5F 639 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_URL_SOURCE 0xDD60 640 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_URL_DESTINATION 0xDD61 641 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_TIME_BOOKMARK 0xDD62 642 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_BOOKMARK 0xDD63 643 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_BYTE_BOOKMARK 0xDD64 644 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_LAST_BUILD_DATE 0xDD70 645 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_TIME_TO_LIVE 0xDD71 646 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROP_MEDIA_GUID 0xDD72 647 648 /* Define PIMA Object Protection Status Values. */ 649 650 #define UX_DEVICE_CLASS_PIMA_OPS_NO_PROTECTION 0x0000 651 #define UX_DEVICE_CLASS_PIMA_OPS_READ_ONLY 0x0001 652 653 /* Define PIMA Storage Types Codes. */ 654 655 #define UX_DEVICE_CLASS_PIMA_STC_UNDEFINED 0x0000 656 #define UX_DEVICE_CLASS_PIMA_STC_FIXED_ROM 0x0001 657 #define UX_DEVICE_CLASS_PIMA_STC_REMOVABLE_ROM 0x0002 658 #define UX_DEVICE_CLASS_PIMA_STC_FIXED_RAM 0x0003 659 #define UX_DEVICE_CLASS_PIMA_STC_REMOVABLE_RAM 0x0004 660 661 /* Define PIMA File System Types Codes. */ 662 663 #define UX_DEVICE_CLASS_PIMA_FSTC_UNDEFINED 0x0000 664 #define UX_DEVICE_CLASS_PIMA_FSTC_GENERIC_FLAT 0x0001 665 #define UX_DEVICE_CLASS_PIMA_FSTC_GENERIC_HIERARCHICAL 0x0002 666 #define UX_DEVICE_CLASS_PIMA_FSTC_DCF 0x0003 667 668 /* Define PIMA File System Access Types Codes. */ 669 670 #define UX_DEVICE_CLASS_PIMA_AC_READ_WRITE 0x0000 671 #define UX_DEVICE_CLASS_PIMA_AC_RO_WITHOUT_OBJECT_DELETION 0x0001 672 #define UX_DEVICE_CLASS_PIMA_AC_RO_WITH_OBJECT_DELETION 0x0002 673 674 /* Define PIMA types. */ 675 #define UX_DEVICE_CLASS_PIMA_TYPES_INT8 0x0001 676 #define UX_DEVICE_CLASS_PIMA_TYPES_UINT8 0x0002 677 #define UX_DEVICE_CLASS_PIMA_TYPES_INT16 0x0003 678 #define UX_DEVICE_CLASS_PIMA_TYPES_UINT16 0x0004 679 #define UX_DEVICE_CLASS_PIMA_TYPES_INT32 0x0005 680 #define UX_DEVICE_CLASS_PIMA_TYPES_UINT32 0x0006 681 #define UX_DEVICE_CLASS_PIMA_TYPES_INT64 0x0007 682 #define UX_DEVICE_CLASS_PIMA_TYPES_UINT64 0x0008 683 #define UX_DEVICE_CLASS_PIMA_TYPES_INT128 0x0009 684 #define UX_DEVICE_CLASS_PIMA_TYPES_UINT128 0x000A 685 #define UX_DEVICE_CLASS_PIMA_TYPES_AINT8 0x4001 686 #define UX_DEVICE_CLASS_PIMA_TYPES_AUINT8 0x4002 687 #define UX_DEVICE_CLASS_PIMA_TYPES_AINT16 0x4003 688 #define UX_DEVICE_CLASS_PIMA_TYPES_AUINT16 0x4004 689 #define UX_DEVICE_CLASS_PIMA_TYPES_AINT32 0x4005 690 #define UX_DEVICE_CLASS_PIMA_TYPES_AUINT32 0x4006 691 #define UX_DEVICE_CLASS_PIMA_TYPES_AINT64 0x4007 692 #define UX_DEVICE_CLASS_PIMA_TYPES_AUINT64 0x4008 693 #define UX_DEVICE_CLASS_PIMA_TYPES_AINT128 0x4009 694 #define UX_DEVICE_CLASS_PIMA_TYPES_AUINT128 0x400A 695 #define UX_DEVICE_CLASS_PIMA_TYPES_STR 0xFFFF 696 697 /* Define PIMA Device Info fields. */ 698 699 #define UX_DEVICE_CLASS_PIMA_DEVICE_INFO_STANDARD_VERSION (UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + 0x0000) 700 #define UX_DEVICE_CLASS_PIMA_DEVICE_INFO_VENDOR_EXTENSION_ID (UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + 0x0002) 701 #define UX_DEVICE_CLASS_PIMA_DEVICE_INFO_VENDOR_EXTENSION_VERSION (UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + 0x0006) 702 #define UX_DEVICE_CLASS_PIMA_DEVICE_INFO_VENDOR_EXTENSION_DESC (UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + 0x0008) 703 704 /* Define PIMA MTP OBJECT PROPERTY DATASET. */ 705 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROPERTY_DATASET_CODE 0x0000 706 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROPERTY_DATASET_DATATYPE 0x0002 707 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROPERTY_DATASET_GETSET 0x0004 708 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROPERTY_DATASET_VALUE 0x0005 709 710 /* Define PIMA Dataset equivalences. */ 711 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROPERTY_DATASET_VALUE_GET 0x00 712 #define UX_DEVICE_CLASS_PIMA_OBJECT_PROPERTY_DATASET_VALUE_GETSET 0x01 713 714 /* Define PIMA event info structure. */ 715 716 typedef struct UX_SLAVE_CLASS_PIMA_EVENT_STRUCT 717 { 718 ULONG ux_device_class_pima_event_code; 719 ULONG ux_device_class_pima_event_session_id; 720 ULONG ux_device_class_pima_event_transaction_id; 721 ULONG ux_device_class_pima_event_parameter_1; 722 ULONG ux_device_class_pima_event_parameter_2; 723 ULONG ux_device_class_pima_event_parameter_3; 724 725 } UX_SLAVE_CLASS_PIMA_EVENT; 726 727 /* Define PIMA object info structure. */ 728 729 typedef struct UX_SLAVE_CLASS_PIMA_OBJECT_STRUCT 730 { 731 732 ULONG ux_device_class_pima_object_storage_id; 733 USHORT ux_device_class_pima_object_format; 734 USHORT ux_device_class_pima_object_protection_status; 735 ULONG ux_device_class_pima_object_compressed_size; 736 USHORT ux_device_class_pima_object_thumb_format; 737 USHORT _align_thumb_compressed_size; 738 ULONG ux_device_class_pima_object_thumb_compressed_size; 739 ULONG ux_device_class_pima_object_thumb_pix_width; 740 ULONG ux_device_class_pima_object_thumb_pix_height; 741 ULONG ux_device_class_pima_object_image_pix_width; 742 ULONG ux_device_class_pima_object_image_pix_height; 743 ULONG ux_device_class_pima_object_image_bit_depth; 744 ULONG ux_device_class_pima_object_parent_object; 745 USHORT ux_device_class_pima_object_association_type; 746 USHORT _align_association_desc; 747 ULONG ux_device_class_pima_object_association_desc; 748 ULONG ux_device_class_pima_object_sequence_number; 749 UCHAR ux_device_class_pima_object_filename[UX_DEVICE_CLASS_PIMA_UNICODE_MAX_LENGTH]; 750 UCHAR ux_device_class_pima_object_capture_date[UX_DEVICE_CLASS_PIMA_DATE_TIME_STRING_MAX_LENGTH]; 751 UCHAR ux_device_class_pima_object_modification_date[UX_DEVICE_CLASS_PIMA_DATE_TIME_STRING_MAX_LENGTH]; 752 UCHAR ux_device_class_pima_object_keywords[UX_DEVICE_CLASS_PIMA_UNICODE_MAX_LENGTH]; 753 ULONG ux_device_class_pima_object_state; 754 ULONG ux_device_class_pima_object_offset; 755 ULONG ux_device_class_pima_object_transfer_status; 756 ULONG ux_device_class_pima_object_handle_id; 757 ULONG ux_device_class_pima_object_length; 758 UCHAR *ux_device_class_pima_object_buffer; 759 760 } UX_SLAVE_CLASS_PIMA_OBJECT; 761 762 #define UX_SLAVE_CLASS_PIMA_OBJECT_DATA_LENGTH ((15 * sizeof(ULONG)) + \ 763 UX_DEVICE_CLASS_PIMA_UNICODE_MAX_LENGTH + \ 764 UX_DEVICE_CLASS_PIMA_DATE_TIME_STRING_MAX_LENGTH + \ 765 UX_DEVICE_CLASS_PIMA_DATE_TIME_STRING_MAX_LENGTH + \ 766 UX_DEVICE_CLASS_PIMA_UNICODE_MAX_LENGTH) 767 768 /* Define PIMA session info structure. Not used in the device. Here for structure compatibility. */ 769 770 typedef struct UX_SLAVE_CLASS_PIMA_SESSION_STRUCT 771 { 772 773 ULONG ux_device_class_pima_session_id; 774 775 } UX_SLAVE_CLASS_PIMA_SESSION; 776 777 /* Define PIMA device info structure. */ 778 779 typedef struct UX_SLAVE_CLASS_PIMA_DEVICE_STRUCT 780 { 781 782 ULONG ux_device_class_pima_device_standard_version; 783 ULONG ux_device_class_pima_device_vendor_extension_id; 784 ULONG ux_device_class_pima_device_vendor_extension_version; 785 UCHAR ux_device_class_pima_device_vendor_extension_desc[UX_DEVICE_CLASS_PIMA_UNICODE_MAX_LENGTH]; 786 ULONG ux_device_class_pima_device_functional_mode; 787 UCHAR ux_device_class_pima_device_operations_supported[UX_DEVICE_CLASS_PIMA_ARRAY_MAX_LENGTH]; 788 UCHAR ux_device_class_pima_device_events_supported[UX_DEVICE_CLASS_PIMA_ARRAY_MAX_LENGTH]; 789 UCHAR ux_device_class_pima_device_properties_supported[UX_DEVICE_CLASS_PIMA_ARRAY_MAX_LENGTH]; 790 UCHAR ux_device_class_pima_device_capture_formats[UX_DEVICE_CLASS_PIMA_ARRAY_MAX_LENGTH]; 791 UCHAR ux_device_class_pima_device_image_formats[UX_DEVICE_CLASS_PIMA_ARRAY_MAX_LENGTH]; 792 UCHAR ux_device_class_pima_device_manufacturer[UX_DEVICE_CLASS_PIMA_UNICODE_MAX_LENGTH]; 793 UCHAR ux_device_class_pima_device_model[UX_DEVICE_CLASS_PIMA_DATE_TIME_STRING_MAX_LENGTH]; 794 UCHAR ux_device_class_pima_device_version[UX_DEVICE_CLASS_PIMA_DATE_TIME_STRING_MAX_LENGTH]; 795 UCHAR ux_device_class_pima_device_serial_number[UX_DEVICE_CLASS_PIMA_UNICODE_MAX_LENGTH]; 796 797 } UX_SLAVE_CLASS_PIMA_DEVICE; 798 799 /* Define PIMA storage info structure. */ 800 801 typedef struct UX_SLAVE_CLASS_PIMA_STORAGE_STRUCT 802 { 803 804 USHORT ux_device_class_pima_storage_type; 805 USHORT ux_device_class_pima_storage_file_system_type; 806 USHORT ux_device_class_pima_storage_access_capability; 807 USHORT _align_max_capacity_low; 808 ULONG ux_device_class_pima_storage_max_capacity_low; 809 ULONG ux_device_class_pima_storage_max_capacity_high; 810 ULONG ux_device_class_pima_storage_free_space_bytes_low; 811 ULONG ux_device_class_pima_storage_free_space_bytes_high; 812 ULONG ux_device_class_pima_storage_free_space_images; 813 UCHAR ux_device_class_pima_storage_description[UX_DEVICE_CLASS_PIMA_UNICODE_MAX_LENGTH]; 814 UCHAR ux__class_pima_storage_volume_label[UX_DEVICE_CLASS_PIMA_UNICODE_MAX_LENGTH]; 815 816 } UX_SLAVE_CLASS_PIMA_STORAGE; 817 818 /* Define PIMA structure. */ 819 820 typedef struct UX_SLAVE_CLASS_PIMA_STRUCT 821 { 822 823 UX_SLAVE_INTERFACE *ux_slave_class_pima_interface; 824 UX_SLAVE_ENDPOINT *ux_device_class_pima_bulk_in_endpoint; 825 UX_SLAVE_ENDPOINT *ux_device_class_pima_bulk_out_endpoint; 826 UX_SLAVE_ENDPOINT *ux_device_class_pima_interrupt_endpoint; 827 #if UX_DEVICE_ENDPOINT_BUFFER_OWNER == 1 828 UCHAR *ux_device_class_pima_endpoint_buffer; 829 #endif 830 UINT ux_device_class_pima_state; 831 USHORT ux_device_class_pima_device_status; 832 ULONG ux_device_class_pima_session_id; 833 ULONG ux_device_class_pima_current_object_handle; 834 ULONG ux_device_class_pima_transaction_id; 835 UCHAR *ux_device_class_pima_manufacturer; 836 UCHAR *ux_device_class_pima_model; 837 UCHAR *ux_device_class_pima_device_version; 838 UCHAR *ux_device_class_pima_serial_number; 839 ULONG ux_device_class_pima_storage_id; 840 ULONG ux_device_class_pima_storage_type; 841 ULONG ux_device_class_pima_storage_file_system_type; 842 ULONG ux_device_class_pima_storage_access_capability; 843 ULONG ux_device_class_pima_storage_max_capacity_low; 844 ULONG ux_device_class_pima_storage_max_capacity_high; 845 ULONG ux_device_class_pima_storage_free_space_low; 846 ULONG ux_device_class_pima_storage_free_space_high; 847 ULONG ux_device_class_pima_storage_free_space_image; 848 UCHAR *ux_device_class_pima_storage_description; 849 UCHAR *ux_device_class_pima_storage_volume_label; 850 #if !defined(UX_DEVICE_STANDALONE) 851 UX_SEMAPHORE ux_device_class_pima_semaphore; 852 UX_THREAD ux_device_class_pima_interrupt_thread; 853 UCHAR *ux_device_class_pima_interrupt_thread_stack; 854 UX_SEMAPHORE ux_device_class_pima_interrupt_thread_semaphore; 855 #endif 856 UX_SLAVE_CLASS_PIMA_EVENT 857 *ux_device_class_pima_event_array; 858 UX_SLAVE_CLASS_PIMA_EVENT 859 *ux_device_class_pima_event_array_head; 860 UX_SLAVE_CLASS_PIMA_EVENT 861 *ux_device_class_pima_event_array_tail; 862 UX_SLAVE_CLASS_PIMA_EVENT 863 *ux_device_class_pima_event_array_end; 864 USHORT *ux_device_class_pima_device_properties_list; 865 USHORT *ux_device_class_pima_supported_capture_formats_list; 866 USHORT *ux_device_class_pima_supported_image_formats_list; 867 USHORT *ux_device_class_pima_object_properties_list; 868 UINT (*ux_device_class_pima_cancel)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima); 869 UINT (*ux_device_class_pima_device_reset)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima); 870 871 UINT (*ux_device_class_pima_device_prop_desc_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG device_property, UCHAR **device_prop_dataset, ULONG *device_prop_dataset_length); 872 UINT (*ux_device_class_pima_device_prop_value_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG device_property, UCHAR **device_prop_value, ULONG *device_prop_value_length); 873 UINT (*ux_device_class_pima_device_prop_value_set)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG device_property, UCHAR *device_prop_value, ULONG device_prop_value_length); 874 875 UINT (*ux_device_class_pima_storage_format)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG storage_id); 876 UINT (*ux_device_class_pima_storage_info_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG storage_id); 877 UINT (*ux_device_class_pima_object_number_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_format_code, ULONG object_association, ULONG *object_number); 878 UINT (*ux_device_class_pima_object_handles_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handles_format_code, 879 ULONG object_handles_association, 880 ULONG *object_handles_array, 881 ULONG object_handles_max_number); 882 UINT (*ux_device_class_pima_object_info_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, UX_SLAVE_CLASS_PIMA_OBJECT **object); 883 UINT (*ux_device_class_pima_object_data_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, UCHAR *object_buffer, ULONG object_offset, 884 ULONG object_length_requested, ULONG *object_actual_length); 885 UINT (*ux_device_class_pima_object_info_send)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, UX_SLAVE_CLASS_PIMA_OBJECT *object, ULONG storage_id, ULONG parent_object_handle, ULONG *object_handle); 886 UINT (*ux_device_class_pima_object_data_send)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, ULONG phase, UCHAR *object_buffer, ULONG object_offset, 887 ULONG object_length); 888 UINT (*ux_device_class_pima_object_delete)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle); 889 UINT (*ux_device_class_pima_object_prop_desc_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_property, ULONG object_format_code, UCHAR **object_prop_value_dataset, ULONG *object_prop_value_dataset_length); 890 UINT (*ux_device_class_pima_object_prop_value_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, ULONG object_property, UCHAR **object_prop_value, ULONG *object_prop_value_length); 891 UINT (*ux_device_class_pima_object_prop_value_set)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, ULONG object_property, UCHAR *object_prop_value, ULONG object_prop_value_length); 892 UINT (*ux_device_class_pima_object_references_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, UCHAR **object_handle_array, ULONG *object_handle_array_length); 893 UINT (*ux_device_class_pima_object_references_set)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, UCHAR *object_handle_array, ULONG object_handle_array_length); 894 VOID *ux_device_class_pima_application; 895 VOID (*ux_device_class_pima_instance_activate)(VOID *); 896 VOID (*ux_device_class_pima_instance_deactivate)(VOID *); 897 898 899 } UX_SLAVE_CLASS_PIMA; 900 901 /* Define PIMA endpoint buffer settings (when PIMA owns buffer). */ 902 #define UX_DEVICE_CLASS_PIMA_ENDPOINT_BUFFER_SIZE_CALC_OVERFLOW \ 903 (UX_OVERFLOW_CHECK_MULC_ULONG(UX_DEVICE_CLASS_PIMA_BULK_BUFFER_LENGTH, 2) ||\ 904 UX_OVERFLOW_CHECK_ADD_ULONG(UX_DEVICE_CLASS_PIMA_BULK_BUFFER_LENGTH * 2, \ 905 UX_DEVICE_CLASS_PIMA_INTERRUPT_BUFFER_LENGTH)) 906 #define UX_DEVICE_CLASS_PIMA_ENDPOINT_BUFFER_SIZE (UX_DEVICE_CLASS_PIMA_BULK_BUFFER_LENGTH * 2 + UX_DEVICE_CLASS_PIMA_INTERRUPT_BUFFER_LENGTH) 907 #define UX_DEVICE_CLASS_PIMA_BULKOUT_BUFFER(pima) ((pima)->ux_device_class_pima_endpoint_buffer) 908 #define UX_DEVICE_CLASS_PIMA_BULKIN_BUFFER(pima) (UX_DEVICE_CLASS_PIMA_BULKOUT_BUFFER(pima) + UX_DEVICE_CLASS_PIMA_BULK_BUFFER_LENGTH) 909 #define UX_DEVICE_CLASS_PIMA_INTERRUPTIN_BUFFER(pima) (UX_DEVICE_CLASS_PIMA_BULKIN_BUFFER(pima) + UX_DEVICE_CLASS_PIMA_BULK_BUFFER_LENGTH) 910 911 912 /* Define PIMA initialization command structure. */ 913 914 typedef struct UX_SLAVE_CLASS_PIMA_PARAMETER_STRUCT 915 { 916 917 VOID (*ux_device_class_pima_instance_activate)(VOID *); 918 VOID (*ux_device_class_pima_instance_deactivate)(VOID *); 919 UCHAR *ux_device_class_pima_parameter_manufacturer; 920 UCHAR *ux_device_class_pima_parameter_model; 921 UCHAR *ux_device_class_pima_parameter_device_version; 922 UCHAR *ux_device_class_pima_parameter_serial_number; 923 ULONG ux_device_class_pima_parameter_storage_id; 924 ULONG ux_device_class_pima_parameter_storage_type; 925 ULONG ux_device_class_pima_parameter_storage_file_system_type; 926 ULONG ux_device_class_pima_parameter_storage_access_capability; 927 ULONG ux_device_class_pima_parameter_storage_max_capacity_low; 928 ULONG ux_device_class_pima_parameter_storage_max_capacity_high; 929 ULONG ux_device_class_pima_parameter_storage_free_space_low; 930 ULONG ux_device_class_pima_parameter_storage_free_space_high; 931 ULONG ux_device_class_pima_parameter_storage_free_space_image; 932 UCHAR *ux_device_class_pima_parameter_storage_description; 933 UCHAR *ux_device_class_pima_parameter_storage_volume_label; 934 USHORT *ux_device_class_pima_parameter_device_properties_list; 935 USHORT *ux_device_class_pima_parameter_supported_capture_formats_list; 936 USHORT *ux_device_class_pima_parameter_supported_image_formats_list; 937 USHORT *ux_device_class_pima_parameter_object_properties_list; 938 939 /* PIMA callbacks, return UX success, or PIMA RC code. */ 940 UINT (*ux_device_class_pima_parameter_cancel)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima); 941 UINT (*ux_device_class_pima_parameter_device_reset)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima); 942 UINT (*ux_device_class_pima_parameter_device_prop_desc_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG device_property, UCHAR **device_prop_dataset, ULONG *device_prop_dataset_length); 943 UINT (*ux_device_class_pima_parameter_device_prop_value_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG device_property, UCHAR **device_prop_value, ULONG *device_prop_value_length); 944 UINT (*ux_device_class_pima_parameter_device_prop_value_set)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG device_property, UCHAR *device_prop_value, ULONG device_prop_value_length); 945 UINT (*ux_device_class_pima_parameter_storage_format)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG storage_id); 946 UINT (*ux_device_class_pima_parameter_storage_info_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG storage_id); 947 UINT (*ux_device_class_pima_parameter_object_number_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_format_code, ULONG object_association, ULONG *object_number); 948 UINT (*ux_device_class_pima_parameter_object_handles_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handles_format_code, 949 ULONG object_handles_association, 950 ULONG *object_handles_array, 951 ULONG object_handles_max_number); 952 UINT (*ux_device_class_pima_parameter_object_info_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, UX_SLAVE_CLASS_PIMA_OBJECT **object); 953 UINT (*ux_device_class_pima_parameter_object_data_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, UCHAR *object_buffer, ULONG object_offset, 954 ULONG object_length_requested, ULONG *object_actual_length); 955 956 UINT (*ux_device_class_pima_parameter_object_info_send)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, UX_SLAVE_CLASS_PIMA_OBJECT *object, ULONG storage_id, ULONG parent_object_handle, ULONG *object_handle); 957 UINT (*ux_device_class_pima_parameter_object_data_send)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, ULONG phase ,UCHAR *object_buffer, ULONG object_offset, 958 ULONG object_length); 959 UINT (*ux_device_class_pima_parameter_object_delete)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle); 960 UINT (*ux_device_class_pima_parameter_object_prop_desc_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, ULONG object_property, UCHAR **object_prop_dataset, ULONG *object_prop_dataset_length); 961 UINT (*ux_device_class_pima_parameter_object_prop_value_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, ULONG object_property, UCHAR **object_prop_value, ULONG *object_prop_value_length); 962 UINT (*ux_device_class_pima_parameter_object_prop_value_set)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, ULONG object_property, UCHAR *object_prop_value, ULONG object_prop_value_length); 963 UINT (*ux_device_class_pima_parameter_object_references_get)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, UCHAR **object_handle_array, ULONG *object_handle_array_length); 964 UINT (*ux_device_class_pima_parameter_object_references_set)(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima, ULONG object_handle, UCHAR *object_handle_array, ULONG object_handle_array_length); 965 VOID *ux_device_class_pima_parameter_application; 966 967 968 } UX_SLAVE_CLASS_PIMA_PARAMETER; 969 970 971 /* Define PIMA Object decompaction structure. */ 972 973 #define UX_DEVICE_CLASS_PIMA_OBJECT_MAX_LENGTH 512 974 #define UX_DEVICE_CLASS_PIMA_OBJECT_VARIABLE_OFFSET 52 975 #define UX_DEVICE_CLASS_PIMA_OBJECT_ENTRIES 15 976 977 978 /* Define PIMA storage decompaction structure. */ 979 980 #define UX_DEVICE_CLASS_PIMA_STORAGE_TYPE (UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + 0 ) 981 #define UX_DEVICE_CLASS_PIMA_STORAGE_FILE_SYSTEM_TYPE (UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + 2 ) 982 #define UX_DEVICE_CLASS_PIMA_STORAGE_ACCESS_CAPABILITY (UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + 4 ) 983 #define UX_DEVICE_CLASS_PIMA_STORAGE_MAX_CAPACITY_LOW (UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + 6 ) 984 #define UX_DEVICE_CLASS_PIMA_STORAGE_MAX_CAPACITY_HIGH (UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + 10) 985 #define UX_DEVICE_CLASS_PIMA_STORAGE_FREE_SPACE_LOW (UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + 14) 986 #define UX_DEVICE_CLASS_PIMA_STORAGE_FREE_SPACE_HIGH (UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + 18) 987 #define UX_DEVICE_CLASS_PIMA_STORAGE_FREE_SPACE_IMAGE (UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + 22) 988 #define UX_DEVICE_CLASS_PIMA_STORAGE_FREE_STORAGE_DESCRIPTION (UX_DEVICE_CLASS_PIMA_DATA_HEADER_SIZE + 26) 989 990 /* Define Pima Class function prototypes. */ 991 UINT _ux_device_class_pima_initialize(UX_SLAVE_CLASS_COMMAND *command); 992 UINT _ux_device_class_pima_activate(UX_SLAVE_CLASS_COMMAND *command); 993 UINT _ux_device_class_pima_deactivate(UX_SLAVE_CLASS_COMMAND *command); 994 UINT _ux_device_class_pima_control_request(UX_SLAVE_CLASS_COMMAND *command); 995 UINT _ux_device_class_pima_device_info_send(UX_SLAVE_CLASS_PIMA *pima); 996 UINT _ux_device_class_pima_entry(UX_SLAVE_CLASS_COMMAND *command); 997 UINT _ux_device_class_pima_event_get(UX_SLAVE_CLASS_PIMA *pima, 998 UX_SLAVE_CLASS_PIMA_EVENT *pima_event); 999 UINT _ux_device_class_pima_event_set(UX_SLAVE_CLASS_PIMA *pima, 1000 UX_SLAVE_CLASS_PIMA_EVENT *pima_event); 1001 VOID _ux_device_class_pima_interrupt_thread(ULONG pima_class); 1002 UINT _ux_device_class_pima_response_send(UX_SLAVE_CLASS_PIMA *pima, ULONG response_code, 1003 ULONG number_parameters, 1004 ULONG parameter_1, ULONG parameter_2, ULONG paramater_3); 1005 VOID _ux_device_class_pima_thread(ULONG pima_class); 1006 UINT _ux_device_class_pima_object_handles_send(UX_SLAVE_CLASS_PIMA *pima, 1007 ULONG storage_id, 1008 ULONG object_format_code, 1009 ULONG object_association); 1010 UINT _ux_device_class_pima_objects_number_send(UX_SLAVE_CLASS_PIMA *pima, 1011 ULONG storage_id, 1012 ULONG object_format_code, 1013 ULONG object_association); 1014 1015 UINT _ux_device_class_pima_device_prop_desc_get(UX_SLAVE_CLASS_PIMA *pima, ULONG device_property_code); 1016 UINT _ux_device_class_pima_device_prop_value_get(UX_SLAVE_CLASS_PIMA *pima, ULONG device_property_code); 1017 UINT _ux_device_class_pima_device_prop_value_set(UX_SLAVE_CLASS_PIMA *pima, ULONG device_property_code); 1018 UINT _ux_device_class_pima_object_info_get(UX_SLAVE_CLASS_PIMA *pima, ULONG object_handle); 1019 UINT _ux_device_class_pima_object_info_send(UX_SLAVE_CLASS_PIMA *pima, ULONG storage_id, ULONG parent_object_handle); 1020 UINT _ux_device_class_pima_object_data_get(UX_SLAVE_CLASS_PIMA *pima, ULONG object_handle); 1021 UINT _ux_device_class_pima_object_data_send(UX_SLAVE_CLASS_PIMA *pima); 1022 UINT _ux_device_class_pima_object_delete(UX_SLAVE_CLASS_PIMA *pima, ULONG object_handle, ULONG object_format); 1023 UINT _ux_device_class_pima_object_add(UX_SLAVE_CLASS_PIMA *pima, ULONG object_handle); 1024 UINT _ux_device_class_pima_partial_object_data_get(UX_SLAVE_CLASS_PIMA *pima, 1025 ULONG object_handle, 1026 ULONG offset_requested, 1027 ULONG length_requested); 1028 1029 UINT _ux_device_class_pima_storage_id_send(UX_SLAVE_CLASS_PIMA *pima); 1030 UINT _ux_device_class_pima_storage_info_get(UX_SLAVE_CLASS_PIMA *pima, ULONG storage_id); 1031 UINT _ux_device_class_pima_object_props_supported_get(UX_SLAVE_CLASS_PIMA *pima, 1032 ULONG object_format_code); 1033 UINT _ux_device_class_pima_object_prop_value_get(UX_SLAVE_CLASS_PIMA *pima, 1034 ULONG object_handle, 1035 ULONG object_property_code); 1036 UINT _ux_device_class_pima_object_prop_value_set(UX_SLAVE_CLASS_PIMA *pima, 1037 ULONG object_handle, 1038 ULONG object_property_code); 1039 UINT _ux_device_class_pima_object_prop_desc_get(UX_SLAVE_CLASS_PIMA *pima, 1040 ULONG object_property, 1041 ULONG object_format_code); 1042 UINT _ux_device_class_pima_object_references_get(UX_SLAVE_CLASS_PIMA *pima, 1043 ULONG object_handle); 1044 UINT _ux_device_class_pima_object_references_set(UX_SLAVE_CLASS_PIMA *pima, 1045 ULONG object_handle); 1046 UINT _ux_device_class_pima_object_prop_value_get(UX_SLAVE_CLASS_PIMA *pima, 1047 ULONG object_handle, 1048 ULONG object_property_code); 1049 UINT _ux_device_class_pima_object_prop_value_set(UX_SLAVE_CLASS_PIMA *pima, 1050 ULONG object_handle, 1051 ULONG object_property_code); 1052 UINT _ux_device_class_pima_storage_format(UX_SLAVE_CLASS_PIMA *pima, ULONG storage_id); 1053 UINT _ux_device_class_pima_device_reset(UX_SLAVE_CLASS_PIMA *pima); 1054 1055 1056 UINT _uxe_device_class_pima_initialize(UX_SLAVE_CLASS_COMMAND *command); 1057 1058 1059 /* Define Device PIMA Class API prototypes. */ 1060 1061 #define ux_device_class_pima_initialize _ux_device_class_pima_initialize 1062 #define ux_device_class_pima_activate _ux_device_class_pima_activate 1063 #define ux_device_class_pima_dectivate _ux_device_class_pima_dectivate 1064 #define ux_device_class_pima_entry _ux_device_class_pima_entry 1065 #define ux_device_class_pima_control_request _ux_device_class_pima_control_request 1066 #define ux_device_class_pima_object_add _ux_device_class_pima_object_add 1067 1068 /* Define Pima Class data prototypes. */ 1069 1070 extern UCHAR _ux_device_class_pima_vendor_extension_descriptor[]; 1071 extern USHORT _ux_device_class_pima_supported_operations[]; 1072 extern USHORT _ux_device_class_pima_supported_events[]; 1073 extern USHORT _ux_device_class_pima_supported_capture_formats[]; 1074 extern USHORT _ux_device_class_pima_supported_image_formats[]; 1075 extern USHORT _ux_device_class_pima_device_prop_supported[]; 1076 1077 1078 1079 /* Determine if a C++ compiler is being used. If so, complete the standard 1080 C conditional started above. */ 1081 #ifdef __cplusplus 1082 } 1083 #endif 1084 1085 #endif 1086