libam7xxx.git
9 years agoexamples: the examples were always meant to be all under GPL-3+
Antonio Ospite [Mon, 7 Jul 2014 13:53:22 +0000 (15:53 +0200)]
examples: the examples were always meant to be all under GPL-3+

9 years agoRelease version 0.1.5 v0.1.5
Antonio Ospite [Thu, 15 May 2014 10:44:07 +0000 (12:44 +0200)]
Release version 0.1.5

9 years agoHACKING.asciidoc: update Windows cross-build section to use libav10
Antonio Ospite [Thu, 15 May 2014 10:33:41 +0000 (12:33 +0200)]
HACKING.asciidoc: update Windows cross-build section to use libav10

9 years agoam7xxx-play: port to libav10
Antonio Ospite [Mon, 12 May 2014 21:02:28 +0000 (23:02 +0200)]
am7xxx-play: port to libav10

9 years agoUpdate email address and copyright years
Antonio Ospite [Thu, 8 May 2014 10:59:02 +0000 (12:59 +0200)]
Update email address and copyright years

9 years agocontrib/performance/README: fix some typos
Antonio Ospite [Thu, 8 May 2014 10:37:44 +0000 (12:37 +0200)]
contrib/performance/README: fix some typos

9 years agocosmetics: remove some trailing spaces
Antonio Ospite [Thu, 8 May 2014 10:27:23 +0000 (12:27 +0200)]
cosmetics: remove some trailing spaces

9 years agoREADME.asciidoc: update instructions to test libam7xxx on Windows
Antonio Ospite [Thu, 8 May 2014 10:26:04 +0000 (12:26 +0200)]
README.asciidoc: update instructions to test libam7xxx on Windows

9 years agoHACKING.asciidoc: update the build instructions for Windows
Antonio Ospite [Thu, 8 May 2014 10:15:16 +0000 (12:15 +0200)]
HACKING.asciidoc: update the build instructions for Windows

9 years agoam7xxx: don't use partial designated initializers
Antonio Ospite [Thu, 8 May 2014 09:37:34 +0000 (11:37 +0200)]
am7xxx: don't use partial designated initializers

Compilers may warn about missing fields in initializers when more checks
are enabled with STRICT_COMPILATION_CHECKS=ON:

  .../src/am7xxx.c:1131:31: error: missing field 'direction' initializer [-Werror,-Wmissing-field-initializers]
          struct am7xxx_header h = { 0 };
                                       ^
  1 error generated.

9 years agoam7xxx: add a portable_endian.h
Antonio Ospite [Thu, 8 May 2014 09:22:31 +0000 (11:22 +0200)]
am7xxx: add a portable_endian.h

Add a portable_endian.h to define platform specific implementations for
the functions found on most unix-like systems in endian.h.

9 years agoMerge branch 'zoom-tele-picopix'
Antonio Ospite [Wed, 7 May 2014 19:40:44 +0000 (21:40 +0200)]
Merge branch 'zoom-tele-picopix'

9 years agoam7xxx-play: allow setting the AM7XXX_ZOOM_TELE zoom mode
Antonio Ospite [Wed, 7 May 2014 16:05:11 +0000 (18:05 +0200)]
am7xxx-play: allow setting the AM7XXX_ZOOM_TELE zoom mode

9 years agopicoproj: allow setting the AM7XXX_ZOOM_TELE zoom mode
Antonio Ospite [Wed, 7 May 2014 16:04:16 +0000 (18:04 +0200)]
picoproj: allow setting the AM7XXX_ZOOM_TELE zoom mode

9 years agoam7xxx: implement the set_zoom_mode() operation for the PicoPix 2055
Antonio Ospite [Wed, 7 May 2014 16:01:58 +0000 (18:01 +0200)]
am7xxx: implement the set_zoom_mode() operation for the PicoPix 2055

Apparently AM7XXX_ZOOM_ORIGINAL and AM7XXX_ZOOM_TELE are the only
supported zoom modes on the PicoPix 2055.

9 years agoam7xxx: add support for a new AM7XXX_ZOOM_TELE zoom mode
Antonio Ospite [Wed, 7 May 2014 15:59:30 +0000 (17:59 +0200)]
am7xxx: add support for a new AM7XXX_ZOOM_TELE zoom mode

