summaryrefslogtreecommitdiff
path: root/doc/DAEMON
diff options
context:
space:
mode:
Diffstat (limited to 'doc/DAEMON')
-rw-r--r--doc/DAEMON372
1 files changed, 372 insertions, 0 deletions
diff --git a/doc/DAEMON b/doc/DAEMON
new file mode 100644
index 000000000..a19a8cba7
--- /dev/null
+++ b/doc/DAEMON
@@ -0,0 +1,372 @@
+gPhoto Daemon
+--------------------------------------------------------------------
+
+(note: this is a specification. it is not implemented!)
+
+The gPhoto daemon uses the following protocol description. It provides an
+interactive way for program to talk and use gPhoto without needing to
+have any sort of C bindings.
+
+This document needs better formatting (color syntax highlighting, structure)
+
+Overview
+--------------------------------------------------------------------
+- The program provides gPhoto with a series of commands. gPhoto can
+ also send message to the program through 4 notification commands.
+
+- The arguments to a command are either a number or a string.
+ If it's a string, you must put double-quotes around it.
+
+- All commands to gPhoto are answered by an "OK" or "ERROR", possibly
+ followed by additional data.
+
+- Designed around simplicity and flexibility.
+
+- Picture numbering begins at ZERO!
+
+- Notification will come after issuing a command.
+
+Example
+--------------------------------------------------------------------
+
+'>' indicates commands from the program to gPhoto
+'<' indicates commands from gPhoto to the program
+
+To put gphoto2 into a daemon mode, you must run it as "gphoto2 -S".
+You can open a pipe and then read/write to that file descriptor.
+
+here is a session:
+
+> notification_set 1
+< OK
+> camera_list
+< OK
+< 3
+< Olympus D-220L
+< Kodak DC210+
+< Epson 650Z
+> camera_Set "Epson 650Z"
+< OK
+> folder_list "/"
+< OK
+< 5
+< birthday/
+< PIC0001.JPG
+< PIC0002.JPG
+< PIC0003.JPG
+< PIC0004.JPG
+> folder_set "/"
+< OK
+> file_count
+< OK
+< 4
+> file_get 0 "/home/scottf" "file0.jpg"
+< confirm "Files exists. Overwrite?"
+> confirm 1
+< OK
+< /home/scottf/file0.jpg
+> file_get 1 "/home/scottf" "file1.jpg"
+< OK
+< /home/scottf/file1.jpg
+> file_get 2 "/home/scottf" "file2.jpg"
+< confirm "File exists. Overwrite?"
+> confirm 0
+< ERROR "Did not save /home/scottf/file2.jpg"
+
+Commands to the gPhoto daemon
+--------------------------------------------------------------------
+setting_set key value
+ Description: Saves the value of "key" as "value"
+ Outputs: OK or ERROR
+
+ Example: > setting_set "foo" "bar"
+ < OK
+
+setting_get key
+ Description: Retrieves the value of "key"
+ Outputs: OK or ERROR
+ if OK, followed by the value of the key
+
+ Example: > setting_get "foo"
+ < OK
+ < bar
+
+notification_set number
+ Description: Turns on (value = 1) or off (value = 0) notification
+ Default: 0
+ Outputs: OK or ERROR
+
+ Example: > debug_set 1
+ < OK
+
+
+debug_set number
+ Description: Turns on (value = 1) or off (value = 0) debugging
+ Default: 0
+ Outputs: OK or ERROR
+
+ Example: > debug_set 1
+ < OK
+
+camera_list
+ Description: Lists the number of cameras and all the camera model names
+ Outputs: OK or ERROR
+ if OK, followed by number of cameras, followed by camera models
+
+ Example: > camera_count
+ < OK
+ < 3
+ < Olympus D-220L
+ < Kodak DC210+
+ < Epson 650Z
+camera_set name
+ Description: Sets the camera name as the chosen camera model
+ Outputs: OK or ERROR
+
+ Example: > camera_set "Canon S10"
+ < OK
+
+camera_abilities [name]
+ Description: Determines the camera's abilities. The camera name is optional.
+ If not specified, uses currently set camera.
+ Please reference gphoto2-datatypes.h for available abilities and
+ descriptions.
+ Outputs: OK or ERROR
+ if OK, followed by number of abilities, followed by abilities
+
+ Example: > camera_abilities "Olympus 3030Z"
+ < OK
+ < 13
+ < "usb"=1
+ < "parallel"=0
+ < "ieee1394"=0
+ < "serial"=1
+ < "speed"=9600
+ < "speed"=19200
+ < "speed"=38400
+ < "speed"=57600
+ < "speed"=115200
+ < "file_delete"=1
+ < "file_preview"=1
+ < "file_put"=0
+ < "file_capture"=1
+ < "config"=1
+
+folder_list path
+ Description: Display the contents of the folder path on the camera.
+ Outputs: OK or ERROR
+ if OK, followed by number of entries, followed by the list.
+ an entry in the list has a trailing '/' if it is a folder.
+
+ Example: > folder_list "/"
+ < OK
+ < 4
+ < birthday/
+ < mountains/
+ < PIC001.JPG
+ < PIC002.JPG
+
+folder_set path
+ Description: Sets the current folder.
+ Outputs: OK or ERROR
+
+ Example: > folder_set "/"
+ < OK
+
+file_count
+ Description: Determines the number of files (pictures, sounds, etc.) in the
+ current folder.
+ Outputs: OK or ERROR
+ if OK, followed by number of files
+
+ Example: > file_count
+ < OK
+ < 12
+
+file_get number [directory] [filename]
+ Description: Downloads picture #number from the current folder
+ * if directory is specified, picture is saved to that directory using
+ the camera-recommended filename.
+ * if directory and filename is specified, picture is saved as filename
+ in the directory.
+ Outputs: OK or ERROR
+ if OK:
+ if just number is specified:
+ followed by mime-type, size of picture, and picture data
+ if directory and/or filename is specified:
+ followed by path and filename of picture
+
+ Example: > file_get 12
+ < OK
+ < image/jpeg
+ < 98012
+ < image data ... . . . ....
+ or
+ > file_get 12 "/home/scottf/"
+ < OK
+ < /home/scottf/PIC0012.JPG
+ or
+ > file_get 12 "/home/scottf/" "picture12.jpg"
+ < OK
+ < /home/scottf/picture12.jpg
+
+file_get_preview number [directory] [filename]
+ Description: Downloads preview (thumbnail) #number from the current folder
+ * if directory is specified, preview is saved to that directory using
+ the camera-recommended filename.
+ * if directory and filename is specified, picture is saved as filename
+ in the directory.
+ Outputs: OK or ERROR
+ if OK:
+ if just number is specified:
+ followed by mime-type, size of preview, and preview data
+ if directory and/or filename is specified:
+ followed by path and filename of preview
+
+ Example: > file_get_preview 12
+ < OK
+ < image/jpeg
+ < 12453
+ < image data ... . . . ....
+ or
+ > file_get_preview 12 "/home/scottf/"
+ < OK
+ < /home/scottf/THUMB0012.JPG
+ or
+ > file_get_preview 12 "/home/scottf/" "thumbnail12.jpg"
+ < OK
+ < /home/scottf/thumbnail12.jpg
+
+file_put filename
+ Description: Uploads the file specified by filename to the camera into the current folder
+ Outputs: OK or ERROR
+
+ Example: > file_put /home/scottf/picture02.jpg
+ < OK
+
+file_delete number
+ Description: Deletes the file #number in the current folder
+ Outputs: OK or ERROR
+
+ Example: > file_delete 12
+ < OK
+config_get
+ Description: Gets a set of meta-widgets that describe camera configuration options.
+ (needs explanation on structure)
+ widget-type "label" value [min max step | choice]
+ * WINDOW and PAGE are containers. any widget coming after that is put into
+ the container.
+ * value is a number, except for TEXT (then value requires double-quotes)
+ Outputs: OK or ERROR
+ if OK, followed by number of lines, followed by the meta-widgets
+
+ Example: > config_get
+ < OK
+ < 15
+ < WINDOW "Olympus Configuration"
+ < PAGE "Quality"
+ < RADIO "Resolution" 0 "Standard"
+ < RADIO "Resolution" 1 "High"
+ < RADIO "Resolution" 0 "Best"
+ < RADIO "Compression" 0 "None"
+ < RADIO "Compression" 0 "Low"
+ < RADIO "Compression" 1 "High"
+ < PAGE "Miscellaneous"
+ < RANGE "Zoom" 3.00
+ < TEXT "Camera Name" "Scott's Olympus D-220L"
+ < MENU "Flash Setting" 0 "Red-eye reduction"
+ < MENU "Flash Setting" 1 "Auto"
+ < MENU "Flash Setting" 0 "Forced"
+ < MENU "Flash Setting" 0 "Blind me"
+
+config_set "label"=[choice|value] "label"=[choice|value] "label"=[choice|value] ...
+ Description: Sets the camera configuration
+ * if RADIO or MENU, "label"="choice"
+ * for others, "label"=value
+ Outputs: OK
+
+ Example: > config_set "Resolution"="Best" "Compression"="None" "Zoom"=0.00
+ < OK
+
+capture_to_disk path [filename]
+ Description: Causes camera to press the shutter, then download and save to disk.
+ filename is optional
+ Outputs: OK or ERROR
+ if OK, followed by picture filename
+
+ Example: > capture_to_disk "/home/scottf"
+ < OK
+ < /home/scottf/PIC00012.JPG
+ or
+ > capture_to_disk "/home/scottf" "livepicture.jpg"
+ < OK
+ < /home/scottflivepicture.jpg
+
+about
+ Description: Displays information about the camera library
+ Outputs: OK or ERROR
+ if OK, followed by number of lines, then camera library information
+
+ Example: > about
+ < OK
+ < 3
+ < Scott <scottf@unr.edu>
+ < Camera library for foo-bar cameras
+ < These cameras are kinda silly.
+
+manual
+ Description: Displays the camera library manual
+ Outputs: OK or ERROR
+ if OK, followed by number of lines, then camera library manual
+
+ Example: > manual
+ < OK
+ < 5
+ < This camera library is a good library.
+ < It does not support capturing image though.
+ < The company that make the camera helped
+ < by providing information about the communication
+ < protocol.
+
+summary
+ Description: Displays the camera summary
+ Outputs: OK or ERROR
+ if OK, followed by number of lines, then camera summary
+
+ Example: > summary
+ < OK
+ < 3
+ < Battery Percent = 65%
+ < Free memory is 31Meg
+ < My height is around 6'4"
+
+gPhoto notifications
+--------------------------------------------------------------------
+These depend on whether or not "notification_set" has been called.
+By default, they are turned off. Use "notification_set 1" to turn them
+on.
+
+progress number
+ Description: Should display the percent done in the current operation
+ Response: none
+ Example: < progress 50
+
+message "string"
+ Description: Should display a message to the user (pop-up window)
+ Response: none
+
+ Example: < message "Don't you want to be a pepper too?"
+
+status "string"
+ Description: Should display the status to the user (status bar)
+ Response: none
+
+ Example: < status "Done with current operation."
+
+confirm "string"
+ Description: Should display a "yes" or "no" confirmation box to the user.
+ Response: confirm 0 (no), confirm 1 (yes), or ERROR
+
+ Example: < confirm "Do you want to delete that file?"
+ > confirm 1
+ (gPhoto will not answer this).