git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@1782 67ed7778-7388-44ab-90cf-0a291f65f57c
373 lines
10 KiB
Plaintext
373 lines
10 KiB
Plaintext
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).
|