Some PicoPix projectors support a different zoom mode than the Acer
C110, in this mode the image uses a different lens distortion but the
frame aspect ratio does not change.

9 years agoam7xxx: add a msleep() implementation in tools.[ch]
Antonio Ospite [Wed, 7 May 2014 15:46:50 +0000 (17:46 +0200)]
am7xxx: add a msleep() implementation in tools.[ch]

10 years agoMerge branch 'powermode-PicoPix2055'
Antonio Ospite [Wed, 4 Dec 2013 10:32:26 +0000 (11:32 +0100)]
Merge branch 'powermode-PicoPix2055'

10 years agoam7xxx: add support for setting the power mode on the PicoPix 2055
Antonio Ospite [Thu, 28 Nov 2013 14:23:04 +0000 (15:23 +0100)]
am7xxx: add support for setting the power mode on the PicoPix 2055

10 years agoam7xxx: dump fields of unknown packet types
Antonio Ospite [Thu, 28 Nov 2013 14:13:12 +0000 (15:13 +0100)]
am7xxx: dump fields of unknown packet types

Allow dumping the payload fields as generic header_data, this is useful
when the packet type cannot be handled explicitly because the meaning of
the data is not known.

10 years agoam7xxx: factor out a send_command() function
Antonio Ospite [Thu, 28 Nov 2013 13:57:09 +0000 (14:57 +0100)]
am7xxx: factor out a send_command() function

Some packet types do not carry any header_data and thus they can be seen
as commands issued to the device.

Add a send_command() function to handle such packet types, others of
them are going to be added in future commits.

10 years agoam7xxx: switch from device quirks to device ops
Antonio Ospite [Thu, 28 Nov 2013 12:49:52 +0000 (13:49 +0100)]
am7xxx: switch from device quirks to device ops

Define device specific operations in order to allow supporting different
implementation of a given operation by different device models.

For instance this will be used to add an alternative implementation of
the 'set_power_mode' operation for the Philips/SagemCom PicoPix 2055
projector.

For now device specific callbacks are used only for the 'set_power_mode'
and 'set_zoom_mode' operations.

10 years agodoc/lsusb_dumps: add lsusb_Philips-PicoPix-2055.log
Antonio Ospite [Mon, 18 Nov 2013 13:41:42 +0000 (14:41 +0100)]
doc/lsusb_dumps: add lsusb_Philips-PicoPix-2055.log

10 years agodoc/lsusb_dumps: strip trailing spaces
Antonio Ospite [Mon, 18 Nov 2013 13:38:26 +0000 (14:38 +0100)]
doc/lsusb_dumps: strip trailing spaces

This makes it easier to compare different files with diff.

10 years agodoc/man: misc fixes to man pages
Antonio Ospite [Mon, 18 Nov 2013 13:35:37 +0000 (14:35 +0100)]
doc/man: misc fixes to man pages

The help text in particular was copied from the output of the '-h'
option which was referring to "this help message", this was OK on the
command line but it sounds a little off in a man page.

10 years agoCMakeLists.txt: define DEBUG=1 only when CMAKE_BUILD_TYPE=Debug
Antonio Ospite [Wed, 30 Oct 2013 09:41:06 +0000 (10:41 +0100)]
CMakeLists.txt: define DEBUG=1 only when CMAKE_BUILD_TYPE=Debug

When building with CMAKE_BUILD_TYPE=RelWithDebInfo the development debug
code should not be enabled, so don't define DEBUG=1 in DEBUG_FLAGS as
this will end up being both in CMAKE_C_FLAGS_DEBUG and
CMAKE_C_FLAGS_RELWITHDEBINFO.

Instead define DEBUG=1 only for CMAKE_C_FLAGS_DEBUG so it gets used only
when CMAKE_BUILD_TYPE=Debug.

10 years agoHACKING.asciidoc: fix the url of the avcodec_encode_video2 patch
Antonio Ospite [Sun, 13 Oct 2013 13:50:11 +0000 (15:50 +0200)]
HACKING.asciidoc: fix the url of the avcodec_encode_video2 patch

