git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@2235 67ed7778-7388-44ab-90cf-0a291f65f57c
47 lines
1.6 KiB
Plaintext
47 lines
1.6 KiB
Plaintext
If you want to hack on gphoto2 (or a camera driver for gphoto2), please follow some rules to make our work easier:
|
|
|
|
camlib
|
|
------
|
|
|
|
Camera libraries are often very sensitive to changes. Therefore, before you commit any changes, double check with the author that your changes won't break the driver.
|
|
|
|
If you want to write a driver for gphoto2, the easiest way to do so would be to copy over the contents of camlibs/template and fill in your code.
|
|
|
|
Use something like CHECK_RESULT (see for example libgphoto2/filesys.c).
|
|
|
|
Let's say you write a driver called sillycam. Please set up a file called sillycam.c containing all gphoto2-specific code (like camera_init) and another two files called library.c and library.h containing the "magic", that is all gp_port_[read,write] functions and the basic logic of the communication. This makes it easier for us to adapt your code if anything should change in the gphoto2-API.
|
|
|
|
Use the port provided by camera->port.
|
|
|
|
Use the filesystem provided by camera->fs and set up the callbacks so that libgphoto2 can cache listings and file-information.
|
|
|
|
|
|
libgphoto2
|
|
----------
|
|
|
|
If you add code, use the coding style of that file. This is, code like
|
|
|
|
int
|
|
my_func (int arg)
|
|
{
|
|
int var, res;
|
|
|
|
/*
|
|
* This is a multiline
|
|
* comment. Use TAB for
|
|
* indentation!
|
|
*/
|
|
res = gp_some_action (var);
|
|
|
|
/* This is a simple one-line comment */
|
|
if (res < 0) {
|
|
gp_debug_printf (GP_DEBUG_HIGH, "core", "Error happened!");
|
|
return (res);
|
|
}
|
|
|
|
return (GP_OK);
|
|
}
|
|
|
|
Please always check the return value of gp_-functions! We defined some handy macros all over the place (like CHECK_RESULT) - by using those, you'll avoid lots of if {} else {}.
|
|
|