1 /* This test is designed to test the ux_utility_descriptor_pack. */
2
3 #include <stdio.h>
4 #include "tx_api.h"
5 #include "ux_api.h"
6 #include "ux_system.h"
7 #include "ux_utility.h"
8
9 #include "ux_host_stack.h"
10 #include "ux_device_stack.h"
11
12 #include "ux_device_class_pima.h"
13
14 #include "ux_test.h"
15
16 /* Define USBX test constants. */
17
18 #define UX_TEST_STACK_SIZE 4096
19 #define UX_TEST_BUFFER_SIZE 2048
20 #define UX_TEST_MEMORY_SIZE (64*1024)
21
22
23 /* Define the counters used in the test application... */
24
25 static ULONG error_counter = 0;
26
27 /* Define USBX test global variables. */
28
29
30 /* Define prototypes for external Host Controller's (HCDs), classes and clients. */
31
32 static TX_THREAD ux_test_thread_simulation_0;
33 static void ux_test_thread_simulation_0_entry(ULONG);
34
35
36 /* PIMA MTP names ... */
37 UCHAR device_info_vendor_name[] = "Microsoft AzureRTOS";
38 UCHAR device_info_product_name[] = "AzureRTOS MTP Device";
39 UCHAR device_info_serial_no[] = "1.1.1.1";
40 UCHAR device_info_version[] = "V1.0";
41
42 /* PIMA MTP storage names. */
43 UCHAR pima_parameter_volume_description[] = "MTP Client Storage Volume";
44 UCHAR pima_parameter_volume_label[] = "MTP Client Storage Label";
45
46
47 /* Define PIMA supported device properties. The last entry MUST be a zero. The DeviceInfoSet command
48 will parse this array and compute the number of functions supported and return it to the
49 host. For each declared device property, a dataset must be created in the application. */
50 USHORT device_prop_supported[] = {
51
52 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_UNDEFINED, */
53 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_BATTERY_LEVEL, */
54 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_FUNCTIONALMODE, */
55 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_IMAGE_SIZE, */
56 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_COMPRESSION_SETTING, */
57 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_WHITE_BALANCE, */
58 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_RGB_GAIN, */
59 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_F_NUMBER, */
60 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_FOCAL_LENGTH, */
61 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_FOCUS_DISTANCE, */
62 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_FOCUS_MODE, */
63 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_EXPOSURE_METERING_MODE, */
64 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_FLASH_MODE, */
65 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_EXPOSURE_TIME, */
66 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_EXPOSURE_PROGRAM_MODE, */
67 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_EXPOSURE_INDEX, */
68 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_EXPOSURE_BIAS_COMPENSATION, */
69 UX_DEVICE_CLASS_PIMA_DEV_PROP_DATE_TIME,
70 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_CAPTURE_DELAY, */
71 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_STILL_CAPTURE_MODE, */
72 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_CONTRAST, */
73 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_SHARPNESS, */
74 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_DIGITAL_ZOOM, */
75 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_EFFECT_MODE, */
76 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_BURST_NUMBER, */
77 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_BURST_INTERVAL, */
78 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_TIME_LAPSE_NUMBER, */
79 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_TIME_LAPSE_INTERVAL, */
80 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_FOCUS_METERING_MODE, */
81 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_UPLOAD_URL, */
82 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_ARTIST, */
83 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_COPYRIGHT_INFO, */
84 #ifdef UX_PIMA_WITH_MTP_SUPPORT
85 UX_DEVICE_CLASS_PIMA_DEV_PROP_SYNCHRONIZATION_PARTNER,
86 UX_DEVICE_CLASS_PIMA_DEV_PROP_DEVICE_FRIENDLY_NAME,
87 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_VOLUME, */
88 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_SUPPORTED_FORMATS_ORDERED, */
89 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_DEVICE_ICON, */
90 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_PLAYBACK_RATE, */
91 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_PLAYBACK_OBJECT, */
92 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_PLAYBACK_CONTAINER, */
93 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_SESSION_INITIATOR_VERSION_INFO, */
94 /*UX_DEVICE_CLASS_PIMA_DEV_PROP_PERCEIVED_DEVICE_TYPE, */
95 #endif
96 0
97 };
98
99 /* Define PIMA supported capture formats. The last entry MUST be a zero. The DeviceInfoSet command
100 will parse this array and compute the number of functions supported and return it to the
101 host. */
102 USHORT device_supported_capture_formats[] = {
103 0
104 };
105
106 /* Define PIMA supported image formats. The last entry MUST be a zero. The DeviceInfoSet command
107 will parse this array and compute the number of formats supported and return it to the
108 host. */
109 USHORT device_supported_image_formats[] = {
110 UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED,
111 UX_DEVICE_CLASS_PIMA_OFC_ASSOCIATION,
112 /*UX_DEVICE_CLASS_PIMA_OFC_SCRIPT, */
113 /*UX_DEVICE_CLASS_PIMA_OFC_EXECUTABLE, */
114 /*UX_DEVICE_CLASS_PIMA_OFC_TEXT, */
115 /*UX_DEVICE_CLASS_PIMA_OFC_HTML, */
116 /*UX_DEVICE_CLASS_PIMA_OFC_DPOF, */
117 /*UX_DEVICE_CLASS_PIMA_OFC_AIFF, */
118 /*UX_DEVICE_CLASS_PIMA_OFC_WAV,*/
119 UX_DEVICE_CLASS_PIMA_OFC_MP3,
120 /*UX_DEVICE_CLASS_PIMA_OFC_AVI, */
121 /*UX_DEVICE_CLASS_PIMA_OFC_MPEG, */
122 UX_DEVICE_CLASS_PIMA_OFC_ASF,
123 /*UX_DEVICE_CLASS_PIMA_OFC_DEFINED, */
124 /*UX_DEVICE_CLASS_PIMA_OFC_EXIF_JPEG, */
125 /*UX_DEVICE_CLASS_PIMA_OFC_TIFF_EP, */
126 /*UX_DEVICE_CLASS_PIMA_OFC_FLASHPIX, */
127 /*UX_DEVICE_CLASS_PIMA_OFC_BMP, */
128 /*UX_DEVICE_CLASS_PIMA_OFC_CIFF, */
129 /*UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED, */
130 /*UX_DEVICE_CLASS_PIMA_OFC_GIF, */
131 /*UX_DEVICE_CLASS_PIMA_OFC_JFIF, */
132 /*UX_DEVICE_CLASS_PIMA_OFC_CD, */
133 /*UX_DEVICE_CLASS_PIMA_OFC_PICT, */
134 /*UX_DEVICE_CLASS_PIMA_OFC_PNG, */
135 /*UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED, */
136 /*UX_DEVICE_CLASS_PIMA_OFC_TIFF, */
137 /*UX_DEVICE_CLASS_PIMA_OFC_TIFF_IT, */
138 /*UX_DEVICE_CLASS_PIMA_OFC_JP2, */
139 /*UX_DEVICE_CLASS_PIMA_OFC_JPX, */
140 #ifdef UX_PIMA_WITH_MTP_SUPPORT
141 /*UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_FIRMWARE, */
142 /*UX_DEVICE_CLASS_PIMA_OFC_WINDOWS_IMAGE_FORMAT, */
143 /*UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_AUDIO, */
144 UX_DEVICE_CLASS_PIMA_OFC_WMA,
145 /*UX_DEVICE_CLASS_PIMA_OFC_OGG, */
146 /*UX_DEVICE_CLASS_PIMA_OFC_AAC, */
147 /*UX_DEVICE_CLASS_PIMA_OFC_AUDIBLE, */
148 /*UX_DEVICE_CLASS_PIMA_OFC_FLAC, */
149 /*UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_VIDEO, */
150 UX_DEVICE_CLASS_PIMA_OFC_WMV,
151 /*UX_DEVICE_CLASS_PIMA_OFC_MP4_CONTAINER, */
152 /*UX_DEVICE_CLASS_PIMA_OFC_MP2, */
153 /*UX_DEVICE_CLASS_PIMA_OFC_3GP_CONTAINER, */
154 /*UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_COLLECTION, */
155 /*UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_MULTIMEDIA_ALBUM, */
156 /*UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_IMAGE_ALBUM, */
157 UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_AUDIO_ALBUM,
158 /*UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_VIDEO_ALBUM, */
159 UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_AUDIO_AND_VIDEO_PLAYLIST,
160 /*UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_CONTACT_GROUP, */
161 /*UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_MESSAGE_FOLDER, */
162 /*UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_CHAPTERED_PRODUCTION, */
163 /*UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_AUDIO_PLAYLIST, */
164 /*UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_VIDEO_PLAYLIST, */
165 /*UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_MEDIACAST, */
166 /*UX_DEVICE_CLASS_PIMA_OFC_WPL_PLAYLIST, */
167 /*UX_DEVICE_CLASS_PIMA_OFC_M3U_PLAYLIST, */
168 /*UX_DEVICE_CLASS_PIMA_OFC_MPL_PLAYLIST, */
169 /*UX_DEVICE_CLASS_PIMA_OFC_ASX_PLAYLIST, */
170 /*UX_DEVICE_CLASS_PIMA_OFC_PLS_PLAYLIST, */
171 /*UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_DOCUMENT, */
172 /*UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_DOCUMENT, */
173 /*UX_DEVICE_CLASS_PIMA_OFC_XML_DOCUMENT, */
174 /*UX_DEVICE_CLASS_PIMA_OFC_MICROSOFT_WORD_DOCUMENT, */
175 /*UX_DEVICE_CLASS_PIMA_OFC_MHT_COMPILED_HTML_DOCUMENT, */
176 /*UX_DEVICE_CLASS_PIMA_OFC_MICROSOFT_EXCEL_SPREADSHEET, */
177 /*UX_DEVICE_CLASS_PIMA_OFC_MICROSOFT_POWERPOINT_PRESENTATION, */
178 /*UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_MESSAGE, */
179 /*UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_MESSAGE, */
180 /*UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED_CONTACT, */
181 /*UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_CONTACT, */
182 /*UX_DEVICE_CLASS_PIMA_OFC_VCARD2, */
183 #endif
184 0
185 };
186
187 /* Object property supported.
188 WORD 0 : Object Format Code
189 WORD 1 : Number of Prop codes for this Object format
190 WORD n : Prop Codes
191 WORD n+2 : Next Object Format code ....
192
193 This array is in whatever endinaness of the system and will be translated
194 by the PTP class in little endian.
195
196 */
197 USHORT object_prop_supported[] = {
198
199 /* Object format code : Undefined. */
200 UX_DEVICE_CLASS_PIMA_OFC_UNDEFINED,
201
202 /* NUmber of objects supported for this format. */
203 9,
204 /* Mandatory objects for all formats. */
205 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_STORAGEID,
206 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FORMAT,
207 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PROTECTION_STATUS,
208 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_SIZE,
209 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FILE_NAME,
210 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PARENT_OBJECT,
211 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PERSISTENT_UNIQUE_OBJECT_IDENTIFIER,
212 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NAME,
213 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NON_CONSUMABLE,
214
215 /* Object format code : Association. */
216 UX_DEVICE_CLASS_PIMA_OFC_ASSOCIATION,
217
218 /* NUmber of objects supported for this format. */
219 9,
220 /* Mandatory objects for all formats. */
221 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_STORAGEID,
222 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FORMAT,
223 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PROTECTION_STATUS,
224 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_SIZE,
225 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FILE_NAME,
226 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PARENT_OBJECT,
227 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PERSISTENT_UNIQUE_OBJECT_IDENTIFIER,
228 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NAME,
229 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NON_CONSUMABLE,
230
231 /* Object format code : Advanced System Format. */
232 UX_DEVICE_CLASS_PIMA_OFC_ASF,
233
234 /* NUmber of objects supported for this format. */
235 9,
236 /* Mandatory objects for all formats. */
237 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_STORAGEID,
238 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FORMAT,
239 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PROTECTION_STATUS,
240 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_SIZE,
241 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FILE_NAME,
242 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PARENT_OBJECT,
243 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PERSISTENT_UNIQUE_OBJECT_IDENTIFIER,
244 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NAME,
245 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NON_CONSUMABLE,
246
247 /* Object format code : Audio Clip. */
248 UX_DEVICE_CLASS_PIMA_OFC_MP3,
249
250 /* NUmber of objects supported for this format. */
251 20,
252 /* Mandatory objects for all formats. */
253 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_STORAGEID,
254 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FORMAT,
255 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PROTECTION_STATUS,
256 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_SIZE,
257 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FILE_NAME,
258 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PARENT_OBJECT,
259 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PERSISTENT_UNIQUE_OBJECT_IDENTIFIER,
260 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NAME,
261 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NON_CONSUMABLE,
262
263 /* Mandatory objects for all audio objects. */
264 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ARTIST,
265 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_TRACK,
266 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_DATE_AUTHORED,
267 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_GENRE,
268 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_USE_COUNT,
269 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ALBUM_NAME,
270 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ALBUM_ARTIST,
271 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SAMPLE_RATE,
272 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NUMBER_OF_CHANNELS,
273 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_AUDIO_WAVE_CODEC,
274 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_AUDIO_BITRATE,
275
276 /* Object format code : Windows Media Audio Clip. */
277 UX_DEVICE_CLASS_PIMA_OFC_WMA,
278
279 /* NUmber of objects supported for this format. */
280 20,
281 /* Mandatory objects for all formats. */
282 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_STORAGEID,
283 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FORMAT,
284 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PROTECTION_STATUS,
285 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_SIZE,
286 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FILE_NAME,
287 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PARENT_OBJECT,
288 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PERSISTENT_UNIQUE_OBJECT_IDENTIFIER,
289 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NAME,
290 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NON_CONSUMABLE,
291
292 /* Mandatory objects for all audio objects. */
293 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ARTIST,
294 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_TRACK,
295 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_DATE_AUTHORED,
296 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_GENRE,
297 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_USE_COUNT,
298 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ALBUM_NAME,
299 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ALBUM_ARTIST,
300 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SAMPLE_RATE,
301 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NUMBER_OF_CHANNELS,
302 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_AUDIO_WAVE_CODEC,
303 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_AUDIO_BITRATE,
304
305 /* Object format code : Windows Media Video. */
306 UX_DEVICE_CLASS_PIMA_OFC_WMV,
307
308 /* NUmber of objects supported for this format. */
309 24,
310 /* Mandatory objects for all formats. */
311 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_STORAGEID,
312 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FORMAT,
313 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PROTECTION_STATUS,
314 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_SIZE,
315 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_OBJECT_FILE_NAME,
316 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PARENT_OBJECT,
317 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_PERSISTENT_UNIQUE_OBJECT_IDENTIFIER,
318 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NAME,
319 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NON_CONSUMABLE,
320
321 /* Mandatory objects for all video objects. */
322 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_WIDTH,
323 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_HEIGHT,
324 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_DATE_AUTHORED,
325 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_GENRE,
326 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_USE_COUNT,
327 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SAMPLE_RATE,
328 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_NUMBER_OF_CHANNELS,
329 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_SCAN_TYPE,
330 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_AUDIO_WAVE_CODEC,
331 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_AUDIO_BITRATE,
332 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_VIDEO_FOURCC_CODEC,
333 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_VIDEO_BITRATE,
334 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_FRAMES_PER_THOUSAND_SECONDS,
335 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_KEYFRAME_DISTANCE,
336 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ENCODING_PROFILE,
337
338 /* Object format code : Abstract Audio Album. */
339 UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_AUDIO_ALBUM,
340 2,
341 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_GENRE,
342 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ALBUM_ARTIST,
343
344 /* Object format code : Abstract Audio and Video Playlist. */
345 UX_DEVICE_CLASS_PIMA_OFC_ABSTRACT_AUDIO_AND_VIDEO_PLAYLIST,
346 2,
347 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_GENRE,
348 UX_DEVICE_CLASS_PIMA_OBJECT_PROP_ALBUM_ARTIST,
349
350 0
351 };
352
353
354 /* Prototype for test control return. */
355
356 void test_control_return(UINT status);
357
358
359 UINT demo_device_reset();
360 UINT demo_device_prop_desc_get(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
361 ULONG device_property,
362 UCHAR **device_prop_dataset,
363 ULONG *device_prop_dataset_length);
364 UINT demo_device_prop_value_get(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
365 ULONG device_property,
366 UCHAR **device_prop_value,
367 ULONG *device_prop_value_length);
368 UINT demo_device_prop_value_set(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
369 ULONG device_property,
370 UCHAR *device_prop_value,
371 ULONG device_prop_value_length);
372 UINT demo_storage_format(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
373 ULONG storage_id);
374 UINT demo_storage_info_get(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
375 ULONG storage_id);
376 UINT demo_object_number_get(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
377 ULONG object_format_code,
378 ULONG object_association,
379 ULONG *object_number);
380 UINT demo_object_handles_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
381 ULONG object_handles_format_code,
382 ULONG object_handles_association,
383 ULONG *object_handles_array,
384 ULONG object_handles_max_number);
385 UINT demo_object_info_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
386 ULONG object_handle,
387 UX_SLAVE_CLASS_PIMA_OBJECT **object);
388 UINT demo_object_data_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
389 ULONG object_handle,
390 UCHAR *object_buffer,
391 ULONG object_offset,
392 ULONG object_length_requested,
393 ULONG *object_actual_length);
394 UINT demo_object_info_send (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
395 UX_SLAVE_CLASS_PIMA_OBJECT *object,
396 ULONG storage_id,
397 ULONG parent_object_handle,
398 ULONG *object_handle);
399 UINT demo_object_data_send (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
400 ULONG object_handle,
401 ULONG phase ,
402 UCHAR *object_buffer,
403 ULONG object_offset,
404 ULONG object_length);
405 UINT demo_object_delete(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
406 ULONG object_handle);
407 UINT demo_object_prop_desc_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
408 ULONG object_property,
409 ULONG object_format_code,
410 UCHAR **object_prop_dataset,
411 ULONG *object_prop_dataset_length);
412 UINT demo_object_prop_value_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
413 ULONG object_handle,
414 ULONG object_property,
415 UCHAR **object_prop_value,
416 ULONG *object_prop_value_length);
417 UINT demo_object_prop_value_set (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
418 ULONG object_handle,
419 ULONG object_property,
420 UCHAR *object_prop_value,
421 ULONG object_prop_value_length);
422 UINT demo_object_references_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
423 ULONG object_handle,
424 UCHAR **object_references_array,
425 ULONG *object_references_array_length);
426 UINT demo_object_references_set (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
427 ULONG object_handle,
428 UCHAR *object_references_array,
429 ULONG object_references_array_length);
430 UINT demo_object_handle_check(ULONG object_handle,
431 UX_SLAVE_CLASS_PIMA_OBJECT **object,
432 ULONG *caller_handle_index);
433 UINT demo_device_class_custom_entry(UX_SLAVE_CLASS_COMMAND *command);
434 UINT demo_vendor_request(ULONG request, ULONG request_value, ULONG request_index, ULONG request_length,
435 UCHAR *transfer_request_buffer,
436 ULONG *transfer_request_length);
437
438
439 /* Define what the initial system looks like. */
440
441 #ifdef CTEST
test_application_define(void * first_unused_memory)442 void test_application_define(void *first_unused_memory)
443 #else
444 void usbx_uxe_device_pima_test_application_define(void *first_unused_memory)
445 #endif
446 {
447
448 UINT status;
449 CHAR *stack_pointer;
450 CHAR *memory_pointer;
451
452 /* Inform user. */
453 printf("Running uxe_device_pima APIs Test................................... ");
454 #if !defined(UX_DEVICE_CLASS_PRINTER_ENABLE_ERROR_CHECKING)
455 #warning Tests skipped due to compile option!
456 printf("SKIP SUCCESS!\n");
457 test_control_return(0);
458 return;
459 #endif
460
461 /* Initialize the free memory pointer. */
462 stack_pointer = (CHAR *) first_unused_memory;
463 memory_pointer = stack_pointer + (UX_TEST_STACK_SIZE * 2);
464
465 /* Initialize USBX Memory. */
466 status = ux_system_initialize(memory_pointer, UX_TEST_MEMORY_SIZE, UX_NULL, 0);
467
468 /* Check for error. */
469 if (status != UX_SUCCESS)
470 {
471
472 printf("ERROR #%d\n", __LINE__);
473 test_control_return(1);
474 }
475
476 /* Create the simulation thread. */
477 status = tx_thread_create(&ux_test_thread_simulation_0, "test simulation", ux_test_thread_simulation_0_entry, 0,
478 stack_pointer, UX_TEST_STACK_SIZE,
479 20, 20, 1, TX_AUTO_START);
480
481 /* Check for error. */
482 if (status != TX_SUCCESS)
483 {
484
485 printf("ERROR #%d\n", __LINE__);
486 test_control_return(1);
487 }
488 }
489
490
ux_test_thread_simulation_0_entry(ULONG arg)491 static void ux_test_thread_simulation_0_entry(ULONG arg)
492 {
493 UINT status;
494 UX_SLAVE_CLASS_PIMA dummy_pima_inst;
495 UX_SLAVE_CLASS_PIMA *dummy_pima = &dummy_pima_inst;
496 UX_SLAVE_CLASS_COMMAND dummy_command;
497 UX_SLAVE_CLASS_PIMA_PARAMETER dummy_pima_parameter;
498 UCHAR *dummy_null_string = "";
499
500 dummy_pima_parameter.ux_device_class_pima_parameter_manufacturer = device_info_vendor_name;
501 dummy_pima_parameter.ux_device_class_pima_parameter_model = device_info_product_name;
502 dummy_pima_parameter.ux_device_class_pima_parameter_device_version = device_info_version;
503 dummy_pima_parameter.ux_device_class_pima_parameter_serial_number = device_info_serial_no;
504 dummy_pima_parameter.ux_device_class_pima_parameter_storage_id = 1;
505 dummy_pima_parameter.ux_device_class_pima_parameter_storage_type = UX_DEVICE_CLASS_PIMA_STC_FIXED_RAM;
506 dummy_pima_parameter.ux_device_class_pima_parameter_storage_file_system_type = UX_DEVICE_CLASS_PIMA_FSTC_GENERIC_FLAT;
507 dummy_pima_parameter.ux_device_class_pima_parameter_storage_access_capability = UX_DEVICE_CLASS_PIMA_AC_READ_WRITE;
508 dummy_pima_parameter.ux_device_class_pima_parameter_storage_max_capacity_low = 1024 * 1024;
509 dummy_pima_parameter.ux_device_class_pima_parameter_storage_max_capacity_high = 0;
510 dummy_pima_parameter.ux_device_class_pima_parameter_storage_free_space_low = 800 * 1024;
511 dummy_pima_parameter.ux_device_class_pima_parameter_storage_free_space_high = 0;
512 dummy_pima_parameter.ux_device_class_pima_parameter_storage_free_space_image = 0xFFFFFFFF;
513 dummy_pima_parameter.ux_device_class_pima_parameter_storage_description = pima_parameter_volume_description;
514 dummy_pima_parameter.ux_device_class_pima_parameter_storage_volume_label = pima_parameter_volume_label;
515 /* Property lists. */
516 dummy_pima_parameter.ux_device_class_pima_parameter_device_properties_list = device_prop_supported;
517 dummy_pima_parameter.ux_device_class_pima_parameter_supported_capture_formats_list = device_supported_capture_formats;
518 dummy_pima_parameter.ux_device_class_pima_parameter_supported_image_formats_list = device_supported_image_formats;
519 /* Callback functions. */
520 /* pima_parameter -> ux_device_class_pima_parameter_cancel can be NULL */
521 dummy_pima_parameter.ux_device_class_pima_parameter_device_reset = demo_device_reset;
522 dummy_pima_parameter.ux_device_class_pima_parameter_device_prop_desc_get = demo_device_prop_desc_get;
523 dummy_pima_parameter.ux_device_class_pima_parameter_device_prop_value_get = demo_device_prop_value_get;
524 dummy_pima_parameter.ux_device_class_pima_parameter_device_prop_value_set = demo_device_prop_value_set;
525 dummy_pima_parameter.ux_device_class_pima_parameter_storage_format = demo_storage_format;
526 dummy_pima_parameter.ux_device_class_pima_parameter_storage_info_get = demo_storage_info_get;
527 dummy_pima_parameter.ux_device_class_pima_parameter_object_number_get = demo_object_number_get;
528 dummy_pima_parameter.ux_device_class_pima_parameter_object_handles_get = demo_object_handles_get;
529 dummy_pima_parameter.ux_device_class_pima_parameter_object_info_get = demo_object_info_get;
530 dummy_pima_parameter.ux_device_class_pima_parameter_object_data_get = demo_object_data_get;
531 dummy_pima_parameter.ux_device_class_pima_parameter_object_info_send = demo_object_info_send;
532 dummy_pima_parameter.ux_device_class_pima_parameter_object_data_send = demo_object_data_send;
533 dummy_pima_parameter.ux_device_class_pima_parameter_object_delete = demo_object_delete;
534 #ifdef UX_PIMA_WITH_MTP_SUPPORT
535 dummy_pima_parameter.ux_device_class_pima_parameter_object_properties_list = object_prop_supported;
536 dummy_pima_parameter.ux_device_class_pima_parameter_object_prop_desc_get = demo_object_prop_desc_get;
537 dummy_pima_parameter.ux_device_class_pima_parameter_object_prop_value_get = demo_object_prop_value_get;
538 dummy_pima_parameter.ux_device_class_pima_parameter_object_prop_value_set = demo_object_prop_value_set;
539 dummy_pima_parameter.ux_device_class_pima_parameter_object_references_get = demo_object_references_get;
540 dummy_pima_parameter.ux_device_class_pima_parameter_object_references_set = demo_object_references_set;
541 #endif
542
543 dummy_command.ux_slave_class_command_parameter = &dummy_pima_parameter;
544
545 /* ux_device_class_pima_entry() */
546 dummy_command.ux_slave_class_command_request = UX_SLAVE_CLASS_COMMAND_INITIALIZE;
547
548 dummy_pima_parameter.ux_device_class_pima_parameter_device_reset = UX_NULL;
549 status = ux_device_class_pima_entry(&dummy_command);
550 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
551 dummy_pima_parameter.ux_device_class_pima_parameter_device_reset = demo_device_reset;
552
553 dummy_pima_parameter.ux_device_class_pima_parameter_device_prop_desc_get = UX_NULL;
554 status = ux_device_class_pima_entry(&dummy_command);
555 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
556 dummy_pima_parameter.ux_device_class_pima_parameter_device_prop_desc_get = demo_device_prop_desc_get;
557
558 dummy_pima_parameter.ux_device_class_pima_parameter_device_prop_value_get = UX_NULL;
559 status = ux_device_class_pima_entry(&dummy_command);
560 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
561 dummy_pima_parameter.ux_device_class_pima_parameter_device_prop_value_get = demo_device_prop_value_get;
562
563 dummy_pima_parameter.ux_device_class_pima_parameter_device_prop_value_set = UX_NULL;
564 status = ux_device_class_pima_entry(&dummy_command);
565 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
566 dummy_pima_parameter.ux_device_class_pima_parameter_device_prop_value_set = demo_device_prop_value_set;
567
568 dummy_pima_parameter.ux_device_class_pima_parameter_storage_format = UX_NULL;
569 status = ux_device_class_pima_entry(&dummy_command);
570 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
571 dummy_pima_parameter.ux_device_class_pima_parameter_storage_format = demo_storage_format;
572
573 dummy_pima_parameter.ux_device_class_pima_parameter_object_number_get = UX_NULL;
574 status = ux_device_class_pima_entry(&dummy_command);
575 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
576 dummy_pima_parameter.ux_device_class_pima_parameter_object_number_get = demo_object_number_get;
577
578 dummy_pima_parameter.ux_device_class_pima_parameter_object_handles_get = UX_NULL;
579 status = ux_device_class_pima_entry(&dummy_command);
580 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
581 dummy_pima_parameter.ux_device_class_pima_parameter_object_handles_get = demo_object_handles_get;
582
583 dummy_pima_parameter.ux_device_class_pima_parameter_object_info_get = UX_NULL;
584 status = ux_device_class_pima_entry(&dummy_command);
585 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
586 dummy_pima_parameter.ux_device_class_pima_parameter_object_info_get = demo_object_info_get;
587
588 dummy_pima_parameter.ux_device_class_pima_parameter_object_data_get = UX_NULL;
589 status = ux_device_class_pima_entry(&dummy_command);
590 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
591 dummy_pima_parameter.ux_device_class_pima_parameter_object_data_get = demo_object_data_get;
592
593 dummy_pima_parameter.ux_device_class_pima_parameter_object_info_send = UX_NULL;
594 status = ux_device_class_pima_entry(&dummy_command);
595 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
596 dummy_pima_parameter.ux_device_class_pima_parameter_object_info_send = demo_object_info_send;
597
598 dummy_pima_parameter.ux_device_class_pima_parameter_object_data_send = UX_NULL;
599 status = ux_device_class_pima_entry(&dummy_command);
600 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
601 dummy_pima_parameter.ux_device_class_pima_parameter_object_data_send = demo_object_data_send;
602
603 dummy_pima_parameter.ux_device_class_pima_parameter_object_delete = UX_NULL;
604 status = ux_device_class_pima_entry(&dummy_command);
605 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
606 dummy_pima_parameter.ux_device_class_pima_parameter_object_delete = demo_object_delete;
607
608 #ifdef UX_PIMA_WITH_MTP_SUPPORT
609 dummy_pima_parameter.ux_device_class_pima_parameter_object_properties_list = UX_NULL;
610 status = ux_device_class_pima_entry(&dummy_command);
611 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
612 dummy_pima_parameter.ux_device_class_pima_parameter_object_properties_list = object_prop_supported;
613
614 dummy_pima_parameter.ux_device_class_pima_parameter_object_prop_desc_get = UX_NULL;
615 status = ux_device_class_pima_entry(&dummy_command);
616 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
617 dummy_pima_parameter.ux_device_class_pima_parameter_object_prop_desc_get = demo_object_prop_desc_get;
618
619 dummy_pima_parameter.ux_device_class_pima_parameter_object_prop_value_get = UX_NULL;
620 status = ux_device_class_pima_entry(&dummy_command);
621 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
622 dummy_pima_parameter.ux_device_class_pima_parameter_object_prop_value_get = demo_object_prop_value_get;
623
624 dummy_pima_parameter.ux_device_class_pima_parameter_object_prop_value_set = UX_NULL;
625 status = ux_device_class_pima_entry(&dummy_command);
626 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
627 dummy_pima_parameter.ux_device_class_pima_parameter_object_prop_value_set = demo_object_prop_value_set;
628
629 dummy_pima_parameter.ux_device_class_pima_parameter_object_references_get = UX_NULL;
630 status = ux_device_class_pima_entry(&dummy_command);
631 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
632 dummy_pima_parameter.ux_device_class_pima_parameter_object_references_get = demo_object_references_get;
633
634 dummy_pima_parameter.ux_device_class_pima_parameter_object_references_set = UX_NULL;
635 status = ux_device_class_pima_entry(&dummy_command);
636 UX_TEST_CHECK_CODE(UX_INVALID_PARAMETER, status);
637 dummy_pima_parameter.ux_device_class_pima_parameter_object_references_set = demo_object_references_set;
638 #endif
639
640
641 /* Sleep for a tick to make sure everything is complete. */
642 tx_thread_sleep(1);
643
644 /* Check for errors from other threads. */
645 if (error_counter)
646 {
647
648 /* Test error. */
649 printf("ERROR #%d: total %ld errors\n", __LINE__, error_counter);
650 test_control_return(1);
651 }
652 else
653 {
654
655 /* Successful test. */
656 printf("SUCCESS!\n");
657 test_control_return(0);
658 }
659 }
660
demo_device_reset()661 UINT demo_device_reset()
662 {
663 return(UX_SUCCESS);
664 }
665
demo_device_prop_desc_get(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG device_property,UCHAR ** device_prop_dataset,ULONG * device_prop_dataset_length)666 UINT demo_device_prop_desc_get(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
667 ULONG device_property,
668 UCHAR **device_prop_dataset,
669 ULONG *device_prop_dataset_length)
670
671 {
672 return(UX_ERROR);
673 }
674
demo_device_prop_value_get(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG device_property,UCHAR ** device_prop_value,ULONG * device_prop_value_length)675 UINT demo_device_prop_value_get(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
676 ULONG device_property,
677 UCHAR **device_prop_value,
678 ULONG *device_prop_value_length)
679 {
680 return(UX_ERROR);
681 }
682
demo_device_prop_value_set(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG device_property,UCHAR * device_prop_value,ULONG device_prop_value_length)683 UINT demo_device_prop_value_set(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
684 ULONG device_property,
685 UCHAR *device_prop_value,
686 ULONG device_prop_value_length)
687 {
688 return(UX_ERROR);
689 }
690
691
demo_storage_format(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG storage_id)692 UINT demo_storage_format(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
693 ULONG storage_id)
694 {
695 return(UX_ERROR);
696 }
697
698
demo_storage_info_get(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG storage_id)699 UINT demo_storage_info_get(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
700 ULONG storage_id)
701 {
702 return(UX_ERROR);
703 }
704
demo_object_number_get(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG object_format_code,ULONG object_association,ULONG * object_number)705 UINT demo_object_number_get(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
706 ULONG object_format_code,
707 ULONG object_association,
708 ULONG *object_number)
709 {
710 return(UX_ERROR);
711 }
712
demo_object_handles_get(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG object_handles_format_code,ULONG object_handles_association,ULONG * object_handles_array,ULONG object_handles_max_number)713 UINT demo_object_handles_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
714 ULONG object_handles_format_code,
715 ULONG object_handles_association,
716 ULONG *object_handles_array,
717 ULONG object_handles_max_number)
718 {
719 return(UX_ERROR);
720 }
721
demo_object_info_get(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG object_handle,UX_SLAVE_CLASS_PIMA_OBJECT ** object)722 UINT demo_object_info_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
723 ULONG object_handle,
724 UX_SLAVE_CLASS_PIMA_OBJECT **object)
725 {
726 return(UX_ERROR);
727 }
728
demo_object_data_get(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG object_handle,UCHAR * object_buffer,ULONG object_offset,ULONG object_length_requested,ULONG * object_actual_length)729 UINT demo_object_data_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
730 ULONG object_handle,
731 UCHAR *object_buffer,
732 ULONG object_offset,
733 ULONG object_length_requested,
734 ULONG *object_actual_length)
735
736 {
737 return(UX_ERROR);
738 }
739
demo_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)740 UINT demo_object_info_send (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
741 UX_SLAVE_CLASS_PIMA_OBJECT *object,
742 ULONG storage_id,
743 ULONG parent_object_handle,
744 ULONG *object_handle)
745 {
746 return(UX_ERROR);
747 }
748
749
demo_object_data_send(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG object_handle,ULONG phase,UCHAR * object_buffer,ULONG object_offset,ULONG object_length)750 UINT demo_object_data_send (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
751 ULONG object_handle,
752 ULONG phase ,
753 UCHAR *object_buffer,
754 ULONG object_offset,
755 ULONG object_length)
756 {
757 return(UX_ERROR);
758 }
759
demo_object_delete(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG object_handle)760 UINT demo_object_delete(struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
761 ULONG object_handle)
762 {
763 return(UX_ERROR);
764 }
765
766
demo_object_prop_desc_get(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG object_property,ULONG object_format_code,UCHAR ** object_prop_dataset,ULONG * object_prop_dataset_length)767 UINT demo_object_prop_desc_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
768 ULONG object_property,
769 ULONG object_format_code,
770 UCHAR **object_prop_dataset,
771 ULONG *object_prop_dataset_length)
772 {
773 return(UX_ERROR);
774 }
775
776
demo_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)777 UINT demo_object_prop_value_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
778 ULONG object_handle,
779 ULONG object_property,
780 UCHAR **object_prop_value,
781 ULONG *object_prop_value_length)
782 {
783 return(UX_ERROR);
784 }
785
786
demo_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)787 UINT demo_object_prop_value_set (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
788 ULONG object_handle,
789 ULONG object_property,
790 UCHAR *object_prop_value,
791 ULONG object_prop_value_length)
792 {
793 return(UX_ERROR);
794 }
795
796
demo_object_references_get(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG object_handle,UCHAR ** object_references_array,ULONG * object_references_array_length)797 UINT demo_object_references_get (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
798 ULONG object_handle,
799 UCHAR **object_references_array,
800 ULONG *object_references_array_length)
801 {
802 return(UX_ERROR);
803 }
804
805
demo_object_references_set(struct UX_SLAVE_CLASS_PIMA_STRUCT * pima,ULONG object_handle,UCHAR * object_references_array,ULONG object_references_array_length)806 UINT demo_object_references_set (struct UX_SLAVE_CLASS_PIMA_STRUCT *pima,
807 ULONG object_handle,
808 UCHAR *object_references_array,
809 ULONG object_references_array_length)
810 {
811 return(UX_ERROR);
812 }
813
814
demo_object_handle_check(ULONG object_handle,UX_SLAVE_CLASS_PIMA_OBJECT ** object,ULONG * caller_handle_index)815 UINT demo_object_handle_check(ULONG object_handle,
816 UX_SLAVE_CLASS_PIMA_OBJECT **object,
817 ULONG *caller_handle_index)
818 {
819 return(UX_ERROR);
820 }
821