2014-06-26 AdvaBoard GUI, RPC and some small bugfixes: - NEW: AdvaBoard GUI, a graphical user-interface to access many functions of the AdvaBoard RPi1 in a very simple way - NEW: JSON-RPC incl. examples for the AdvaBoard RPi1-libraries TOOLS: - Added the "AdvaBoard GUI", a graphical user-interface to access the AdvaBoard RPi1/Raspberry Pi either locally or over a network. This should make it much easier to start using the AdvaBoard RPi1, to test the functions and communicate with peripherals. - Added JSON-RPC (remote procedure call), incl. some small examples. - Bugfix: advaboard_rpi1_setup.sh: start framebuffer-/touchpanel- driver again after touchscreen-calibration. - Bugfix: Fixed the display of the SD-card-"Product name". - Bugfix: fix xorg.conf LIBRARIES: - Python-binding: new functions:: rpi.info_sd() rpi.info_statvfs() rpi.info_os() advaboard.info_sw() - Init-functions: - Bugfix: Initialize the I/O 1.0 correctly, so that it can be used as normal digital-I/O by default (instead of as RPi-PWM-output). - Bugfix: Fix the returned I2C-interrupt-state. (am_rpi_advaboard_i2c_int_read / am_rpi.advaboard.i2c_int_read) - improved documentation 2014-05-22 Additional scripts and some improvements/bugfixes, especially: - NEW: install- and configuration-script "advaboard_rpi1_setup.sh" - NEW: power-on/-off-scripts, incl. power-on/-off by pressing a button - improved documentation Linux-Distribution support: - Added precompiled kernel for Raspbian-testing-kernel 3.13-1-rpi. - New directory-structure for prebuilt-binaries. - Framebuffer-kernel-module is now built separately and optionally. - Documentation is now installed to /usr/local/share/doc/advaboard_rpi1/. TOOLS: - Added script for installation and configuration: advaboard_rpi1_setup.sh This makes installing and configuring the Raspberry Pi and the AdvaBoard RPi1 much easier. This is available both in English and in German. - Added init-script to automatically cut the power to the Raspberry Pi after shutdown. (am_rpi_power.sh) - Added scripts (init-scripts + daemon) to power-on and/or shutdown the Raspberry Pi when a button is pressed. (am_rpi_shutdownbutton.sh) - SysVInit-scripts: Improved (boot-)messages, fixed a bug which caused the scripts to abort on invalid parameters/config-files without an error-message. EXAMPLES: - Added example-code for the display. LIBRARIES: - improved TFT-backlight power-on 2014-03-06 Major update, containing: - Support for Raspbian 2014-01-07 - TFT-display/-touchpanel update - Python bugfixes and Python 3 support - improved support for the Advamation RS-485-/I2C-protocoll - 2 small API-changes - compile/install/uninstall simplified - some bugfixes - documentation updates Linux-Distribution support: - Added support for 2014-01-07-wheezy-raspbian, incl. precompiled binaries. LIBRARIES: - API-changes: - API-change: The parameter "skip_on" of am_rpi_advaboard_init() / advaboard.init() was removed. So, replace: am_rpi_advaboard_init(0) -> am_rpi_advaboard_init(), am_rpi_advaboard_init(1) -> am_rpi_advaboard_init() in your C-code, and remove the parameter from your Java- or Python-code if you have used it. - renamed some AM_CMD_*-constants: UID_READ -> UID COMMPARAM_STATUS -> CMDSTATUS EEPROMSTATUS -> EEPROM_STATUS EEPROMSIZE -> EEPROM_SIZE EVENT_FLAGS -> HANDLER_FLAGS EVENT_CLEAR -> HANDLER_CLEAR EVENT_TRIGGER -> HANDLER_TRIGGER IO_EVENT_CONTROL_READ -> IO_HANDLER_CONTROL_READ IO_EVENT_CONTROL_WRITE -> IO_HANDLER_CONTROL_WRITE IO_EVENT_OUTPUT_READ -> IO_HANDLER_OUTPUT_READ IO_EVENT_OUTPUT_WRITE -> IO_HANDLER_OUTPUT_WRITE ANALOG_EVENT_CONTROL_READ -> ANALOG_HANDLER_CONTROL_READ ANALOG_EVENT_CONTROL_WRITE -> ANALOG_HANDLER_CONTROL_WRITE ANALOG_EVENT_OUTPUT_READ -> ANALOG_HANDLER_OUTPUT_READ ANALOG_EVENT_OUTPUT_WRITE -> ANALOG_HANDLER_OUTPUT_WRITE - TFT-display/touchscreen: - power-up display backlight more slowly (to prevent power-problems) - touchpanel: added touchpanel-move-threshold - touchpanel: fixed a problem, which sometimes caused spurious touches at a touchscreen-corner - Added functions to check when commands/functions are done. C: am_rpi_advaboard_done() am_rpi_advaboard_f912_cmdstatus() am_rpi_advaboard_f353_cmdstatus() Python, Java: advaboard.done() advaboard.f912_cmdstatus() advaboard.f353_cmdstatus() - added mappings between AM_CMD_* and strings (am_cmd2str(), am_str2cmd()) - renamed am_prot_cmd to am_cmd - fixed return-value of am_rpi_advaboard_espi_int_read() - fixed documentation of am_rpi_advaboard_espi_sel() - Python-binding: - improved support for Python3, and install the libraries also for Python 3 by default. - module "am_rpi.advaboard": - fixed name of espi_int_read() - fixed return-values for: f912_comm() f353_comm() temperature_read() voltages_read() power_read() pins_read() rtc_status() eventpwr_output_read() eventpwr_power_read() eventio_output_read() espi_int_read() i2c_prot() rs485_cfg_read() - raise LibraryNotInitialized if init() was not called - module "am_rpi.rpi": - fixed return-values for i2c_prot() PROGRAMS: - am_rpi_advaboard_tool: - ESPI_INT_READ: modified output - I2C_PROT: parameter "CMD" can now also be a name (e.g. "ECHO") instead of a number - am_rpi_tft_tool: - TP_POS: output fixed 2014-02-05 Added Python-binding and updated documentation. LIBRARIES: - Python-binding: added - Java-binding: renamed class AM_ERROR to AM_ERROR_CODE - am_rpi_advaboard.h: bugfix for am_rpi_advaboard_espi_int_read() EXAMPLES: - Python-example info_led.py: added - Java-example info_led.java: fixed exit-code 2014-01-29 Event-based automation API change (to improve usability), improved error-messages and some bugfixes. LIBRARIES: - improved error-messages - Java-binding: - changed naming in event-based-automation system (API-change): eventpwr_events() -> eventpwr_flags() eventio_events() -> eventio_flags() eventio_trigger_write() -> eventio_event_write() eventio_trigger_read() -> eventio_event_read() AM_CMD.EVENTS -> AM_CMD.EVENT_FLAGS AM_CMD.EVENTS_CLEAR -> AM_CMD.EVENT_CLEAR AM_CMD.IO_EVENTCONTROL_READ -> AM_CMD.IO_EVENT_CONTROL_READ AM_CMD.IO_EVENTCONTROL_WRITE -> AM_CMD.IO_EVENT_CONTROL_READ AM_CMD.IO_EVENTOUTPUT_READ -> AM_CMD.IO_EVENT_OUTPUT_READ AM_CMD.IO_EVENTOUTPUT_WRITE -> AM_CMD.IO_EVENT_OUTPUT_WRITE AM_CMD.IO_TRIGGER_READ -> AM_CMD.IO_EVENT_READ AM_CMD.IO_TRIGGER_WRITE -> AM_CMD.IO_EVENT_WRITE AM_CMD.ANALOG_EVENTCONTROL_READ -> AM_CMD.ANALOG_EVENT_CONTROL_READ AM_CMD.ANALOG_EVENTCONTROL_WRITE -> AM_CMD.ANALOG_EVENT_CONTROL_WRITE AM_CMD.ANALOG_EVENTOUTPUT_READ -> AM_CMD.ANALOG_EVENT_OUTPUT_READ AM_CMD.ANALOG_EVENTOUTPUT_WRITE -> AM_CMD.ANALOG_EVENT_OUTPUT_WRITE AM_CMD.ANALOG_TRIGGER_READ -> AM_CMD.ANALOG_EVENT_READ AM_CMD.ANALOG_TRIGGER_WRITE -> AM_CMD.ANALOG_EVENT_WRITE ADVABOARD_IO_CONTROL.TRIGGER* -> ADVABOARD_IO_CONTROL.EVENT* - libam_rpi_advaboard / am_rpi_advaboard.c / am_rpi_advaboard.h / advamation.h: - changed naming in event-based-automation system (API-change): am_rpi_advaboard_eventpwr_events() -> am_rpi_advaboard_eventpwr_flags() am_rpi_advaboard_eventio_events() -> am_rpi_advaboard_eventio_flags() am_rpi_advaboard_eventio_trigger_write() -> am_rpi_advaboard_eventio_event_write() am_rpi_advaboard_eventio_trigger_read() -> am_rpi_advaboard_eventio_event_read() AM_CMD_EVENTS -> AM_CMD_EVENT_FLAGS AM_CMD_EVENTS_CLEAR -> AM_CMD_EVENT_CLEAR AM_CMD_IO_EVENTCONTROL_READ -> AM_CMD_IO_EVENT_CONTROL_READ AM_CMD_IO_EVENTCONTROL_WRITE -> AM_CMD_IO_EVENT_CONTROL_READ AM_CMD_IO_EVENTOUTPUT_READ -> AM_CMD_IO_EVENT_OUTPUT_READ AM_CMD_IO_EVENTOUTPUT_WRITE -> AM_CMD_IO_EVENT_OUTPUT_WRITE AM_CMD_IO_TRIGGER_READ -> AM_CMD_IO_EVENT_READ AM_CMD_IO_TRIGGER_WRITE -> AM_CMD_IO_EVENT_WRITE AM_CMD_ANALOG_EVENTCONTROL_READ -> AM_CMD_ANALOG_EVENT_CONTROL_READ AM_CMD_ANALOG_EVENTCONTROL_WRITE -> AM_CMD_ANALOG_EVENT_CONTROL_WRITE AM_CMD_ANALOG_EVENTOUTPUT_READ -> AM_CMD_ANALOG_EVENT_OUTPUT_READ AM_CMD_ANALOG_EVENTOUTPUT_WRITE -> AM_CMD_ANALOG_EVENT_OUTPUT_WRITE AM_CMD_ANALOG_TRIGGER_READ -> AM_CMD_ANALOG_EVENT_READ AM_CMD_ANALOG_TRIGGER_WRITE -> AM_CMD_ANALOG_EVENT_WRITE AM_RPI_ADVABOARD_IO_TRIGGER* -> AM_RPI_ADVABOARD_IO_EVENT* PROGRAMS: - improved error- and help-messages - am_rpi_advaboard_tool: - changed naming in event-based-automation system: EVENTPWR_EVENTS -> EVENTPWR_FLAGS EVENTIO_EVENTS -> EVENTIO_FLAGS - bugfixes for modes "PWM_CONTROL", "ESPI" and "RS485_CFG" 2014-01-23 Major Java-binding update (API change) and enhanced framebuffer- and touchpanel-support. If you're using Java or want to use the touchpanel with SDL (without X11), an update is strongly recommended. LIBRARIES: - Java-binding: - All functions, which used the byte or byte[] type, now use int/int[] instead. - Parameter-checking was improved, so many functions now throw IllegalArgumentException to detect program-bugs. - am_rpi.jar is now installed to /usr/local/share/java/ - The Java-libraries are now compiled for Java 6 by default. - Makefile bugfix (compile ADVABOARD_GPIO.java, ADVABOARD_SPI_CLKCFG.java) - modified functions: nearly all: use int/int[] instead of byte/byte[], new parameter-checks advaboard.init(): can now also be called without parameters - added functions: advaboard.i2c_prot() advamation.I() - improved documentation - libam_rpi / am_rpi.c: - bugfix for am_rpi_delay_nop* PROGRAMS: - am_rpi_touchpanel: - Added mouse-emulation mode, so that the touchscreen can also be used with applications which have no or bad touchscreen-support (e.g. SDL 1.2 without X11). See "--mode" parameter. - Added tslib-support. - The touchpanel-driver now emits BTN_TOUCH instead of BTN_LEFT on touch. SCRIPTS etc.: - renamed "scripts/" to "tools/" - Touchpanel-init-script: Added mouse-emulation-mode (see TP_MODE). - Framebuffer-init-script: Can now use the default HDMI-framebuffer instead of a virtual advamationfb-framebuffer (see USE_FB0). - Added complete "xorg.conf"-configfile, which also includes multi-screen setups (HDMI + TFT-display). EXAMPLES: - added an "example/"-directory with example-programs incl. makefiles (for C, Java and shell) 2013-12-23 Documentation and Java-binding update + 1 API-change. LIBRARIES: - Java-binding: - added documentation (java.am_rpi_advaboard.txt/.html) - modified functions: io_read2: return byte[] instead of byte (bugfix) eventio_control_write: now use 1 int for "control" instead of 2 bytes eventio_control_read: now return 1 int instead of 2 bytes i2c_lock: added version without parameters - added classes for constants: ADVABOARD_GPIO ADVABOARD_SPI_CLKCFG - libam_rpi_advaboard / am_rpi_advabord.c / am_rpi_advaboard.h: - modified functions: am_rpi_advaboard_eventio_control_write: use uint16_t control instead of 2*uint8_t am_rpi_advaboard_eventio_control_read: use uint16_t control instead of 2*uint8_t - improved documentation PROGRAMS: - am_rpi_advaboard_tool: - modified modes: EVENTIO_CONTROL_WRITE: merged parameters CONTROL0+CONTROL1 to CONTROL EVENTIO_CONTROL_READ: modified output 2013-12-18 Small update for TFT-displays: - fixed rotation and touchpanel alignment for TFT_70 - use brightness 255 by default (instead of 64) - added aliases TFT32/TFT43/TFT50/TFT70 for TFT_32/TFT_43/TFT_50/TFT_70 No API changes. 2013-12-10 This and all newer versions require an AdvaBoard RPi1 firmware version >= 20131210. Added Java-binding, added init-scripts, added function to simplify communication over I2C with the Advamation RS-485-/I2C-protocol. LIBRARIES: - added Java binding - libam_rpi_advaboard / am_rpi_advabord.c / am_rpi_advaboard.h: - modified functions: am_rpi_advaboard_info: added parameter "cpld_firmware" am_rpi_advaboard_analog_status: modified status-bits am_rpi_advaboard_analog_control: modified control-bits - added functions: am_rpi_advaboard_i2c_prot - libam_rpi_tft / am_rpi_tft.c: - turned "dynamic backlight feature" off by default PROGRAMS: - am_rpi_advaboard_tool: - modified modes: INFO: now also shows the CPLD-firmware - added modes: I2C_PROT - am_rpi_framebuffer.c - added parameter "--daemon" to daemonize - am_rpi_touchpanel.c - added parameter "--daemon" to daemonize SCRIPTS: - added init-scripts for framebuffer and touchscreen 2013-11-27 Some improvements and bugfixes. LIBRARIES: - libam_rpi_advaboard / am_rpi_advabord.c / am_rpi_advaboard.h: - fixed E-SPI interrupt - fixed CPLDREG-spi-clock - no API-changes - libam_rpi_tft / am_rpi_tft.c / am_rpi_tft.h: - power-on/off bugfix - backlight-on/off bugfix - am_rpi_tft_position bugfix - TFT_70: init/rotation bugfix, part 1 - touchpanel: improved reliability - documentation - no API-changes PROGRAMS: - am_rpi_advaboard_tool - modified modes: INFO: added CPLD-firmware GPIO_READ: bugfix, show MISO instead of MOSI IO_CONFIG: parameter-check bugfix I2C_INT_READ: modified output - am_rpi_tft_tool - modified modes: SLEEP: + optional parameter "BRIGHTNESS" POSITION: modified parameters to "[X0 Y0 W H] X Y" WINDOW: parameter-check bugfix IMAGE: parameter-check bugfix BACKLIGHT: parameter "BRIGHTNESS" is now optional 2013-11-22 This is a major update, and includes some API changes. Added functionality: - locking/concurrent access from several processes: The software now includes an locking mechanism, so that the AdvaBoard RPi1 can now be accessed from multiple processes concurrently. By default, auto-locking is used, so that this works automatically, and the user doesn't need to set locks explicitely; but it's additionally possible to manually set/unset some locks. See user manual for more information about concurrent access. - touchpanel: Touchpanel-functions and a touchpanel-driver were added. LIBRARIES: - return-values: Due to the new locking-feature, many functions now return AM_ERROR instead of void. - delayed configuration: Due to locking, configuring the hardware is somtimes delayed until an auto-lock is acquired. - SPI now allows all even clock-divisors between 2 and 65536 - libam_rpi / am_rpi.c / am_rpi.h: - modified functions: am_rpi_spi_config: merged parameters clkpol and clkpha to clkcfg - added functions: am_rpi_info_rev am_rpi_spi_config_read am_rpi_spi_clk_read am_rpi_i2c_enabled am_rpi_i2c_clk_read - added locking-functions: am_rpi_spi_lock am_rpi_spi_unlock am_rpi_spi_locking_timeout am_rpi_i2c_lock am_rpi_i2c_unlock am_rpi_i2c_locking_timeout - enums: merged am_rpi_spi_clkpol and am_rpi_spi_clkpha to am_rpi_spi_clkcfg modified enum-values: -1 is now always "don't change" - libam_rpi_advaboard / am_rpi_advabord.c / am_rpi_advaboard.h: - improved separation between low-level- and higher-level-functions: - low-level-I2C-functions were renamed to am_rpi_advaboard_rpii2c_comm and am_rpi_advaboard_rpii2c_clk; explicit E-SPI-functions were added - modified functions: am_rpi_advaboard_init: removed parameter spiclk, added parameter skip_check am_rpi_advaboard_info: switched parameter-order for f353 and f912 am_rpi_advaboard_temperature: switched parameter-order for f353 and f912 am_rpi_advaboard_i2c: removed parameter "clkdiv" am_rpi_advaboard_i2c_comm: renamed to am_rpi_advaboard_rpii2c_comm - added functions: am_rpi_advaboard_rpii2c_clk am_rpi_advaboard_spi_clkcfg am_rpi_advaboard_espi am_rpi_advaboard_espi_clk am_rpi_advaboard_espi_int_read - added locking-functions: am_rpi_advaboard_f912_lock am_rpi_advaboard_f912_unlock am_rpi_advaboard_f912_locking_timeout am_rpi_advaboard_f353_lock am_rpi_advaboard_f353_unlock am_rpi_advaboard_f353_locking_timeout am_rpi_advaboard_spi_lock am_rpi_advaboard_spi_unlock am_rpi_advaboard_spi_locking_timeout am_rpi_advaboard_rpii2c_lock am_rpi_advaboard_rpii2c_unlock am_rpi_advaboard_rpii2c_locking_timeout am_rpi_advaboard_espi_lock am_rpi_advaboard_espi_unlock am_rpi_advaboard_espi_locking_timeout am_rpi_advaboard_i2c_lock am_rpi_advaboard_i2c_unlock am_rpi_advaboard_i2c_locking_timeout - removed functions: am_rpi_advaboard_spi: use am_rpi_advaboard_espi or am_rpi_advaboard_spi_comm instead am_rpi_advaboard_spi_cfg: use am_rpi_advaboard_espi_clk, am_rpi_advaboard_spi_mux, am_rpi_advaboard_spi_cfgclk instead am_rpi_advaboard_spi_int_read: use am_rpi_advaboard_espi_int_read instead - libam_rpi_tft / am_rpi_tft.c / am_rpi_tft.h: - added locking-functions - added touchpanel-functions - modified functions: am_rpi_tft_open: removed unused parameter "iface", doesn't configure tft-lock anymore (use am_rpi_tft_clk additionally) am_rpi_tft_off: added parameter "poweroff" am_rpi_tft_iface_speed: renamed to am_rpi_tft_clk - added functions: am_rpi_tft_power am_rpi_tft_power_read am_rpi_tft_tp_touched am_rpi_tft_tp_pos am_rpi_tft_tp_next am_rpi_tft_tp_posraw am_rpi_tft_tp_rotation am_rpi_tft_tp_calibrate am_rpi_tft_tp_calib_set am_rpi_tft_tp_calib_load am_rpi_tft_tp_calib_store - added locking-functions: am_rpi_tft_lock am_rpi_tft_unlock am_rpi_tft_locking_timeout am_rpi_tft_tp_lock am_rpi_tft_tp_unlock am_rpi_tft_tp_locking_timeout - several small bugfixes - documentation update PROGRAMS: - am_rpi_tool - modified modes: SPI_CONFIG: merged parameters CLKPOL and CLKPHA to CLKCFG changed parameter-values: -1=don't change, 0..N=values I2C_CLK: parameter CLK now is the clock-divider instead of the kHz-clock; to still use kHz-values, a "kHz"-postfix can be used - added modes: TIMER SPI_CONFIG_READ SPI_CLK_READ - added parameter "--nolock" - am_rpi_advaboard_tool - modified modes: INIT: removed optional parameter SPICLK INFO: the order of the printed output-lines changed TEMPERATURE: the order of the printed output-lines changed IO_CONFIG: parameter-values "-1" are not treated as "don't change" I2C: removed parameter "SPEED" - added modes: ESPI ESPI_CLK ESPI_INT_READ SPI_CLKCFG SPI_MUX RPiI2C_COMM RPiI2C_CLK - removed modes: SPI_INT_READ: use ESPI_INT_READ instead SPI: use SPI_MUX, SPI_CLKCFG, SPI_COMM/ESPI instead SPI_CFG: use SPI_CLKCFG, SPI_MUX instead I2C_COMM: use RPiI2C_COMM or I2C instead - added parameter "--nolock" - am_rpi_tft_tool - added parameters "--clk", "--calib" and "--nolock" - modified modes: ON: added optional parameter BRIGHTNESS (default 64) OFF: added optional parameter POWEROFF (default 1) - added modes: POWER POWER_READ TP_TOUCHED TP_POS TP_NEXT TP_POSRAW TEST_TP TP_CALIBRATE TEST_TPCALIB - removed modes: SPEED: use --clk instead - am_rpi_framebuffer - added parameter "--clk" - improved error-checking - several bugfixes - am_rpi_touchpanel: added 2013-11-05 - DOCUMENTATION: extended/improved, framebuffer-documentation added - PRECOMPILED BINARES: fixed prebuilt.2013-09-25-wheezy-raspbian/ - INSTALLATION: added "make install" - PROGRAMS: am_rpi_advaboard_tool: renamed CPLDINUPD_ENABLE/_DISABLE to CPLDINUPDATE_ENABLE/_DISABLE, and PERIPHERY_5V to PERIPHERAL_5V - LIBRARIES: static libraries now have the same names as the dynamic libraries (except the extension) - LIBRARIES: am_rpi_advaboard.c/.h: renamed AM_RPI_ADVABOARD_IO_CPLDINUPD_ENABLE/_DISABLE to AM_RPI_ADVABOARD_IO_CPLDINUPDATE_ENABLE/_DISABLE - LIBRARIES: advamation.c/.h: "bool" is now always used instead of "gboolean" - LIBRARIES: gdk-pixbuf-2.0-dev is now sufficient for compilation, libgtk2.0-dev is not needed 2013-10-31 - initial release