10 years agoam7xxx-play: cosmetics, fix coding style
Antonio Ospite [Sat, 7 Sep 2013 15:30:28 +0000 (17:30 +0200)]
am7xxx-play: cosmetics, fix coding style

10 years agoam7xxx: add quirks for Philips/Sagemcom PicoPix 2055
Antonio Ospite [Sat, 3 Aug 2013 13:14:34 +0000 (15:14 +0200)]
am7xxx: add quirks for Philips/Sagemcom PicoPix 2055

The Philips/Sagemcom PicoPix 2055 does not support some operations:
  - setting the power mode confuses the firmware
  - setting the zoom mode has no effect whatsoever

Disable these operations.

Thanks-to: Luca Bompani

10 years agoNEWS: fix a typo s/mode/more/
Antonio Ospite [Sun, 28 Jul 2013 21:22:15 +0000 (23:22 +0200)]
NEWS: fix a typo s/mode/more/

10 years agoRelease version 0.1.4 v0.1.4
Antonio Ospite [Sun, 28 Jul 2013 09:15:18 +0000 (11:15 +0200)]
Release version 0.1.4

10 years agocontrib: add some benchmarking data about am7xxx_send_image_async
Antonio Ospite [Sat, 27 Jul 2013 23:11:42 +0000 (01:11 +0200)]
contrib: add some benchmarking data about am7xxx_send_image_async

10 years agoam7xxx-play: fix a crash when a packet cannot be encoded
Antonio Ospite [Sat, 27 Jul 2013 22:50:30 +0000 (00:50 +0200)]
am7xxx-play: fix a crash when a packet cannot be encoded

10 years agoam7xxx-play: don't initialize variables when not needed
Antonio Ospite [Sat, 27 Jul 2013 22:38:13 +0000 (00:38 +0200)]
am7xxx-play: don't initialize variables when not needed

10 years agoTODO: mention that atoi() must go away
Antonio Ospite [Sat, 27 Jul 2013 22:19:04 +0000 (00:19 +0200)]
TODO: mention that atoi() must go away

10 years agopicoproj: get rid of exit(), return more meaningful values to userspace
Antonio Ospite [Sat, 27 Jul 2013 22:10:08 +0000 (00:10 +0200)]
picoproj: get rid of exit(), return more meaningful values to userspace

Maybe the values returned by picoproj will never be used, but it is
better to use a clean style in example code.

10 years agoHACKING.asciidoc: add commands to compile with clang
Antonio Ospite [Sat, 27 Jul 2013 21:47:26 +0000 (23:47 +0200)]
HACKING.asciidoc: add commands to compile with clang

10 years agoHACKING.asciidoc: add an example of testing am7xxx-play with valgrind
Antonio Ospite [Sat, 27 Jul 2013 21:44:45 +0000 (23:44 +0200)]
HACKING.asciidoc: add an example of testing am7xxx-play with valgrind

This will make testing easier as the line can be copied and pasted.

10 years agodoc: update Doxyfile.in
Antonio Ospite [Sat, 27 Jul 2013 21:36:08 +0000 (23:36 +0200)]
doc: update Doxyfile.in

10 years agocontrib: add a udev rule to invoke am7xxx-modeswitch
Antonio Ospite [Sat, 27 Jul 2013 21:27:01 +0000 (23:27 +0200)]
contrib: add a udev rule to invoke am7xxx-modeswitch

This will be useful on embedded systems like RaspberryPi or BeagleBone
where users may not want the whole usb-modeswitch package to be
installed just for libam7xxx.

10 years agoRename am7xxx_mode_switch to am7xxx-modeswitch
Antonio Ospite [Sat, 27 Jul 2013 21:25:34 +0000 (23:25 +0200)]
Rename am7xxx_mode_switch to am7xxx-modeswitch

The new name matches more closely the name of the binary used in recent
usb-modeswitch versions.

10 years agoTODO: mention that data types could be improved in the API
Antonio Ospite [Sat, 27 Jul 2013 21:02:34 +0000 (23:02 +0200)]
TODO: mention that data types could be improved in the API

10 years agopicoporj: fix another -Wshorten-64-to-32 warning from clang
Antonio Ospite [Sat, 27 Jul 2013 21:01:16 +0000 (23:01 +0200)]
picoporj: fix another -Wshorten-64-to-32 warning from clang

  ../examples/picoproj.c:196:8: error: implicit conversion loses integer precision: 'size_t'
        (aka 'unsigned long') to 'int' [-Werror,-Wshorten-64-to-32]
          ret = fread(image, size, 1, image_fp);
              ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

