diff options
author | Marcus Meissner <marcus@jet.franken.de> | 2006-03-25 09:02:40 +0000 |
---|---|---|
committer | Marcus Meissner <marcus@jet.franken.de> | 2006-03-25 09:02:40 +0000 |
commit | 8ec0137b462bd30bd8774aed93c03e4e2fff3f9a (patch) | |
tree | 035275b6ce1865b2b0067181f768f3ffe544d667 | |
parent | 88c5d90cf333b76a8afc74eda8666b7de2538078 (diff) | |
download | libgphoto2-8ec0137b462bd30bd8774aed93c03e4e2fff3f9a.tar.gz |
corrected names to match "official" ones.
git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@8658 67ed7778-7388-44ab-90cf-0a291f65f57c
-rw-r--r-- | camlibs/ptp2/PTPIP.TXT | 74 |
1 files changed, 41 insertions, 33 deletions
diff --git a/camlibs/ptp2/PTPIP.TXT b/camlibs/ptp2/PTPIP.TXT index ac3c07433..3c946ab7f 100644 --- a/camlibs/ptp2/PTPIP.TXT +++ b/camlibs/ptp2/PTPIP.TXT @@ -1,28 +1,37 @@ This briefly describes the PTP/IP transfer layer. -It was reverse engineered from a ethereal packet dump. +(It was reverse engineered from a ethereal network packet dump.) + +The connections are simple TCP/IP socket connection. -The connections is a simple TCP/IP socket connection. Default port is 15740 (same as the ISO number for PTP). -The layers communicate in packets, their layout is: - 4 byte length (little endian) - 4 byte type (little endian) - - type: 1 - startup cmd pipe - 2 - startup cmd pipe ok - 3 - startup event pipe - 4 - ack event pipe - 5 - init reply (error) - - 6 - (to ) ptp command - 7 - (from) ptp ack - 8 - (from) ptp interrupt - 9 - (both) data length return after command - b - (to ) cancel transaction - c - (from) - d - (to ) keep alive / ping - e - (from) keep alive / pong +There are 2 connections used: + - control & data connection (initiator (computer) driven) + - event connection (responder (camera) driven) + +The participants communicate in packets, their layout is: + + 4 byte length (little endian) + 4 byte type (little endian) + length - 8 byte data (type specific) + + +Type: 1 - (to ) Init_Command_Request + 2 - (from) Init_Command_Ack + 3 - (to ) Init_Event_Request + 4 - (from) Init_Event_Ack + 5 - (from) Init_Fail + + 6 - (to ) Cmd_Request + 7 - (from) Cmd_Response + 8 - (from) Event + 9 - (both) Start_Data_Packet + a - (both) Data_Packet + b - (to ) Cancel_Transaction + c - (from) End_Data_Packet + d - (to ) Ping + e - (from) Pong State transitions: @@ -55,17 +64,17 @@ TYPE 1 (Init_Command_Request) TYPE 2 (Init_Command_Ack) payload 4+sizeof(GUID)+(1+lstrlenW(cameraname))*sizeof(WCHAR) bytes. 4 byte ID (session id, to be used for event startup) - 16 byte GUID (MAC is used here, and repeated) + 16 byte GUID (MAC is used here for my camera, and repeated) xx byte WCHAR Camera Name with terminating \0 TYPE 3 (Init_Event_Request) payload 4 bytes. 4 byte ID (from Init_Command_Ack) - Can get type 4 or type 5 reply. + => Can get type 4 or type 5 reply. TYPE 4 (Init_Event_Ack) - no payload. + No payload. You can start sending PTP traffic now. TYPE 5 (Init_Fail) @@ -74,7 +83,7 @@ TYPE 5 (Init_Fail) -> might mean busy / access denied. -TYPE 6 (PTP COMMAND): +TYPE 6 (Cmd_Request): payload n bytes. 2 bytes PTP command n bytes command arguments @@ -82,20 +91,19 @@ TYPE 6 (PTP COMMAND): May be followed by 0x9 (data reader/data sender) Will be followed then by 0x7 (PTP response) -TYPE 7(PTP ACK): +TYPE 7 (Cmd_Response): payload 6 - 26 bytes 2 bytes PTP response code 4 bytes nr of arguments nr*4 bytes arguments -TYPE 8 (PTP EVENT) +TYPE 8 (Event) length 14 - 26 - 2 byte event code ptp event specific data.. -TYPE 9 (GET DATA): +TYPE 9 (Start_Data_Packet): 8 byte payload. 4 byte number @@ -103,11 +111,11 @@ TYPE 9 (GET DATA): can be followed by 0e, 0a, 0c -TYPE 10 / 0xA (READ DATA 1): +TYPE 10 (Data_Packet): 4 byte payload. 4 byte xid (transaction id?) -TYPE 11 / 0xB (CANCEL TRANSACTION): +TYPE 11 (Cancel_Transaction): 12 byte 4 length 4 type @@ -115,14 +123,14 @@ TYPE 11 / 0xB (CANCEL TRANSACTION): -> Gets 0x7 ack back. -TYPE 12 / 0xC (READ DATA 1): +TYPE 12 (End_Data_Packet): 4 byte payload. 4 byte xid (transaction id?) -TYPE 13 / 0xD (PING REQUEST) +TYPE 13 (Ping 0 byte payload. -TYPE 14 / 0xE (PING REPLY) +TYPE 14 (Pong) 0 byte payload. |