]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * atacmdnames.cpp | |
3 | * | |
4 | * Home page of code is: http://smartmontools.sourceforge.net | |
5 | * | |
6 | * Copyright (C) 2003-8 Philip Williams | |
7 | * Copyright (C) 2012 Christian Franke <smartmontools-support@lists.sourceforge.net> | |
8 | * | |
9 | * This program is free software; you can redistribute it and/or modify | |
10 | * it under the terms of the GNU General Public License as published by | |
11 | * the Free Software Foundation; either version 2, or (at your option) | |
12 | * any later version. | |
13 | * | |
14 | * You should have received a copy of the GNU General Public License | |
15 | * (for example COPYING); If not, see <http://www.gnu.org/licenses/>. | |
16 | * | |
17 | */ | |
18 | ||
19 | #include "atacmdnames.h" | |
20 | #include <stdlib.h> | |
21 | #include <stdio.h> | |
22 | ||
23 | const char * atacmdnames_cpp_cvsid = "$Id: atacmdnames.cpp 3670 2012-10-31 22:00:50Z chrfranke $" | |
24 | ATACMDNAMES_H_CVSID; | |
25 | ||
26 | const char cmd_reserved[] = "[RESERVED]"; | |
27 | const char cmd_vendor_specific[] = "[VENDOR SPECIFIC]"; | |
28 | const char cmd_reserved_sa[] = "[RESERVED FOR SERIAL ATA]"; | |
29 | const char cmd_reserved_cf[] = "[RESERVED FOR COMPACTFLASH ASSOCIATION]"; | |
30 | const char cmd_reserved_mcpt[] = "[RESERVED FOR MEDIA CARD PASS THROUGH]"; // ACS-3: Reserved | |
31 | const char cmd_recalibrate_ret4[]= "RECALIBRATE [RET-4]"; | |
32 | const char cmd_seek_ret4[] = "SEEK [RET-4]"; | |
33 | ||
34 | // Tables B.3 and B.4 of T13/2161-D (ACS-3) Revision 4, September 4, 2012 | |
35 | ||
36 | const char * const command_table[] = { | |
37 | /*-------------------------------------------------- 00h-0Fh -----*/ | |
38 | "NOP", | |
39 | cmd_reserved, | |
40 | cmd_reserved, | |
41 | "CFA REQUEST EXTENDED ERROR", | |
42 | cmd_reserved, | |
43 | cmd_reserved, | |
44 | "DATA SET MANAGEMENT", // ACS-2 | |
45 | cmd_reserved, | |
46 | "DEVICE RESET", | |
47 | cmd_reserved, | |
48 | cmd_reserved, | |
49 | "REQUEST SENSE DATA EXT", // ACS-2 | |
50 | cmd_reserved, | |
51 | cmd_reserved, | |
52 | cmd_reserved, | |
53 | cmd_reserved, | |
54 | /*-------------------------------------------------- 10h-1Fh -----*/ | |
55 | "RECALIBRATE [OBS-4]", | |
56 | cmd_recalibrate_ret4, | |
57 | cmd_recalibrate_ret4, | |
58 | cmd_recalibrate_ret4, | |
59 | cmd_recalibrate_ret4, | |
60 | cmd_recalibrate_ret4, | |
61 | cmd_recalibrate_ret4, | |
62 | cmd_recalibrate_ret4, | |
63 | cmd_recalibrate_ret4, | |
64 | cmd_recalibrate_ret4, | |
65 | cmd_recalibrate_ret4, | |
66 | cmd_recalibrate_ret4, | |
67 | cmd_recalibrate_ret4, | |
68 | cmd_recalibrate_ret4, | |
69 | cmd_recalibrate_ret4, | |
70 | cmd_recalibrate_ret4, | |
71 | /*-------------------------------------------------- 20h-2Fh -----*/ | |
72 | "READ SECTOR(S)", | |
73 | "READ SECTOR(S) [OBS-5]", | |
74 | "READ LONG [OBS-4]", | |
75 | "READ LONG (w/o retry) [OBS-4]", | |
76 | "READ SECTOR(S) EXT", | |
77 | "READ DMA EXT", | |
78 | "READ DMA QUEUED EXT [OBS-ACS-2]", | |
79 | "READ NATIVE MAX ADDRESS EXT [OBS-ACS-3]", | |
80 | cmd_reserved, | |
81 | "READ MULTIPLE EXT", | |
82 | "READ STREAM DMA", | |
83 | "READ STREAM", | |
84 | cmd_reserved, | |
85 | cmd_reserved, | |
86 | cmd_reserved, | |
87 | "READ LOG EXT", | |
88 | /*-------------------------------------------------- 30h-3Fh -----*/ | |
89 | "WRITE SECTOR(S)", | |
90 | "WRITE SECTOR(S) (w/o retry) [OBS-5]", | |
91 | "WRITE LONG [OBS-4]", | |
92 | "WRITE LONG (w/o retry) [OBS-4]", | |
93 | "WRITE SECTORS(S) EXT", | |
94 | "WRITE DMA EXT", | |
95 | "WRITE DMA QUEUED EXT [OBS-ACS-2]", | |
96 | "SET NATIVE MAX ADDRESS EXT [OBS-ACS-3]", | |
97 | "CFA WRITE SECTORS WITHOUT ERASE", | |
98 | "WRITE MULTIPLE EXT", | |
99 | "WRITE STREAM DMA", | |
100 | "WRITE STREAM", | |
101 | "WRITE VERIFY [OBS-4]", | |
102 | "WRITE DMA FUA EXT", | |
103 | "WRITE DMA QUEUED FUA EXT [OBS-ACS-2]", | |
104 | "WRITE LOG EXT", | |
105 | /*-------------------------------------------------- 40h-4Fh -----*/ | |
106 | "READ VERIFY SECTOR(S)", | |
107 | "READ VERIFY SECTOR(S) (w/o retry) [OBS-5]", | |
108 | "READ VERIFY SECTOR(S) EXT", | |
109 | cmd_reserved, | |
110 | cmd_reserved, | |
111 | "WRITE UNCORRECTABLE EXT", // ATA-8 | |
112 | cmd_reserved, | |
113 | "READ LOG DMA EXT", // ATA-8 | |
114 | cmd_reserved, | |
115 | cmd_reserved, | |
116 | cmd_reserved, | |
117 | cmd_reserved, | |
118 | cmd_reserved, | |
119 | cmd_reserved, | |
120 | cmd_reserved, | |
121 | cmd_reserved, | |
122 | /*-------------------------------------------------- 50h-5Fh -----*/ | |
123 | "FORMAT TRACK [OBS-4]", | |
124 | "CONFIGURE STREAM", | |
125 | cmd_reserved, | |
126 | cmd_reserved, | |
127 | cmd_reserved, | |
128 | cmd_reserved, | |
129 | cmd_reserved, | |
130 | "WRITE LOG DMA EXT", // ATA-8 | |
131 | cmd_reserved, | |
132 | cmd_reserved, | |
133 | cmd_reserved, | |
134 | "TRUSTED NON-DATA", // ATA-8 | |
135 | "TRUSTED RECEIVE", // ATA-8 | |
136 | "TRUSTED RECEIVE DMA", // ATA-8 | |
137 | "TRUSTED SEND", // ATA-8 | |
138 | "TRUSTED SEND DMA", // ATA-8 | |
139 | /*-------------------------------------------------- 60h-6Fh -----*/ | |
140 | "READ FPDMA QUEUED", // ATA-8 | |
141 | "WRITE FPDMA QUEUED", // ATA-8 | |
142 | cmd_reserved_sa, | |
143 | "NCQ QUEUE MANAGEMENT", // ACS-3 | |
144 | "SEND FPDMA QUEUED", // ACS-3 | |
145 | "RECEIVE FPDMA QUEUED", // ACS-3 | |
146 | cmd_reserved_sa, | |
147 | cmd_reserved_sa, | |
148 | cmd_reserved, | |
149 | cmd_reserved, | |
150 | cmd_reserved, | |
151 | cmd_reserved, | |
152 | cmd_reserved, | |
153 | cmd_reserved, | |
154 | cmd_reserved, | |
155 | cmd_reserved, | |
156 | /*-------------------------------------------------- 70h-7Fh -----*/ | |
157 | "SEEK [OBS-7]", | |
158 | cmd_seek_ret4, | |
159 | cmd_seek_ret4, | |
160 | cmd_seek_ret4, | |
161 | cmd_seek_ret4, | |
162 | cmd_seek_ret4, | |
163 | cmd_seek_ret4, | |
164 | "SET DATE & TIME EXT", // ACS-3 | |
165 | "ACCESSIBLE MAX ADDRESS CONFIGURATION", // ACS-3 | |
166 | cmd_seek_ret4, | |
167 | cmd_seek_ret4, | |
168 | cmd_seek_ret4, | |
169 | cmd_seek_ret4, | |
170 | cmd_seek_ret4, | |
171 | cmd_seek_ret4, | |
172 | cmd_seek_ret4, | |
173 | /*-------------------------------------------------- 80h-8Fh -----*/ | |
174 | cmd_vendor_specific, | |
175 | cmd_vendor_specific, | |
176 | cmd_vendor_specific, | |
177 | cmd_vendor_specific, | |
178 | cmd_vendor_specific, | |
179 | cmd_vendor_specific, | |
180 | cmd_vendor_specific, | |
181 | "CFA TRANSLATE SECTOR [VS IF NO CFA]", | |
182 | cmd_vendor_specific, | |
183 | cmd_vendor_specific, | |
184 | cmd_vendor_specific, | |
185 | cmd_vendor_specific, | |
186 | cmd_vendor_specific, | |
187 | cmd_vendor_specific, | |
188 | cmd_vendor_specific, | |
189 | cmd_vendor_specific, | |
190 | /*-------------------------------------------------- 90h-9Fh -----*/ | |
191 | "EXECUTE DEVICE DIAGNOSTIC", | |
192 | "INITIALIZE DEVICE PARAMETERS [OBS-6]", | |
193 | "DOWNLOAD MICROCODE", | |
194 | "DOWNLOAD MICROCODE DMA", // ACS-2 | |
195 | "STANDBY IMMEDIATE [RET-4]", | |
196 | "IDLE IMMEDIATE [RET-4]", | |
197 | "STANDBY [RET-4]", | |
198 | "IDLE [RET-4]", | |
199 | "CHECK POWER MODE [RET-4]", | |
200 | "SLEEP [RET-4]", | |
201 | cmd_vendor_specific, | |
202 | cmd_reserved, | |
203 | cmd_reserved, | |
204 | cmd_reserved, | |
205 | cmd_reserved, | |
206 | cmd_reserved, | |
207 | /*-------------------------------------------------- A0h-AFh -----*/ | |
208 | "PACKET", | |
209 | "IDENTIFY PACKET DEVICE", | |
210 | "SERVICE [OBS-ACS-2]", | |
211 | cmd_reserved, | |
212 | cmd_reserved, | |
213 | cmd_reserved, | |
214 | cmd_reserved, | |
215 | cmd_reserved, | |
216 | cmd_reserved, | |
217 | cmd_reserved, | |
218 | cmd_reserved, | |
219 | cmd_reserved, | |
220 | cmd_reserved, | |
221 | cmd_reserved, | |
222 | cmd_reserved, | |
223 | cmd_reserved, | |
224 | /*-------------------------------------------------- B0h-BFh -----*/ | |
225 | "SMART", | |
226 | "DEVICE CONFIGURATION [OBS-ACS-3]", | |
227 | cmd_reserved, | |
228 | cmd_reserved, | |
229 | "SANITIZE DEVICE", // ACS-2 | |
230 | cmd_reserved, | |
231 | "NV CACHE [OBS-ACS-3]", // ATA-8 | |
232 | cmd_reserved_cf, | |
233 | cmd_reserved_cf, | |
234 | cmd_reserved_cf, | |
235 | cmd_reserved_cf, | |
236 | cmd_reserved_cf, | |
237 | cmd_reserved, | |
238 | cmd_reserved, | |
239 | cmd_reserved, | |
240 | cmd_reserved, | |
241 | /*-------------------------------------------------- C0h-CFh -----*/ | |
242 | "CFA ERASE SECTORS [VS IF NO CFA]", | |
243 | cmd_vendor_specific, | |
244 | cmd_vendor_specific, | |
245 | cmd_vendor_specific, | |
246 | "READ MULTIPLE", | |
247 | "WRITE MULTIPLE", | |
248 | "SET MULTIPLE MODE", | |
249 | "READ DMA QUEUED [OBS-ACS-2]", | |
250 | "READ DMA", | |
251 | "READ DMA (w/o retry) [OBS-5]", | |
252 | "WRITE DMA", | |
253 | "WRITE DMA (w/o retry) [OBS-5]", | |
254 | "WRITE DMA QUEUED [OBS-ACS-2]", | |
255 | "CFA WRITE MULTIPLE WITHOUT ERASE", | |
256 | "WRITE MULTIPLE FUA EXT", | |
257 | cmd_reserved, | |
258 | /*-------------------------------------------------- D0h-DFh -----*/ | |
259 | cmd_reserved, | |
260 | "CHECK MEDIA CARD TYPE [OBS-ACS-2]", | |
261 | cmd_reserved_mcpt, | |
262 | cmd_reserved_mcpt, | |
263 | cmd_reserved_mcpt, | |
264 | cmd_reserved, | |
265 | cmd_reserved, | |
266 | cmd_reserved, | |
267 | cmd_reserved, | |
268 | cmd_reserved, | |
269 | "GET MEDIA STATUS [OBS-8]", | |
270 | "ACKNOWLEDGE MEDIA CHANGE [RET-4]", | |
271 | "BOOT POST-BOOT [RET-4]", | |
272 | "BOOT PRE-BOOT [RET-4]", | |
273 | "MEDIA LOCK [OBS-8]", | |
274 | "MEDIA UNLOCK [OBS-8]", | |
275 | /*-------------------------------------------------- E0h-EFh -----*/ | |
276 | "STANDBY IMMEDIATE", | |
277 | "IDLE IMMEDIATE", | |
278 | "STANDBY", | |
279 | "IDLE", | |
280 | "READ BUFFER", | |
281 | "CHECK POWER MODE", | |
282 | "SLEEP", | |
283 | "FLUSH CACHE", | |
284 | "WRITE BUFFER", | |
285 | "READ BUFFER DMA", // ACS-2 (was: WRITE SAME [RET-4]) | |
286 | "FLUSH CACHE EXT", | |
287 | "WRITE BUFFER DMA", // ACS-2 | |
288 | "IDENTIFY DEVICE", | |
289 | "MEDIA EJECT [OBS-8]", | |
290 | "IDENTIFY DEVICE DMA [OBS-4]", | |
291 | "SET FEATURES", | |
292 | /*-------------------------------------------------- F0h-FFh -----*/ | |
293 | cmd_vendor_specific, | |
294 | "SECURITY SET PASSWORD", | |
295 | "SECURITY UNLOCK", | |
296 | "SECURITY ERASE PREPARE", | |
297 | "SECURITY ERASE UNIT", | |
298 | "SECURITY FREEZE LOCK", | |
299 | "SECURITY DISABLE PASSWORD", | |
300 | cmd_vendor_specific, | |
301 | "READ NATIVE MAX ADDRESS [OBS-ACS-3]", | |
302 | "SET MAX ADDRESS [OBS-ACS-3]", | |
303 | cmd_vendor_specific, | |
304 | cmd_vendor_specific, | |
305 | cmd_vendor_specific, | |
306 | cmd_vendor_specific, | |
307 | cmd_vendor_specific, | |
308 | cmd_vendor_specific | |
309 | }; | |
310 | ||
311 | typedef char ASSERT_command_table_size[ | |
312 | sizeof(command_table)/sizeof(command_table[0]) == 256 ? 1 : -1]; | |
313 | ||
314 | /* Returns the name of the command (and possibly sub-command) with the given | |
315 | command code and feature register values. For most command codes this | |
316 | simply returns the corresponding entry in the command_table array, but for | |
317 | others the value of the feature register specifies a subcommand or | |
318 | distinguishes commands. */ | |
319 | const char *look_up_ata_command(unsigned char c_code, unsigned char f_reg) { | |
320 | ||
321 | switch (c_code) { | |
322 | case 0x00: /* NOP */ | |
323 | switch (f_reg) { | |
324 | case 0x00: | |
325 | return "NOP [Abort queued commands]"; | |
326 | case 0x01: | |
327 | return "NOP [Don't abort queued commands] [OBS-ACS-2]"; | |
328 | default: | |
329 | return "NOP [Reserved subcommand] [OBS-ACS-2]"; | |
330 | } | |
331 | case 0x92: /* DOWNLOAD MICROCODE */ | |
332 | switch (f_reg) { | |
333 | case 0x01: | |
334 | return "DOWNLOAD MICROCODE [Temporary] [OBS-8]"; | |
335 | case 0x03: | |
336 | return "DOWNLOAD MICROCODE [Save with offsets]"; // ATA-8 | |
337 | case 0x07: | |
338 | return "DOWNLOAD MICROCODE [Save]"; | |
339 | case 0x0e: | |
340 | return "DOWNLOAD MICROCODE [Save for future use]"; // ACS-3 | |
341 | case 0x0f: | |
342 | return "DOWNLOAD MICROCODE [Activate]"; // ACS-3 | |
343 | default: | |
344 | return "DOWNLOAD MICROCODE [Reserved subcommand]"; | |
345 | } | |
346 | case 0xB0: /* SMART */ | |
347 | switch (f_reg) { | |
348 | case 0xD0: | |
349 | return "SMART READ DATA"; | |
350 | case 0xD1: | |
351 | return "SMART READ ATTRIBUTE THRESHOLDS [OBS-4]"; | |
352 | case 0xD2: | |
353 | return "SMART ENABLE/DISABLE ATTRIBUTE AUTOSAVE"; | |
354 | case 0xD3: | |
355 | return "SMART SAVE ATTRIBUTE VALUES [OBS-6]"; | |
356 | case 0xD4: | |
357 | return "SMART EXECUTE OFF-LINE IMMEDIATE"; | |
358 | case 0xD5: | |
359 | return "SMART READ LOG"; | |
360 | case 0xD6: | |
361 | return "SMART WRITE LOG"; | |
362 | case 0xD7: | |
363 | return "SMART WRITE ATTRIBUTE THRESHOLDS [NS, OBS-4]"; | |
364 | case 0xD8: | |
365 | return "SMART ENABLE OPERATIONS"; | |
366 | case 0xD9: | |
367 | return "SMART DISABLE OPERATIONS"; | |
368 | case 0xDA: | |
369 | return "SMART RETURN STATUS"; | |
370 | case 0xDB: | |
371 | return "SMART EN/DISABLE AUTO OFFLINE [NS (SFF-8035i)]"; | |
372 | default: | |
373 | if (f_reg >= 0xE0) | |
374 | return "SMART [Vendor specific subcommand]"; | |
375 | else | |
376 | return "SMART [Reserved subcommand]"; | |
377 | } | |
378 | case 0xB1: /* DEVICE CONFIGURATION */ | |
379 | switch (f_reg) { | |
380 | case 0xC0: | |
381 | return "DEVICE CONFIGURATION RESTORE [OBS-ACS-3]"; | |
382 | case 0xC1: | |
383 | return "DEVICE CONFIGURATION FREEZE LOCK [OBS-ACS-3]"; | |
384 | case 0xC2: | |
385 | return "DEVICE CONFIGURATION IDENTIFY [OBS-ACS-3]"; | |
386 | case 0xC3: | |
387 | return "DEVICE CONFIGURATION SET [OBS-ACS-3]"; | |
388 | default: | |
389 | return "DEVICE CONFIGURATION [Reserved subcommand] [OBS-ACS-3]"; | |
390 | } | |
391 | case 0xEF: /* SET FEATURES */ | |
392 | switch (f_reg) { | |
393 | case 0x01: | |
394 | return "SET FEATURES [Enable 8-bit PIO] [OBS-3]"; // Now CFA | |
395 | case 0x02: | |
396 | return "SET FEATURES [Enable write cache]"; | |
397 | case 0x03: | |
398 | return "SET FEATURES [Set transfer mode]"; | |
399 | case 0x04: | |
400 | return "SET FEATURES [Enable auto DR] [OBS-4]"; | |
401 | case 0x05: | |
402 | return "SET FEATURES [Enable APM]"; | |
403 | case 0x06: | |
404 | return "SET FEATURES [Enable Pwr-Up In Standby]"; | |
405 | case 0x07: | |
406 | return "SET FEATURES [Set device spin-up]"; | |
407 | case 0x09: | |
408 | return "SET FEATURES [Reserved (address offset)] [OPS-ACS-3]"; | |
409 | case 0x0A: | |
410 | return "SET FEATURES [Enable CFA power mode 1]"; | |
411 | case 0x10: | |
412 | return "SET FEATURES [Enable SATA feature]"; // ACS-3 | |
413 | case 0x20: | |
414 | return "SET FEATURES [Set Time-ltd R/W WCT]"; | |
415 | case 0x21: | |
416 | return "SET FEATURES [Set Time-ltd R/W EH]"; | |
417 | case 0x31: | |
418 | return "SET FEATURES [Disable Media Status Notf] [OBS-8]"; | |
419 | case 0x33: | |
420 | return "SET FEATURES [Disable retry] [OBS-4]"; | |
421 | case 0x41: | |
422 | return "SET FEATURES [Enable Free-fall Control]"; // ATA-8 | |
423 | case 0x42: | |
424 | return "SET FEATURES [Enable AAM] [OBS-ACS-2]"; | |
425 | case 0x43: | |
426 | return "SET FEATURES [Set Max Host I/F S Times]"; | |
427 | case 0x44: | |
428 | return "SET FEATURES [Length of VS data] [OBS-4]"; | |
429 | case 0x4a: | |
430 | return "SET FEATURES [Ext. Power Conditions]"; // ACS-2 | |
431 | case 0x54: | |
432 | return "SET FEATURES [Set cache segs] [OBS-4]"; | |
433 | case 0x55: | |
434 | return "SET FEATURES [Disable read look-ahead]"; | |
435 | case 0x5D: | |
436 | return "SET FEATURES [Enable release interrupt] [OBS-ACS-2]"; | |
437 | case 0x5E: | |
438 | return "SET FEATURES [Enable SERVICE interrupt] [OBS-ACS-2]"; | |
439 | case 0x66: | |
440 | return "SET FEATURES [Disable revert defaults]"; | |
441 | case 0x69: | |
442 | return "SET FEATURES [LPS Error Reporting Control]"; // ACS-2 | |
443 | case 0x77: | |
444 | return "SET FEATURES [Disable ECC] [OBS-4]"; | |
445 | case 0x81: | |
446 | return "SET FEATURES [Disable 8-bit PIO] [OBS-3]"; // Now CFA | |
447 | case 0x82: | |
448 | return "SET FEATURES [Disable write cache]"; | |
449 | case 0x84: | |
450 | return "SET FEATURES [Disable auto DR] [OBS-4]"; | |
451 | case 0x85: | |
452 | return "SET FEATURES [Disable APM]"; | |
453 | case 0x86: | |
454 | return "SET FEATURES [Disable Pwr-Up In Standby]"; | |
455 | case 0x88: | |
456 | return "SET FEATURES [Disable ECC] [OBS-4]"; | |
457 | case 0x89: | |
458 | return "SET FEATURES [Reserved (address offset)]"; | |
459 | case 0x8A: | |
460 | return "SET FEATURES [Disable CFA power mode 1]"; | |
461 | case 0x90: | |
462 | return "SET FEATURES [Disable SATA feature]"; // ACS-3 | |
463 | case 0x95: | |
464 | return "SET FEATURES [Enable Media Status Notf] [OBS-8]"; | |
465 | case 0x99: | |
466 | return "SET FEATURES [Enable retries] [OBS-4]"; | |
467 | case 0x9A: | |
468 | return "SET FEATURES [Set max avg curr] [OBS-4]"; | |
469 | case 0xAA: | |
470 | return "SET FEATURES [Enable read look-ahead]"; | |
471 | case 0xAB: | |
472 | return "SET FEATURES [Set max prefetch] [OBS-4]"; | |
473 | case 0xBB: | |
474 | return "SET FEATURES [4 bytes VS data] [OBS-4]"; | |
475 | case 0xC1: | |
476 | return "SET FEATURES [Disable Free-fall Control]"; // ATA-8 | |
477 | case 0xC2: | |
478 | return "SET FEATURES [Disable AAM] [OBS-ACS-2]"; | |
479 | case 0xC3: | |
480 | return "SET FEATURES [Sense Data Reporting]"; // ACS-2 | |
481 | case 0xCC: | |
482 | return "SET FEATURES [Enable revert to defaults]"; | |
483 | case 0xDD: | |
484 | return "SET FEATURES [Disable release interrupt] [OBS-ACS-2]"; | |
485 | case 0xDE: | |
486 | return "SET FEATURES [Disable SERVICE interrupt] [OBS-ACS-2]"; | |
487 | case 0xE0: | |
488 | return "SET FEATURES [Vendor specific] [OBS-7]"; | |
489 | default: | |
490 | if (f_reg >= 0xF0) | |
491 | return "SET FEATURES [Reserved for CFA]"; | |
492 | else | |
493 | return "SET FEATURES [Reserved subcommand]"; | |
494 | } | |
495 | case 0xF9: /* SET MAX */ | |
496 | switch (f_reg) { | |
497 | case 0x00: | |
498 | return "SET MAX ADDRESS [OBS-6]"; | |
499 | case 0x01: | |
500 | return "SET MAX SET PASSWORD [OBS-ACS-3]"; | |
501 | case 0x02: | |
502 | return "SET MAX LOCK [OBS-ACS-3]"; | |
503 | case 0x03: | |
504 | return "SET MAX UNLOCK [OBS-ACS-3]"; | |
505 | case 0x04: | |
506 | return "SET MAX FREEZE LOCK [OBS-ACS-3]"; | |
507 | default: | |
508 | return "SET MAX [Reserved subcommand] [OBS-ACS-3]"; | |
509 | } | |
510 | default: | |
511 | return command_table[c_code]; | |
512 | } | |
513 | } |