10 years agopicoproj: silence a -Wshorten-64-to-32 warning from clang
Antonio Ospite [Sat, 27 Jul 2013 20:55:53 +0000 (22:55 +0200)]
picoproj: silence a -Wshorten-64-to-32 warning from clang

  ../examples/picoproj.c:187:12: error: implicit conversion loses integer precision: '__off_t' (aka 'long')
        to 'unsigned int' [-Werror,-Wshorten-64-to-32]
          size = st.st_size;
               ~ ~~~^~~~~~~

10 years agoCMakeLists.txt: disable -Wsign-conversion warnings
Antonio Ospite [Sat, 27 Jul 2013 20:53:19 +0000 (22:53 +0200)]
CMakeLists.txt: disable -Wsign-conversion warnings

10 years agoam7xxx: fix a clang warning
Antonio Ospite [Sat, 27 Jul 2013 19:33:28 +0000 (21:33 +0200)]
am7xxx: fix a clang warning

  ../src/am7xxx.c:685:16: error: implicit conversion loses integer precision: 'ssize_t' (aka 'long') to 'int'
        [-Werror,-Wshorten-64-to-32]
          num_devices = libusb_get_device_list(ctx->usb_context, &list);
                    ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

libusb_get_device_list() returns ssize_t, just use it for the num_devices
variable.

10 years agoexamples: silence a couple of clang warnings
Antonio Ospite [Sat, 27 Jul 2013 18:55:48 +0000 (20:55 +0200)]
examples: silence a couple of clang warnings

Silence a couple of warnings given when compiling with clang:

  ../examples/am7xxx-play.c:764:28: warning: will never be executed [-Wunreachable-code]
                                          AM7XXX_ZOOM_ORIGINAL, AM7XXX_ZOOM_TEST);
                                                                ^~~~~~~~~~~~~~~~
  ../examples/am7xxx-play.c:748:24: warning: will never be executed [-Wunreachable-code]
                                          AM7XXX_POWER_OFF, AM7XXX_POWER_TURBO);
  2 warnings generated.

  ../examples/picoproj.c:142:28: warning: will never be executed [-Wunreachable-code]
                                          AM7XXX_ZOOM_ORIGINAL, AM7XXX_ZOOM_TEST);
                                                                ^~~~~~~~~~~~~~~~
  ../examples/picoproj.c:127:24: warning: will never be executed [-Wunreachable-code]
                                          AM7XXX_POWER_OFF, AM7XXX_POWER_TURBO);
  2 warnings generated.

The warnings refer to the default case of a switch statement over an
enum variable, clang fails to understand that the default case can still
be reached because any integer value can be assigned to the enum
variables via the atoi() function. Work around the warning.

The behavior is also documented here:
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2012-September/024174.html

In general assigning arbitrary values to enum variables will just be
weird; using enums in read mode is always safe tho.

10 years agodoc: mention the Top-Height/TEC PP700 in the Doxygen documentation
Antonio Ospite [Sat, 27 Jul 2013 18:26:06 +0000 (20:26 +0200)]
doc: mention the Top-Height/TEC PP700 in the Doxygen documentation

10 years agodoc: add some lsusb dumps for reference
Antonio Ospite [Sat, 27 Jul 2013 18:23:30 +0000 (20:23 +0200)]
doc: add some lsusb dumps for reference

10 years agoam7xxx-play: use am7xxx_send_image_async()
Antonio Ospite [Sat, 20 Jul 2013 22:13:33 +0000 (00:13 +0200)]
am7xxx-play: use am7xxx_send_image_async()

Woot, this change alone doubles the frame rate :)

10 years agoam7xxx: implement am7xxx_send_image_async()
Antonio Ospite [Sat, 20 Jul 2013 22:10:28 +0000 (00:10 +0200)]
am7xxx: implement am7xxx_send_image_async()

Implement am7xxx_send_image_async() the non-blocking version of
am7xxx_send_image().

This way user programs can more easily overlap encoding and
communication and achieve higher framerates.

