diff options
-rw-r--r-- | camlibs/ptp2/cameras/sigma-fp.txt | 279 | ||||
-rw-r--r-- | camlibs/ptp2/library.c | 36 | ||||
-rw-r--r-- | camlibs/ptp2/ptp.c | 153 | ||||
-rw-r--r-- | camlibs/ptp2/ptp.h | 9 |
4 files changed, 476 insertions, 1 deletions
diff --git a/camlibs/ptp2/cameras/sigma-fp.txt b/camlibs/ptp2/cameras/sigma-fp.txt index 175809bec..57ccb1cbf 100644 --- a/camlibs/ptp2/cameras/sigma-fp.txt +++ b/camlibs/ptp2/cameras/sigma-fp.txt @@ -63,6 +63,7 @@ Supported operations: 0x9035 (Unknown PTP_OC) 0x9036 (Unknown PTP_OC) 0x9037 (Unknown PTP_OC) + 0x9401 (Unknown PTP_OC) 0x9402 (Unknown PTP_OC) 0x9403 (Unknown PTP_OC) @@ -243,3 +244,281 @@ some 0x902c polling 0x902b no args getcamviewframe + +----------------- all data groups ------------------------- + +9030 ConfigAPI + +0.129540 ptp (2): entry 0: tag=0x0001, type=0x0002, elements=9, value=0x0000003c +0.129544 ptp (2): ascii: SIGMA fp +0.129548 ptp (2): entry 1: tag=0x0002, type=0x0002, elements=9, value=0x00000045 +0.129552 ptp (2): ascii: 91403727 +0.129556 ptp (2): entry 2: tag=0x0003, type=0x0002, elements=4, value=0x00343856 +0.129559 ptp (2): ascii: V84 +0.129563 ptp (2): entry 3: tag=0x0005, type=0x000b, elements=1, value=0x3f9eb852 +0.129570 ptp (2): float: 1.240000 + +0000 4a 00 00 00 04 00 00 00-01 00 02 00 09 00 00 00 J............... +0010 3c 00 00 00 02 00 02 00-09 00 00 00 45 00 00 00 <...........E... +0020 03 00 02 00 04 00 00 00-56 38 34 00 05 00 0b 00 ........V84..... +0030 01 00 00 00 52 b8 9e 3f-00 00 00 00 53 49 47 4d ....R..?....SIGM +0040 41 20 66 70 00 39 31 34-30 33 37 32 37 00 b3 A fp.91403727.. + +0x9030 (GetCamCanSetInfo5) + +0.131720 ptp (2): entry 0: tag=0x0001, type=0x0001, elements=5, value=0x00000420 +0.131724 ptp (2): entry 1: tag=0x0002, type=0x0001, elements=3, value=0x00010203 +0.131728 ptp (2): entry 2: tag=0x0003, type=0x0001, elements=4, value=0x00630001 +0.131733 ptp (2): entry 3: tag=0x0004, type=0x0008, elements=3, value=0x00000425 +0.131737 ptp (2): entry 4: tag=0x000a, type=0x0001, elements=0, value=0x00000000 +0.131741 ptp (2): entry 5: tag=0x000b, type=0x0001, elements=5, value=0x0000042b +0.131745 ptp (2): entry 6: tag=0x000c, type=0x0001, elements=2, value=0x00000c0e +0.131749 ptp (2): entry 7: tag=0x0014, type=0x0001, elements=3, value=0x00030201 +0.131753 ptp (2): entry 8: tag=0x0015, type=0x0001, elements=7, value=0x00000430 +0.131757 ptp (2): entry 9: tag=0x0064, type=0x0001, elements=2, value=0x00000101 +0.131762 ptp (2): entry 10: tag=0x006e, type=0x0001, elements=0, value=0x00000000 +0.131766 ptp (2): entry 11: tag=0x006f, type=0x0001, elements=1, value=0x00000002 +0.131770 ptp (2): entry 12: tag=0x0070, type=0x0001, elements=0, value=0x00000000 +0.131774 ptp (2): entry 13: tag=0x0071, type=0x0006, elements=0, value=0x00000000 +0.131778 ptp (2): entry 14: tag=0x0072, type=0x0001, elements=0, value=0x00000000 +0.131783 ptp (2): entry 15: tag=0x0096, type=0x0001, elements=0, value=0x00000000 +0.131793 ptp (2): entry 16: tag=0x0097, type=0x0001, elements=0, value=0x00000000 +0.131797 ptp (2): entry 17: tag=0x0098, type=0x0001, elements=0, value=0x00000000 +0.131801 ptp (2): entry 18: tag=0x00a0, type=0x0001, elements=0, value=0x00000000 +0.131805 ptp (2): entry 19: tag=0x00a1, type=0x0005, elements=0, value=0x00000000 +0.131809 ptp (2): entry 20: tag=0x00a2, type=0x0001, elements=0, value=0x00000000 +0.131813 ptp (2): entry 21: tag=0x00c8, type=0x0001, elements=7, value=0x00000437 +0.131817 ptp (2): entry 22: tag=0x00c9, type=0x0001, elements=1, value=0x00000001 +0.131822 ptp (2): entry 23: tag=0x00d1, type=0x0001, elements=3, value=0x00010101 +0.131826 ptp (2): entry 24: tag=0x00d2, type=0x0008, elements=0, value=0x00000000 +0.131830 ptp (2): entry 25: tag=0x00d3, type=0x0008, elements=0, value=0x00000000 +0.131834 ptp (2): entry 26: tag=0x00d4, type=0x0008, elements=0, value=0x00000000 +0.131838 ptp (2): entry 27: tag=0x00d5, type=0x0001, elements=0, value=0x00000000 +0.131842 ptp (2): entry 28: tag=0x00d6, type=0x0005, elements=0, value=0x00000000 +0.131846 ptp (2): entry 29: tag=0x00d7, type=0x0008, elements=4, value=0x0000043e +0.131850 ptp (2): entry 30: tag=0x00d8, type=0x0008, elements=4, value=0x00000446 +0.131854 ptp (2): entry 31: tag=0x00d9, type=0x0008, elements=3, value=0x0000044e +0.131858 ptp (2): entry 32: tag=0x00da, type=0x0001, elements=0, value=0x00000000 +0.131863 ptp (2): entry 33: tag=0x00db, type=0x0001, elements=0, value=0x00000000 +0.131867 ptp (2): entry 34: tag=0x00dc, type=0x0003, elements=0, value=0x00000000 +0.131871 ptp (2): entry 35: tag=0x00fa, type=0x0001, elements=3, value=0x00010203 +0.131875 ptp (2): entry 36: tag=0x00fb, type=0x0001, elements=1, value=0x00000001 +0.131879 ptp (2): entry 37: tag=0x00fc, type=0x0001, elements=0, value=0x00000000 +0.131883 ptp (2): entry 38: tag=0x00fd, type=0x0008, elements=0, value=0x00000000 +0.131888 ptp (2): entry 39: tag=0x012c, type=0x0001, elements=2, value=0x00000102 +0.131892 ptp (2): entry 40: tag=0x012d, type=0x0001, elements=12, value=0x00000454 +0.131896 ptp (2): entry 41: tag=0x012e, type=0x0003, elements=0, value=0x00000000 +0.131900 ptp (2): entry 42: tag=0x012f, type=0x0001, elements=1, value=0x00000001 +0.131904 ptp (2): entry 43: tag=0x0130, type=0x0006, elements=3, value=0x000210f0 +0.131909 ptp (2): entry 44: tag=0x0131, type=0x0001, elements=2, value=0x00000503 +0.131913 ptp (2): entry 45: tag=0x0132, type=0x0001, elements=2, value=0x00000201 +0.131917 ptp (2): entry 46: tag=0x0133, type=0x0001, elements=2, value=0x00000210 +0.131921 ptp (2): entry 47: tag=0x0140, type=0x0001, elements=13, value=0x00000460 +0.131925 ptp (2): entry 48: tag=0x0141, type=0x000a, elements=3, value=0x0000046d +0.131929 ptp (2): entry 49: tag=0x0142, type=0x000a, elements=3, value=0x00000485 +0.131933 ptp (2): entry 50: tag=0x0143, type=0x000a, elements=3, value=0x0000049d +0.131937 ptp (2): entry 51: tag=0x0144, type=0x0001, elements=0, value=0x00000000 +0.131941 ptp (2): entry 52: tag=0x0145, type=0x0001, elements=0, value=0x00000000 +0.131945 ptp (2): entry 53: tag=0x0147, type=0x0001, elements=5, value=0x000004b5 +0.131953 ptp (2): entry 54: tag=0x0154, type=0x000a, elements=3, value=0x000004ba +0.131958 ptp (2): entry 55: tag=0x0155, type=0x0001, elements=2, value=0x00000503 +0.131962 ptp (2): entry 56: tag=0x0156, type=0x0005, elements=2, value=0x000004d2 +0.131966 ptp (2): entry 57: tag=0x015e, type=0x0006, elements=5, value=0x000004e2 +0.131970 ptp (2): entry 58: tag=0x01f4, type=0x0006, elements=3, value=0x00ff0001 +0.131974 ptp (2): entry 59: tag=0x01f5, type=0x0006, elements=0, value=0x00000000 +0.131978 ptp (2): entry 60: tag=0x01f6, type=0x0006, elements=0, value=0x00000000 +0.131982 ptp (2): entry 61: tag=0x01f7, type=0x0001, elements=2, value=0x00000100 +0.131986 ptp (2): entry 62: tag=0x01f8, type=0x0006, elements=2, value=0x0000ff00 +0.131990 ptp (2): entry 63: tag=0x01f9, type=0x0006, elements=1, value=0x000000ff +0.131995 ptp (2): entry 64: tag=0x01fa, type=0x0001, elements=1, value=0x00000000 +0.131999 ptp (2): entry 65: tag=0x0258, type=0x0001, elements=3, value=0x00030401 +0.132003 ptp (2): entry 66: tag=0x0259, type=0x0001, elements=1, value=0x00000001 +0.132007 ptp (2): entry 67: tag=0x025a, type=0x0001, elements=3, value=0x00000102 +0.132011 ptp (2): entry 68: tag=0x0262, type=0x0001, elements=2, value=0x00000201 +0.132015 ptp (2): entry 69: tag=0x0263, type=0x0001, elements=0, value=0x00000000 +0.132019 ptp (2): entry 70: tag=0x0264, type=0x0003, elements=2, value=0x040002aa +0.132023 ptp (2): entry 71: tag=0x0265, type=0x0003, elements=4, value=0x000004e7 +0.132027 ptp (2): entry 72: tag=0x0266, type=0x0001, elements=1, value=0x00000004 +0.132031 ptp (2): entry 73: tag=0x0267, type=0x0003, elements=8, value=0x000004ef +0.132036 ptp (2): entry 74: tag=0x0268, type=0x0001, elements=4, value=0x00000000 +0.132040 ptp (2): entry 75: tag=0x028a, type=0x0001, elements=2, value=0x00000100 +0.132044 ptp (2): entry 76: tag=0x028b, type=0x0001, elements=0, value=0x00000000 +0.132048 ptp (2): entry 77: tag=0x0290, type=0x0001, elements=2, value=0x00000102 +0.132052 ptp (2): entry 78: tag=0x0291, type=0x0001, elements=2, value=0x00000102 +0.132056 ptp (2): entry 79: tag=0x02bc, type=0x0001, elements=1, value=0x00000001 +0.132060 ptp (2): entry 80: tag=0x02bd, type=0x0001, elements=0, value=0x00000000 +0.132064 ptp (2): entry 81: tag=0x02be, type=0x0001, elements=5, value=0x000004ff +0.132068 ptp (2): entry 82: tag=0x0320, type=0x0003, elements=12, value=0x00000504 +0.132073 ptp (2): entry 83: tag=0x0321, type=0x0001, elements=3, value=0x00010500 +0.132077 ptp (2): entry 84: tag=0x0322, type=0x0001, elements=3, value=0x00010500 +0.132081 ptp (2): entry 85: tag=0x0323, type=0x0001, elements=3, value=0x00010500 +0.132085 ptp (2): entry 86: tag=0x032a, type=0x0001, elements=2, value=0x00000100 + +0000 18 05 00 00 57 00 00 00-01 00 01 00 05 00 00 00 ....W........... +0010 20 04 00 00 02 00 01 00-03 00 00 00 03 02 01 00 ............... +0020 03 00 01 00 04 00 00 00-01 00 63 00 04 00 08 00 ..........c..... +0030 03 00 00 00 25 04 00 00-0a 00 01 00 00 00 00 00 ....%........... +0040 00 00 00 00 0b 00 01 00-05 00 00 00 2b 04 00 00 ............+... +0050 0c 00 01 00 02 00 00 00-0e 0c 00 00 14 00 01 00 ................ +0060 03 00 00 00 01 02 03 00-15 00 01 00 07 00 00 00 ................ +0070 30 04 00 00 64 00 01 00-02 00 00 00 01 01 00 00 0...d........... +0080 6e 00 01 00 00 00 00 00-00 00 00 00 6f 00 01 00 n...........o... +0090 01 00 00 00 02 00 00 00-70 00 01 00 00 00 00 00 ........p....... +00a0 00 00 00 00 71 00 06 00-00 00 00 00 00 00 00 00 ....q........... +00b0 72 00 01 00 00 00 00 00-00 00 00 00 96 00 01 00 r............... +00c0 00 00 00 00 00 00 00 00-97 00 01 00 00 00 00 00 ................ +00d0 00 00 00 00 98 00 01 00-00 00 00 00 00 00 00 00 ................ +00e0 a0 00 01 00 00 00 00 00-00 00 00 00 a1 00 05 00 ................ +00f0 00 00 00 00 00 00 00 00-a2 00 01 00 00 00 00 00 ................ +0100 00 00 00 00 c8 00 01 00-07 00 00 00 37 04 00 00 ............7... +0110 c9 00 01 00 01 00 00 00-01 00 00 00 d1 00 01 00 ................ +0120 03 00 00 00 01 01 01 00-d2 00 08 00 00 00 00 00 ................ +0130 00 00 00 00 d3 00 08 00-00 00 00 00 00 00 00 00 ................ +0140 d4 00 08 00 00 00 00 00-00 00 00 00 d5 00 01 00 ................ +0150 00 00 00 00 00 00 00 00-d6 00 05 00 00 00 00 00 ................ +0160 00 00 00 00 d7 00 08 00-04 00 00 00 3e 04 00 00 ............>... +0170 d8 00 08 00 04 00 00 00-46 04 00 00 d9 00 08 00 ........F....... +0180 03 00 00 00 4e 04 00 00-da 00 01 00 00 00 00 00 ....N........... +0190 00 00 00 00 db 00 01 00-00 00 00 00 00 00 00 00 ................ +01a0 dc 00 03 00 00 00 00 00-00 00 00 00 fa 00 01 00 ................ +01b0 03 00 00 00 03 02 01 00-fb 00 01 00 01 00 00 00 ................ +01c0 01 00 00 00 fc 00 01 00-00 00 00 00 00 00 00 00 ................ +01d0 fd 00 08 00 00 00 00 00-00 00 00 00 2c 01 01 00 ............,... +01e0 02 00 00 00 02 01 00 00-2d 01 01 00 0c 00 00 00 ........-....... +01f0 54 04 00 00 2e 01 03 00-00 00 00 00 00 00 00 00 T............... +0200 2f 01 01 00 01 00 00 00-01 00 00 00 30 01 06 00 /...........0... +0210 03 00 00 00 f0 10 02 00-31 01 01 00 02 00 00 00 ........1....... +0220 03 05 00 00 32 01 01 00-02 00 00 00 01 02 00 00 ....2........... +0230 33 01 01 00 02 00 00 00-10 02 00 00 40 01 01 00 3...........@... +0240 0d 00 00 00 60 04 00 00-41 01 0a 00 03 00 00 00 ....`...A....... +0250 6d 04 00 00 42 01 0a 00-03 00 00 00 85 04 00 00 m...B........... +0260 43 01 0a 00 03 00 00 00-9d 04 00 00 44 01 01 00 C...........D... +0270 00 00 00 00 00 00 00 00-45 01 01 00 00 00 00 00 ........E....... +0280 00 00 00 00 47 01 01 00-05 00 00 00 b5 04 00 00 ....G........... +0290 54 01 0a 00 03 00 00 00-ba 04 00 00 55 01 01 00 T...........U... +02a0 02 00 00 00 03 05 00 00-56 01 05 00 02 00 00 00 ........V....... +02b0 d2 04 00 00 5e 01 06 00-05 00 00 00 e2 04 00 00 ....^........... +02c0 f4 01 06 00 03 00 00 00-01 00 ff 00 f5 01 06 00 ................ +02d0 00 00 00 00 00 00 00 00-f6 01 06 00 00 00 00 00 ................ +02e0 00 00 00 00 f7 01 01 00-02 00 00 00 00 01 00 00 ................ +02f0 f8 01 06 00 02 00 00 00-00 ff 00 00 f9 01 06 00 ................ +0300 01 00 00 00 ff 00 00 00-fa 01 01 00 01 00 00 00 ................ +0310 00 00 00 00 58 02 01 00-03 00 00 00 01 04 03 00 ....X........... +0320 59 02 01 00 01 00 00 00-01 00 00 00 5a 02 01 00 Y...........Z... +0330 03 00 00 00 02 01 00 00-62 02 01 00 02 00 00 00 ........b....... +0340 01 02 00 00 63 02 01 00-00 00 00 00 00 00 00 00 ....c........... +0350 64 02 03 00 02 00 00 00-aa 02 00 04 65 02 03 00 d...........e... +0360 04 00 00 00 e7 04 00 00-66 02 01 00 01 00 00 00 ........f....... +0370 04 00 00 00 67 02 03 00-08 00 00 00 ef 04 00 00 ....g........... +0380 68 02 01 00 04 00 00 00-00 00 00 00 8a 02 01 00 h............... +0390 02 00 00 00 00 01 00 00-8b 02 01 00 00 00 00 00 ................ +03a0 00 00 00 00 90 02 01 00-02 00 00 00 02 01 00 00 ................ +03b0 91 02 01 00 02 00 00 00-02 01 00 00 bc 02 01 00 ................ +03c0 01 00 00 00 01 00 00 00-bd 02 01 00 00 00 00 00 ................ +03d0 00 00 00 00 be 02 01 00-05 00 00 00 ff 04 00 00 ................ +03e0 20 03 03 00 0c 00 00 00-04 05 00 00 21 03 01 00 ...........!... +03f0 03 00 00 00 00 05 01 00-22 03 01 00 03 00 00 00 ........"....... +0400 00 05 01 00 23 03 01 00-03 00 00 00 00 05 01 00 ....#........... +0410 2a 03 01 00 02 00 00 00-00 01 00 00 00 00 00 00 *............... +0420 05 03 04 02 01 01 00 10-0e 01 00 30 20 12 10 02 ...........0 ... +0430 07 06 05 04 03 02 01 07-06 05 04 03 02 01 00 05 ................ +0440 00 0d 00 01 55 00 00 05-00 0b 00 01 55 00 00 fb ....U.......U... +0450 00 05 55 00 02 09 0c 0b-0a 08 07 06 05 04 03 01 ..U............. +0460 08 07 06 0a 09 05 04 03-02 01 0b 0c 0d f6 ff ff ................ +0470 ff 0a 00 00 00 0a 00 00-00 0a 00 00 00 02 00 00 ................ +0480 00 0a 00 00 00 f6 ff ff-ff 0a 00 00 00 0a 00 00 ................ +0490 00 0a 00 00 00 02 00 00-00 0a 00 00 00 f6 ff ff ................ +04a0 ff 0a 00 00 00 0a 00 00-00 0a 00 00 00 02 00 00 ................ +04b0 00 0a 00 00 00 01 02 03-04 05 ce ff ff ff 0a 00 ................ +04c0 00 00 32 00 00 00 0a 00-00 00 02 00 00 00 0a 00 ..2............. +04d0 00 00 32 00 00 00 0a 00-00 00 02 00 00 00 0a 00 ..2............. +04e0 00 00 03 02 01 00 ff 55-00 55 02 60 00 a0 03 00 .......U.U.`.... +04f0 02 40 03 6d 01 53 02 db-00 65 01 49 00 77 00 04 .@.m.S...e.I.w.. +0500 03 02 01 00 6c 07 02 00-01 00 00 00 00 00 00 00 ....l........... +0510 02 08 0d 00 1f 00 17 00-3b 00 3b 00 3e ........;.;.> + +9012 (GetDataGroup1) + +0000 13 ff 7f 00 00 00 01 f8-00 00 01 09 b5 01 01 d0 ................ +0010 02 01 00 00 1e - ..... + +9013 (GetDataGroup2) + +0000 0e 3f fc 01 02 01 00 00-01 00 00 00 01 01 02 52 .?.............R + +9014 (GetDataGroup3) + +0000 10 ff a3 00 00 00 01 03-01 00 40 00 30 02 05 05 ..........@.0... +0010 00 33 - .3 + +9023 (GetDataGroup4) + +0000 11 f0 3f 00 03 01 03 ff-0e 00 01 01 02 01 fe 02 ..?............. +0010 02 05 60 - ..` + +9027 (GetDataGroup5) + +0000 0c 2b 00 1e 00 02 00 00-02 88 13 03 01 f8 .+............ + +9029 (GetDataGroup6) + +0000 04 00 00 00 00 04 - ...... + +9031 (GetCamDataGroupFocus) + +0.136156 ptp (2): entry 0: tag=0x0001, type=0x0001, elements=1, value=0x00000003 +0.136161 ptp (2): entry 1: tag=0x0002, type=0x0001, elements=1, value=0x00000000 +0.136165 ptp (2): entry 2: tag=0x0003, type=0x0001, elements=1, value=0x00000000 +0.136169 ptp (2): entry 3: tag=0x0004, type=0x0001, elements=1, value=0x00000000 +0.136173 ptp (2): entry 4: tag=0x000a, type=0x0001, elements=1, value=0x00000001 +0.136177 ptp (2): entry 5: tag=0x000b, type=0x0001, elements=1, value=0x00000000 +0.136181 ptp (2): entry 6: tag=0x000c, type=0x0001, elements=1, value=0x00000000 +0.136185 ptp (2): entry 7: tag=0x000d, type=0x0007, elements=4, value=0x02000154 +0.136189 ptp (2): entry 8: tag=0x000e, type=0x0007, elements=8, value=0x00000090 +0.136193 ptp (2): entry 9: tag=0x0033, type=0x0001, elements=1, value=0x00000000 +0.136197 ptp (2): entry 10: tag=0x0034, type=0x0001, elements=1, value=0x00000000 + +0000 94 00 00 00 0b 00 00 00-01 00 01 00 01 00 00 00 ................ +0010 03 00 00 00 02 00 01 00-01 00 00 00 00 00 00 00 ................ +0020 03 00 01 00 01 00 00 00-00 00 00 00 04 00 01 00 ................ +0030 01 00 00 00 00 00 00 00-0a 00 01 00 01 00 00 00 ................ +0040 01 00 00 00 0b 00 01 00-01 00 00 00 00 00 00 00 ................ +0050 0c 00 01 00 01 00 00 00-00 00 00 00 0d 00 07 00 ................ +0060 04 00 00 00 54 01 00 02-0e 00 07 00 08 00 00 00 ....T........... +0070 90 00 00 00 33 00 01 00-01 00 00 00 00 00 00 00 ....3........... +0080 34 00 01 00 01 00 00 00-00 00 00 00 00 00 00 00 4............... +0090 00 00 00 00 00 00 00 00-63 ........c + +9033 (GetCamDataGroupMovie) response... + +0.136395 ptp (2): entry 0: tag=0x0001, type=0x0001, elements=1, value=0x00000001 +0.136399 ptp (2): entry 1: tag=0x0003, type=0x0001, elements=1, value=0x00000001 +0.136403 ptp (2): entry 2: tag=0x0004, type=0x0001, elements=1, value=0x00000001 +0.136407 ptp (2): entry 3: tag=0x0005, type=0x0008, elements=1, value=0x00000000 +0.136411 ptp (2): entry 4: tag=0x0006, type=0x0001, elements=1, value=0x00000001 +0.136415 ptp (2): entry 5: tag=0x0007, type=0x0005, elements=1, value=0x000000cc +0.136419 ptp (2): entry 6: tag=0x000a, type=0x0001, elements=1, value=0x00000001 +0.136423 ptp (2): entry 7: tag=0x000b, type=0x0001, elements=1, value=0x00000001 +0.136427 ptp (2): entry 8: tag=0x000c, type=0x0006, elements=2, value=0x00000000 +0.136431 ptp (2): entry 9: tag=0x000d, type=0x0001, elements=1, value=0x00000000 +0.136435 ptp (2): entry 10: tag=0x0032, type=0x0001, elements=1, value=0x00000002 +0.136439 ptp (2): entry 11: tag=0x0033, type=0x0001, elements=1, value=0x0000000c +0.136443 ptp (2): entry 12: tag=0x0034, type=0x0001, elements=1, value=0x00000002 +0.136452 ptp (2): entry 13: tag=0x003c, type=0x0001, elements=1, value=0x00000002 +0.136456 ptp (2): entry 14: tag=0x003d, type=0x0005, elements=1, value=0x000000d4 +0.136460 ptp (2): entry 15: tag=0x003e, type=0x0001, elements=1, value=0x00000000 + +0000 d8 00 00 00 10 00 00 00-01 00 01 00 01 00 00 00 ................ +0010 01 00 00 00 03 00 01 00-01 00 00 00 01 00 00 00 ................ +0020 04 00 01 00 01 00 00 00-01 00 00 00 05 00 08 00 ................ +0030 01 00 00 00 00 00 00 00-06 00 01 00 01 00 00 00 ................ +0040 01 00 00 00 07 00 05 00-01 00 00 00 cc 00 00 00 ................ +0050 0a 00 01 00 01 00 00 00-01 00 00 00 0b 00 01 00 ................ +0060 01 00 00 00 01 00 00 00-0c 00 06 00 02 00 00 00 ................ +0070 00 00 00 00 0d 00 01 00-01 00 00 00 00 00 00 00 ................ +0080 32 00 01 00 01 00 00 00-02 00 00 00 33 00 01 00 2...........3... +0090 01 00 00 00 0c 00 00 00-34 00 01 00 01 00 00 00 ........4....... +00a0 02 00 00 00 3c 00 01 00-01 00 00 00 02 00 00 00 ....<........... +00b0 3d 00 05 00 01 00 00 00-d4 00 00 00 3e 00 01 00 =...........>... +00c0 01 00 00 00 00 00 00 00-00 00 00 00 70 00 00 00 ............p... +00d0 10 0e 00 00 5e 09 00 00-64 00 00 00 c6 ....^...d.... diff --git a/camlibs/ptp2/library.c b/camlibs/ptp2/library.c index 2441df83a..174ae9982 100644 --- a/camlibs/ptp2/library.c +++ b/camlibs/ptp2/library.c @@ -9823,6 +9823,42 @@ camera_init (Camera *camera, GPContext *context) C_PTP (ptp_sigma_fp_9035 (params, &xdata, &xsize)); GP_LOG_DATA ((char*)xdata, xsize, "9035 output"); free (xdata); + + C_PTP (ptp_sigma_fp_getcamcansetinfo5 (params, &xdata, &xsize)); + GP_LOG_DATA ((char*)xdata, xsize, "getcamcansetinfo5 output"); + free (xdata); + + C_PTP (ptp_sigma_fp_getdatagroup1 (params, &xdata, &xsize)); + GP_LOG_DATA ((char*)xdata, xsize, "getdatagroup1 output"); + free (xdata); + + C_PTP (ptp_sigma_fp_getdatagroup2 (params, &xdata, &xsize)); + GP_LOG_DATA ((char*)xdata, xsize, "getdatagroup2 output"); + free (xdata); + + C_PTP (ptp_sigma_fp_getdatagroup3 (params, &xdata, &xsize)); + GP_LOG_DATA ((char*)xdata, xsize, "getdatagroup3 output"); + free (xdata); + + C_PTP (ptp_sigma_fp_getdatagroup4 (params, &xdata, &xsize)); + GP_LOG_DATA ((char*)xdata, xsize, "getdatagroup4 output"); + free (xdata); + + C_PTP (ptp_sigma_fp_getdatagroup5 (params, &xdata, &xsize)); + GP_LOG_DATA ((char*)xdata, xsize, "getdatagroup5 output"); + free (xdata); + + C_PTP (ptp_sigma_fp_getdatagroup6 (params, &xdata, &xsize)); + GP_LOG_DATA ((char*)xdata, xsize, "getdatagroup6 output"); + free (xdata); + + C_PTP (ptp_sigma_fp_getcamdatagroupfocus (params, &xdata, &xsize)); + GP_LOG_DATA ((char*)xdata, xsize, "getdatagroupfocus output"); + free (xdata); + + C_PTP (ptp_sigma_fp_getcamdatagroupmovie (params, &xdata, &xsize)); + GP_LOG_DATA ((char*)xdata, xsize, "getdatagroupmovie output"); + free (xdata); } break; case PTP_VENDOR_GP_LEICA: diff --git a/camlibs/ptp2/ptp.c b/camlibs/ptp2/ptp.c index 39fd794a3..38ac29b0b 100644 --- a/camlibs/ptp2/ptp.c +++ b/camlibs/ptp2/ptp.c @@ -977,13 +977,164 @@ ptp_sigma_fp_liveview_image (PTPParams* params, unsigned char **data, unsigned i return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); } +static uint16_t +ptp_sigma_fp_parse_ifdlist (PTPParams* params, unsigned char *data, unsigned int size) +{ + uint32_t datalen, entrycount, offset; + unsigned int i; + + if (size < 5) { + ptp_debug (params, "size %d is less than 5", size); + return PTP_RC_GeneralError; + } + datalen = dtoh32a(data); + if (datalen != size-4-1) { + ptp_debug (params, "size %d is not specified size %d", size-4-1, datalen); + return PTP_RC_GeneralError; + } + + entrycount = dtoh32a(data+4); + offset = 8; + if (8 + 12*entrycount > size) { + ptp_debug (params, "count %d entries do not fit size %d", entrycount, size); + return PTP_RC_GeneralError; + } + for (i = 0; i<entrycount; i++) { + uint16_t tag = dtoh16a(data+offset+i*12), type = dtoh16a(data+offset+i*12+2); + uint32_t count = dtoh32a(data+offset+i*12+4), value = dtoh32a(data+offset+i*12+8); + /* word tag, word type, dword elements, value */ + ptp_debug (params, "entry %d: tag=0x%04x, type=0x%04x, elements=%d, value=0x%08x", i, tag, type, count, value); + switch (dtoh16a(data+offset+i*12+2)) { + case 0x2: /* ASCII */ + if (count > 4) { + ptp_debug (params, "ascii: %s", &data[dtoh32a(data+offset+i*12+8)]); + } else { + ptp_debug (params, "ascii: %s", data+offset+i*12+8); + } + break; + case 0xb: /* 32bit ieee float */ + ptp_debug (params, "float: %f", *(float*)(data+offset+i*12+8)); + break; + } + } + return PTP_RC_OK; +#if 0 +0000 5b 00 00 00 02 00 35 90-02 00 00 00 + +4a 00 00 00 [.....5.....J... +0010 04 00 00 00 01 00 02 00-09 00 00 00 3c 00 00 00 ............<... +0020 02 00 02 00 09 00 00 00-45 00 00 00 03 00 02 00 ........E....... +0030 04 00 00 00 56 38 34 00-05 00 0b 00 01 00 00 00 ....V84......... +0040 52 b8 9e 3f 00 00 00 00-53 49 47 4d 41 20 66 70 R..?....SIGMA fp +0050 00 39 31 34 30 33 37 32-37 00 b3 .91403727.. + +#endif +} + uint16_t ptp_sigma_fp_9035 (PTPParams* params, unsigned char **data, unsigned int *size) { PTPContainer ptp; + uint16_t ret; PTP_CNT_INIT(ptp, PTP_OC_SIGMA_FP_GetCameraInfo); - return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); + ret = ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); + if (ret != PTP_RC_OK) return ret; + ptp_sigma_fp_parse_ifdlist (params, *data, *size); + return PTP_RC_OK; +} + +uint16_t +ptp_sigma_fp_getcamcansetinfo5 (PTPParams* params, unsigned char **data, unsigned int *size) +{ + PTPContainer ptp; + uint16_t ret; + + PTP_CNT_INIT(ptp, PTP_OC_SIGMA_FP_GetCamCanSetInfo5); + ret = ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); + if (ret != PTP_RC_OK) return ret; + ptp_sigma_fp_parse_ifdlist (params, *data, *size); + return PTP_RC_OK; +} + +uint16_t +ptp_sigma_fp_getcamdatagroupfocus (PTPParams* params, unsigned char **data, unsigned int *size) +{ + PTPContainer ptp; + uint16_t ret; + + PTP_CNT_INIT(ptp, PTP_OC_SIGMA_FP_GetCamDataGroupFocus); + ret = ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); + if (ret != PTP_RC_OK) return ret; + ptp_sigma_fp_parse_ifdlist (params, *data, *size); + return PTP_RC_OK; +} + +uint16_t +ptp_sigma_fp_getcamdatagroupmovie (PTPParams* params, unsigned char **data, unsigned int *size) +{ + PTPContainer ptp; + uint16_t ret; + + PTP_CNT_INIT(ptp, PTP_OC_SIGMA_FP_GetCamDataGroupMovie); + ret = ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); + if (ret != PTP_RC_OK) return ret; + ptp_sigma_fp_parse_ifdlist (params, *data, *size); + return PTP_RC_OK; +} + +uint16_t +ptp_sigma_fp_getdatagroup1 (PTPParams* params, unsigned char **data, unsigned int *size) +{ + PTPContainer ptp; + + PTP_CNT_INIT(ptp, PTP_OC_SIGMA_FP_GetDataGroup1); + return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); +} + +uint16_t +ptp_sigma_fp_getdatagroup2 (PTPParams* params, unsigned char **data, unsigned int *size) +{ + PTPContainer ptp; + + PTP_CNT_INIT(ptp, PTP_OC_SIGMA_FP_GetDataGroup2); + return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); +} + +uint16_t +ptp_sigma_fp_getdatagroup3 (PTPParams* params, unsigned char **data, unsigned int *size) +{ + PTPContainer ptp; + + PTP_CNT_INIT(ptp, PTP_OC_SIGMA_FP_GetDataGroup3); + return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); +} + +uint16_t +ptp_sigma_fp_getdatagroup4 (PTPParams* params, unsigned char **data, unsigned int *size) +{ + PTPContainer ptp; + + PTP_CNT_INIT(ptp, PTP_OC_SIGMA_FP_GetDataGroup4); + return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); +} + +uint16_t +ptp_sigma_fp_getdatagroup5 (PTPParams* params, unsigned char **data, unsigned int *size) +{ + PTPContainer ptp; + + PTP_CNT_INIT(ptp, PTP_OC_SIGMA_FP_GetDataGroup5); + return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); +} + +uint16_t +ptp_sigma_fp_getdatagroup6 (PTPParams* params, unsigned char **data, unsigned int *size) +{ + PTPContainer ptp; + + PTP_CNT_INIT(ptp, PTP_OC_SIGMA_FP_GetDataGroup6); + return ptp_transaction(params, &ptp, PTP_DP_GETDATA, 0, data, size); } uint16_t diff --git a/camlibs/ptp2/ptp.h b/camlibs/ptp2/ptp.h index ecfe14a76..6ecafd7a5 100644 --- a/camlibs/ptp2/ptp.h +++ b/camlibs/ptp2/ptp.h @@ -4793,6 +4793,15 @@ uint16_t ptp_panasonic_9415 (PTPParams* params, PanasonicLiveViewSize *liveviews uint16_t ptp_sigma_fp_liveview_image (PTPParams* params, unsigned char **data, unsigned int *size); uint16_t ptp_sigma_fp_9035 (PTPParams* params, unsigned char **data, unsigned int *size); +uint16_t ptp_sigma_fp_getcamcansetinfo5 (PTPParams* params, unsigned char **data, unsigned int *size); +uint16_t ptp_sigma_fp_getdatagroup1 (PTPParams* params, unsigned char **data, unsigned int *size); +uint16_t ptp_sigma_fp_getdatagroup2 (PTPParams* params, unsigned char **data, unsigned int *size); +uint16_t ptp_sigma_fp_getdatagroup3 (PTPParams* params, unsigned char **data, unsigned int *size); +uint16_t ptp_sigma_fp_getdatagroup4 (PTPParams* params, unsigned char **data, unsigned int *size); +uint16_t ptp_sigma_fp_getdatagroup5 (PTPParams* params, unsigned char **data, unsigned int *size); +uint16_t ptp_sigma_fp_getdatagroup6 (PTPParams* params, unsigned char **data, unsigned int *size); +uint16_t ptp_sigma_fp_getcamdatagroupfocus (PTPParams* params, unsigned char **data, unsigned int *size); +uint16_t ptp_sigma_fp_getcamdatagroupmovie (PTPParams* params, unsigned char **data, unsigned int *size); uint16_t ptp_sigma_fp_getbigpartialpictfile (PTPParams* params, uint32_t p1, uint32_t offset, uint32_t insize, unsigned char **data, unsigned int *size); uint16_t ptp_sigma_fp_snap (PTPParams* params, uint32_t mode, uint32_t amount); uint16_t ptp_sigma_fp_clearimagedbsingle (PTPParams* params, uint32_t id); |