Reto Schneider [Tue, 20 Mar 2012 18:55:27 +0000 (19:55 +0100)]
Merge remote-tracking branch 'origin/unstable' into rettichschnidi
Antonio Ospite [Mon, 19 Mar 2012 21:07:16 +0000 (22:07 +0100)]
cmake: disable optimizations in debug builds
Reto Schneider [Sun, 18 Mar 2012 22:45:48 +0000 (23:45 +0100)]
Link to all ffmpeg libraries, not just to avdevice.
Antonio Ospite [Sat, 17 Mar 2012 09:17:19 +0000 (10:17 +0100)]
am7xxx: fix a typo, s/it's/its/
Reto Schneider [Fri, 16 Mar 2012 19:46:29 +0000 (20:46 +0100)]
Merge branch 'unstable' into rettichschnidi
Reto Schneider [Fri, 16 Mar 2012 19:36:05 +0000 (20:36 +0100)]
Purely cosmetic change: add missing newline
Reto Schneider [Fri, 9 Mar 2012 18:47:54 +0000 (19:47 +0100)]
Use commas to separate different pico projector names.
Antonio Ospite [Thu, 15 Mar 2012 14:30:28 +0000 (15:30 +0100)]
examples: add a am7xxx-play example program
am7xxx-play is a simple player based on ffmpeg/libav which displays the
output on a am7xxx device. It can be used to capture the desktop screen,
or video from a v4l2 device, or from any other device supported by
libavdevice including video files.
However it is to note that am7xxx-play displays the output as fast as it
can so it is not reliable when used to display video files directly.
Antonio Ospite [Thu, 15 Mar 2012 13:11:28 +0000 (14:11 +0100)]
am7xxx: cosmetics, remove some useless double spaces
Antonio Ospite [Thu, 15 Mar 2012 13:05:25 +0000 (14:05 +0100)]
am7xxx: add am7xxx_calc_scaled_image_dimensions()
This function is useful to calculate the dimensions of an image which
will be sent with am7xxx_send_image() in a way that keeps the original
image aspect ratio.
Antonio Ospite [Thu, 8 Mar 2012 13:35:36 +0000 (14:35 +0100)]
contrib: add PicoPix 1020 USB IDs to 55-am7xxx.rules
Antonio Ospite [Thu, 8 Mar 2012 13:22:20 +0000 (14:22 +0100)]
picoproj: move it to an example/ directory
We plan on adding some more useful examples in the future, so it is
better to have them all in their separate directory in order to make the
project structure easier to understand.
Antonio Ospite [Wed, 7 Mar 2012 22:32:29 +0000 (23:32 +0100)]
cmake: split out the maintenance targets to a new cmake module
This makes the top level CMakeLists.txt easier to follow.
Antonio Ospite [Wed, 7 Mar 2012 22:12:30 +0000 (23:12 +0100)]
doc: add an install target
For now only Unix-style destinations are supported, we will abstract
them out when the need raises.
Antonio Ospite [Wed, 7 Mar 2012 16:48:49 +0000 (17:48 +0100)]
am7xxx, doc: add Doxygen documentation for the public API
Antonio Ospite [Tue, 6 Mar 2012 16:28:57 +0000 (17:28 +0100)]
am7xxx: rename the 'size' argument of am7xxx_send_image() to 'image_size'
Antonio Ospite [Thu, 1 Mar 2012 22:47:00 +0000 (23:47 +0100)]
cosmetics: remove some unneeded white spaces
Antonio Ospite [Thu, 1 Mar 2012 22:05:50 +0000 (23:05 +0100)]
CmakeLists.txt: add some hardening options to CMAKE_C_FLAGS
These options (-fstack-protector --param=ssp-buffer-size=4) should not
affect the current code but it is useful to have them here for
reference.
Antonio Ospite [Thu, 1 Mar 2012 20:52:06 +0000 (21:52 +0100)]
am7xxx: introduce a new am7xxx_device_info type
This is in order to abstract the properties of an am7xxx device, for now
only native_width and native_height are supported.
Antonio Ospite [Wed, 29 Feb 2012 22:54:22 +0000 (23:54 +0100)]
HACKING.asciidoc: mention how to use valgrind
Antonio Ospite [Wed, 29 Feb 2012 22:31:14 +0000 (23:31 +0100)]
picoproj: add an option to set the log level
Antonio Ospite [Wed, 29 Feb 2012 22:29:12 +0000 (23:29 +0100)]
am7xxx: use the logging infrastructure
Also make debug_dump_devinfo_header() and trace_dump_buffer() stubbed
out at compile time when DEBUG is not defined, just to save some cycles
in the data sending routines when in production.
Antonio Ospite [Tue, 28 Feb 2012 22:51:37 +0000 (23:51 +0100)]
am7xxx: add a simple logging infrastructure
Antonio Ospite [Tue, 28 Feb 2012 21:37:06 +0000 (22:37 +0100)]
am7xxx: track the context in am7xxx_device
This will be used to retrieve the context in functions operating on
devices, in order to use the log calls which are going to be added.
Antonio Ospite [Tue, 28 Feb 2012 20:57:45 +0000 (21:57 +0100)]
am7xxx: pass the context to add_new_device() and find_device()
This is preparation for when we will track the context in am7xxx_device
as well, and as a side effect those functions now look more consistent
with the other ones.
Antonio Ospite [Tue, 28 Feb 2012 20:44:34 +0000 (21:44 +0100)]
am7xxx: silent a warning enabled by 'sparse' about an uninitialized variable
src/am7xxx.c:423:6: warning: ‘ret’ may be used uninitialized in this function [-Wuninitialized]
If libusb_get_device_list() returned 0 we didn't have 'ret' properly
initialized.
Antonio Ospite [Wed, 29 Feb 2012 22:33:13 +0000 (23:33 +0100)]
TODO: remove the entry about multi-device support
This is done now, even if not tested with actual hardware...
Antonio Ospite [Thu, 23 Feb 2012 17:05:48 +0000 (18:05 +0100)]
am7xxx: add multi-device support
Allow operating on more than one am7xxx device at the same time.
Antonio Ospite [Thu, 23 Feb 2012 15:23:41 +0000 (16:23 +0100)]
TODO: handle signals in picoproj and do the proper cleanup
Antonio Ospite [Wed, 22 Feb 2012 12:14:24 +0000 (13:14 +0100)]
am7xxx: support other devices which talk the same protocol
Add support for the Philips/Sagemcom PicoPix 1020, which has different
USB IDs.
Antonio Ospite [Tue, 21 Feb 2012 13:48:06 +0000 (14:48 +0100)]
cmake: fix libusb search
Adjust cmake test for libusb library so that the compatible libusb for
freebsd can be found. Since freebsd's libusb header are located in
a different place from libusb-1.0, the includes in the source code must
be adjusted using #include <libusb.h>. Actually those new include
statements are those that libusb-1.0 really expects to be used (see
libusb-1.0.pc cflags to verify this).
Taken from libfreenect commit
8219750df3a13501626a7f7f54d24afb8e64ec3f
https://github.com/OpenKinect/libfreenect/commit/
8219750df3a13501626a7f7f54d24afb8e64ec3f
Antonio Ospite [Tue, 21 Feb 2012 12:19:28 +0000 (13:19 +0100)]
am7xxx: change am7xx_device definition, better buffer handling
Add a new data type for am7xxx devices and make it hold a buffer, this
way allocating a new buffer for each communication can be avoided; also
move this definition to am7xxx.c to avoid exposing details about libusb
in am7xxx.h.
Antonio Ospite [Thu, 23 Feb 2012 14:26:44 +0000 (15:26 +0100)]
am7xxx: initialize the 'transferred' variable before USB transfers
This makes sure the subsequent error messages print a sane value when
libusb fails without touching the variable.
Antonio Ospite [Tue, 21 Feb 2012 18:55:24 +0000 (19:55 +0100)]
README.asciidoc: Acer C120 is not based on AM7XXX
Dhanraj Rajput has one of these and he figured out that the
communication here is based on the SCSI Pass-Trough protocol, not on
plain USB bulk transfers.
Antonio Ospite [Mon, 20 Feb 2012 20:31:36 +0000 (21:31 +0100)]
README.asciidoc: rephrase the part about USB IDs
Those devices does not always use the Actions Micro Vendor ID in display
mode, some Philips ones don't for instance, so tell that the IDs
mentioned are just examples.
Also mention that usb-modeswitch perform the mode change automatically
now.
Antonio Ospite [Mon, 20 Feb 2012 16:51:11 +0000 (17:51 +0100)]
README.asciidoc: fix a typo s/trasfers/transfers/
Antonio Ospite [Mon, 20 Feb 2012 16:50:06 +0000 (17:50 +0100)]
README.asciidoc: mention Thomas Baquet's project and fix some style
Antonio Ospite [Mon, 20 Feb 2012 12:44:23 +0000 (13:44 +0100)]
contrib: add some udev rules to let normal users access the devices
Make any user in the "plugdev" group be able to use an am7xxx device,
not just the root user like it is now.
Antonio Ospite [Mon, 20 Feb 2012 12:28:29 +0000 (13:28 +0100)]
README.asciidoc: highlight USB IDs by using an unformatted style
Antonio Ospite [Wed, 25 Jan 2012 14:50:41 +0000 (15:50 +0100)]
Don't use fixed size integer types in the public header
The rationale behind this is that a user of the library is interested in
the meaning of the data passed, not on its storage size.
Antonio Ospite [Wed, 25 Jan 2012 14:44:24 +0000 (15:44 +0100)]
Make struct am7xxx_header and related types private
There is not need for struct am7xxx_header, am7xxx_packet_type, and the
other headers structs to be in the public am7xxx.h file.
Antonio Ospite [Wed, 25 Jan 2012 14:26:44 +0000 (15:26 +0100)]
Implement am7xxx_get_device_info()
Add support for packet type 0x01, which can be used to query device
information like the native width and native height.
Introduce also read_data(), read_header(), unserialize_header()
which are needed by am7xxx_get_device_info()
Antonio Ospite [Wed, 25 Jan 2012 11:24:53 +0000 (12:24 +0100)]
Add info about transfer direction in debug messages, add newline
Antonio Ospite [Tue, 24 Jan 2012 16:15:50 +0000 (17:15 +0100)]
picoproj: make the -f option mandatory
Passing an image file name is now mandatory, before that the user could
be induced into thinking that a command like the following was sending
an image:
./picoproj -W 800 -H 480 -F 1 some_image.jpg
while the actually intended command line was:
./picoproj -W 800 -H 480 -F 1 -f some_image.jpg
^^
Note the missing -f in the first command line.
Antonio Ospite [Tue, 24 Jan 2012 15:43:23 +0000 (16:43 +0100)]
Implement am7xxx_set_power_mode()
The AM7XXX_PACKET_TYPE_POWER expects the power mode to be specified in
the header_data section of the header like a value between 0 and 4, but
with one bit per field, each field being a little-endian 32 bit integer.
Antonio Ospite [Tue, 24 Jan 2012 15:03:33 +0000 (16:03 +0100)]
Indent header_data fields when dumping headers
Antonio Ospite [Tue, 24 Jan 2012 14:45:00 +0000 (15:45 +0100)]
Document in_80chars() and remove reference_image_header[]
Antonio Ospite [Tue, 24 Jan 2012 14:39:24 +0000 (15:39 +0100)]
Dump the data only in DEBUG builds
Also use -Werror only in DEBUG builds, otherwise normal builds fail with:
src/am7xxx.c:42:13: error: ‘dump_header’ defined but not used [-Werror=unused-function]
src/am7xxx.c:73:13: error: ‘dump_buffer’ defined but not used [-Werror=unused-function]
Antonio Ospite [Tue, 24 Jan 2012 13:55:54 +0000 (14:55 +0100)]
Add a HACKING.asciidoc file
Give some info about how to make a debug build and mention the coding
style used in the project, so new contributors know how to behave.
Antonio Ospite [Tue, 24 Jan 2012 12:38:35 +0000 (13:38 +0100)]
Serialize struct am7xxx_header properly before sending it on the wire
That is in order to:
1. keep data in the structs always in the host native byte order, this
is more natural and less error prone as we might forget to use
htole32() when setting struct fields or le32toh() when accessing
them;
2. be more portable: this way the buffer sent to the wire is
independent of struct alignments or paddings introduced by
compilers or required by a particular architecture.
Antonio Ospite [Tue, 24 Jan 2012 09:41:47 +0000 (10:41 +0100)]
picoproj: exit with success when the -h option is used
Antonio Ospite [Tue, 24 Jan 2012 09:27:25 +0000 (10:27 +0100)]
Document usb_modeswitch command to change the device mode
Reto Schneider [Mon, 23 Jan 2012 16:13:15 +0000 (17:13 +0100)]
Renamed AM7XXX_IMAGE_FORMAT_YUV_NV12 to AM7XXX_IMAGE_FORMAT_NV12.
Reto Schneider [Sat, 21 Jan 2012 15:22:04 +0000 (16:22 +0100)]
Added support for imageformat YUV - NV12
Reto Schneider [Sat, 21 Jan 2012 15:15:50 +0000 (16:15 +0100)]
Stop build process if a warning shows up
Reto Schneider [Sun, 15 Jan 2012 23:03:42 +0000 (00:03 +0100)]
corrected some spelling mistakes
Antonio Ospite [Sun, 15 Jan 2012 21:58:15 +0000 (22:58 +0100)]
Relicense under GPLv2+
This could make sharing code with a linux kernel driver easier.
Antonio Ospite [Sun, 15 Jan 2012 20:12:14 +0000 (21:12 +0100)]
Add a TODO file
Antonio Ospite [Sun, 15 Jan 2012 20:11:58 +0000 (21:11 +0100)]
Add a README.asciidoc
Antonio Ospite [Sun, 15 Jan 2012 00:40:19 +0000 (01:40 +0100)]
Fix Copyright year
Antonio Ospite [Sun, 15 Jan 2012 00:39:15 +0000 (01:39 +0100)]
Add GPL-3 license text
Antonio Ospite [Fri, 13 Jan 2012 12:43:59 +0000 (13:43 +0100)]
Rename the header_len field to header_data_len
This matches better match its meaning, it is not the length of the whole
header, but only of the header_data section.
Antonio Ospite [Fri, 13 Jan 2012 12:37:32 +0000 (13:37 +0100)]
Make including am7xxx.h in C++ code safe
Antonio Ospite [Fri, 13 Jan 2012 02:20:14 +0000 (03:20 +0100)]
Use Cmake and make libam7xxx a shared library
Also move the source code to a src/ subdirectory in order to avoid
cluttering the project root dir.
Antonio Ospite [Thu, 12 Jan 2012 12:46:14 +0000 (13:46 +0100)]
Split am7xxx functions and definitions
This is the base for the libam7xxx shared library.
Antonio Ospite [Sat, 7 Jan 2012 02:16:17 +0000 (03:16 +0100)]
Add backup and changelog rules to Makefile
Antonio Ospite [Sat, 7 Jan 2012 01:53:08 +0000 (02:53 +0100)]
Add initial support for USB output communication
Antonio Ospite [Sat, 7 Jan 2012 00:46:38 +0000 (01:46 +0100)]
Add support for sending an actual JPEG image
Antonio Ospite [Sat, 7 Jan 2012 00:45:20 +0000 (01:45 +0100)]
Image size is always unsigned
Antonio Ospite [Sat, 7 Jan 2012 00:44:01 +0000 (01:44 +0100)]
Wrap lines when dumping big buffers
Antonio Ospite [Fri, 6 Jan 2012 23:03:55 +0000 (00:03 +0100)]
Add some command line options
This will make it easier to experiment with different image size and
format.
Antonio Ospite [Fri, 6 Jan 2012 23:03:16 +0000 (00:03 +0100)]
Minor Makefile cleanup
Antonio Ospite [Fri, 6 Jan 2012 21:51:02 +0000 (22:51 +0100)]
Rewrite to support different packet types
Antonio Ospite [Sat, 7 Jan 2012 00:58:10 +0000 (01:58 +0100)]
Fix a typo
Antonio Ospite [Fri, 6 Jan 2012 17:16:37 +0000 (18:16 +0100)]
Initial import