10 years agoam7xxx: fix a typo in a comment s/a am7xxx device/an am7xxx device/
Antonio Ospite [Sun, 14 Jul 2013 11:25:25 +0000 (13:25 +0200)]
am7xxx: fix a typo in a comment s/a am7xxx device/an am7xxx device/

10 years agoCMakeLists.txt: enable two new compiler warnings
Antonio Ospite [Sat, 13 Jul 2013 09:05:00 +0000 (11:05 +0200)]
CMakeLists.txt: enable two new compiler warnings

Enable -Wsign-conversion as a strict compilation check for both gcc and
clang.

For clang also enable -Wshorten-64-to-32 as a strict compilation check.

10 years agoam7xxx: add quirks for devices not supporting some operations
Antonio Ospite [Sat, 29 Jun 2013 22:22:07 +0000 (00:22 +0200)]
am7xxx: add quirks for devices not supporting some operations

For instance Philips/SagemoCm PicoPix PPX 2330 does not support power
modes and zoom modes, and the device even gets confused when trying to
use them; so for reliable operation it is better to just skip these
operations on such devices.

Thanks-to: GrĂ©gory Lemesre

10 years agopicoproj: remove an unreachable break statement
Antonio Ospite [Sat, 29 Jun 2013 22:20:51 +0000 (00:20 +0200)]
picoproj: remove an unreachable break statement

10 years agoam7xxx-play: uniform coding style
Antonio Ospite [Sat, 29 Jun 2013 22:15:30 +0000 (00:15 +0200)]
am7xxx-play: uniform coding style

Uniform the coding style of error paths to the one use throughout in the
file.

10 years agoCMakeLists.txt: add support for clang and isolate gcc-only options
Antonio Ospite [Sat, 29 Jun 2013 22:12:59 +0000 (00:12 +0200)]
CMakeLists.txt: add support for clang and isolate gcc-only options

10 years agoHACKING.asciidoc: mention the patch needed for older libav/ffmpeg
Antonio Ospite [Sat, 29 Jun 2013 21:11:57 +0000 (23:11 +0200)]
HACKING.asciidoc: mention the patch needed for older libav/ffmpeg

libav/ffmpeg 0.8.X series do not have avcodec_encode_video2() which the
code uses, so for these older versions a patch is needed to undo the
changes which added support for that call.

10 years agoREADME.asciidoc: mention the TEC PP700 projector as supported
Antonio Ospite [Sat, 29 Jun 2013 21:02:13 +0000 (23:02 +0200)]
README.asciidoc: mention the TEC PP700 projector as supported

Mention the Top-Height/TEC PP700 amongst the supported devices, it has
been verified to be work with libam7xxx (thanks to the user nicknamed
MHz).

The projector looks exactly like an Acer C112 from the software point of
view.

10 years agopicoproj: remove an unneeded blank line
Antonio Ospite [Sun, 26 May 2013 22:06:23 +0000 (00:06 +0200)]
picoproj: remove an unneeded blank line

10 years agoexamples: print the usage message when a required option is missing
Antonio Ospite [Sun, 26 May 2013 22:05:00 +0000 (00:05 +0200)]
examples: print the usage message when a required option is missing

While at it specify which option is missing when picoproj fails..

10 years agoCMakeLists.txt: fix enabling verbose debug output
Antonio Ospite [Sun, 26 May 2013 21:53:13 +0000 (23:53 +0200)]
CMakeLists.txt: fix enabling verbose debug output

In 024af793fa6d6af644c225804d140cc13aa56307 the definition -DDEBUG=1 got
lost, add it back.

11 years agoam7xxx: use the symbolic constant for libusb log level
Antonio Ospite [Fri, 5 Apr 2013 21:35:34 +0000 (23:35 +0200)]
am7xxx: use the symbolic constant for libusb log level

11 years agopicoproj: show the image resolution when image does not fit the native one
Antonio Ospite [Fri, 5 Apr 2013 21:29:58 +0000 (23:29 +0200)]
picoproj: show the image resolution when image does not fit the native one

This may help spotting a missing or wrong dimension parameter on the
command line.

