I just started learning C++ in earnest about a month ago. This weekend I felt like I knew enough to start looking at Python C extensions, so I wrote one to control the pan and tilt functions of my Logitech Orbit . I used this camera previously for my OLPC telepresence project. There's already a similar module out there, called lpantilt , that does this using Cython . But, I wanted to take a crack at it myself and do it with straight C. #include <Python.h> #include <errno.h> #include <sys/ioctl.h> #include <fcntl.h> #include "linux/videodev2.h" #include "uvcvideo.h" static int pantilt(int pan, int tilt, int reset) { struct v4l2_ext_control xctrls[2]; struct v4l2_ext_controls ctrls; if (reset) { xctrls[0].id = V4L2_CID_PAN_RESET; xctrls[0].value = 1; xctrls[1].id = V4L2_CID_TILT_RESET; xctrls[1].value = 1; } else { xctrls[0].id = V4L2_CID_PAN_RELATIVE; xctrls[0].value = pan; xctrls[1].id = V4L2_CID_TILT_RELATIVE;
programming, electronics, photography, and tinkering