11 years agopicoproj: remove one of two consecutive blank lines
Antonio Ospite [Fri, 5 Apr 2013 21:28:24 +0000 (23:28 +0200)]
picoproj: remove one of two consecutive blank lines

11 years agodoc, contrib: add PicoPix 2330 to the list of supported devices
Antonio Ospite [Mon, 25 Mar 2013 22:04:03 +0000 (23:04 +0100)]
doc, contrib: add PicoPix 2330 to the list of supported devices

Thanks: Varlei Everton Menconi <varlei@dge.inpe.br>

11 years agoam7xxx: add support for Philips/Sagemcom PicoPix 2330
Antonio Ospite [Mon, 25 Mar 2013 21:47:21 +0000 (22:47 +0100)]
am7xxx: add support for Philips/Sagemcom PicoPix 2330

11 years agoMerge branch 'per-device-usb-config'
Antonio Ospite [Mon, 25 Mar 2013 21:44:35 +0000 (22:44 +0100)]
Merge branch 'per-device-usb-config'

11 years agoam7xxx: make the supported_device array const
Antonio Ospite [Sat, 23 Mar 2013 22:30:54 +0000 (23:30 +0100)]
am7xxx: make the supported_device array const

11 years agoam7xxx: improve setting USB configuration and interface_number
Antonio Ospite [Sat, 23 Mar 2013 21:55:04 +0000 (22:55 +0100)]
am7xxx: improve setting USB configuration and interface_number

There are devices out there with different bConfigurationValue or
bInterfaceNumber, having the ability to specify these setting on
a per-device basis makes it easier to add support for them.

11 years agoam7xxx: reference am7xxx_usb_device_descriptor in struct _am7xxx_device
Antonio Ospite [Wed, 14 Nov 2012 14:41:48 +0000 (15:41 +0100)]
am7xxx: reference am7xxx_usb_device_descriptor in struct _am7xxx_device

This makes it possible to retrieve info from the am7xxx device
descriptor starting from an am7xxx_device.

11 years agoam7xxx: fail if USB configuration or interface are not right
Antonio Ospite [Sat, 23 Mar 2013 21:40:25 +0000 (22:40 +0100)]
am7xxx: fail if USB configuration or interface are not right

Check the return values of libusb_set_configuration() and
libusb_claim_interface(), this way it is easier to spot devices which
require a different setting.

11 years agoam7xxx_mode_switch: release interface only if claimed
Antonio Ospite [Sat, 23 Mar 2013 22:03:48 +0000 (23:03 +0100)]
am7xxx_mode_switch: release interface only if claimed

11 years agodoc: add a man page for am7xxx_mode_switch
Antonio Ospite [Thu, 14 Mar 2013 22:04:20 +0000 (23:04 +0100)]
doc: add a man page for am7xxx_mode_switch

11 years agoAdd a NEWS file
Antonio Ospite [Thu, 14 Mar 2013 23:13:21 +0000 (00:13 +0100)]
Add a NEWS file

11 years agoRelease version 0.1.3 v0.1.3
Antonio Ospite [Thu, 14 Mar 2013 19:23:49 +0000 (20:23 +0100)]
Release version 0.1.3

11 years agoam7xxx-play: switch to avcodec_encode_video2()
Antonio Ospite [Thu, 14 Mar 2013 18:48:14 +0000 (19:48 +0100)]
am7xxx-play: switch to avcodec_encode_video2()

The code can now compile with -Werror=deprecated-declarations

11 years agoam7xxx-play: remove an unreachable break
Antonio Ospite [Thu, 14 Mar 2013 18:30:07 +0000 (19:30 +0100)]
am7xxx-play: remove an unreachable break

11 years agoam7xxx-play: rename 'packet' to 'in_packet'
Antonio Ospite [Thu, 14 Mar 2013 11:28:32 +0000 (12:28 +0100)]
am7xxx-play: rename 'packet' to 'in_packet'

This is in preparation to use an 'out_packet' for the conversion to
avcodec_encode_video2().

11 years agoam7xxx: fix coding style
Antonio Ospite [Thu, 14 Mar 2013 10:22:05 +0000 (11:22 +0100)]
am7xxx: fix coding style

Keep logical operators on the current line when continuing to another line.

11 years agocontrib: add the am7xxx-play-window.sh script
Antonio Ospite [Thu, 14 Mar 2013 10:13:16 +0000 (11:13 +0100)]
contrib: add the am7xxx-play-window.sh script

11 years agoMerge branch 'fix-devinfo-for-PicoPix'
Antonio Ospite [Mon, 17 Dec 2012 22:54:51 +0000 (23:54 +0100)]
Merge branch 'fix-devinfo-for-PicoPix'

11 years agoam7xxx: make libam7xxx work with Philips/Sagemcom PPX projectors
Antonio Ospite [Fri, 7 Dec 2012 10:59:32 +0000 (11:59 +0100)]
am7xxx: make libam7xxx work with Philips/Sagemcom PPX projectors

Philips/Sagemcom PicoPix projectors require that the DEVINFO packet is
the first one to be sent to the device in order for it to successfully
return the correct device information.

Call am7xxx_get_device_info() from am7xxx_open_device() to fulfill the
requirement from above. The device info will be cached by
am7xxx_get_device_info() and further calls to the latter will return the
correct data too.

11 years agoam7xxx: cache device info in am7xxx_get_device_info()
Antonio Ospite [Fri, 7 Dec 2012 10:51:16 +0000 (11:51 +0100)]
am7xxx: cache device info in am7xxx_get_device_info()

Request the actual device info from the device only when there is not
a cached version of it already.

This serves two purposes:

  1. Cover the case when some firmwares provide useful device info
     only under some conditions and spit out bogus data instead when
     these conditions are not met.

  2. Speed up am7xxx_get_device_info() as the USB communication is
     performed only once. AFAWN the device info does not change
     throughout the life of an am7xxx_device.

11 years agoam7xxx: detect unexpected responses to AM7XXX_PACKET_TYPE_DEVINFO requests
Antonio Ospite [Fri, 7 Dec 2012 11:22:45 +0000 (12:22 +0100)]
am7xxx: detect unexpected responses to AM7XXX_PACKET_TYPE_DEVINFO requests

Under some conditions, some devices like Philips/Sagemcom PPX projectors
return a strangely small packet (e.g. an AM7XXX_PACKET_TYPE_POWER with
header_data_len == 2) in reply to an AM7XXX_PACKET_TYPE_DEVINFO, hence
NOT providing useful device info.

11 years agoFix an error when compiling with both -O0 and -Wp,-D_FORTIFY_SOURCE=2
Antonio Ospite [Tue, 4 Dec 2012 10:46:12 +0000 (11:46 +0100)]
Fix an error when compiling with both -O0 and -Wp,-D_FORTIFY_SOURCE=2

Fix the following error happening with the gcc shipped on some Ubuntu
versions:

In file included from /usr/include/stdio.h:27:0,
                 from /home/pedro/lib/libam7xxx/src/am7xxx.c:19:
/usr/include/features.h:330:4: error: #warning _FORTIFY_SOURCE
requires compiling with optimization (-O) [-Werror=cpp]
cc1: all warnings being treated as errors
make[2]: *** [src/CMakeFiles/am7xxx.dir/am7xxx.c.o] Error 1
make[1]: *** [src/CMakeFiles/am7xxx.dir/all] Error 2
make: *** [all] Error 2

Reported-by: Petr Certik <petr@certik.cz>
11 years agoam7xxx: don't mention AM7XXX_DIRECTION_OUT in read_header()
Antonio Ospite [Wed, 14 Nov 2012 11:31:01 +0000 (12:31 +0100)]
am7xxx: don't mention AM7XXX_DIRECTION_OUT in read_header()

The validity check in read_header() looks for:

h->direction == AM7XXX_DIRECTION_IN

When this is false (direction is _not_equal_ to AM7XXX_DIRECTION_IN) it
cannot be said for sure that the direction field value is going to
really be AM7XXX_DIRECTION_OUT, technically the device may have put
anything there.

So, just report what happens don't try to overguess.

11 years agoam7xxx: add a note on the symmetry of read_header() and send_header()
Antonio Ospite [Wed, 14 Nov 2012 11:08:07 +0000 (12:08 +0100)]
am7xxx: add a note on the symmetry of read_header() and send_header()

In read_header we do:
  1. read data
  2. unserialize header
  3. validity check
  4. dump header

In send_header:
  1. dump header
  2. validity check (we skip it, actually)
  3. serialize header
  4. send data

11 years agoam7xxx: assign device_list next to its first use
Antonio Ospite [Wed, 14 Nov 2012 11:01:34 +0000 (12:01 +0100)]
am7xxx: assign device_list next to its first use

This makes the code a little more readable.

11 years agoam7xxx: print text description of the 'direction' field
Antonio Ospite [Wed, 14 Nov 2012 10:00:58 +0000 (11:00 +0100)]
am7xxx: print text description of the 'direction' field

Print "IN" or "OUT" (or "UNKNOWN") when dumping the direction field of
the header, this makes it easier to follow the communication in the
debug output.

11 years agopicoproj: clarify that when AM7XXX_ZOOM_TEST is set no image gets sent
Antonio Ospite [Sun, 14 Oct 2012 16:23:04 +0000 (18:23 +0200)]
picoproj: clarify that when AM7XXX_ZOOM_TEST is set no image gets sent

11 years agoam7xxx: add support for Philips/SagemCom PicoPix PPX 2055
Antonio Ospite [Sun, 14 Oct 2012 16:03:54 +0000 (18:03 +0200)]
am7xxx: add support for Philips/SagemCom PicoPix PPX 2055

11 years agoexamples: support multiple devices
Antonio Ospite [Mon, 17 Sep 2012 08:07:55 +0000 (10:07 +0200)]
examples: support multiple devices

Expose a '-d <index>' option to set the device index, this way multiple
devices can be used.

Tested-by: Konstantin Lohmann <konstl@konstl.com>
11 years agodoc: update Doxygen configuration
Antonio Ospite [Mon, 17 Sep 2012 08:10:07 +0000 (10:10 +0200)]
doc: update Doxygen configuration

Use "doxygen -s -u doc/Doxyfile.in"; the update fixes some warnings
when building the documentation with Doxygen 1.8:

warning: Tag `SHOW_DIRECTORIES' at line 79 of file Doxyfile has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag `HTML_ALIGN_MEMBERS' at line 149 of file Doxyfile has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag `USE_INLINE_TREES' at line 176 of file Doxyfile has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"

11 years agoMerge branch 'am7xxx_set_zoom_mode'
Antonio Ospite [Fri, 27 Jul 2012 10:57:44 +0000 (12:57 +0200)]
Merge branch 'am7xxx_set_zoom_mode'

11 years agocontrib: add a test image to show how zoom modes work
Antonio Ospite [Thu, 21 Jun 2012 08:12:14 +0000 (10:12 +0200)]
contrib: add a test image to show how zoom modes work

The image can be converted to a suitable JPEG with 'convert' from
imagemagick:

  $ convert libam7xxx_test_image_800x480.svg libam7xxx_test_image_800x480.jpg

11 years agoam7xxx-play: make the help about power mode more consistent
Antonio Ospite [Thu, 21 Jun 2012 08:41:42 +0000 (10:41 +0200)]
am7xxx-play: make the help about power mode more consistent

Use the same terminology used in the Doxygen documentation, "power mode"
instead of "power level".

Print values using "%d" instead of "%x".

11 years agopicoproj: make the help about power mode more consistent
Antonio Ospite [Wed, 20 Jun 2012 13:32:13 +0000 (15:32 +0200)]
picoproj: make the help about power mode more consistent

Use the same terminology used in the Doxygen documentation, "power mode"
instead of "power level".

Print values using "%d" instead of "%x".

11 years agoam7xxx: update signature and documentation of am7xxx_set_power_mode()
Antonio Ospite [Wed, 20 Jun 2012 11:13:20 +0000 (13:13 +0200)]
am7xxx: update signature and documentation of am7xxx_set_power_mode()

In the signature, rename the 'mode' parameter  to 'power' in order to
show better what it is about, after all in am7xxx_set_zoom_mode() the
correspondent parameter has been called zoom.

In the documentation tells about the new guesses about what the expected
behavior after AM7XXX_POWER_OFF is.

11 years agoam7xxx-play: support setting the zoom mode
Antonio Ospite [Thu, 21 Jun 2012 08:32:32 +0000 (10:32 +0200)]
am7xxx-play: support setting the zoom mode